1  RMS
   OpenVMS Record Management Services (RMS) are generalized routines
   that assist user programs in processing and managing files and
   records. RMS provides transparent network processing between
   DECnet for OpenVMS nodes. RMS also includes a set of macro
   instructions that you can use to initialize control blocks,
   store values in control blocks, and call RMS services. For
   more information about RMS, see the OpenVMS Record Management
   Services Reference Manual and the FDL Facility in the OpenVMS
   Record Management Utilities Reference Manual.
 

2  FAB
   The file access block (FAB) defines file characteristics, file
   access, and certain run-time options. It also indicates whether
   other control blocks are associated with the file.

   The following table lists the symbolic offset, the size in bytes,
   the FDL equivalent, and a brief description of each FAB field.

   Field Offset   Size  FDL Equivalent          Description

   FAB$B_         1     None                    File access modes
   ACMODES
   FAB$L_ALQ      4     FILE ALLOCATION         Allocation quantity
                                                (blocks)
   FAB$B_BID      1     None                    Block identifier
   FAB$B_BKS      1     FILE BUCKET_SIZE        Bucket size
   FAB$B_BLN      1     None                    Block length
   FAB$W_BLS      2     FILE MT_BLOCK_SIZE      Magnetic tape block
                                                size
   FAB$V_CHAN_    -     None                    Channel access mode
   MODE                                         protection
   FAB$L_CTX      4     FILE CONTEXT            Context
   FAB$W_DEQ      2     FILE EXTENSION          Default file
                                                extension quantity
   FAB$L_DEV      4     None                    Device
                                                characteristics
   FAB$L_DNA      4     FILE DEFAULT_NAME       Default file
                                                specification string
                                                address
   FAB$B_DNS      1     FILE DEFAULT_NAME       Default file
                                                specification string
                                                size
   FAB$B_FAC      1     ACCESS                  File access
   FAB$L_FNA      4     FILE NAME               File specification
                                                string address
   FAB$B_FNS      1     FILE NAME               File specification
                                                string size
   FAB$L_FOP      4     FILE                    File-processing
                                                options
   FAB$B_FSZ      1     RECORD CONTROL_FIELD_   Fixed-length control
                        SIZE                    area size
   FAB$W_GBC      2     FILE GLOBAL_BUFFER_     Global buffer count
                        COUNT
   FAB$W_IFI      2     None                    Internal file
                                                identifier
   FAB$B_         1     None                    Journal flags status
   JOURNAL
   FAB$V_LNM_     -     None                    Logical name
   MODE                                         translation access
                                                mode
   FAB$L_MRN      4     FILE MAX_RECORD_        Maximum record
                        NUMBER                  number
   FAB$W_MRS      2     RECORD SIZE             Maximum record size
   FAB$L_NAM      4     None                    Name (NAM) or long
                                                name (NAML) block
                                                address
   FAB$B_ORG      1     FILE ORGANIZATION       File organization
   FAB$B_RAT      1     RECORD                  Record attributes
   FAB$B_RFM      1     RECORD FORMAT           Record format
   FAB$B_RTV      1     FILE WINDOW_SIZE        Retrieval window
                                                size
   FAB$L_SDC      4     None                    Secondary device
                                                characteristics
   FAB$B_SHR      1     SHARING                 File sharing
   FAB$L_STS      4     None                    Completion status
                                                code
   FAB$L_STV      4     None                    Status values
   FAB$L_XAB      4     None                    Extended attribute
                                                block address
 

2  NAM
   The name (NAM) block provides additional fields for extended file
   specification use, including parsing and obtaining the actual
   file specification used for a file operation. On Alpha systems,
   the long name block (NAML) can optionally take the place of a NAM
   block (see NAML).

   The following table lists the symbolic offset, the size in bytes,
   and a brief description of each field.

   Offset             Size               Description

   NAM$B_BID          1                  Block identifier
   NAM$B_BLN          1                  Block length
   NAM$B_DEV          1                  Device string length
   NAM$L_DEV          4                  Device string address
   NAM$W_DID          6                  Directory identification
   NAM$B_DIR          1                  Directory string length
   NAM$L_DIR          4                  Directory string address
   NAM$T_DVI          16                 Device identification
   NAM$L_ESA          4                  Expanded string area
                                         address
   NAM$B_ESL          1                  Expanded string length
   NAM$B_ESS          1                  Expanded string area size
   NAM$W_FID          6                  File identification
   NAM$W_FIRST_WILD_  2                  The topmost directory level
   DIR                                   to contain a wildcard.
   NAM$L_FNB          4                  File name status bits
   NAM$W_LONG_DIR_    2                  Total number directories
   LEVELS
   NAM$B_NAME         1                  File name string length
   NAM$L_NAME         4                  File name string address
   NAM$B_NMC          1                  Name characteristics
   NAM$B_NODE         1                  Node name string length
   NAM$L_NODE         4                  Node name string address
   NAM$B_NOP          1                  Name block options
   NAM$L_RLF          4                  Related file NAM or NAML
                                         block address
   NAM$L_RSA          4                  Resultant string area
                                         address
   NAM$B_RSL          1                  Resultant string length
   NAM$B_RSS          1                  Resultant string area size
   NAM$B_TYPE         1                  File type string length
   NAM$L_TYPE         4                  File type string address
   NAM$B_VER          1                  File version string length
   NAM$L_VER          4                  File version string address
   NAM$L_WCC          4                  Wildcard context
 

2  NAML
   On Alpha systems, the long name block (NAML) can optionally take
   the place of a NAM block. The NAML allows OpenVMS Alpha users
   to locate and use file specifications that are longer than 255
   bytes.

   The following table describes the NAML field offset, size,
   corresponding NAM or FAB field, and description.

                               Corresponding
                               NAM or FAB
   Field Offset         Size   Field            Description

   NAML$B_BID           1      None             Block identifier
   NAML$B_BLN           1      None             Block length
   NAML$L_FILESYS_      4      None             File system name
   NAME                                         buffer address.
   NAML$L_FILESYS_      4      None             File system name
   NAME_ALLOC                                   buffer allocated
                                                size
   NAML$L_FILESYS_      4      None             File system name
   NAME_SIZE                                    length
   NAML$L_INPUT_FLAGS   4      None             Additional flags
                                                specified as input
   NAML$L_LONG_         4      FAB$L_DNA        Long default file
   DEFNAME                                      specification string
                                                address specified
                                                as input (used if
                                                FAB$L_DNA contains
                                                -1)
   NAML$L_LONG_         4      FAB$B_DNS        Long default file
   DEFNAME_SIZE                                 specification string
                                                size specified as
                                                input
   NAML$L_LONG_DEV      4      NAM$L_DEV        Long device string
                                                address
   NAML$L_LONG_DEV_     4      NAM$B_DEV        Long device string
   SIZE                                         length
   NAML$L_LONG_DIR      4      NAM$L_DIR        Long directory
                                                string address
   NAML$L_LONG_DIR_     4      NAM$B_DIR        Long directory
   SIZE                                         string length
   NAML$L_LONG_EXPAND   4      NAM$L_ESA        Long expanded string
                                                area address
   NAML$L_LONG_         4      NAM$B_ESS        Long expanded string
   EXPAND_ALLOC                                 area size
   NAML$L_LONG_         4      NAM$B_ESL        Long expanded string
   EXPAND_SIZE                                  length
   NAML$L_LONG_         4      FAB$L_FNA        Long file
   FILENAME                                     specification string
                                                address
   NAML$L_LONG_         4      FAB$B_FNS        Long file
   FILENAME_SIZE                                specification string
                                                size
   NAML$L_LONG_NAME     4      NAM$L_NAME       Long file name
                                                string address
   NAML$L_LONG_NAME_    4      NAM$B_NAME       Long file name
   SIZE                                         string length
   NAML$L_LONG_NODE     4      NAM$L_NODE       Long node name
                                                string address
   NAML$L_LONG_NODE_    4      NAM$B_NODE       Long node name
   SIZE                                         string length
   NAML$L_LONG_RESULT   4      NAM$L_RSA        Long resultant
                                                string area address
   NAML$L_LONG_         4      NAM$B_RSS        Long resultant
   RESULT_ALLOC                                 string area size
   NAML$L_LONG_         4      NAM$B_RSL        Long resultant
   RESULT_SIZE                                  string length
   NAML$L_LONG_TYPE     4      NAM$L_TYPE       Long file type
                                                string length
   NAML$L_LONG_TYPE_    4      NAM$B_TYPE       Long file type
   SIZE                                         string address
   NAML$L_LONG_VER      4      NAM$L_VER        Long file version
                                                string address
   NAML$L_LONG_VER_     4      NAM$B_VER        Long file version
   SIZE                                         string length
   NAML$L_OUTPUT_       4      None             Additional status
   FLAGS                                        bits passed as
                                                output
   NAML$L_USER_         8      None             User context
   CONTEXT

   NAML Fields Equivalent to NAM Fields

   NAML$B_DEV           1      NAM$B_DEV        Device string length
   NAML$L_DEV           4      NAM$L_DEV        Device string
                                                address
   NAML$W_DID           6      NAM$W_DID        Directory
                                                identification
   NAML$B_DIR           1      NAM$B_DIR        Directory string
                                                length
   NAML$L_DIR           4      NAM$L_DIR        Directory string
                                                address
   NAML$T_DVI           16     NAM$T_DVI        Device
                                                identification
   NAML$L_ESA           4      NAM$L_ESA        Expanded string area
                                                address
   NAML$B_ESL           1      NAM$B_ESL        Expanded string
                                                length
   NAML$B_ESS           1      NAM$B_ESS        Expanded string area
                                                size
   NAML$W_FID           6      NAM$W_FID        File identification
   NAML$W_FIRST_WILD_   2      NAM$W_FIRST_     The topmost
   DIR                         WILD_DIR         directory level to
                                                contain a wildcard.
   NAML$L_FNB           4      NAM$L_FNB        File name status
                                                bits
   NAML$W_LONG_DIR_     2      NAM$W_LONG_DIR_  Total number
   LEVELS                      LEVELS           directories
   NAML$B_NAME          1      NAM$B_NAME       File name string
                                                length
   NAML$L_NAME          4      NAM$L_NAME       File name string
                                                address
   NAML$B_NMC           1      NAM$B_NMC        Name characteristics
   NAML$B_NODE          1      NAM$B_NODE       Node name string
                                                length
   NAML$L_NODE          4      NAM$L_NODE       Node name string
                                                address
   NAML$B_NOP           1      NAM$B_NOP        Name block options
   NAML$L_RLF           4      NAM$L_RLF        Related file NAM or
                                                NAML block address
   NAML$L_RSA           4      NAM$L_RSA        Resultant string
                                                area address
   NAML$B_RSL           1      NAM$B_RSL        Resultant string
                                                length
   NAML$B_RSS           1      NAM$B_RSS        Resultant string
                                                area size
   NAML$B_TYPE          1      NAM$L_TYPE       File type string
                                                length
   NAML$L_TYPE          4      NAM$B_TYPE       File type string
                                                address
   NAML$B_VER           1      NAM$B_VER        File version string
                                                length
   NAML$L_VER           4      NAM$L_VER        File version string
                                                address
   NAML$L_WCC           4      NAM$L_WCC        Wildcard context
 

