|  | HP OpenVMS Utility Routines Manual
 
 
 LBR$INSERT_KEY
 
The LBR$INSERT_KEY routine inserts a new key in the current library 
index.
 
 Format
LBR$INSERT_KEY library_index ,key_name ,txtrfa [, flags]
 
 RETURNS
 
  
    | OpenVMS usage: | cond_value |  
    | type: | longword (unsigned) |  
    | access: | write only |  
    | mechanism: | by value |  
 
Longword condition value. Most utility routines return a condition 
value. Condition values that this routine can return are listed under 
Condition Values Returned.
 
 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 library routine. 
The library_index argument is the address of the 
longword that contains the index.
 key_name
 
  
    | OpenVMS usage: | longword_unsigned |  
    | type: | longword (unsigned) |  
    | access: | read only |  
    | mechanism: | by reference |  Name of the new key you are inserting.
 
If the library uses binary keys, the key_name argument 
is the address of an unsigned longword containing the value of the key.
 
If the library uses ASCII keys, the key_name argument 
is the address of a string descriptor of the key with the following 
argument characteristics:
 
  
    | Argument Characteristics | Entry |  
    | OpenVMS usage | char_string |  
    | type | character string |  
    | access | read only |  
    | mechanism | by descriptor |  
 txtrfa
 
  
    | OpenVMS usage: | vector_longword_unsigned |  
    | type: | longword (unsigned) |  
    | access: | modify |  
    | mechanism: | by reference |  The record file address (RFA) of the module associated with the new key 
you are inserting. The txtrfa argument is the address 
of a 2-longword array containing the RFA. You can use the RFA returned 
by the first call to LBR$PUT_RECORD.
 flags
 
  
    | OpenVMS usage: | mask_longword |  
    | type: | longword (unsigned) |  
    | access: | read only |  
    | mechanism: | by value |  If present, specifies the key's type. The flag bits are as follows:
 
  
    | Flag Bits | Description |  
    | LBR$M_SYM_WEAK = 0x1 | UNIX-style weak symbol attribute |  
    | LBR$M_SYM_GROUP = 0x2 | Group symbol attribute |  
If this argument is not present, the normal NonGroup-Global type is the 
assumed type.
 
 Description
The LBR$INSERT_KEY routine inserts a new key in the current library 
index. You cannot call LBR$INSERT_KEY within the user-supplied routine 
specified in LBR$SEARCH or LBR$GET_INDEX.
 
 Condition Values Returned
  
    | LBR$_DUPKEY | Index already contains the specified key. |  
    | LBR$_ILLCTL | Specified library control index not valid. |  
    | LBR$_INVRFA | Specified RFA does not point to valid data. |  
    | LBR$_LIBNOTOPN | Specified library not open. |  
    | LBR$_UPDURTRAV | LBR$INSERT_KEY is called by the user-defined routine specified in 
      LBR$SEARCH or LBR$GET_INDEX. |  
 LBR$LOOKUP_KEY
 
The LBR$LOOKUP_KEY routine looks up a key in the library's current 
index and prepares to access the data in the module associated with the 
key.
 
 Format
LBR$LOOKUP_KEY library_index ,key_name ,txtrfa [, flags]
 
 RETURNS
 
  
    | OpenVMS usage: | cond_value |  
    | type: | longword (unsigned) |  
    | access: | write only |  
    | mechanism: | by value |  
 
Longword condition value. Most utility routines return a condition 
value. Condition values that this routine can return are listed under 
Condition Values Returned.
 
 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 the longword 
that contains the index.
 key_name
 
  
    | OpenVMS usage: | longword_unsigned |  
    | type: | longword (unsigned) |  
    | access: | read only |  
    | mechanism: | by reference |  Name of the library key. If the library uses binary keys, the 
key_name argument is the address of the unsigned 
longword value of the key.
 
If the library uses ASCII keys, the key_name argument 
is the address of a string descriptor for the key with the following 
argument characteristics:
 
  
    | Argument Characteristics | Entry |  
    | OpenVMS usage | char_string |  
    | type | character string |  
    | access | read only |  
    | mechanism | by descriptor |  
 txtrfa
 
  
    | OpenVMS usage: | vector_longword_unsigned |  
    | type: | longword (unsigned) |  
    | access: | write only |  
    | mechanism: | by reference |  The record file address (RFA) of the library module header. The 
txtrfa argument is the address of the 2-longword array 
that receives the RFA of the module header.
 flags
 
  
    | OpenVMS usage: | mask_longword |  
    | type: | longword (unsigned) |  
    | access: | write only |  
    | mechanism: | by reference |  The flags argument, if present and not zero, receives 
