| 
       
          Document revision date: 19 July 1999
      
     | 
  
 
  
    
![[Compaq]](../../images/compaq.gif)  | 
    
       
 
 
 
 
      
     | 
  
 
  
    
 
     | 
  
 
 
 
 
OpenVMS RTL Library (LIB$) Manual
LIB$CVT_xTB
The Convert Numeric Text to Binary routines return a binary 
representation of the ASCII text string representation of a decimal, 
hexadecimal, or octal number.
Format
LIB$CVT_DTB byte-count ,numeric-string ,result 
LIB$CVT_HTB byte-count ,numeric-string ,result 
LIB$CVT_OTB byte-count ,numeric-string ,result 
RETURNS
  
    | OpenVMS usage:  | 
    cond_value | 
  
  
    | type:  | 
    longword (unsigned) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by value | 
  
Arguments
byte-count
  
    | OpenVMS usage:  | 
    longword_signed | 
  
  
    | type:  | 
    longword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by value | 
  
Byte count of the input ASCII text string. The 
byte-count argument is a signed longword integer 
containing the byte count of the input string.
numeric-string
  
    | OpenVMS usage:  | 
    char_string | 
  
  
    | type:  | 
    character string | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
ASCII text string representation of a decimal, hexadecimal, or octal 
number that LIB$CVT_xTB converts to binary representation. The 
numeric-string argument is the address of a character 
string containing this input string to be converted.
The syntax of a valid ASCII text input string is as follows:
[ + | - ] <radix-characters>
LIB$CVT_xTB allows only an optional plus (+) or minus - sign followed 
by a string of decimal, hexadecimal, or octal characters appropriate to 
the routine being called.
result
  
    | OpenVMS usage:  | 
    longword_signed | 
  
  
    | type:  | 
    longword integer (signed) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by reference | 
  
Binary representation of the input string. The result 
argument is the address of a signed longword integer containing the 
converted string.
Description
LIB$CVT_DTB converts the ASCII text string representation of a decimal 
number into binary representation. LIB$CVT_HTB converts the ASCII text 
string representation of a hexadecimal number into binary 
representation. LIB$CVT_OTB converts the ASCII text string 
representation of an octal number into binary representation.
  Note 
LIB$CVT_DTB, LIB$CVT_HTB, and LIB$CVT_OTB are intended to be called 
primarily from BLISS and MACRO programs. Therefore, the routines expect 
input scalar arguments to be passed by value and strings by reference. 
     | 
  
Condition Values Returned
  
    | 
      1
     | 
    
      Routine successfully completed.
     | 
  
  
    | 
      0
     | 
    
      Nonradix character in the input string or a sign in any position other 
      than the first character. An overflow from 32 bits (unsigned) causes an 
      error.
     | 
  
LIB$CVT_xTB_64 (Alpha Only)
The Convert Numeric Text to Binary routines return a binary 
representation of the ASCII text string representation of a decimal, 
hexadecimal, or octal number.
Format
LIB$CVT_DTB_64 byte-count ,numeric-string ,result 
LIB$CVT_HTB_64 byte-count ,numeric-string ,result 
LIB$CVT_OTB_64 byte-count ,numeric-string ,result 
RETURNS
  
    | OpenVMS usage:  | 
    cond_value | 
  
  
    | type:  | 
    longword (unsigned) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by value | 
  
Arguments
byte-count
  
    | OpenVMS usage:  | 
    longword_signed | 
  
  
    | type:  | 
    longword integer (signed) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by value | 
  
Byte count of the input ASCII text string. The 
byte-count argument is a signed longword integer 
containing the byte count of the input string.
numeric-string
  
    | OpenVMS usage:  | 
    char_string | 
  
  
    | type:  | 
    character string | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
