Hello,
Does someone know how many significant digits do we have using a PD.6 format.
Could it be possible to get a table showing the number of significant digits for each PD.x format.
Regards,
I ran this test:
data test;
length checkvar $12;
input number;
checkvar = put(put(number,pd6.),$hex12.);
datalines;
123456789
-123456789
1234567890
-1234567890
12345678901
123456789012
1234567890123
;
proc print data=test;
run;
and got this result:
Beob. checkvar number 1 000123456789 123456789 2 800123456789 -123456789 3 001234567890 1234567890 4 801234567890 -1234567890 5 009999999999 12345678901 6 009999999999 123456789012 7 009999999999 1234567890123
So it can be seen that a full byte is reserved for the (possible) sign. This behavior is described in the OS-specific documentation of the PD format:
Digits or significant digits? Not the same thing. The significant digits are use specific.
The W is the number of BYTES in the output, and each byte has two digits. So PD6. = 12 digits.
Try it:
length checkvar $12;
checkvar = put(put(1234567123456,pd6.),$hex12.);
You are not starting with a packed decimal value.
I ran this test:
data test;
length checkvar $12;
input number;
checkvar = put(put(number,pd6.),$hex12.);
datalines;
123456789
-123456789
1234567890
-1234567890
12345678901
123456789012
1234567890123
;
proc print data=test;
run;
and got this result:
Beob. checkvar number 1 000123456789 123456789 2 800123456789 -123456789 3 001234567890 1234567890 4 801234567890 -1234567890 5 009999999999 12345678901 6 009999999999 123456789012 7 009999999999 1234567890123
So it can be seen that a full byte is reserved for the (possible) sign. This behavior is described in the OS-specific documentation of the PD format:
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.