IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Reversing signed integer value in file


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
skgupta81

New User


Joined: 11 Nov 2008
Posts: 27
Location: Canada

PostPosted: Thu Mar 21, 2013 12:27 am
Reply with quote

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
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Thu Mar 21, 2013 12:31 am
Reply with quote

the issue has been discussed quite a few times
hints OVERLAY, MUL, -1
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Thu Mar 21, 2013 1:07 am
Reply with quote

OVERLAY,+0,SUB :-)
Back to top
View user's profile Send private message
skgupta81

New User


Joined: 11 Nov 2008
Posts: 27
Location: Canada

PostPosted: Thu Mar 21, 2013 3:41 am
Reply with quote

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
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Thu Mar 21, 2013 4:08 am
Reply with quote

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
View user's profile Send private message
skgupta81

New User


Joined: 11 Nov 2008
Posts: 27
Location: Canada

PostPosted: Thu Mar 21, 2013 5:01 am
Reply with quote

Perfect.. Thanks a million....
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
No new posts How to split large record length file... DFSORT/ICETOOL 10
No new posts Extracting Variable decimal numbers f... DFSORT/ICETOOL 17
No new posts SFTP Issue - destination file record ... All Other Mainframe Topics 2
No new posts Access to non cataloged VSAM file JCL & VSAM 18
No new posts Need help for File Aid JCL to extract... Compuware & Other Tools 23
Search our Forums:

Back to Top