2  RAB
   The record access block (RAB) defines run-time options for a
   record stream and for individual operations within a predefined
   record stream context. After you connect the file to a record
   stream and associate the record stream with a FAB, you use the
   RAB fields to specify the next record you want to access and to
   identify appropriate record characteristics.

   NOTE: If you are using 64-bit addressing on an OpenVMS Alpha
   system, you must use RAB64 instead of RAB.

   The following table lists the symbolic offset, the size in bytes,
   the FDL equivalent and a brief description of each field.

   Offset      Size   FDL Equivalent           Description

   RAB$B_BID   1      None                     Block identifier
   RAB$L_BKT   4      CONNECT BUCKET_CODE      Bucket code
   RAB$B_BLN   1      None                     Block length
   RAB$L_CTX   4      CONNECT CONTEXT          User context
   RAB$L_FAB   4      None                     File access block
                                               address
   RAB$W_ISI   2      None                     Internal stream
                                               identifier
   RAB$L_KBF   4      None                     Key buffer address
   RAB$B_KRF   1      CONNECT KEY_OF_          Key of reference
                      REFERENCE
   RAB$B_KSZ   1      None                     Key size
   RAB$B_MBC   1      CONNECT MULTIBLOCK_      Multiblock count
                      COUNT
   RAB$B_MBF   1      CONNECT MULTIBUFFER_     Multibuffer count
                      COUNT
   RAB$L_PBF   4      None                     Prompt buffer address
   RAB$B_PSZ   1      None                     Prompt buffer size
   RAB$B_RAC   1      CONNECT                  Record access mode
   RAB$L_RBF   4      None                     Record buffer address
   RAB$W_RFA   6      None                     Record file address
   RAB$L_RHB   4      None                     Record header buffer
                                               address
   RAB$L_ROP   4      CONNECT                  Record-processing
                                               options
   RAB$W_RSZ   2      None                     Record size
   RAB$L_STS   4      None                     Completion status
                                               code
   RAB$L_STV   4      None                     Status value
   RAB$W_STV0  2      None                     Low-order word status
                                               value
   RAB$W_STV2  2      None                     High-order word
                                               status value
   RAB$B_TMO   1      CONNECT TIMEOUT_PERIOD   Timeout period
   RAB$L_UBF   4      None                     User record buffer
                                               address
   RAB$W_USZ   2      None                     User record buffer
                                               size
   RAB$L_XAB   4      None                     Next XAB address
 

2  RAB64_(Alpha_Only)
   On an Alpha system, the 64-bit record access block (RAB64) is
   an extension of the RAB that allows OpenVMS Alpha users to use
   64-bit addresses for the following I/O buffers:

   o  UBF (user record buffer)

   o  RBF (record buffer)

   o  RHB (fixed-length record header buffer; fixed portion of VFC
      record format)

   o  KBF (key buffer containing the key value for random access)

   RAB64 has fields corresponding to all the RAB fields, plus
   seven additional fields to accommodate 64-bit addressing. The
   additional fields are listed first in the following table; none
   have FDL equivalents. All the other RAB64 fields are equivalent
   to their RAB counterparts and have the same FDL equivalents.

   For each field, this table lists the symbolic offset, the size in
   bytes, the RAB equivalent, and a brief description.

                         RAB
   Offset         Size   Equivalent     Description

   Alpha-Only RAB64 Fields:

   RAB64$Q_CTX    8      None           User context (64-bit)
   RAB64$PQ_KBF   8      None           Key buffer 64-bit address
   RAB64$PQ_RBF   8      None           Record buffer 64-bit address
   RAB64$PQ_RHB   8      None           Record header buffer 64-bit
                                        address
   RAB64$Q_RSZ    8      None           Record buffer size
   RAB64$PQ_UBF   8      None           User record buffer 64-bit
                                        address
   RAB64$Q_USZ    8      None           User record buffer size



   RAB64 Fields Equivalent to RAB Fields:

   RAB64$B_BID    1      RAB$B_BID      Block identifier
   RAB64$L_BKT    4      RAB$L_BKT      Bucket code
   RAB64$B_BLN    1      RAB$B_BLN      Block length
   RAB64$L_CTX    4      RAB$L_CTX      User context
   RAB64$L_FAB    4      RAB$L_FAB      File access block address
   RAB64$W_ISI    2      RAB$W_ISI      Internal stream identifier
   RAB64$L_KBF    4      RAB$L_KBF      Key buffer address
   RAB64$B_KRF    1      RAB$B_KRF      Key of reference
   RAB64$B_KSZ    1      RAB$B_KSZ      Key size
   RAB64$B_MBC    1      RAB$B_MBC      Multiblock count
   RAB64$B_MBF    1      RAB$B_MBF      Multibuffer count
   RAB64$L_PBF    4      RAB$L_PBF      Prompt buffer address
   RAB64$B_PSZ    1      RAB$B_PSZ      Prompt buffer size
   RAB64$B_RAC    1      RAB$B_RAC      Record access mode
   RAB64$L_RBF    4      RAB$L_RBF      Record buffer address
   RAB64$W_RFA    6      RAB$W_RFA      Record file address
   RAB64$L_RHB    4      RAB$L_RHB      Record header buffer address
   RAB64$L_ROP    4      RAB$L_ROP      Record-processing options
   RAB64$W_ROP_   2      Extended
   2                     record-
                         processing
                         options
   RAB64$W_RSZ    2      RAB$W_RSZ      Record buffer size
   RAB64$L_STS    4      RAB$L_STS      Completion status code
   RAB64$L_STV    4      RAB$L_STV      Status value
   RAB64$W_STV0   2      RAB$W_STV0     Low-order word status value
   RAB64$W_STV2   2      RAB$W_STV2     High-order word status value
   RAB64$B_TMO    1      RAB$B_TMO      Timeout period
   RAB64$L_UBF    4      RAB$L_UBF      User record buffer address
   RAB64$W_USZ    2      RAB$W_USZ      User record buffer size
   RAB64$L_XAB    4      RAB$L_XAB      Next XAB address

   The RAB64 $PQ_ fields can hold either 64-bit addresses or 32-bit
   addresses sign-extended to 64-bits. Therefore, you can use these
   fields in all applications whether or not you are using 64-bit
   addresses.

   If your application already uses RAB fields, only minimal source
   code changes are required to use 64-bit RMS support. The RAB64
   64-bit counterpart to a 32-bit address field is used only if the
   following two conditions exist:

   o  The RAB64$B_BLN field has been initialized to RAB64$C_BLN64.

   o  The 32-bit address cell in the 32-bit portion of the RAB64
      contains -1.

   Because the RAB64 is an upwardly compatible version of the RAB,
   RMS allows you to use the RAB64 wherever you can use a RAB.
 

