VMS Help
RTL Routines, OTS$, OTS$DIV_PK_LONG
*Conan The Librarian (sorry for the slow response - running on an old VAX)
|
|
The Packed Decimal Division with Long Divisor routine divides
fixed-point decimal data, which is stored in packed decimal form,
when precision and scale requirements for the quotient call for
multiple precision division. The divisor must have a precision of
30 or 31 digits.
Format
OTS$DIV_PK_LONG packed-decimal-dividend
,packed-decimal-divisor ,divisor-precision
,packed-decimal-quotient ,quotient-precision
,precision-data ,scale-data
OpenVMS usage:cond_value
type: longword (unsigned)
access: write only
mechanism: by value
packed-decimal-dividend
OpenVMS usage:varying_arg
type: packed decimal string
access: read only
mechanism: by reference
Dividend. The packed-decimal-dividend argument is the address of
a packed decimal string that contains the shifted dividend.
Before being passed as input, the packed-decimal-dividend
argument is always multiplied by 10**c, where c is defined as
follows:
c = 31 - prec(packed-decimal-dividend)
Multiplying packed-decimal-dividend by 10**c makes packed-
decimal-dividend a 31-digit number.
packed-decimal-divisor
OpenVMS usage:varying_arg
type: packed decimal string
access: read only
mechanism: by reference
Divisor. The packed-decimal-divisor argument is the address of a
packed decimal string that contains the divisor.
divisor-precision
OpenVMS usage:word_signed
type: word (signed)
access: read only
mechanism: by value
Precision of the divisor. The divisor-precision argument is a
signed word that contains the precision of the divisor. The high-
order bits are filled with zeros.
packed-decimal-quotient
OpenVMS usage:varying_arg
type: packed decimal string
access: write only
mechanism: by reference
Quotient. The packed-decimal-quotient argument is the address of
the packed decimal string into which OTS$DIV_PK_LONG writes the
quotient.
quotient-precision
OpenVMS usage:word_signed
type: word (signed)
access: read only
mechanism: by value
Precision of the quotient. The quotient-precision argument is
a signed word that contains the precision of the quotient. The
high-order bits are filled with zeros.
precision-data
OpenVMS usage:word_signed
type: word (signed)
access: read only
mechanism: by value
Additional digits of precision required. The precision-data
argument is a signed word that contains the value of the
additional digits of precision required.
OTS$DIV_PK_LONG computes the precision-data argument as follows:
precision-data = scale(packed-decimal-quotient)
+ scale(packed-decimal-divisor)
- scale(packed-decimal-dividend)
- 31 + prec(packed-decimal-dividend)
scale-data
OpenVMS usage:word_signed
type: word (signed)
access: read only
mechanism: by value
Scale factor of the decimal point. The scale-data argument is a
signed word that contains the scale data.
OTS$DIV_PK_LONG defines the scale-data argument as follows:
scale-data = 31 - prec(packed-decimal-divisor)
[legal]
[privacy]
[GNU]
[policy]
[netiquette]
[sponsors]
[FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.