VMS Help  —  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.

1  –  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

3  –  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

4  –  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

5  –  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.

6  –  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

7  –  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

8  –  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

9  –  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

10  –  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.

11  –  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.

12  –  XABJNL

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

13  –  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

14  –  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

15  –  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

16  –  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.

17  –  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

18  –  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

19  –  $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]]

19.1  –  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.

19.2  –  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.

19.3  –  Condition Values Returned

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

20  –  $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]]

20.1  –  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.

20.2  –  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.

20.3  –  Condition Values Returned

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

21  –  $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]]

21.1  –  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.

21.2  –  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.

21.3  –  Condition Values Returned

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

22  –  $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]]

22.1  –  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.

22.2  –  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.

22.3  –  Condition Values Returned

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

23  –  $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]]

23.1  –  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.

23.2  –  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.

23.3  –  Condition Values Returned

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

24  –  $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]]

24.1  –  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.

24.2  –  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.

24.3  –  Condition Values Returned

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

25  –  $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]]

25.1  –  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.

25.2  –  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.

25.3  –  Condition Values Returned

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

26  –  $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]]

26.1  –  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.

26.2  –  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.

26.3  –  Condition Values Returned

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

27  –  $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]]

27.1  –  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.

27.2  –  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.

27.3  –  Condition Values Returned

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

28  –  $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]]

28.1  –  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.

28.2  –  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.

28.3  –  Condition Values Returned

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

29  –  $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]]

29.1  –  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.

29.2  –  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.

29.3  –  Condition Values Returned

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

30  –  $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]]

30.1  –  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.

30.2  –  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.

30.3  –  Condition Values Returned

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

31  –  $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]]

31.1  –  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.

31.2  –  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.

31.3  –  Condition Values Returned

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

32  –  $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]]

32.1  –  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.

32.2  –  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.

32.3  –  Condition Values Returned

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

33  –  $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]]

33.1  –  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.

33.2  –  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.

33.3  –  Condition Values Returned

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

34  –  $PARSE

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

    Format

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

34.1  –  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.

34.2  –  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.

34.3  –  Condition Values Returned

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

35  –  $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]]

35.1  –  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.

35.2  –  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.

35.3  –  Condition Values Returned

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

36  –  $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]]

36.1  –  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.

36.2  –  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.

36.3  –  Condition Values Returned

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

37  –  $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]]

37.1  –  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.

37.2  –  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.

37.3  –  Condition Values Returned

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

38  –  $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]]

38.1  –  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.

38.2  –  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.

38.3  –  Condition Values Returned

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

39  –  $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

39.1  –  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.

39.2  –  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.

39.3  –  Condition Values Returned

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

40  –  $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]]

40.1  –  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.

40.2  –  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.

40.3  –  Condition Values Returned

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

41  –  $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]]

41.1  –  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.

41.2  –  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.

41.3  –  Condition Values Returned

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

42  –  $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]]

42.1  –  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.

42.2  –  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.

42.3  –  Condition Values Returned

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

43  –  $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]]

43.1  –  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.

43.2  –  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.

43.3  –  Condition Values Returned

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

44  –  $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]]

44.1  –  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.

44.2  –  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.

44.3  –  Condition Values Returned

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

45  –  $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

45.1  –  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.

45.2  –  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.

45.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.

46  –  $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]]

46.1  –  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.

46.2  –  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.

46.3  –  Condition Values Returned

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

47  –  RMS Control Block Macros

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

47.1  –  $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

47.2  –  $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

47.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

47.4  –  $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

47.5  –  $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

47.6  –  $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

47.7  –  $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

47.8  –  $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

47.9  –  $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

47.10  –  $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

47.11  –  $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

47.12  –  $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

47.13  –  $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

47.14  –  $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

47.15  –  $XABFHC

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

    Format

      $XABFHC  NXT=next-xab-address

47.16  –  $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

47.17  –  $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

47.18  –  $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,...>

47.19  –  $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,...>

47.20  –  $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>

47.21  –  $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

47.22  –  $XABRDT

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

    Format

      $XABRDT  NXT=next-xab-address

47.23  –  $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

47.24  –  $XABSUM

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

    Format

      $XABSUM  NXT=next-xab-address

47.25  –  $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

47.26  –  $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

47.27  –  $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
Close Help