2  XABALL
   The allocation control XAB (XABALL) provides additional control
   over file or area space allocation on disk devices in order to
   optimize performance.

   When RMS uses a XAB to create or extend an area, the following
   XABALL fields duplicate and take precedence over associated
   fields in the related FAB:

   o  The allocation quantity (ALQ) field, XAB$L_ALQ, overrides
      FAB$L_ALQ

   o  The bucket size (BKZ) field, XAB$B_BKZ, overrides FAB$B_BKS

   o  The default extension quantity (DEQ) field, XAB$W_DEQ,
      overrides FAB$W_DEQ

   o  The XAB$V_CBT and XAB$V_CTG options of the allocation options
      field, XAB$B_AOP, override the FAB$V_CBT and FAB$V_CTG options
      of the file-processing options field, FAB$L_FOP

   The following table lists the symbolic offset, the size in bytes,
   the FDL equivalent, and a brief description of each field.

   Offset      Size   FDL Equivalent      Description

   XAB$B_AID   1      AREA n              Area identification number
   XAB$B_ALN   1      AREA POSITION       Alignment boundary type
   XAB$L_ALQ   4      AREA ALLOCATION     Allocation quantity
   XAB$B_AOP   1      AREA                Allocation options
   XAB$B_BKZ   1      AREA BUCKET_SIZE    Bucket size
   XAB$B_BLN   1      None                Block length
   XAB$B_COD   1      None                Type code
   XAB$W_DEQ   2      AREA EXTENSION      Default extension quantity
   XAB$L_LOC   4      AREA POSITION       Location
   XAB$L_NXT   4      None                Next XAB address
   XAB$W_RFI   6      AREA POSITION       Related file identifier
                      FILE_ID
                      or FILE_NAME
   XAB$W_VOL   2      AREA VOLUME         Related volume number
 

2  XABDAT
   On Alpha systems for Files-11 B (ODS-2) media, the date and
   time XAB (XABDAT) block provides extended control of the date
   and time of the file's creation, revision (update), backup, and
   expiration.

   The following table lists the symbolic offset, the size in bytes,
   FDL equivalent, and a brief description of each field.

                       FDL
   Offset      Size    Equivalent     Description

   XAB$Q_BDT   8       DATE BACKUP    Backup date and time
   XAB$B_BLN   1       None           Block length
   XAB$Q_CDT   8       DATE           Creation date and time
                       CREATION
   XAB$B_COD   1       None           Type code
   XAB$Q_EDT   8       DATE           Expiration date and time
                       EXPIRATION
   XAB$L_NXT   4       None           Next XAB address
   XAB$Q_RDT   8       DATE           Revision date and time
                       REVISION
   XAB$W_RVN   2       FILE           Revision number
                       REVISION
   XAB$Q_ACC   8       None           Last time file accessed
   XAB$Q_ATT   8       None           Last time file attribute
                                      modified
   XAB$Q_MOD   8       None           Last time file data modified
 

2  XABFHC
   The file header characteristic XAB (XABFHC) contains file header
   information that is output by the Open service and the Display
   service. The Create service can output information in this XAB
   when it opens an existing file through use of the Create-if
   option.

   The only input field is the longest record length (XAB$W_LRL)
   field. The Create service uses this field when it creates a
   sequential file that does not use a fixed-length record format.

   Note that, for unshared sequential files or sequential files
   shared using the FAB$V_UPI option, the values in the end-of-
   file block (XAB$L_EBK), first free byte in the end-of-file
   block (XAB$W_FFB), and longest record length (XAB$W_LRL) fields
   correspond to the values at the time of the last Close or Flush
   service.

   The following table lists the symbolic offset, the size in bytes,
   and a brief description of each field.

   Offset        Size    Description

   XAB$B_ATR     1       Record attributes; equivalent to FAB$B_RAT
   XAB$B_BKZ     1       Bucket size; equivalent to FAB$B_BKS
   XAB$B_BLN     1       Block length
   XAB$B_COD     1       Type code
   XAB$W_DXQ     2       Default file extension quantity; equivalent
                         to FAB$W_DEQ
   XAB$L_EBK     4       End-of-file block
   XAB$W_FFB     2       First free byte in the end-of-file block
   XAB$W_GBC     2       Default global buffer count
   XAB$L_HBK     4       Highest virtual block in the file;
                         equivalent to FAB$L_ALQ
   XAB$B_HSZ     1       Fixed-length control header size;
                         equivalent to FAB$B_FSZ
   XAB$W_LRL     2       Longest record length
   XAB$W_MRZ     2       Maximum record size; equivalent to FAB$W_
                         MRS
   XAB$L_NXT     4       Next XAB address
   XAB$B_RFO     1       File organization and record format;
                         combines FAB$B_RFM and FAB$B_ORG
   XAB$L_SBN     4       Starting logical block number for the file
                         if it is contiguous; otherwise this field
                         is 0
   XAB$W_        2       Version limit for the file
   VERLIMIT
 

2  XABITM
   The item list XAB (XABITM) provides a convenient means for
   using item list information to support RMS functions. Each
   XABITM points to an item list that includes one or more entries
   representing either a set function or a sense function that can
   be passed to the application program by way of the RMS interface.

   Because the mode field in a XABITM can be used to either set
   or sense the items in the list, you cannot use a single XABITM
   to both set and sense a particular function. However, you may
   use multiple XABITMs, some for setting functions and other
   for sensing functions. RMS logically ignores items that are
   irrelevant to any particular function while acting on any item
   that is relevant.

   Each entry in the item list includes three longwords, and
   a longword 0 terminates the list. Also note that RMS does
   not validate the item list. If the item list is invalid, RMS
   indicates that the XABITM is not valid by returning the invalid
   XAB status (RMS$_XAB) in the RAB$L_STS field.

   You can store the item list anywhere within process readable
   address space, but any buffers required by the related function
   must be in read/write memory.

   The XABITM control block currently supports the following
   functions:

   o  Enhancements to network file access functions

   o  Passing of file user characteristic information

   o  Enhancements to RMS performance monitoring functions

   o  Support for compound documents

   o  Specifying the number of local buffers

   o  Expiration date and time suppression

   o  Support for file size in heterogeneous environments

   The following table lists the symbolic offset and a brief
   description of each field.

   Offset        Description

   XAB$B_BLN     Block length
   XAB$B_COD     Type code
   XAB$L_        Item list address
   ITEMLIST
   XAB$B_MODE    Set/sense control
   XAB$L_NXT     Next XAB address
 

2  Extended_File_Cache_(XAB$_CACHE_OPTIONS)_(Alpha_Only)
   The ODS-2 and ODS-5 volumes of the Files-11 file system can use
   a caching technique to improve performance. In using caching,
   the file system keeps a copy of data that it recently read from
   disk in an area of memory called a cache. When an application
   reads data, for example, the file system checks whether the data
   is in its cache. The file system only issues an I/O to read the
   data from disk if the data is not in the cache. Caching improves
   read performance, because reading data from cache memory is much
   faster than reading it from disk.

   The extended file cache (XFC) is a virtual block cache, which
   caches both data and image files, and is available only on
   Alpha Systems. The extended file cache allows you to specify
   the following caching options:

   o  Write-through caching

   o  No caching

   You can control the files that the Extended File Cache option
   caches by setting and showing the current caching option. This is
   described in the following section.

   Setting and Showing the Current Caching Option

   When you access a file, you can specify the caching option that
   you would like for the current process. If you want the file to
   be cached, select write-through caching. This is the default. The
   write-through cache allows an application to write data to a file
   and straight through to disk. When this occurs, the application
   waits until the disk I/O is done and the data is on the disk.

   You can set the caching option by supplying a set mode XAB$_
   CACHING_OPTIONS XABITM when you do the following:

   o  When you create a file using SYS$CREATE

   o  When you open an existing file using SYS$OPEN

   If you do not supply a XABITM or, if you supply a XABITM whose
   value is zero (0), the file system uses the value in the file's
   caching attribute.

   If another process on your computer is accessing the file, and
   you ask for write-through caching, your request is ignored
   if the file's current caching option is no caching. When more
   than one process is accessing a file on a single node, the
   most restrictive caching option takes effect on that node.
   Write-through caching is least restrictive; no caching is most
   restrictive.

   When more than one node in an OpenVMS Cluster is accessing a
   file, its caching option may be different on different nodes. It
   may be write-through on one node and no caching on another.

   To show the caching option, supply a sense mode XABITM on a call
   to SYS$DISPLAY.
 

