$ADD_IDENT is a system service that adds the specified identifier to the rights database.
SYS$ADD_IDENT name ,[id] ,[attrib] ,[resid]
int sys$add_ident (void *name, unsigned int id, unsigned int attrib, unsigned int *resid);
|Type:||character-coded text string|
|Mechanism:||by descriptor–fixed-length string descriptor|
Identifier name to be added to the rights database when $ADD_IDENT completes execution. The name argument is the address of a character-string descriptor pointing to the identifier name string. An identifier name consists of 1 to 31 alphanumeric characters, including dollar signs ( $ ) and underscores ( _ ), and must contain at least one nonnumeric character. Any lowercase characters specified are automatically converted to uppercase.
Identifier to be created when $ADD_IDENT completes execution. The id argument is a longword containing the binary value of the identifier to be created. If the id argument is omitted, $ADD_IDENT selects a unique available value from the general identifier space and returns it in resid, if it is specified.
Attributes placed in the identifier’s record when $ADD_IDENT completes execution. The attrib argument is a longword containing a bit mask that specifies the attributes. Symbol values are offsets to the bits within the longword. You can also obtain the values as masks with the appropriate bit set using the prefix KGB$M rather than KGB$V. The symbols are defined in the system macro library ($KGBDEF). The symbolic name for each bit position is listed in the following table:
|Bit Position||Meaning When Set|
|KGB$V_DYNAMIC||Allows holders of the identifier to remove it from or add it to the process rights database by using the DCL command SET RIGHTS_LIST.|
|KGB$V_HOLDER_HIDDEN||Prevents someone from getting a list of users who hold an identifier, unless they own the identifier themselves.|
|KGB$V_NAME_HIDDEN||Allows holders of an identifier to have it translated—either from binary to ASCII or vice versa—but prevents unauthorized users from translating the identifier.|
|KGB$V_NOACCESS||Makes any access rights of the identifier null and void. This attribute is intended as a modifier for a resource identifier or the Subsystem attribute.|
|KGB$V_RESOURCE||Allows holders of an identifier to charge disk space to the identifier. It is used only for file objects.|
|KGB$V_SUBSYSTEM||Allows holders of the identifier to create and maintain protected subsystems by assigning the Subsystem ACE to the application images in the subsystem.|
Identifier value assigned by the system when $ADD_IDENT completes execution. The resid argument is the address of a longword in which the system-assigned identifier value is written.
Condition Values Returned
|SS$_NORMAL||The service completed successfully.|
|SS$_ACCVIO||The name argument cannot be read by the caller, or the resid argument cannot be written by the caller.|
|SS$_BADPARAM||The specified attributes contain invalid attribute flags.|
|SS$_DUPIDENT||The specified identifier already exists in the rights database.|
|SS$_DUPLNAM||The specified identifier name already exists in the rights database.|
|SS$_INSFMEM||The process dynamic memory is insufficient for opening the rights database.|
|SS$_IVIDENT||The format of the specified identifier is invalid.|
|SS$_NORIGHTSDB||The rights database does not exist.|
|RMS$_PRV||The user does not have write access to the rights database.|
Because the rights database is an indexed file accessed with OpenVMS RMS, this service can also return RMS status codes associated with operations on indexed files. For descriptions of these status codes, see the OpenVMS Record Management Services Reference Manual.