HP 3000 Manuals

Packed-Decimal Numbers [ Compiler Library/XL Reference Manual ] MPE/iX 5.0 Documentation


Compiler Library/XL Reference Manual

Packed-Decimal Numbers 

The format of a packed-decimal number is shown in Figure 4-1.

[]
Figure 4-1. Packed-Decimal Format The left-most byte in the illustration contains the high-order digit. If this digit is in bit postions 4 through 7, positions 0 through 3 of the same byte are ignored. (A digit count specifies the number of digits to be recognized.) A packed-decimal number has the following characteristics: * Each decimal digit is represented in binary coded decimal (BCD) form by four bits. * The sign is represented by four bits. * In storage, the four sign bits may be in the following bit positions of a 32-bit word: (4-7), (12-15), (20-23), or (28-31). Expressed in different terms, the sign is always in positions (4-7) of an 8-bit byte; the byte is byte 0, byte 1, byte 2, or byte 3 of a 32-bit word. * Bytes to the left of the byte containing the high-order digit are not part of the number field and may have any contents, even though they may be part of the same 32-bit word. Likewise, bytes to the right of the byte containing the sign bits are not part of the field and may have any contents, even though they may be part of the same 32-bit word. Bytes that are outside of the field will not be accessed or modified. * Succeeding 4-bit groups to the left of the sign (Figure 4-1) can contain successively higher-order digits. * There are no unused bits between the sign and the high-order digit. * The length may be up to 28 digits. * The storage address is the address of the byte that contains the high-order digit. * When a packed-decimal number is source data for a decimal arithmetic procedure, sign bits 1101 are recognized as minus. All other bit combinations are recognized as plus, except that HPPACCVDA recognizes 1111 as designating an unsigned number. * When a packed-decimal number is the result of a decimal arithmetic procedure, sign bits 1100 indicate plus and 1101 indicate minus. There are no unsigned result operands except for HPPACCVAD, which furnishes 1111 to indicate an unsigned number. * A leading nonsignificant packed-decimal digit is not modified by any procedure other than HPPACCVAD, which inserts a zero.


MPE/iX 5.0 Documentation