ASCII text string representation of a decimal, hexadecimal, or octal 
number that LIB$CVT_xTB_64 converts to binary representation. The 
numeric-string argument is the address of a character 
string containing this input string to be converted.
The syntax of a valid ASCII text input string is as follows:
[ + | - ] <radix-characters>
LIB$CVT_xTB_64 allows only an optional plus (+) or minus (-) sign 
followed by a string of decimal, hexadecimal, or octal characters 
appropriate to the routine being called.
result
  
    | OpenVMS usage:  | 
    quadword_signed | 
  
  
    | type:  | 
    quadword integer (signed) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by reference | 
  
Binary representation of the input string. The result 
argument is the address of a signed quadword integer containing the 
converted string.
Description
LIB$CVT_DTB_64 converts the ASCII text string representation of a 
decimal number into binary representation. LIB$CVT_HTB_64 converts the 
ASCII text string representation of a hexadecimal number into binary 
representation. LIB$CVT_OTB_64 converts the ASCII text string 
representation of an octal number into binary representation.
  Note 
LIB$CVT_DTB_64, LIB$CVT_HTB_64, and LIB$CVT_OTB_64 are intended to be 
called primarily from BLISS and MACRO programs. Therefore, the routines 
expect input scalar arguments to be passed by value and strings by 
reference. 
     | 
  
Condition Values Returned
  
    | 
      1
     | 
    
      Routine successfully completed.
     | 
  
  
    | 
      0
     | 
    
      Nonradix character in the input string or a sign in any position other 
      than the first character. An overflow from 64 bits (unsigned) causes an 
      error.
     | 
  
LIB$DATE_TIME
The Date and Time Returned as a String routine returns the OpenVMS 
system date and time in the semantics of a user-provided string.
Format
LIB$DATE_TIME date-time-string 
RETURNS
  
    | OpenVMS usage:  | 
    cond_value | 
  
  
    | type:  | 
    longword (unsigned) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by value | 
  
Argument
date-time-string
  
    | OpenVMS usage:  | 
    time_name | 
  
  
    | type:  | 
    character string | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by descriptor | 
  
Destination string into which LIB$DATE_TIME writes the system date and 
time. The date-time-string argument is the address of 
a descriptor pointing to the destination string. This string is 23 
characters long; its format is as follows:
See the OpenVMS Programming Concepts Manual for a description of system date and time 
operations as well as a detailed description of the format mnemonics 
used in these routines.
Condition Values Returned
  
    | 
      SS$_NORMAL
     | 
    
      Routine successfully completed.
     | 
  
  
    | 
      LIB$_STRTRU
     | 
    
      Success, but destination string was truncated.
     | 
  
  
    | 
      LIB$_INSVIRMEM
     | 
    
      Insufficient virtual memory. Your program has exceeded the image quota 
      for virtual memory.
     | 
  
  
    | 
      LIB$_INVSTRDES
     | 
    
      Invalid string descriptor. A string descriptor has an invalid value in 
      its CLASS field.
     | 
  
Example
  
     | 
  
    
       
      
10 !+ 
   ! This BASIC program demonstrates the use of LIB$DATE_TIME. 
   !- 
   CALL LIB$DATE_TIME(DSTSTR$) 
   PRINT DSTSTR$ 
99 END 
 
      
      
     | 
  
This BASIC program uses LIB$DATE_TIME to display the current system 
date and time. The output generated by one run of this program follows:
LIB$DAY
The Day Number Returned as a Longword Integer routine returns the 
number of days since the system zero date of November 17, 1858, or the 
number of days from November 17, 1858, to a user-supplied date.
Format
LIB$DAY number-of-days [,user-time] [,day-time] 
RETURNS
  
    | OpenVMS usage:  | 
    cond_value | 
  
  
    | type:  | 
    longword (unsigned) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by value | 
  
Arguments
number-of-days
  
    | OpenVMS usage:  | 
    longword_signed | 
  
  
    | type:  | 
    longword integer (signed)  | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by reference | 
  