the type of key returned. The flag bits are as follows:
 
  
    | Flag Bits | Description |  
    | LBR$SYM_WEAK = 0x1 | UNIX-style weak symbol attribute |  
    | LBR$SYM_GROUP = 0x2 | Group symbol attribute |  
The key returned is the highest precedent definition type present.
 
 Description
If LBR$LOOKUP_KEY finds the specified key, it initializes internal 
tables so you can access the associated data.
This routine returns the RFA to the 2-longword array referenced by 
txtrfa.
 
 Condition Values Returned
  
    | LBR$_ILLCTL | Specified library control index not valid. |  
    | LBR$_INVRFA | RFA obtained not valid. |  
    | LBR$_KEYNOTFND | Specified key not found. |  
    | LBR$_LIBNOTOPN | Specified library not open. |  
 LBR$LOOKUP_TYPE
 
The LBR$LOOK_TYPE routine searches the index for the key from a 
particular module (RFA) and returns that key's type for that module.
 
 Format
LBR$LOOKUP_TYPE library_index, key_name, txtrfa, ret_types
 
 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 the longword 
that contains the index.
 key_name
 
  
    | OpenVMS usage: | longword_unsigned |  
    | type: | longword (unsigned) |  
    | access: | read only |  
    | mechanism: | by reference |  The key_name argument is the address of the string 
descriptor pointing to the key with the following argument 
characteristics:
 
  
    | Argument Characteristics | Entry |  
    | OpenVMS usage | char_string |  
    | type | character string |  
    | access | read only |  
    | mechanism | by descriptor |  txtrfa
 
  
    | OpenVMS usage: | vector_longword_unsigned |  
    | type: | longword (unsigned) |  
    | access: | read only |  
    | mechanism: | by reference |  The module's record file address (RFA) of the library module header. 
The txtrfa argument is the address of the 2-longword 
array that specifies the RFA of the module header.
 ret_types
 
  
    | OpenVMS usage: | mask_longword |  
    | type: | longword (unsigned) |  
    | access: | write only |  
    | mechanism: | by reference |  The address of a longword to receive the symbol types found for the 
specified module (txtrfa). The return type bits are as 
follows:
 
  LBR$M_SYM_NGG = 1
  LBR$M_SYM_UXWK = 2
 LBR$M_SYM_GG = 4
 LBR$M_SYM_GUXWK = 8
 
 Description
This routine searches the index for the key from a particular module 
(RFA) and returns that key's type for that module, if present. 
Otherwise, it returns LBR$_KEYNOTFND.
 
 
 LBR$MAP_MODULE
 
The LBR$MAP_MODULE routine maps a module into process P2 space.
 
 Format
LBR$MAP_MODULE library_index, ret_va_addr, ret_mod_len, txtrfa
 
 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 library routine. 
The library_index argument is the address of the 
longword that contains the index.
 ret_va_addr
 
  
    | OpenVMS usage: | address |  
    | type: | quadword address |  
    | access: | write only |  
    | mechanism: | by 32-bit or 64-bit reference |  The 32-bit or 64-bit virtual address of a naturally aligned quadword 
into which the routine returns the virtual address at which the routine 
mapped the library module.
 ret_mod_len
 
  
    | OpenVMS usage: | byte_count |  
    | type: | quadword (unsigned) |  
    | access: | read only |  
    | mechanism: | by reference |  The address of a naturally aligned quadword into which the library 
routine returns the module length.
 txtrfa
 
  
    | OpenVMS usage: | vector_longword_unsigned |  
    | type: | longword (unsigned) |  
    | access: | read only |  
    | mechanism: | by reference |  The module's record file address (RFA) of the library module header. 
The txtrfa argument is the address of the 2-longword 
array that specifies the RFA of the module header.
 
 Description
This routine maps a module, with the given txtrfa, 
into process P2 memory space and returns the virtual address where the 
module is mapped and the module size.
Unlike other LBR services that use RMS services, LBR$MAP_MODULE also 
uses system services. Because of this, the secondary status for error 
returns is placed in LBR$$GL_SUBSTS. Use this secondary status to find 
additional status when an error is returned.
 
 
 LBR$OPEN
 
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]
 
 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.
 
 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 (8) | Alpha shareable image |  
    |  | (9--127) | Reserved by HP |  
    |  | LBR$C_TYP_USRLW (128) | User library types --- low end of range |  
    |  | LBR$C_TYP_USRHI (255) | User library types --- high end of 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 HP |  
The input of uppercase and lowercase characters is treated differently 
for help, object, macro, and text libraries. For details, see the 
HP 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).
 
 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.
 
 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. |  
 
 |