12-13-2016 12:17 AM
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:
ACCTI = '0123456789001234567C'X;
ACCTO = INPUT(ACCTI, PD10.);
PUT '1 ' ACCTI= HEX. ACCTO= 20.;
ACCTO = INPUT(ACCTI,7 S370FPD10.);
PUT '2 ' ACCTI= HEX. ACCTO= 20.;
The following is the info from SYSOUT
1 ACCTI=0123456789001234567C ACCTO=123456789001234560
2 ACCTI=0123456789001234567C ACCTO=123456789001234560
12-13-2016 02:05 AM
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.
12-13-2016 03:01 AM
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.