2  POSIX-Compliant_Access_Dates_(Alpha_Only)
   To support POSIX-compliant file timestamps on ODS-5 disks, file
   attributes have been extended to include the following three
   access dates:

   o  The last access date (XAB$Q_ACC)

   o  The last attribute modification date (XAB$Q_ATT)

   o  The last data modification date (XAB$Q_MOD)

   The XABITM SENSEMODE interface can be used with the following
   item codes on $OPEN or $DISPLAY operations to sense each of these
   three access dates:

   o  XAB$_ACCDATE

   o  XAB$_ATTDATE

   o  XAB$_MODDATE

   Sensing these dates requires that access date support be
   enabled on the ODS-5 volume. (See the DCL SET VOLUME/VOLUME_
   CHARACTERISTICS command in the OpenVMS DCL Dictionary: N-Z.)

   A SETMODE can be used with a $CLOSE operation with any of these
   item codes to update these dates regardless of the volume
   setting. A user may inhibit the update of the access dates by
   using the XAB$_NORECORD XABITM.

   Each of these item codes requires a quadword buffer.

   If a SENSEMODE using any of these item codes is requested for a
   non-ODS-5 file, a zero is returned. A SETMODE using any of these
   item codes for a non-ODS-5 file will be ignored.

   These items are ignored for DECnet operations. If a SENSEMODE
   is attempted for any of these items, the user buffer is left
   unchanged.
 

2  XABJNL
   The journaling XAB (XABJNL) control block supports file
   journaling operations. See the RMS Journaling for OpenVMS Manual
   for details.
 

2  XABKEY
   You must provide a key definition XAB (XABKEY) for each key in an
   indexed file in order to define the key's characteristics. Before
   you create an indexed file, you must establish the contents of
   the XABKEY fields for the primary key and for each alternate key.

   When you invoke an Open or Display service for an existing
   indexed file, you can use XABKEYs if you want to provide your
   program with one or more of the key definitions specified when
   the file was created. Alternatively, the summary XAB provides
   the number of keys, the number of allocated areas, and the prolog
   version assigned to the file.

   The following table lists the symbolic offset, the size in bytes,
   FDL equivalent, and a brief description of each field.

   Offset        Size    FDL Equivalent    Description

   XAB$B_BLN     1       None              Block length
   XAB$B_COD     1       None              Type code
   XAB$L_COLNAM  4       None              Collating sequence name
   XAB$L_COLSIZ  4       None              Collating sequence table
                                           size
   XAB$L_COLTBL  4       COLLATING_        Collating sequence table
                         SEQUENCE          address
   XAB$B_DAN     1       KEY DATA_AREA     Data bucket area number
   XAB$B_DBS     1       None              Data bucket size
   XAB$W_DFL     2       KEY DATA_FILL     Data bucket fill size
   XAB$B_DTP     1       KEY TYPE          Data type of the key
   XAB$L_DVB     4       None              First data bucket virtual
                                           block number
   XAB$B_FLG     1       KEY               Key options flag
   XAB$B_IAN     1       KEY INDEX_AREA    Index bucket area number
   XAB$B_IBS     1       None              Index bucket size
   XAB$W_IFL     2       KEY INDEX_FILL    Index bucket file size
   XAB$L_KNM     4       KEY NAME          Key name buffer address
   XAB$B_LAN     1       KEY LEVEL1_       Lowest level of index
                         INDEX_AREA        area number
   XAB$B_LVL     1       None              Level of root bucket
   XAB$W_MRL     2       None              Minimum record length
   XAB$B_NSG     1       None              Number of key segments
   XAB$B_NUL     1       KEY NULL_VALUE    Null key value
   XAB$L_NXT     4       None              Next XAB address
   XAB$W_POSn    2       KEY POSITION and  Key position, XAB$W_POS0
                         SEGn_POSITION     to XAB$W_POS7
   XAB$B_PROLOG  1       KEY PROLOG        Prolog level
   XAB$B_REF     1       KEY n             Key of reference
   XAB$L_RVB     4       None              Root bucket virtual block
                                           number
   XAB$B_SIZn    1       KEY LENGTH and    Key size XAB$B_SIZ0 to
                         SEGn_LENGTH       XAB$B_SIZ7
   XAB$B_TKS     1       None              Total key field size
 

2  XABPRO
   The protection XAB (XABPRO) specifies the ownership,
   accessibility, and protection for a file. Although an application
   program typically uses a XABPRO as input to establish file
   protection when it creates a file, it can also use the XABPRO
   to change file protection when it closes a file. The program that
   opened the file can change file protection when it closes the
   file only if it accessed the file to make modifications and has
   control access.

   The following table lists the symbolic offset, the size in bytes,
   FDL equivalent, and a brief description of each field.

   Offset         FDL Equivalent    Description

   XAB$L_ACLBUF   None              Address of buffer that contains
                                    ACL
   XAB$L_ACLCTX   None              ACL positioning context
   XAB$W_ACLLEN   None              Receives the length of an
                                    ACL during an Open or Display
                                    service
   XAB$W_ACLSIZ   None              Length of buffer containing
                                    binary ACEs
   XAB$L_ACLSTS   None              System error status for ACL
                                    processing
   XAB$B_BLN      None              Block length
   XAB$B_COD      None              Type code
   XAB$W_GRP      FILE OWNER        Group number of file owner
   XAB$W_MBM      FILE OWNER        Member number of file owner
   XAB$B_MTACC    FILE MT_          Magnetic tape accessibility
                  PROTECTION
   XAB$L_NXT      None              Next XAB address
   XAB$W_PRO      FILE PROTECTION   File protection; contains
                                    four separate fields denoting
                                    protection for system, owner,
                                    group, and world
   XAB$B_PROT_    None              File protection options
   OPT
   XAB$L_UIC      FILE OWNER        User identification code;
                                    contains both the group and
                                    member fields
 

2  XABRDT
   The revision date and time XAB (XABRDT) complements the date and
   time XAB (XABDAT) by providing revision time and date input to
   the Close service when RMS closes a file that has been modified.
   Like the XABDAT, the XABRDT can be used as input to the Create
   Service or can be used to store revision data returned by the
   Open service or the Display service. The distinction is that
   XABDAT cannot be used to modify the revision data. Only the
   XABRDT can be used to update revision data when a file is closed
   after being modified. Typically, a process would use the two data
   structures when it wants to sense and set revision data within a
   single file operation.

   To change the revision data, the process must have Control access
   to the file and must have opened the file for modification using
   the Put, Update, Truncate, or Delete service.

   The two XABRDT fields that specify revision values are the XABQ_
   RDT (revision date and time) field and the XAB$W_RVN (revision
   number) field.

   o  The 64-bit XAB$Q_RDT binary field indicates the date and time
      when the file was last opened for modifications.

   o  The XAB$W_RVN field indicates how many times the file is
      opened for modifications.

   The following table indicates how RMS uses the XABRDT fields for
   various file-processing services.

   Service    Input/Output

   Close      Input
   Create     Input
   Display    Output
   Erase      Not used
   Extend     Not used
   Open       Output

   The Open service overwrites the XAB$Q_RDT and XAB$W_RVN fields
   with the file's existing revision values. If you do not change
   these values, the existing values are subsequently input to the
   Close service and the file's revision data is not updated.

   To change the revision data, you must set the fields between the
   time you open the file and the time you close the file. If you
   specify a revision date and time of 0 or if you do not include
   a XABRDT as input to the Close service, RMS uses the current
   date and time for the revision date and time and increments the
   revision number.

   To sense the contents of the XAB$Q_RDT and XAB$W_RVN fields
   before you specify new values with the XABRDT, examine the XAB$Q_
   RDT field and the XAB$W_RVN field in the XABDAT block.

   The following table lists the symbolic offset, the size in bytes,
   FDL equivalent, and a brief description of each field.

                       FDL
   Offset      Size    Equivalent    Description

   XAB$B_BLN   1       None          Block length
   XAB$B_COD   1       None          Type code
   XAB$L_NXT   4       None          Next XAB address
   XAB$Q_RDT   8       DATE          Revision date and time
                       REVISION
   XAB$W_RVN   2       FILE          Revision number
                       REVISION
 

2  XABRU
   The recovery unit XAB (XABRU) control block supports the use
   of recovery units to assure data file integrity. See the RMS
   Journaling for OpenVMS Manual for details.
 

