View previous topic :: :: View next topic

Author 
Message 
varun
New User
Joined: 02 Mar 2005 Posts: 11 Location: USA




Hi,
I need to convert the numeric field (Date) which is stored in zoned decimal to packed decimal.
Can any one help me
Thanks in advance 

Back to top 




mmwife
Super Moderator
Joined: 30 May 2003 Posts: 1592




01 zddate pic 9(008) value 02052005.
01 pddate pic 9(005) comp3.
move zddate to pddate.
pddate will contain the packed decimal version of zddate with an additional leading zero. That is, 002052.... 

Back to top 


ravindra mudumby
New User
Joined: 16 Jun 2005 Posts: 6 Location: blore




Packed decimal specifies a method of encoding decimal numbers by using each byte to represent two decimal digits. Packed decimal representation stores decimal data with exact precision. The fractional part of the number is determined by the informat or format because there is no separate mantissa and exponent.
An advantage of using packed decimal data is that exact precision can be maintained. However, computations involving decimal data may become inexact due to the lack of native instructions.
Zoned decimal specifies a method of encoding decimal numbers in which each digit requires one byte of storage. The last byte contains the number's sign as well as the last digit. Zoned decimal data produces a printable representation.
Nibble specifies 1/2 of a byte.
Types of Data
Packed Decimal Data
A packed decimal representation stores decimal digits in each "nibble" of a byte. Each byte has two nibbles, and each nibble is indicated by a hexadecimal digit. For example, the value 15 is stored in two nibbles, using the hexadecimal digits 1 and 5.
The sign indication is dependent on your operating environment. On IBM mainframes, the sign is indicated by the last nibble. With formats, C indicates a positive value, and D indicates a negative value. With informats, A, C, E, and F indicate positive values, and B and D indicate negative values. Any other nibble is invalid for signed packed decimal data. In all other operating environments, the sign is indicated in its own byte. If the highorder bit is 1, then the number is negative. Otherwise, it is positive.
The following applies to packed decimal data representation:
* You can use the S370FPD format on all platforms to obtain the IBM mainframe configuration.
* You can have unsigned packed data with no sign indicator. The packed decimal format and informat handles the representation. It is consistent between ASCII and EBCDIC platforms.
* Note that the S370FPDU format and informat expects to have an F in the last nibble, while packed decimal expects no sign nibble.
Zoned Decimal Data
The following applies to zoned decimal data representation:
* A zoned decimal representation stores a decimal digit in the low order nibble of each byte. For all but the byte containing the sign, the highorder nibble is the numeric zone nibble (F on EBCDIC and 3 on ASCII).
* The sign can be merged into a byte with a digit, or it can be separate, depending on the representation. But the standard zoned decimal format and informat expects the sign to be merged into the last byte.
* The EBCDIC and ASCII zoned decimal formats produce the same printable representation of numbers. There are two nibbles per byte, each indicated by a hexadecimal digit. For example, the value 15 is stored in two bytes. The first byte contains the hexadecimal value F1 and the second byte contains the hexadecimal value C5.
Packed Julian Dates
The following applies to packed Julian dates:
* The two formats and informats that handle Julian dates in packed decimal representation are PDJULI and PDJULG. PDJULI uses the IBM mainframe year computation, while PDJULG uses the Gregorian computation.
* The IBM mainframe computation considers 1900 to be the base year, and the year values in the data indicate the offset from 1900. For example, 98 means 1998, 100 means 2000, and 102 means 2002. 1998 would mean 3898.
* The Gregorian computation allows for 2digit or 4digit years. If you use 2digit years, SAS uses the setting of the YEARCUTOFF value to determine the true year. 

Back to top 