Number of days since the system zero date. The 
number-of-days argument is the address of a signed 
longword integer containing the day number.
user-time
  
    | OpenVMS usage:  | 
    date_time | 
  
  
    | type:  | 
    quadword (unsigned) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
User-supplied time, in 100-nanosecond units. The 
user-time argument is the address of a signed quadword 
integer containing the user time. A positive value indicates an 
absolute time, while a negative value indicates a delta time. This is 
an optional argument. If user-time is omitted, the 
default is the current system time. This quadword time value is 
obtained by calling the $BINTIM system service.
If time is passed as zero by value, the numeric value for the current 
day is returned. If time is passed as a zero by reference, the number 
returned represents the day of November 17, 1858, rather than the 
current day.
day-time
  
    | OpenVMS usage:  | 
    longword_signed | 
  
  
    | type:  | 
    longword integer (signed) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by reference | 
  
Number of 10-millisecond units since midnight of the 
user-time argument. The day-time 
argument is the address of a signed longword integer into which LIB$DAY 
writes this number of units.
Description
LIB$DAY returns the number of days since the system zero date of 
November 17, 1858. Optionally, the caller can supply a time in system 
time format to be used instead of the current system time. In this 
case, LIB$DAY returns the number of days from November 17, 1858, to the 
user-supplied date.
The number of 10-millisecond units since midnight is an optional return 
argument.
  Note 
If the caller supplies a quadword time, it is not verified. If it is 
negative (bit 63 on), the number-of-days value 
returned is negative. 
     | 
  
The Run-Time Library provides the date/time utility routines for 
languages that do not have built-in time and date functions and for 
particular applications that require the time or date in a different 
format from the one that the language supplies. In general, it is 
simpler to call the Run-Time Library routines for the system date and 
time than to call a system service.
Condition Values Returned
  
    | 
      SS$_NORMAL
     | 
    
      Routine successfully completed.
     | 
  
  
    | 
      SS$_INTOVF
     | 
    
      The optional argument
      user-time is present and represents a date and time 
      well beyond the year 9999.
     | 
  
Example
  
     | 
  
    
       
      
PROGRAM DAY(INPUT, OUTPUT); 
 
