View previous topic :: View next topic
|
Author |
Message |
skgupta81
New User
Joined: 11 Nov 2008 Posts: 27 Location: Canada
|
|
|
|
00LCA2013031241096B
01LCA01010117160000476754010431512220130227 IV00000005CAALCAI4767540104
01LCA01010117160000476754010431512220130227 LCA 000053CAALCAI4767540104
01LCA01010146110000476754011347536220130227 IV00000023GAALCAI4767540113
01LCA01010146110000476754011347536220130227 LCA 000593GAALCAI4767540113
01LCA01010152790000476754014432947120130227 LCA 000001FAALCAI4767540144
99VSC03271F03271F00000{03271F00000{00000{00000A03271E00000{
Above file has got data records with "01" types(See the first two digits).
It has signed integer value in position (58,64).
I want to reverse these values from positive to negative, and negative to positive and it should stay in the same format and in same order.
for example 000005C should get converted to 000005L.
Can anyone please help me here? |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
the issue has been discussed quite a few times
hints OVERLAY, MUL, -1 |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
OVERLAY,+0,SUB :-) |
|
Back to top |
|
|
skgupta81
New User
Joined: 11 Nov 2008 Posts: 27 Location: Canada
|
|
|
|
Hi Below code worked for positive values but not for negative values in a way I want the output.
This code converts the last byte from positive to negative, i mean J to A, K to B and so on..
but does not convert negative to positive the same way.. I mean it converts J to 1, K to 2 but not in A or B.
I need the last byte as sing byte.. I mean if its positive.. 1-9 should be replaced by A to I.
Let me know if you need more information.
Code: |
OPTION COPY
INREC IFTHEN=(WHEN=(1,2,CH,EQ,C'01'),
OVERLAY=(58:58,7,ZD,MUL,-1,TO=ZD,LENGTH=7))
END |
Code'd |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
You can try this:
Code: |
OPTION COPY
INREC IFTHEN=(WHEN=(1,2,CH,EQ,C'01'),
OVERLAY=(58:+0,
SUB,
58,7,ZD,
TO=ZDC,LENGTH=7))
END
|
The key thing is the TO=ZDC, which will also make your existing code work.
If you look at the data-types in the DFSORT manuals, you'll find out why your existing code does what it does. |
|
Back to top |
|
|
skgupta81
New User
Joined: 11 Nov 2008 Posts: 27 Location: Canada
|
|
|
|
Perfect.. Thanks a million.... |
|
Back to top |
|
|
|