.FMS - call FMS with MME GEFSYE or DRL FILACT.

Alternate Entry Name: _FMS

Usage:

B:
   stat = .fms(function, buffer, arglist [, altname]);
C:
   int _fms(int function,char *buffer,void *arglist,
            [const char *altname] );

Where:

function
is an integer with the FMS function to be performed.
buffer
is a pointer to a 380 word buffer for FMS.
arglist
is a pointer to the arglist vector. The format of the arglist vector varies according to the FMS function being performed. However, .FMS assumes that the upper half of "arglist[0]" contains the pointer to the two-word status return area.
altname
In TSS, this is an optional pointer to the AFTNAME associated with .FMS; for "create file" it may be the flag 0777777, indicating that the entire catfile stack is in BCD.
stat
is the negative of the FMS major status. Zero implies a successful operation.

Description:

.FMS provides a simple way to do a general MME GEFSYE or DRL FILACT. It handles the choice of using a MME or DRL, passing the effective userid in TSS, waiting for the function to complete in batch, and extracting the FMS major status.

Notes:

For compatibility between batch and TSS programs, .FMS always uses a 380 word buffer. In batch, it will ignore the first 25 words, and only the last 355 words will actually be used.

In order to support the "access file" function in TSS, DRL.A is assigned the value in the A register after the system call. On a successful "access file", this will be a file descriptor word; in all other cases, the value is undefined.

In batch, "altname" can be a pointer to "courtesy call" code. However, this is not recommended in a B environment.

If .FMS encounters an error, it posts a suitable error message with the .EPOST function.

See Also:

expl b lib .epost

expl b lib .strer

Copyright © 1996, Thinkage Ltd.