|
HP OpenVMS RTL General Purpose (OTS$) Manual
HP OpenVMS RTL General Purpose (OTS$) Manual
OTS$CVT_L_TU
The Convert Unsigned Integer to Decimal Text routine converts an
unsigned integer value to its unsigned decimal representation in an
ASCII text string.
Format
OTS$CVT_L_TU varying-input-value ,fixed-length-resultant-string
[,number-of-digits] [,input-value-size]
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
varying-input-value
OpenVMS usage: |
varying_arg |
type: |
unspecified |
access: |
read only |
mechanism: |
by reference |
An unsigned integer that OTS$CVT_L_TU converts to an unsigned decimal
representation in an ASCII text string. The
varying-input-value argument is the address of the
unsigned integer.
On VAX systems, the integer can be an unsigned byte, word, or longword.
(The value of the input-value-size argument determines
whether varying-input-value is a byte, word, or
longword.)
On Alpha and I64 systems, the integer can be an unsigned byte, word,
longword, or quadword. (The value of the
input-value-size argument determines whether
varying-input-value is a byte, word, longword, or
quadword.)
fixed-length-resultant-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
write only |
mechanism: |
by descriptor, fixed length |
Output string that OTS$CVT_L_TU creates when it converts the integer
value to unsigned decimal representation in an ASCII text string. The
fixed-length-resultant-string argument is the address
of a descriptor pointing to this ASCII text string.
number-of-digits
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by value |
Minimum number of digits in the ASCII text string that OTS$CVT_L_TU
creates. The number-of-digits argument is a signed
longword containing the minimum number. If the minimum number of digits
is omitted, the default is 1.
If the actual number of significant digits in the output string created
is less than the minimum number, OTS$CVT_L_TU inserts leading zeros
into the output string. If the minimum number of digits is zero and the
integer value to be converted is also zero, OTS$CVT_L_TU writes a blank
string to the output string.
input-value-size
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by value |
Size of the integer to be converted, in bytes. The
input-value-size argument is a signed longword
containing this value size. If the size is omitted, the default is 4
(longword).
On VAX systems, the value size must be 1, 2, or 4.
On Alpha and I64 systems, the value size must be 1, 2, 4, or 8.
Condition Values Returned
SS$_NORMAL
|
Normal successful completion.
|
OTS$_OUTCONERR
|
Output conversion error. Either the result would have exceeded the
fixed-length string or the
input-value-size is not a valid value. The output
string is filled with asterisks (*).
|
OTS$CVT_L_TZ
The Convert Integer to Hexadecimal Text routine converts an unsigned
integer to a hexadecimal ASCII text string. OTS$CVT_L_TZ supports
Fortran Zw and Zw.m output conversion formats.
Format
OTS$CVT_L_TZ varying-input-value ,fixed-length-resultant-string
[,number-of-digits] [,input-value-size]
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
varying-input-value
OpenVMS usage: |
varying_arg |
type: |
unspecified |
access: |
read only |
mechanism: |
by reference |
Unsigned byte, word, or longword that OTS$CVT_L_TZ converts to an
unsigned decimal representation in an ASCII text string. (The value of
the input-value-size argument determines whether
varying-input-value is a byte, word, or longword.) The
varying-input-value argument is the address of the
unsigned integer.
fixed-length-resultant-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
write only |
mechanism: |
by descriptor, fixed length |
Output string that OTS$CVT_L_TZ creates when it converts the integer
value to a hexadecimal ASCII text string. The
fixed-length-resultant-string argument is the address
of a descriptor pointing to this ASCII text string. The string is
assumed to be of fixed length (CLASS_S descriptor).
number-of-digits
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by value |
Minimum number of digits in the ASCII text string that OTS$CVT_L_TZ
creates when it converts the integer. The
number-of-digits argument is a signed longword
containing this minimum number. If it is omitted, the default is 1. If
the actual number of significant digits in the text string that
OTS$CVT_L_TZ creates is less than this minimum number, OTS$CVT_L_TZ
inserts leading zeros in the output string. If the minimum number of
digits is zero and the integer value to be converted is also zero,
OTS$CVT_L_TZ writes a blank string to the output string.
input-value-size
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by value |
Size of the integer that OTS$CVT_L_TZ converts, in bytes. The
input-value-size argument is a signed longword
containing the value size. If the size is omitted, the default is 4
(longword).
Condition Values Returned
SS$_NORMAL
|
Normal successful completion.
|
OTS$_OUTCONERR
|
Output conversion error. The result would have exceeded the
fixed-length string; the output string is filled with asterisks (*).
|
Example
|
with TEXT_IO; use TEXT_IO;
procedure SHOW_CONVERT is
type INPUT_INT is new INTEGER range 0..INTEGER'LAST;
INTVALUE : INPUT_INT := 256;
HEXSTRING : STRING(1..11);
procedure CONVERT_TO_HEX (I : in INPUT_INT; HS : out STRING);
pragma INTERFACE (RTL, CONVERT_TO_HEX);
pragma IMPORT_routine (INTERNAL => CONVERT_TO_HEX,
EXTERNAL => "OTS$CVT_L_TZ",
MECHANISM =>(REFERENCE,
DESCRIPTOR (CLASS => S)));
begin
CONVERT_TO_HEX (INTVALUE, HEXSTRING);
PUT_LINE("This is the value of HEXSTRING");
PUT_LINE(HEXSTRING);
end;
|
This Ada example uses OTS$CVT_L_TZ to convert a longword integer to
hexadecimal text.
OTS$CVT_T_x
The Convert Numeric Text to D-, F-, G-, H-, IEEE S-, or IEEE T-Floating
routines convert an ASCII text string representation of a numeric value
to a D-floating, F-floating, G-floating, H-floating, IEEE S-floating,
or IEEE T-floating value.
Format
OTS$CVT_T_D fixed-or-dynamic-input-string ,floating-point-value
[,digits-in-fraction] [,scale-factor] [,flags-value] [,extension-bits]
OTS$CVT_T_F fixed-or-dynamic-input-string ,floating-point-value
[,digits-in-fraction] [,scale-factor] [,flags-value] [,extension-bits]
OTS$CVT_T_G fixed-or-dynamic-input-string ,floating-point-value
[,digits-in-fraction] [,scale-factor] [,flags-value] [,extension-bits]
OTS$CVT_T_H fixed-or-dynamic-input-string ,floating-point-value
[,digits-in-fraction] [,scale-factor] [,flags-value] [,extension-bits]
OTS$CVT_T_S fixed-or-dynamic-input-string ,floating-point-value
[,digits-in-fraction] [,scale-factor] [,flags-value] [,extension-bits]
OTS$CVT_T_T fixed-or-dynamic-input-string ,floating-point-value
[,digits-in-fraction] [,scale-factor] [,flags-value] [,extension-bits]
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
fixed-or-dynamic-input-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
read only |
mechanism: |
by descriptor, fixed-length or dynamic string |
Input string containing an ASCII text string representation of a
numeric value that OTS$CVT_T_x converts to a D-floating,
F-floating, G-floating, H-floating, IEEE S-floating, or IEEE T-floating
value. The fixed-or-dynamic-input-string argument is
the address of a descriptor pointing to the input string.
The syntax of a valid input string is as follows:
E, e, D, d, Q, and q are the possible exponent letters. They are
semantically equivalent. Other elements in the preceding syntax are
defined as follows:
Term |
Description |
blanks
|
One or more blanks
|
digits
|
One or more decimal digits
|
floating-point-value
OpenVMS usage: |
floating_point |
type: |
D_floating, F_floating, G_floating, H_floating, IEEE
S_floating, IEEE T_floating |
access: |
write only |
mechanism: |
by reference |
Floating-point value that OTS$CVT_T_x creates when it converts
the input string. The floating-point-value argument is
the address of the floating-point value. The data type of
floating-point-value depends on the called routine as
shown in the following table:
Routine |
floating-point-value Data Type |
OTS$CVT_T_D
|
D-floating
|
OTS$CVT_T_F
|
F-floating
|
OTS$CVT_T_G
|
G-floating
|
OTS$CVT_T_H
|
H-floating
|
OTS$CVT_T_S
|
IEEE S-floating
|
OTS$CVT_T_T
|
IEEE T-floating
|
digits-in-fraction
OpenVMS usage: |
longword_unsigned |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
Number of digits in the fraction if no decimal point is included in the
input string. The digits-in-fraction argument contains
the number of digits. If the number of digits is omitted, the default
is zero.
scale-factor
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by value |
Scale factor. The scale-factor argument contains the
value of the scale factor. If bit 6 of the flags-value
argument is clear, the resultant value is divided by
10scale-factor unless the exponent is present. If
bit 6 of flags-value is set, the scale factor is
always applied. If the scale factor is omitted, the default is zero.
flags-value
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
User-supplied flags. The flags-value argument contains
the user-supplied flags described in the following table:
Bit |
Action if Set |
Action if Clear |
0
|
Ignore blanks.
|
Interpret blanks as zeros.
|
1
|
Allow only E or e exponents. (This is consistent with Fortran
semantics.)
|
Allow E, e, D, d, Q and q exponents. (This is consistent with BASIC
semantics.)
|
2
|
Interpret an underflow as an error.
|
Do not interpret an underflow as an error.
|
3
|
Truncate the value.
|
Round the value.
|
4
|
Ignore tabs.
|
Interpret tabs as invalid characters.
|
5
|
An exponent must begin with a valid exponent letter.
|
The exponent letter can be omitted.
|
6
|
Always apply the scale factor.
|
Apply the scale factor only if there is no exponent present in the
string.
|
If you omit the flags-value argument,
OTS$CVT_T_x defaults all flags to clear.
extension-bits (D-, F-floating, IEEE S-floating)
OpenVMS usage: |
byte_unsigned |
type: |
byte (unsigned) |
access: |
write only |
mechanism: |
by reference |
extension-bits (G-, H-floating, IEEE T-floating)
OpenVMS usage: |
word_unsigned |
type: |
word (unsigned) |
access: |
write only |
mechanism: |
by reference |
Extra precision bits. The extension-bits argument is
the address of a word containing the extra precision bits. If
extension-bits is present,
floating-point-value is not rounded, and the first
n bits after truncation are returned left-justified in this
argument, as follows:
Routine |
Number of Bits Returned |
Data Type |
OTS$CVT_T_D
|
8
|
Byte (unsigned)
|
OTS$CVT_T_F
|
8
|
Byte (unsigned)
|
OTS$CVT_T_G
|
11
|
Word (unsigned)
|
OTS$CVT_T_H
|
15
|
Word (unsigned)
|
OTS$CVT_T_S
|
8
|
Byte (unsigned)
|
OTS$CVT_T_T
|
11
|
Word (unsigned)
|
A value represented by extension bits is suitable for use as the
extension operand in an EMOD instruction.
The extra precision bits returned for H-floating may not be precise
because OTS$CVT_T_H carries its calculations to only 128 bits. However
the error should be small.
Description
The OTS$CVT_T_D, OTS$CVT_T_F, OTS$CVT_T_G, OTS$CVT_T_H, OTS$CVT_T_S,
and OTS$CVT_T_T routines support Fortran D, E, F, and G input type
conversion as well as similar types for other languages.
These routines provide run-time support for BASIC and Fortran input
statements.
Although Alpha and I64 systems do not generally support H-floating
operations, you can use OTS$CVT_T_H to convert a text string to an
H-floating value on an Alpha or I64 system.
Condition Values Returned
SS$_NORMAL
|
Normal successful completion.
|
OTS$_INPCONERR
|
Input conversion error; an invalid character in the input string, or
the value is outside the range that can be represented. The
floating-point-value and
extension-bits arguments, if present, are set to +0.0
(not reserved operand --0.0).
|
Example
|
C+
C This is a Fortran program demonstrating the use of
C OTS$CVT_T_F.
C-
REAL*4 A
CHARACTER*10 T(5)
DATA T/'1234567+23','8.786534+3','-983476E-3','-23.734532','45'/
DO 2 I = 1, 5
TYPE 1,I,T(I)
1 FORMAT(' Input string ',I1,' is ',A10)
C+
C B is the return status.
C T(I) is the string to be converted to an
C F-floating point value. A is the F-floating
C point conversion of T(I). %VAL(5) means 5 digits
C are in the fraction if no decimal point is in
C the input string T(I).
C-
B = OTS$CVT_T_F(T(I),A,%VAL(5),,)
TYPE *,' Output of OTSCVT_T_F is ',A
TYPE *,' '
2 CONTINUE
END
|
This Fortran example demonstrates the use of OTS$CVT_T_F. The output
generated by this program is as follows:
Input string 1 is 1234567+23
Output of OTSCVT_T_F is 1.2345669E+24
Input string 2 is 8.786534+3
Output of OTSCVT_T_F is 8786.534
Input string 3 is -983476E-3
Output of OTSCVT_T_F is -9.8347599E-03
Input string 4 is -23.734532
Output of OTSCVT_T_F is -23.73453
Input string 5 is 45
Output of OTSCVT_T_F is 45000.00
|
OTS$CVT_TB_L
The Convert Binary Text to Unsigned Integer routine converts an ASCII
text string representation of an unsigned binary value to an unsigned
integer value. The integer value can be of arbitrary length but is
typically a byte, word, longword, or quadword. The default size of the
result is a longword.
Format
OTS$CVT_TB_L fixed-or-dynamic-input-string ,varying-output-value
[,output-value-size] [,flags-value]
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
fixed-or-dynamic-input-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
read only |
mechanism: |
by descriptor |
Input string containing the string representation of an unsigned binary
value that OTS$CVT_TB_L converts to an unsigned integer value. The
fixed-or-dynamic-input-string argument is the address
of a descriptor pointing to the input string. The valid input
characters are blanks and the digits 0 and 1. No sign is permitted.
varying-output-value
OpenVMS usage: |
varying_arg |
type: |
unspecified |
access: |
write only |
mechanism: |
by reference |
Unsigned integer of specified size that OTS$CVT_TB_L creates when it
converts the ASCII text string. The
varying-output-value argument is the address of the
integer. The value of the output-value-size argument
determines the size in bytes of the output value.
output-value-size
OpenVMS usage: |
longword_signed |
type: |
longword (signed) |
access: |
read only |
mechanism: |
by value |
Arbitrary number of bytes to be occupied by the unsigned integer output
value. The output-value-size argument contains a value
that equals the size in bytes of the output value. If the value of
output-value-size is zero or a negative number,
OTS$CVT_TB_L returns an input conversion error. If you omit the
output-value-size argument, the default is 4
(longword).
flags-value
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by value |
User-supplied flag that OTS$CVT_TB_L uses to determine how to interpret
blanks within the input string. The flags-value
argument contains this user-supplied flag.
OTS$CVT_TB_L defines the flag as follows:
Bit |
Action if Set |
Action if Clear |
0
|
Ignore blanks.
|
Interpret blanks as zeros.
|
If you omit the flags-value argument, OTS$CVT_TB_L
defaults all flags to clear.
Condition Values Returned
SS$_NORMAL
|
Normal successful completion.
|
OTS$_INPCONERR
|
Input conversion error. OTS$CVT_TB_L encountered an invalid character
in the
fixed-or-dynamic-input-string, an overflow of
varying-output-value, or an invalid
output-value-size. In the case of an invalid character
or of an overflow,
varying-output-value is set to zero.
|
Example
|
OPTION &
TYPE = EXPLICIT
!+
! This program demonstrates the use of OTS$CVT_TB_L from BASIC.
! Several binary numbers are read and then converted to their
! integer equivalents.
!-
!+
! DECLARATIONS
!-
DECLARE STRING BIN_STR
DECLARE LONG BIN_VAL, I, RET_STATUS
DECLARE LONG CONSTANT FLAGS = 17 ! 2^0 + 2^4
EXTERNAL LONG FUNCTION OTS$CVT_TB_L (STRING, LONG, &
LONG BY VALUE, LONG BY VALUE)
!+
! MAIN PROGRAM
!-
!+
! Read the data, convert it to binary, and print the result.
!-
FOR I = 1 TO 5
READ BIN_STR
RET_STATUS = OTS$CVT_TB_L( BIN_STR, BIN_VAL, '4'L, FLAGS)
PRINT BIN_STR;" treated as a binary number equals";BIN_VAL
NEXT I
!+
! Done, end the program.
!-
GOTO 32767
999 Data "1111", "1 111", "1011011", "11111111", "00000000"
32767 END
|
This BASIC example program demonstrates how to call OTS$CVT_TB_L to
convert binary text to a longword integer.
The output generated by this BASIC program is as follows:
1111 treated as a binary number equals 15
1 111 treated as a binary number equals 15
1011011 treated as a binary number equals 91
11111111 treated as a binary number equals 255
00000000 treated as a binary number equals 0
|