2  XABSUM
   The summary XAB (XABSUM) can be associated with a FAB at the time
   a Create, Open, or Display service is invoked. The presence of
   this XAB during these calls allows RMS to return to your program
   the total number of keys and allocation areas defined and the
   version number when the file was created. Note that a XABSUM is
   used only with indexed files.

   The following table lists the symbolic offset, the size in bytes,
   and a brief description of each field.

   Offset      Size     Description

   XAB$B_BLN   Byte     Block length
   XAB$B_COD   Byte     Type code
   XAB$B_NOA   Byte     Number of allocation areas defined for the
                        file
   XAB$B_NOK   Byte     Numbers of keys defined for the file
   XAB$L_NXT   Longword Next XAB address
   XAB$W_PVN   Word     Prolog version number
 

2  XABTRM
   The terminal XAB (XABTRM) allows extended terminal read
   operations to occur when a Get service is used for a terminal
   device. Unlike most other XABs, the XABTRM is associated with
   a RAB (record stream). The XABTRM provides information that the
   terminal driver uses to process a user-defined item list that
   defines the terminal read operation.

   The following table lists the symbolic offset, the size in bytes,
   and a brief description of each field.

   Offset           Size    Description

   XAB$B_BLN        1       Block length
   XAB$B_COD        1       Type code
   XAB$L_ITMLST     4       Item list address
   XAB$W_ITMLST_    2       Item list length
   LEN
   XAB$L_NXT        4       Next XAB address

   To perform the extended terminal read operation, the following
   information is required:

   o  In the RAB, the RAB$L_ROP field RAB$V_ETO option must be
      specified (set).

   o  In the RAB, the RAB$L_XAB field must contain the address of
      the XABTRM.

   o  In the XABTRM, the XAB$L_ITMLST and XAB$W_ITMLST_LEN fields
      must contain the starting address and length of a valid
      terminal driver read function item list.

   o  The item list must be supplied according to the conventions
      described for creating an item list for the terminal driver in
      the OpenVMS I/O User's Reference Manual.

   An item list consists of one or more item list entries, where
   each item defines an attribute of the terminal read operation.
   Instead of defining terminal read arguments in the RAB, all such
   arguments (including certain arguments only available with the
   item list method) are defined in the item list. The following
   list shows the RAB$L_ROP options related to a terminal read
   operation and the equivalent item codes:

   Option        Item Code

   RAB$V_CVT     TRM$_MODIFIERS, bit TRM$M_TM_CVTLOW
   RAB$V_PMT     TRM$_PROMPT
   RAB$V_PTA     TRM$_MODIFIERS, bit TRM$M_TM_PURGE
   RAB$V_RNE     TRM$_MODIFIERS, bit TRM$M_TM_NOECHO
   RAB$V_RNF     TRM$_MODIFIERS, bit TRM$M_TM_NOFILTR
   RAB$V_TMO     TRM$_TIMEOUT
 

2  $CLOSE
   The Close service terminates file processing and closes the file.
   This service performs an implicit Disconnect service for all
   record streams associated with the file.

   Format

     SYS$CLOSE  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Close service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $CONNECT
   The Connect service establishes a record stream by associating
   and connecting a RAB with a FAB. You can invoke the Connect
   service only for files that are already open. The maximum number
   of record streams that can be connected within an image at one
   time is 16383.

                              RAB64 USERS

      RAB64 can replace the RAB or RAB prefix wherever it is used
      with the Connect service on OpenVMS Alpha systems.

   Format

     SYS$CONNECT  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Connect service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the Connect service
   invokes if the operation is unsuccessful. The err argument is
   the address of the entry mask of this user-written completion
   routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the Connect service
   invokes if the operation is successful. The suc argument is
   the address of the entry mask of this user-written completion
   routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $CREATE
   The Create service constructs a new file according to the
   attributes you specify in the FAB. If any XABs are chained to the
   FAB, then the characteristics described in the XABs are applied
   to the file. This service performs implicit Open and Display
   services.

   Format

     SYS$CREATE  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Create service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $DELETE
   The Delete service removes an existing record from a relative
   or indexed file. You cannot use this service when processing
   sequential files.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Delete service on OpenVMS Alpha
      systems.

   Format

     SYS$DELETE  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Delete service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $DISCONNECT
   The Disconnect service breaks the connection between a RAB and a
   FAB, thereby terminating a record stream. All system resources,
   such as I/O buffers and data structure space, are deallocated.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Disconnect service on OpenVMS
      Alpha systems.

   Format

     SYS$DISCONNECT  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Disconnect service call. The rab argument is
   the address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $DISPLAY
   The Display service retrieves file attribute information about
   a file and places this information in fields in the FAB, in
   XABs chained to the FAB, and in a NAM or NAML block (if one is
   requested).

   Format

     SYS$DISPLAY  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Display service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $ENTER
   The Enter service inserts a file name in a directory.

                                  NOTE

      The $ENTER service is not supported for DECnet.

   Format

     SYS$ENTER  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Enter service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $ERASE
   The Erase service deletes a disk file and removes the file's
   directory entry specified in the path to the file. If additional
   directory entries have been created for this file by the Enter
   service, you must use the Remove service to delete them.

   Format

     SYS$ERASE  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Erase service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $EXTEND
   The Extend service increases the amount of space allocated to
   a disk file. This service is most useful for extending relative
   files and indexed files when you are doing block I/O transfers
   using the Write service.

   Format

     SYS$EXTEND  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Extend service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $FIND
   The Find service locates a specified record in a file and returns
   its record file address in the RAB$W_RFA field of the RAB. The
   Find service can be used with all file organizations.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Find service on OpenVMS Alpha
      systems.

   Format

     SYS$FIND  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Find service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $FLUSH
   The Flush service writes out all modified I/O buffers and file
   attributes associated with the file. This ensures that all record
   activity up to the point at which the Flush service executes is
   actually reflected in the file.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Flush service on OpenVMS Alpha
      systems.

   Format

     SYS$FLUSH  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Flush service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $FREE
   The Free service unlocks all records that were previously locked
   for the record stream.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Free service on OpenVMS Alpha
      systems.

   Format

     SYS$FREE  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Free service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $GET
   The Get service retrieves a record from a file.

                                  NOTE

      When you invoke the Get service, RMS takes control of the
      record buffer and may modify it. RMS returns the record size
      and guarantees the contents only from where it accessed the
      record to the completion of the record.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Get service on OpenVMS Alpha
      systems.

   Format

     SYS$GET  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Get service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $NXTVOL
   The Next Volume service allows you to process the next tape
   volume in a multiple volume set. This service applies only to
   files on magnetic tape volumes.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Next Volume service on OpenVMS
      Alpha systems.

   Format

     SYS$NXTVOL  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Next Volume service call. The rab argument
   is the address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $OPEN
   The Open service makes an existing file available for processing
   by your program. The Open service specifies the type of record
   access to be used and determines whether the file can be shared.
   The Open service also performs an implicit Display service. The
   maximum number of files that can be open within an image at one
   time is 16383.

   Format

     SYS$OPEN  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Open service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $PARSE
   The Parse service analyzes the file specification string and
   fills in various NAM or NAML block fields.

   Format

     SYS$PARSE  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Parse service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $PUT
   The Put service inserts a record into a file.

                              RAB64 USERS

      RAB64 can replace the RAB or RAB prefix wherever it is used
      with the Put service on OpenVMS Alpha systems.

   Format

     SYS$PUT  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Put service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $READ
   The Read service retrieves a specified number of bytes from
   a file (beginning on a block boundary) and transfers them to
   memory. A Read service using block I/O can be performed on any
   file organization.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Read service on OpenVMS Alpha
      systems.

   Format

     SYS$READ  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Read service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $RELEASE
   The Release service unlocks the record specified by the contents
   of the record file address (RAB$W_RFA) field of the RAB.

                              RAB64 USERS

      RAB64 can replace the RAB or RAB prefix wherever it is used
      with the Release service on OpenVMS Alpha systems.

   Format

     SYS$RELEASE  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Release service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $REMOVE
   The Remove service deletes a file name from a directory. It is
   the reverse of the Enter service.

                                  NOTE

      The $REMOVE service is not supported for DECnet.

   Format

     SYS$REMOVE  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Remove service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $RENAME
   You can use this service to change the name, type, or version of
   a file, or to move a file to another directory by changing its
   directory specification. However, note that you cannot use this
   service to move a file to another device.

   Format

     SYS$RENAME  old-fab ,[err] ,[suc] ,new-fab
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

old-fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Rename service call. The old-fab argument is
   the address of the FAB control block that specifies the old file
   name.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

