The
w value
specifies the number of bytes, not the number of digits. If the informat
specification includes a
d value,
the number is divided by 10
d.
In packed decimal format,
each byte except for the last byte represents two decimal digits.
(The last byte represents one digit and the sign.) An IBM packed
decimal number consists of a sign and up to 31 digits, thus giving
a range from -10
31 + 1 to 10
31 −
1. The sign is written in the rightmost nibble. (A nibble is 4 bits
or half a byte.) A hexadecimal C indicates a plus sign, and a hexadecimal
D indicates a minus sign. The rest of the nibbles to the left of the
sign nibble represent decimal digits. The hexadecimal values of these
digit nibbles correspond to decimal values. Therefore, only values
between '0'x and '9'x can be used in the digit positions.
Here are several examples
of how data is read using the PD
w.d informat:
|
|
|
|
|
|
|
|
|
|
|
the d value
of 2 causes the number to be divided by 10 2
|
Note: In these examples, Data Line
(Hexadecimal) represents the bit pattern stored, which is the value
that you see when you view it in a text editor that displays values
in hexadecimal representation. Value is the number that is used by
SAS after the data pattern has been read using the corresponding informat.
The PD
w.d format
writes missing numerical data as -0. When the PD
w.d informat
reads -0, it stores it 0.