Can you let me know how to read in packed decimal data correctly. I have tried two different formats and it is not listing last digit correctly:
DATA _NULL_;
ACCTI = '0123456789001234567C'X;
ACCTO = INPUT(ACCTI, PD10.);
PUT '1 ' ACCTI= HEX. ACCTO= 20.;
ACCTO = INPUT(ACCTI,7 S370FPD10.);
PUT '2 ' ACCTI= HEX. ACCTO= 20.;
RUN;
The following is the info from SYSOUT
1 ACCTI=0123456789001234567C ACCTO=123456789001234560
2 ACCTI=0123456789001234567C ACCTO=123456789001234560
Thanks
To read PD you need use informat S370FPDw. where w is the length in bytes:
6 bytes enable 11 digits and a sign - should be read by: input var s370fpd6.
@HK1 wrote:
Thanks for the info. Here I am trying to read max 18 digits and there is C at the end. Thought in the scenario we will need PD10?
Usually, dec_fixed numbers are defined in PL/1 with an uneven number of digits, as you will need 10 bytes for 18 or 19 digits anyway, so the programmer takes the larger digit count.
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.