new-fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   The new-fab argument is the address of the FAB control block that
   specifies the new file name.

                                  NOTE

      If you invoke the Rename service using the $RENAME macro
      and if you do not specify arguments, you must construct an
      additional field within your argument list to contain the
      address of the FAB that specifies the new file name. This
      additional field is placed in the argument list following
      the field for the success completion routine and the
      argument count is set to 4.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $REWIND
   The Rewind service sets the context of a record stream to the
   first record in the file. RMS alters the context of the next
   record to indicate the first record as being the next record.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Rewind service on OpenVMS Alpha
      systems.

   Format

     SYS$REWIND  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Rewind service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $SEARCH
   The Search service scans a directory file and fills in various
   NAM or NAML block fields. This service should be preceded by
   the Parse service, in order to initialize the NAM or NAML block
   appropriately.

   Format

     SYS$SEARCH  fab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS. Symbolic
   offset FAB$L_STV may contain additional status information.
 

3  Arguments
 

fab

   OpenVMS usage:fab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB control block whose contents are to be used as indirect
   arguments for the Search service call. The fab argument is the
   address of the FAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $SPACE
   The Space service lets you space (skip) a tape file forward or
   backward a specified number of blocks.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Space service on OpenVMS Alpha
      systems.

   Format

     SYS$SPACE  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Space service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $TRUNCATE
   The Truncate service shortens a sequential file.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Truncate service on OpenVMS
      Alpha systems.

   Format

     SYS$TRUNCATE  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Truncate service call. The rab argument is
   the address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $UPDATE
   The Update service allows you to modify the contents of an
   existing record in a file residing on a disk device.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Update service on OpenVMS Alpha
      systems.

   Format

     SYS$UPDATE  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Update service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  $WAIT
   The Wait service suspends image execution until an asynchronous
   file or record service completes. The same control block that
   is used with the asynchronous file or record service call is
   specified as the parameter for the Wait service. If it is an
   asynchronous file service, the control block is a FAB; if it is
   an asynchronous record service, the control block is a RAB. Upon
   completion of the service, RMS returns control to your program at
   the point following the Wait service call.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Wait service on OpenVMS Alpha
      systems.

   Format

     SYS$WAIT  control-block
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset FAB$L_STS or RAB$L_STS.
   Symbolic offset FAB$L_STV or RAB$L_STV may contain additional
   status information.
 

3  Argument
 

control-block

   type:
   access:
   mechanism:    0
 

fab or rab

   OpenVMS usage:fab or rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   FAB or RAB control block whose contents are to be used as
   indirect arguments for the Open service call. The fab or rab
   argument is the address of the FAB or RAB control block.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.

   The RMS completion status codes for the Wait service are
   determined by the service being awaited, unless the address of
   the FAB or RAB specified for the wait is different from that
   specified for the awaited operation. In this case, RMS$_NORMAL is
   returned.
 

2  $WRITE
   The Write service transfers a user-specified number of bytes
   (beginning on a block boundary) to an RMS file of any file
   organization.

                        RAB64 USERS (ALPHA ONLY)

      On Alpha systems, RAB64 can replace the RAB or RAB prefix
      wherever it is used with the Write service on OpenVMS Alpha
      systems.

   Format

     SYS$WRITE  rab [,[err] [,suc]]
 

3  Returns
   OpenVMS usage:cond_value
   type:         longword
   access:       write only
   mechanism:    by value

   The value is returned in symbolic offset RAB$L_STS. Symbolic
   offset RAB$L_STV may contain additional status information.
 

3  Arguments
 

rab

   OpenVMS usage:rab
   type:         longword (unsigned)
   access:       modify
   mechanism:    by reference

   RAB control block whose contents are to be used as indirect
   arguments for the Write service call. The rab argument is the
   address of the RAB control block.
 

err

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level error completion routine that the service invokes if
   the operation is unsuccessful. The err argument is the address of
   the entry mask of this user-written completion routine.
 

suc

   OpenVMS usage:ast_procedure
   type:         procedure value
   access:       call without stack unwinding
   mechanism:    by reference

   AST-level success completion routine that the service invokes if
   the operation is successful. The suc argument is the address of
   the entry mask of this user-written completion routine.
 

3  Condition_Values_Returned

The following condition values can be returned. Use the Help Message
utility to access online message descriptions.
 

2  RMS_Control_Block_Macros
   This topic provides you with the format of each RMS control block
   macro.
 

3  $FAB
   The $FAB macro allocates storage for a FAB and initializes
   certain FAB fields with defaults and user-specified values. No
   value is returned for this assembly-time operation.

   Format

     $FAB  ALQ=allocation-quantity,

           BKS=bucket-size,

           BLS=block-size,

           CHAN_MODE=channel-access-mode

           CTX=user-context-value,

           DEQ=extension-quantity,

           DNA=default-filespec-address,

           DNM=<filespec>,

           DNS=default-filespec-string-size,

           FAC=<BIO BRO DEL GET PUT TRN UPD>,

           FNA=filespec-string-address,

           FNM=<filespec>,

           FNS=filespec-string-size,

           FOP=<CBT CIF CTG DFW DLT MXV NAM NEF NFS OFP POS RCK RWC

           RWO SCF SPL SQO SUP TEF TMD TMP UFO WCK>,

           FSZ=header-size,

           GBC=global-buffer-count,

           LNM_MODE=logical-name-translation-access-mode,

           MRN=maximum-record-number,

           MRS=maximum-record-size,

           NAM=nam-address,

           ORG={IDX|REL|SEQ},

           RAT=<BLK{CR|FTN|PRN}>,

           RFM={FIX|STM|STMCR|STMLF|UDF|VAR|VFC},

           RTV=window-size,

           SHR=<DEL GET MSE NIL PUT UPD UPI NQL>,

           XAB=xab-address
 

3  $FAB_STORE
   The $FAB_STORE macro moves user-specified values into fields of
   the specified FAB. The expanded $FAB_STORE code executes at run
   time on a previously initialized (allocated) FAB, in contrast to
   the $FAB macro, which initializes the FAB at assembly time. The
   $FAB_STORE macro must reside in a code program section.

   Format

     $FAB_STORE  fab=fab-address,

                 ALQ=#allocation-quantity,

                 BKS=#bucket-size,

                 BLS=#block-size,

                 CHAN_MODE=#channel-access-mode

                 CTX=user-context-value,

                 DEQ=#extension-quantity,

                 DNA=default-filespec-address,

                 DNS=#default-filespec-string-size,

                 FAC=<BIO BRO DEL GET PUT TRN UPD>,

                 FNA=filespec-string-address,

                 FNS=#filespec-string-size,

                 FOP=<CBT CIF CTG DFW DLT MXV NAM NEF NFS OFP POS

                 RCK RWC RWO SCF SPL SQO SUP TEF TMD TMP UFO WCK>,

                 FSZ=#header-size,

                 GBC=#global-buffer-count,

                 LNM_MODE=#logical-name-translation-access-mode,

                 MRN=#maximum-record-number,

                 MRS=#maximum-record-size,

                 NAM=nam-address,

                 ORG={IDX|REL|SEQ},

                 RAT=<BLK{CR|FTN|PRN}>,

                 RFM={FIX|STM|STMCR|STMLF|UDF|VAR|VFC},

                 RTV=#window-size,

                 SHR=<DEL GET MSE NIL PUT UPD UPI NQL>,

                 XAB=xab-address
 

3  $NAM
   The $NAM macro allocates storage for a NAM block and initializes
   certain NAM fields with default values and user-specified values.
   No value is returned for this assembly-time operation.

   Format

     $NAM  ESA=expanded-string-address,

           ESS=expanded-string-size,

           NOP=<NOCONCEAL PWD NO_SHORT_UPCASE SRCHXABS SYNCHK>,

           RLF=related-file-nam-block-address,

           RSA=resultant-string-address,

           RSS=resultant-string-size
 

3  $NAM_STORE
   The $NAM_STORE macro moves user-specified values into fields of
   the specified NAM block. The expanded $NAM_STORE code executes
   at run time on a previously initialized (allocated) NAM block,
   in contrast to the $NAM macro, which initializes a NAM block at
   assembly time. The $NAM_STORE macro must reside in a code program
   section.

   Format

     $NAM_STORE  NAM=nam-address,

                 DID=#directory-identification,

                 DVI=#device-identification,

                 ESA=expanded-string-address,

                 ESS=#expanded-string-size,

                 FID=#file-identification,

                 NOP=<NOCONCEAL NO_SHORT_UPCASE PWD SRCHXABS

                 SYNCHK>,

                 RLF=related-file-nam-block-address,

                 RSA=resultant-string-address,

                 RSS=#resultant-string-size
 

