The LBR$OPEN routine opens an existing library or creates a new one. Format LBR$OPEN library_index [,fns] [,create_options] [,dns] [,rlfna] [,rns] [,rnslen]
1 – Returns
OpenVMS usage:cond_value type: longword (unsigned) access: write only mechanism: by value Longword condition value. Most utility routines return a condition value in R0. Condition values that this routine can return are listed under Condition Values Returned.
2 – Arguments
library_index OpenVMS usage:longword_unsigned type: longword (unsigned) access: read only mechanism: by reference Library control index returned by the LBR$INI_CONTROL routine. The library_index argument is the address of a longword containing the index. fns OpenVMS usage:char_string type: character string access: read only mechanism: by descriptor File specification of the library. The fns argument is the address of a string descriptor pointing to the file specification. Unless the OpenVMS RMS NAM block address was previously supplied in the LBR$INI_CONTROL routine and contained a file specification, this argument must be included. Otherwise, the Librarian returns an error (LBR$_NOFILNAM). create_options OpenVMS usage:vector_longword_unsigned type: longword (unsigned) access: read only mechanism: by reference Library characteristics. The create_options argument is the address of an array of 20 longwords that define the characteristics of the library you are creating. If you are creating a library with LBR$C_CREATE, you must include the create_options argument. The following table shows the entries that the array must contain. Each programming language provides an appropriate mechanism for accessing the listed symbols. Offset in Longwords Symbolic Name Contents 0 CRE$L_TYPE Library type: LBR$C_TYP_UNK (0) Unknown/unspecified LBR$C_TYP_OBJ (1) VAX object LBR$C_TYP_MLB (2) Macro LBR$C_TYP_HLP (3) Help LBR$C_TYP_TXT (4) Text LBR$C_TYP_SHSTB (5) VAX shareable image LBR$C_TYP_NCS (6) NCS LBR$C_TYP_EOBJ (7) Alpha object LBR$C_TYP_ESHSTB Alpha shareable image (8) (9-127) Reserved by VSI LBR$C_TYP_USRLW User library types - low end of (128) range LBR$C_TYP_USRHI User library types - high end of (255) range 1 CRE$L_KEYLEN Maximum length of ASCII keys or, if 0, indicates 32-bit unsigned keys (binary keys) 2 CRE$L_ALLOC Initial library file allocation 3 CRE$L_IDXMAX Number of library indexes (maximum of eight) 4 CRE$L_UHDMAX Number of additional bytes to reserve in module header 5 CRE$L_ENTALL Number of index entries to preallocate 6 CRE$L_LUHMAX Maximum number of library update history records to maintain 7 CRE$L_VERTYP Format of library to create: CRE$C_VMSV2 VMS Version 2.0 CRE$C_VMSV3 VMS Version 3.0 8 CRE$L_IDXOPT Index key casing option: CRE$C_HLPCASING Treat character case as it is for help libraries CRE$C_OBJCASING Treat character case as it is for object libraries CRE$C_MACTXTCAS Treat character case as it is for macro and text libraries 9-19 Reserved by VSI The input of uppercase and lowercase characters is treated differently for help, object, macro, and text libraries. For details, see the VSI OpenVMS Command Definition, Librarian, and Message Utilities Manual. dns OpenVMS usage:char_string type: character string access: read only mechanism: by descriptor Default file specification. The dns argument is the address of the string descriptor that points to the default file specification. See the OpenVMS Record Management Services Reference Manual for details about how defaults are processed. rlfna OpenVMS usage:longword_unsigned type: longword (unsigned) access: read only mechanism: by reference Related file name. The rlfna argument is the address of an RMS NAM block pointing to the related file name. You must specify rlfna for related file name processing to occur. If a related file name is specified, only the file name, type, and version fields of the NAM block are used for related name block processing. The device and directory fields are not used. See the OpenVMS Record Management Services Reference Manual for details on processing related file names. rns OpenVMS usage:char_string type: character string access: write only mechanism: by descriptor Resultant file specification returned. The rns argument is the address of a string descriptor pointing to a buffer that is to receive the resultant file specification string. If an error occurs during an attempt to open the library, the expanded name string is returned instead. rnslen OpenVMS usage:longword_signed type: longword (signed) access: write only mechanism: by reference Length of the resultant or expanded file name. The rnslen argument is the address of a longword receiving the length of the resultant file specification string (or the length of the expanded name string if there was an error in opening the library).
3 – Description
You can call this routine only after you call LBR$INI_CONTROL and before you call any other LBR routine except LBR$OUTPUT_HELP. When the library is successfully opened, the LBR routine reads the library header into memory and sets the default index to 1. If the library cannot be opened because it is already open for a write operation, LBR$OPEN retries the open operation every second for a maximum of 30 seconds before returning the RMS error, RMS$_ FLK, to the caller.
4 – Condition Values Returned
LBR$_ERRCLOSE Error. When the library was last modified while opened for write access, the write operation was interrupted. This left the library in an inconsistent state. LBR$_ILLCREOPT Requested create options not valid or not supplied. LBR$_ILLCTL Specified library control index not valid. LBR$_ILLFMT Specified library format not valid. LBR$_ILLFUNC Specified library function not valid. LBR$_LIBOPN Specified library already open. LBR$_NOFILNAM Error. The fns argument was not supplied or the RMS NAM block was not filled in. LBR$_OLDLIBRARY Success. The specified library has been opened; the library was created with an old library format. LBR$_OLDMISMCH Requested library function conflicts with old library type specified. LBR$_TYPMISMCH Library type does not match the requested type.