{+} 
{ This is a VAX Pascal example program showing 
{ the use of LIB$DAY. 
{-} 
 
VAR 
  DAYNUMBER : INTEGER; 
 
routine LIB$DAY(VAR DAYNUM : INTEGER); 
  EXTERN; 
 
BEGIN 
  LIB$DAY(DAYNUMBER); 
  WRITELN('The day number is ', DAYNUMBER); 
END. 
 
      
      
     | 
  
This Pascal program retrieves and prints the day number. A sample of 
the output generated by this program is as follows.
LIB$DAY_OF_WEEK
The Show Numeric Day of Week routine returns the numeric day of the 
week for an input time value. If 0 is the input time value, the current 
day of the week is returned. The days are numbered 1 through 7, with 
Monday as day 1 and Sunday as day 7.
Format
LIB$DAY_OF_WEEK [user-time,] day-number 
RETURNS
  
    | OpenVMS usage:  | 
    cond_value | 
  
  
    | type:  | 
    longword (unsigned) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by value | 
  
Arguments
user-time
  
    | OpenVMS usage:  | 
    date_time | 
  
  
    | type:  | 
    quadword (unsigned) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference | 
  
Time to be translated to a day of the week, or zero. The optional 
user-time argument is the address of an unsigned 
quadword containing the value of time. Time must be supplied as an 
absolute system time. To obtain this time value in proper quadword 
format, call the $BINTIM system service.
If time is passed as zero by value, the numeric value for the current 
day is returned. If time is passed as a zero by reference, the number 
returned represents the day of November 17, 1858. If the 
user-time argument is omitted, it is equivalent to 
passing a zero by value.
day-number
  
    | OpenVMS usage:  | 
    longword_unsigned | 
  
  
    | type:  | 
    longword (unsigned) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by reference | 
  
Numeric day of week. The day-number argument is the 
address of a longword into which LIB$DAY_OF_WEEK writes the integer 
value representing the day of the week.
Condition Values Returned
  
    | 
      SS$_NORMAL
     | 
    
      Routine successfully completed.
     | 
  
Example
  
     | 
  
    
       
      
PROGRAM DAYOFWEEK(INPUT, OUTPUT); 
 
{+} 
{ This is an example showing 
{ the use of LIB$DAY_OF_WEEK. 
{-} 
 
VAR 
  OUTDAT : INTEGER; 
 
routine LIB$DAY_OF_WEEK(TIM : INTEGER; %REF OUTDA : INTEGER); EXTERN; 
 
BEGIN 
 
  LIB$DAY_OF_WEEK(%IMMED 0, OUTDAT); 
  WRITELN(OUTDAT); 
 
END. 
 
 
      
      
     | 
  
This Pascal program shows the use of LIB$DAY_OF_WEEK. This example was 
tested on a Monday, and the output generated was 1.
LIB$DECODE_FAULT
The Decode Instruction Stream During Fault routine is a tool for 
building condition handlers that process instruction fault exceptions. 
It is called from a condition handler.
  Note 
No support for arguments passed by 64-bit address reference or for use 
of 64-bit descriptors, if applicable, is planned for this routine. 
     | 
  
 This routine is not available to native OpenVMS Alpha programs but is 
 available to translated VAX images.
Format
LIB$DECODE_FAULT signal-arguments ,mechanism-arguments 
,user-procedure [,unspecified-user-argument] [,instruction-definitions] 
RETURNS
  
    | OpenVMS usage:  | 
    cond_value | 
  
  
    | type:  | 
    longword (unsigned) | 
  
  
    | access:  | 
    write only | 
  
  
    | mechanism: | 
    by value | 
  
Arguments
signal-arguments
  
    | OpenVMS usage:  | 
    vector_longword_unsigned | 
  
  
    | type:  | 
    unspecified | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference, array reference | 
  
Signal arguments array that was passed from the OpenVMS operating 
system to your condition handler. The signal-arguments 
argument is the address of the signal arguments array.
mechanism-arguments
  
    | OpenVMS usage:  | 
    vector_longword_unsigned | 
  
  
    | type:  | 
    unspecified | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference, array reference | 
  
Mechanism arguments array that was passed from OpenVMS to your 
condition handler. The mechanism-arguments argument is 
the address of the mechanism arguments array.
user-procedure
  
    | OpenVMS usage:  | 
    procedure | 
  
  
    | type:  | 
    procedure value | 
  
  
    | access:  | 
    call after stack unwind | 
  
  
    | mechanism: | 
    by descriptor, procedure descriptor | 
  
User-supplied action routine that LIB$DECODE_FAULT calls to handle the 
exception. The user-procedure argument is the address 
of a descriptor pointing to your user action routine. The 
user-procedure argument may be of type "procedure 
value" when called by languages with up-level addressing. If 
user-procedure is not of type "bound routine 
value," it is assumed to be the address of an entry mask.
For further information on the user action routine, see the section 
called Call Format for a User Action Routine in the Description section.
unspecified-user-argument
  
    | OpenVMS usage:  | 
    user_arg | 
  
  
    | type:  | 
    longword (unsigned) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by value | 
  
Additional information passed from your handler without interpretation 
to your user action routine. The 
unspecified-user-argument argument contains the value 
of this additional information. The 
unspecified-user-argument argument is optional; if it 
is omitted, zero is used as the default.
instruction-definitions
  
    | OpenVMS usage:  | 
    vector_byte_unsigned | 
  
  
    | type:  | 
    byte (unsigned) | 
  
  
    | access:  | 
    read only | 
  
  
    | mechanism: | 
    by reference, array reference | 
  
Array of bytes specifying instruction opcodes and operand definitions 
that are to replace or supplement the standard instruction definitions. 
The instruction-definitions argument is the address of 
this array.
If instruction-definitions is omitted, only the 
standard instruction definitions are used. If supplied, 
instruction-definitions is searched first, followed by 
the standard definitions.
Each instruction definition consists of a series of bytes, the first 
one or two of which is the instruction opcode. If the instruction is a 
2-byte opcode, the escape byte, which must be hex FD, FE, or FF, is 
placed in the first of the two bytes. Following the opcode may be from 
0 to 16 operand definition bytes. These bytes indicate the operand's 
access type and data type.
The end of each instruction definition is denoted by a byte containing 
the value LIB$K_DCFOPR_END (zero). The list of instruction definitions 
is terminated by two bytes, each of which contains the value --1 
(hexadecimal FF). For further information, see the section called 
Instruction Operand Definition Codes in the Description section.
Description
The Description section of the LIB$DECODE_FAULT routine is divided into 
the following parts:
Guidelines for Using LIB$DECODE_FAULT
LIB$DECODE_FAULT is a tool for building condition handlers that process 
instruction fault exceptions. Called from a condition handler, 
LIB$DECODE_FAULT performs the following actions:
  - Unwinds intermediate stack frames back to that of the exception
  
 - Decodes the instruction stream to determine the operation and its 
  operands
  
 - Calls a user-supplied action routine and passes it a consistent and 
  easy-to-access description of the instruction's context
 
Your user action routine performs whatever tasks are necessary to 
handle the fault and returns to LIB$DECODE_FAULT. LIB$DECODE_FAULT then 
restores the context as modified by your user action routine and 
continues execution.
Your condition handler must first decide whether or not it wants to 
handle the exception. The signal arguments list contains the exception 
code and the address of the program context (PC) that is usually 
sufficient for this determination. Once LIB$DECODE_FAULT is called, if 
the exception is a fault LIB$DECODE_FAULT can analyze, control does not 
return to the condition handler. Therefore, your handler must not 
depend on regaining control by a routine return once it has called 
LIB$DECODE_FAULT. With your user action routine, LIB$DECODE_FAULT makes 
the original fault disappear.
  Note 
Your user action routine is capable of generating a new exception, 
including one that looks identical to the original exception. Your user 
action routine may also resignal, but if the decision to resignal is 
made inside the user action routine, all post-signal stack frames are 
lost. 
     | 
  
Once your condition handler has decided that it wants to handle the 
exception, it calls LIB$DECODE_FAULT, passing as arguments the 
addresses of the signal and mechanism argument lists and a descriptor 
for your user action routine entry point. LIB$DECODE_FAULT then 
performs the following actions:
  - Determines if the exception is a fault it understands. If not, it 
  returns SS$_RESIGNAL.
  
 - Determines the context in which the exception occurred, including 
  register and processor status longword (PSL) contents, and saves it.
  
 - Unwinds all stack frames back to that frame in which the exception 
  occurred.
  
 - Evaluates each operand's addressing mode, computing the resulting 
  location for the operand. Immediate mode operands are expanded into 
  their full form. If an invalid addressing mode is found, an SS$_RADRMOD 
  exception is generated.
  
 - Unless the original exception was SS$_ACCVIO, tests each operand 
  for accessibility. If necessary, an access violation is signaled as if 
  the instruction had tried to execute normally. See the paragraph 
  following this list for more information.
  
 - Unless the original exception was SS$_ROPRAND, tests each 
  floating-point operand that is to be read for a reserved floating 
  operand. If necessary, a reserved operand fault is signaled. See the 
  paragraph following this list for more information.
  
 - Determines the address of the next sequential instruction.
  
 - Calls your user action routine with arguments as described below.
  
 - Upon return from your user action routine, reflects changes to the 
  registers and PSL and continues execution at the instruction address 
  specified by your user action routine. Optionally, your user action 
  routine may resignal the original exception.