3  $NAML
   The $NAML macro allocates storage for a NAML block and
   initializes certain NAML fields with default values and user-
   specified values.

   Format

     $NAML  ESA=expanded-string-address,

            ESS=expanded-string-size,

            NOP=<NOCONCEAL PWD NO_SHORT_UPCASE SRCHXABS SYNCHK>,

            RLF=related-file-nam-block-address,

            RSA=resultant-string-address,

            RSS=resultant-string-size,

            FILESYS_NAME=file system name buffer address,

            FILESYS_NAME_ALLOC=file system name buffer size,

            INPUT_FLAGS=<NO_SHORT_OUTPUT>,

            LONG_DEFNAME=long default file specification string

            address,

            LONG_DEFNAME_SIZE=long default file specification string

            size,

            LONG_FILENAME=long file specification string address,

            LONG_FILENAME_SIZE=long file specification string size,

            LONG_EXPAND=long expanded string area address,

            LONG_EXPAND_ALLOC=long expanded string area size,

            LONG_RESULT=long resultant string area address,

            LONG_RESULT_ALLOC=long resultant string area size,

            USER_CONTEXT=user context
 

3  $NAML_STORE
   The $NAML_STORE macro moves user-specified values into fields of
   the specified NAML block. The expanded $NAML_STORE code executes
   at run time on a previously initialized (allocated) NAML block,
   in contrast to the $NAML macro, which initializes a NAML block
   at assembly time. The $NAML_STORE macro must reside in a code
   program section.

   Format

     $NAML_STORE  NAM=naml-address,

                  DID=#directory-identification,

                  DVI=#device-identification,

                  ESA=expanded-string-address,

                  ESS=#expanded-string-size,

                  FID=#file-identification,

                  NOP=<NOCONCEAL NO_SHORT_UPCASE PWD SRCHXABS

                  SYNCHK>,

                  RLF=related-file-nam-block-address,

                  RSA=resultant-string-address,

                  RSS=#resultant-string-size,

                  FILESYS_NAME=file system name buffer address,

                  FILESYS_NAME_ALLOC=#file system name buffer size,

                  INPUT_FLAGS=<NO_SHORT_OUTPUT>,

                  LONG_DEFNAME=long default file specification

                  string address,

                  LONG_DEFNAME_SIZE=#long default file specification

                  string size,

                  LONG_FILENAME=long file specification string

                  address,

                  LONG_FILENAME_SIZE=#long file specification string

                  size,

                  LONG_EXPAND=long expanded string area address,

                  LONG_EXPAND_ALLOC=#long expanded string area size,

                  LONG_RESULT=long resultant string area address,

                  LONG_RESULT_ALLOC=#long resultant string area

                  size,

                  USER_CONTEXT=#user context
 

3  $RAB
   The $RAB macro allocates storage for a RAB and initializes
   certain RAB fields with defaults and user-specified values.
   You cannot use this macro within a sequence of executable
   instructions. No value is returned for this assembly-time
   operation.

   Format

     $RAB  BKT=bucket-code-number,

           CTX=user-context-value,

           FAB=fab-address,

           KBF=key-buffer-address,

           KRF=key-of-reference-number,

           KSZ=key-size,

           MBC=multiblock-count-number,

           MBF=multibuffer-count-number,

           PBF=prompt-buffer-address,

           PSZ=prompt-buffer-size,

           RAC={KEY|RFA|SEQ},

           RBF=record-buffer-address,

           RHB=record-header-buffer-address,

           ROP=<ASY BIO CCO CDK CVT EOF EQNXT ETO FDL KGE KGT LIM

           LOA LOC NLK NXR NXT PMT PTA RAH REA REV RLK RNE RNF RRL

           TMO TPT UIF ULK WAT WBH>,

           ROP_2=<NQL NODLCKWT NODLCKBLK>,

           RSZ=record-size,

           TMO=time-out-number-of-seconds,

           UBF=user-record-buffer-address,

           USZ=user-record-buffer-size,

           XAB=xab-address
 

3  $RAB_STORE
   The $RAB_STORE macro moves user-specified values into fields of
   the specified RAB. The expanded $RAB_STORE code executes at run
   time on a previously initialized (allocated) RAB, in contrast
   to the $RAB macro, which allocates and initializes the RAB at
   assembly time. The $RAB_STORE macro must reside in a code program
   section.

   Format

     $RAB_STORE  RAB=rab-address,

                 BKT=#bucket-code-number,

                 CTX=user-context-value,

                 FAB=fab-address,

                 KBF=key-buffer-address,

                 KRF=#key-of-reference-number,

                 KSZ=#key-size,

                 MBC=#multiblock-count-number,

                 MBF=#multibuffer-count-number,

                 PBF=prompt-buffer-address,

                 PSZ=#prompt-buffer-size,

                 RAC={KEY|RFA|SEQ},

                 RBF=record-buffer-address,

                 RFA=#record-file-address,

                 RHB=record-header-buffer-address,

                 ROP=<ASY BIO CCO CDK CVT EOF EQNXT ETO FDL KGE KGT

                 LIM LOA LOC NLK NXR NXT PMT PTA RAH REA REV RLK RNE

                 RNF RRL TMO TPT UIF ULK WAT WBH>,

                 ROP_2=<NQL NODLCKWT NODLCKBLK>,

                 RSZ=#record-size,

                 TMO=#time-out-number-of-seconds,

                 UBF=user-record-buffer-address,

                 USZ=#user-record-buffer-size,

                 XAB=xab-address
 

3  $RAB64_(Alpha_Only)
   On Alpha systems, the $RAB64 macro allocates storage for a RAB64
   and initializes certain RAB64 fields with defaults and user-
   specified values. You cannot use this macro within a sequence of
   executable instructions. No value is returned for this assembly-
   time operation.

   The defaults unique to $RAB64 are as follows:

   o  RAB64$B_BLN is initialized to RAB64$C_BLN64.

   o  The original longword I/O buffers (KBF, RHB, RBF, and UBF) are
      initialized to -1; USZ and RSZ word sizes are initialized to
      0.

   User-specified values using the CTX, KBF, RHB, RBF, RSZ, UBF,
   or USZ keywords are moved into the quadword fields for these
   keywords. In contrast, the $RAB macro moves them into the
   longword (or word) fields for these keywords.

   Format

     $RAB64  BKT=bucket-code-number,

             CTX=user-context-value,

             FAB=fab-address,

             KBF=key-buffer-address,

             KRF=key-of-reference-number,

             KSZ=key-size,

             MBC=multiblock-count-number,

             MBF=multibuffer-count-number,

             PBF=prompt-buffer-address,

             PSZ=prompt-buffer-size,

             RAC={KEY|RFA|SEQ},

             RBF=record-buffer-address,

             RHB=record-header-buffer-address,

             ROP=<ASY BIO CCO CDK CVT EOF EQNXT ETO FDL KGE KGT LIM

             LOA LOC NLK NXR NXT PMT PTA RAH REA REV RLK RNE RNF RRL

             TMO TPT UIF ULK WAT WBH>,

             ROP_2=<NQL NODLCKWT NODLCKBLK>,

             RSZ=record-size,

             TMO=time-out-number-of-seconds,

             UBF=user-record-buffer-address,

             USZ=user-record-buffer-size,

             XAB=xab-address
 

3  $RAB64_STORE_(Alpha_Only)
   On Alpha systems, the $RAB64_STORE macro moves user-specified
   values into fields of the specified RAB64. The expanded $RAB64_
   STORE code executes at run time on a previously initialized
   (allocated) RAB64. In contrast, the $RAB64 macro allocates and
   initializes the RAB64 at assembly time. The $RAB64_STORE macro
   must reside in a code program section.

   User-specified values that use the CTX, KBF, RHB, RBF, RSZ, UBF,
   or USZ keywords are moved into the quadword fields for these
   keywords. In contrast, the $RAB_STORE macro moves them into the
   longword (or word) fields for these keywords.

   Format

     $RAB64_STORE  RAB=rab64-address,

                   BKT=#bucket-code-number,

                   CTX=user-context-value,

                   FAB=fab-address,

                   KBF=key-buffer-address,

                   KRF=#key-of-reference-number,

                   KSZ=#key-size,

                   MBC=#multiblock-count-number,

                   MBF=#multibuffer-count-number,

                   PBF=prompt-buffer-address,

                   PSZ=#prompt-buffer-size,

                   RAC={KEY|RFA|SEQ},

                   RBF=record-buffer-address,

                   RFA=#record-file-address,

                   RHB=record-header-buffer-address,

                   ROP=<ASY BIO CCO CDK CVT EOF EQNXT ETO FDL KGE

                   KGT LIM LOA LOC NLK NXR NXT PMT PTA RAH REA REV

                   RLK RNE RNF RRL TMO TPT UIF ULK WAT WBH>,

                   ROP_2=<NQL NODLCKWT NODLCKBLK>,

                   RSZ=#record-size,

                   TMO=#time-out-number-of-seconds,

                   UBF=user-record-buffer-address,

                   USZ=#user-record-buffer-size,

                   XAB=xab-address
 

