Decimal Numbers
There are two formats for decimal numbers:
Zoned Decimal Numbers
- Generally used for input/output - Represent one decimal digit per byte - Each byte of is made up of two hex digits left -> zone digit right -> numeric digit - The numeric digit is the number represented by the byte - The zone digit of all but the RIGHTMOST byte must be F - The zone digit of the rightmost byte is used to indicate the sign of the number A, C, E, or F positive number B or D negative number F1F2F3F4 zoned decimal representation of +1234 F1F2F3B4 zoned decimal representation of -1234 - Can be generated on a DC statement by using a storage class of Z - the initial value can contain a sign or a decimal point - if the sign is omitted, assumed to be positive - if plus sign is specified, rightmost zone digit is C - if negative sign is specified, rightmost zone digit is D - if a decimal point is specified, treated as an implied decimal point DC 2Z'-1' D1D1 DC Z'+2' C2 DC Z'2' C2 DC ZL3'4' F0F0C4 DC 2ZL2'-9' F0D9F0D9 DC Z'1.10' F1F1C0 - Maximum zoned decimal number can have 16 digits
Packed Decimal Numbers
- Used for arithmetic - Each byte, except for the rightmost, represents two decimal digits - The rightmost byte contains a decimal digit and the sign digit left -> numeric digit right -> sign digit - The sign digit is used to indicate the sign of the number A, C, E, or F positive number B or D negative number - To represent a number: 1. Move the sign to the right (end) of the number 2. If there is an even number of digits, add a zero on the left 3. Change the sign to an appropriate sign digit To represent -1234: 1. 1234- 2. 01234- 3. 01 23 4D - Can be generated on a DC statement by using a storage class of P - the initial value can contain a sign or a decimal point - if the sign is omitted, assumed to be positive - if plus sign is specified, rightmost sign digit is C - if negative sign is specified, rightmost sign digit is D - if a decimal point is specified, treated as an implied decimal point DC 2P'-1' 1D1D DC P'+2' 2C DC P'2' 2C DC PL3'4' 00004C DC 2PL2'-9' 009D009D DC P'1.10' 110C - Maximum packed decimal number can have 31 digits