View previous topic :: View next topic
|
Author |
Message |
Sikkandhar
New User
Joined: 03 Dec 2007 Posts: 61 Location: Bangalore
|
|
|
|
Hi,
I have a number populated in X(17). Have to convert to X(17) to S9(13)V9(5) COMP -3. I used the below command
Code: |
1:1000,17,ZD,TO=PDC,LENGTH=10,
|
The charector field starts from position 1000 and occupies 17 bytes. The last 4 bytes in X(17) are the decimal field.
When the value is Charector field is '00000000010000000', the value populated is 100.00000 instead of 1000.0000.
Thanks |
|
Back to top |
|
|
Akatsukami
Global Moderator
Joined: 03 Oct 2009 Posts: 1788 Location: Bloomington, IL
|
|
|
|
Are you saying that the least significant digit of the packed decimal field should always be set to zero? |
|
Back to top |
|
|
Sikkandhar
New User
Joined: 03 Dec 2007 Posts: 61 Location: Bangalore
|
|
|
|
yes. the least significant bit/5th decimal field should be set to zero. |
|
Back to top |
|
|
Akatsukami
Global Moderator
Joined: 03 Oct 2009 Posts: 1788 Location: Bloomington, IL
|
|
|
|
Remember that in a packed decimal field there is no indication of the decimal point; you have to know where it is and code accordingly (in assembler), or define your variables to tell the compiler where it is.
(Remember also that COBOL terminology should only be used to describe COBOL problems.)
A simple way to get what you want is
Code: |
1:1000,17,ZD,MUL,+10,TO=PDC,LENGTH=10 |
|
|
Back to top |
|
|
Sikkandhar
New User
Joined: 03 Dec 2007 Posts: 61 Location: Bangalore
|
|
|
|
Thanks Akatsukami. Thanks for you solution it worked and it was simpler than the one i thought of. To use INREC and pad an extra zero to the 17 byte Char. |
|
Back to top |
|
|
|