3  $XABALL
   The $XABALL macro allocates and initializes a XABALL, which
   allows extended control of file disk space allocation, both for
   initial allocation and later extension. No value is returned for
   this assembly-time operation.

   Format

     $XABALL  AID=area-identification-number,

              ALN={ANY|CYL|LBN|RFI|VBN},

              ALQ=allocation-quantity,

              AOP=<CBT CTG HRD ONC>,

              BKZ=bucket-size,

              DEQ=extension-quantity,

              LOC=location-number,

              NXT=next-xab-address,

              RFI=<f(1), f(2), f(3)>,

              VOL=volume-number
 

3  $XABALL_STORE
   The $XABALL_STORE macro moves user-specified values into fields
   of the specified XABALL. The expanded $XABALL_STORE code executes
   at run time on a previously initialized (allocated) XABALL, in
   contrast to the $XABALL macro, which initializes a XABALL at
   assembly time. The $XABALL_STORE macro must reside in a code
   program section.

   Format

     $XABALL_STORE  XAB=xaball-address,

                    AID=#area-identification-number,

                    ALN={ANY|CYL|LBN|RFI|VBN},

                    ALQ=#allocation-quantity,

                    AOP=<CBT CTG HRD ONC>,

                    BKZ=#bucket-size,

                    DEQ=#extension-quantity,

                    LOC=#location-number,

                    NXT=next-xab-address,

                    RFI=#related-file-identification,

                    VOL=#volume-number
 

3  $XABDAT
   The $XABDAT macro allocates and initializes a XABDAT. No value is
   returned for this assembly-time operation.

   Format

     $XABDAT  EDT=date-time,

              NXT=next-xab-address
 

3  $XABDAT_STORE
   The $XABDAT_STORE macro moves user-specified values into fields
   of the specified XABDAT. The expanded $XABDAT_STORE code executes
   at run time on a previously initialized (allocated) XABDAT, in
   contrast to the $XABDAT macro, which initializes a XABDAT at
   assembly time. The $XABDAT_STORE macro must reside in a code
   program section.

   Format

     $XABDAT_STORE  XAB=xabdat-address,

                    CDT=#creation-date-time,

                    EDT=#expiration-date-time,

                    RDT=#revision-date-time,

                    RVN=#revision-number,

                    NXT=next-xab-address
 

3  $XABFHC
   The $XABFHC macro allocates and initializes a XABFHC. No value is
   returned for this assembly-time operation.

   Format

     $XABFHC  NXT=next-xab-address
 

3  $XABFHC_STORE
   The $XABFHC_STORE macro moves user-specified values into fields
   of the specified XABFHC. The expanded $XABFHC_STORE code executes
   at run time on a previously initialized (allocated) XABFHC, in
   contrast to the $XABFHC macro, which initializes a XABFHC at
   assembly time. The $XABFHC_STORE macro must reside in a code
   program section.

   Format

     $XABFHC_STORE  XAB=xabfhc-address,

                    NXT=next-xab-address
 

3  $XABITM
   The $XABITM macro allocates and initializes a XABITM. No value is
   returned for this assembly-time operation.

   Format

     $XABITM  ITEMLIST=item-list-address,

              MODE={sensemode|setmode},

              NXT=next-xab-address
 

3  $XABKEY
   The $XABKEY macro allocates and initializes a XABKEY. No value is
   returned for this assembly-time operation.

   Format

     $XABKEY  COLTBL=collating-table-address,

              DAN=data-bucket-area-number,

              DFL=data-bucket-fill-size,

              DTP={BN2|DBN2|BN4|DBN4|BN8|DBN8|IN2

              |DIN2|IN4|DIN4|IN8|DIN8|COL|DCOL |PAC|DPAC|STG|DSTG},

              FLG=<CHG DAT_NCMPR DUP IDX_NCMPR KEY_NCMPR NUL>,

              IAN=index-bucket-area-number,

              IFL=index-bucket-file-size,

              KNM=key-name-buffer-address,

              LAN=lowest-level-index-area-number,

              NUL=null-key-value,

              NXT=next-xab-address,

              POS=<position,...>,

              PROLOG=prolog-level,

              REF=key-of-reference-value,

              SIZ=<size,...>
 

3  $XABKEY_STORE
   The $XABKEY_STORE macro moves user-specified values into fields
   of the specified XABKEY. The expanded $XABKEY_STORE code executes
   at run time on a previously initialized (allocated) XABKEY, in
   contrast to the $XABKEY macro, which initializes the XABKEY at
   assembly time. The $XABKEY_STORE macro must reside in a code
   program section.

   Format

     $XABKEY_STORE  XAB=xabkey-address,

                    COLTBL=#collating-table-address,

                    DAN=#data-bucket-area-number,

                    DFL=#data-bucket-fill-size,

                    DTP={BN2|DBN2|BN4|DBN4|BN8|DBN8|IN2

                    |DIN2|IN4|DIN4|IN8|DIN8|COL|DCOL

                    |PAC|DPAC|STG|DSTG},

                    FLG=<CHG DAT_NCMPR DUP IDX_NCMPR KEY_NCMPR NUL>,

                    IAN=#index-bucket-area-number,

                    IFL=#index-bucket-fill-size,

                    KNM=key-name-buffer-address,

                    LAN=#lowest-level-index-area-number,

                    NUL=#null-key-value,

                    NXT=next-xab-address,

                    POS=<position,...>,

                    PROLOG=#prolog-level,

                    REF=#key-of-reference-value,

                    SIZ=<size,...>
 

3  $XABPRO
   The $XABPRO macro allocates and initializes a XABPRO. No value is
   returned for this assembly-time operation.

   Format

     $XABPRO  ACLBUF=ACL-buffer-address,

              ACLCTX=<ACL-context>,

              ACLSIZ=ACL-buffer-size,

              MTACC=magnetic-tape-accessibility,

              NXT=next-xab-address,

              PRO=<system, owner, group, world>,

              PROT_OPT=<PROPAGATE>,

              UIC=<group, member>
 

3  $XABPRO_STORE
   The $XABPRO_STORE macro moves user-specified values into fields
   of the specified XABPRO. The expanded $XABPRO_STORE code executes
   at run time on a previously initialized (allocated) XABPRO, in
   contrast to the $XABPRO macro, which initializes a XABPRO at
   assembly time. The $XABPRO_STORE macro must reside in a code
   program section.

   Format

     $XABPRO_STORE  XAB=xabpro-address,

                    ACLBUF=ACL-buffer-address,

                    ACLCTX=#<ACL-context>,

                    ACLSIZ=#ACL-buffer-size,

                    MTACC=#magnetic-tape-accessibility,

                    NXT=next-xab-address,

                    PRO=<system, owner, group, world>,

                    PROT_OPT=<PROPAGATE>,

                    UIC=#uic-value
 

3  $XABRDT
   The $XABRDT macro allocates and initializes a XABRDT. No value is
   returned for this assembly-time operation.

   Format

     $XABRDT  NXT=next-xab-address
 

3  $XABRDT_STORE
   The $XABRDT_STORE macro moves user-specified values into fields
   of the specified XABRDT. The expanded $XABRDT_STORE code executes
   at run time on a previously initialized (allocated) XABRDT, in
   contrast to the $XABRDT macro, which initializes the XABRDT at
   assembly time. The $XABRDT_STORE macro must reside in a code
   program section.

   Format

     $XABRDT_STORE  XAB=xabrdt-address,

                    RDT=#revision-date-time,

                    RVN=#revision-number,

                    NXT=next-xab-address
 

3  $XABSUM
   The $XABSUM macro allocates and initializes a XABSUM. No value is
   returned for this assembly-time operation.

   Format

     $XABSUM  NXT=next-xab-address
 

3  $XABSUM_STORE
   The $XABSUM_STORE macro moves user-specified values into fields
   of the specified XABSUM. The expanded $XABSUM_STORE code executes
   at run time on a previously initialized (allocated) XABSUM, in
   contrast to the $XABSUM macro, which initializes the XABSUM at
   assembly time. The $XABSUM_STORE macro must reside in a code
   program section.

   Format

     $XABSUM_STORE  XAB=xabsum-address,

                    NXT=next-xab-address
 

3  $XABTRM
   The $XABTRM macro allocates and initializes a XABTRM. No value is
   returned for this assembly-time operation.

   Format

     $XABTRM  ITMLST=item-list-address,

              ITMLST_LEN=item-list-length,

              NXT=next-xab-address
 

3  $XABTRM_STORE
   The $XABTRM_STORE macro moves user-specified values into fields
   of the specified XABTRM. The expanded $XABTRM_STORE code executes
   at run time on a previously initialized (allocated) XABTRM, in
   contrast to the $XABTRM macro, which initializes a XABTRM at
   assembly time. The $XABTRM_STORE macro must reside in a code
   program section.

   Format

     $XABTRM_STORE  XAB=xabtrm-address,

                    ITMLST=item-list-address,

                    ITMLST_LEN=#item-list-length,

                    NXT=next-xab-address