MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Parsing money denomination counts using DFSORT

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities
View previous topic :: View next topic  
Author Message
S1
Beginner


Joined: 20 Jul 2025
Posts: 1
Topics: 1

PostPosted: Mon Jul 21, 2025 10:42 pm    Post subject: Parsing money denomination counts using DFSORT Reply with quote

I have a request where we need to find the denomination counts of $100, $50, $20, $10, $5 and populate in the output by using PARSE in ICETOOL.

Input
Denomination starts at 22nd position and with no proper sequence.
Ex:- 2x10 = 2 notes/bill of $10.
Here x is in lower case(i.e hex (A7))

Code:

----+----1----+----2----+----3----+----4----+----5--
*************************** Top of Data ******
EMPLY1 2025-07-20 2x10,1x100,5x20,3x5,2x50
EMPLY1 2025-07-20 8x100,1x20,1x5,2x50
EMPLY2 2025-07-20 8x20,3x50
EMPLY3 2025-07-20 2x10,1x100,4x20,2x50
EMPLY3 2025-07-20 6x20,1x5


Required Output
Sequence of the denomination counts in output should populate from 22nd position with starting counts for $100, $50, $20, $10, $5
Code:

----+----1----+----2----+----3----+----4----+----5
********************************* Top of Data ****
EMPLY1 2025-07-20 0001 0002 0005 0002 0003
EMPLY1 2025-07-20 0008 0002 0001 0000 0001
EMPLY2 2025-07-20 0000 0003 0008 0000 0000
EMPLY3 2025-07-20 0001 0002 0004 0002 0000
EMPLY3 2025-07-20 0000 0000 0006 0000 0001

Is this possible in ICETOOL.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12380
Topics: 75
Location: San Jose

PostPosted: Tue Jul 29, 2025 8:34 am    Post subject: Reply with quote

S1,

It is a little bit tricky as you want to parse and re-arrange based on the denomination value. The following DFSORT JCL will give you the desired results

Code:

//STEP0100 EXEC PGM=SORT                                           
//SYSOUT   DD SYSOUT=*                                             
//SORTIN   DD *                                                   
EMPLY1 2025-07-20 2x10,1x100,5x20,3x5,2x50                         
EMPLY1 2025-07-20 8x100,1x20,1x5,2x50                             
EMPLY2 2025-07-20 8x20,3x50                                       
EMPLY3 2025-07-20 2x10,1x100,4x20,2x50                             
EMPLY3 2025-07-20 6x20,1x5                                         
//SORTOUT  DD SYSOUT=*                                             
//SYSIN    DD *                                                   
  OPTION COPY                                                     
  INREC PARSE=(%01=(ENDBEFR=C' ',         # EMPLOYE ID             
                     FIXLEN=07),                                   
               %02=(ENDBEFR=C' ',         # DATE                   
                     FIXLEN=11),                                   
               %03=(ENDBEFR=X'A7',        # DENOMINATION COUNT-1   
                     FIXLEN=04),                                   
               %04=(ENDBEFR=C',',         # DENOMINATION VALUE-1   
                     FIXLEN=03),                                   
               %05=(ENDBEFR=X'A7',        # DENOMINATION COUNT-2   
                     FIXLEN=04),                                   
               %06=(ENDBEFR=C',',         # DENOMINATION VALUE-2   
                     FIXLEN=03),                                   
               %07=(ENDBEFR=X'A7',        # DENOMINATION COUNT-3   
                     FIXLEN=04),                                   
               %08=(ENDBEFR=C',',         # DENOMINATION VALUE-3   
                     FIXLEN=03),                                   
               %09=(ENDBEFR=X'A7',        # DENOMINATION COUNT-4   
                     FIXLEN=04),                                   
               %10=(ENDBEFR=C',',         # DENOMINATION VALUE-4   
                     FIXLEN=03),                                   
               %11=(ENDBEFR=X'A7',        # DENOMINATION COUNT-5   
                     FIXLEN=04),                                   
               %12=(ENDBEFR=C',',         # DENOMINATION VALUE-5   
                     FIXLEN=03)),                                 
        BUILD=(%01,                                                   
               %02,                                                   
               05C'0000 ',                                           
               081:%03,UFF,EDIT=(TTTT),C'|',%04,UFF,EDIT=(TTT),       
               091:%05,UFF,EDIT=(TTTT),C'|',%06,UFF,EDIT=(TTT),       
               101:%07,UFF,EDIT=(TTTT),C'|',%08,UFF,EDIT=(TTT),       
               111:%09,UFF,EDIT=(TTTT),C'|',%10,UFF,EDIT=(TTT),       
               121:%11,UFF,EDIT=(TTTT),C'|',%12,UFF,EDIT=(TTT))       
                                                                     
 OUTREC IFOUTLEN=42,                                                 
 IFTHEN=(WHEN=INIT,                                                   
* SET UP FOR $100 DENOMINATION                                       
      OVERLAY=(019:086,03,CHANGE=(4,C'100',081,04),NOMATCH=(019,04), 
               019:096,03,CHANGE=(4,C'100',091,04),NOMATCH=(019,04), 
               019:106,03,CHANGE=(4,C'100',101,04),NOMATCH=(019,04), 
               019:116,03,CHANGE=(4,C'100',111,04),NOMATCH=(019,04), 
               019:126,03,CHANGE=(4,C'100',121,04),NOMATCH=(019,04), 
                                                                     
* SET UP FOR $50 DENOMINATION                                         
               024:086,03,CHANGE=(4,C'050',081,04),NOMATCH=(024,04), 
               024:096,03,CHANGE=(4,C'050',091,04),NOMATCH=(024,04), 
               024:106,03,CHANGE=(4,C'050',101,04),NOMATCH=(024,04), 
               024:116,03,CHANGE=(4,C'050',111,04),NOMATCH=(024,04), 
               024:126,03,CHANGE=(4,C'050',121,04),NOMATCH=(024,04), 
                                                                     
* SET UP FOR $20 DENOMINATION                                         
               029:086,03,CHANGE=(4,C'020',081,04),NOMATCH=(029,04), 
               029:096,03,CHANGE=(4,C'020',091,04),NOMATCH=(029,04), 
               029:106,03,CHANGE=(4,C'020',101,04),NOMATCH=(029,04), 
               029:116,03,CHANGE=(4,C'020',111,04),NOMATCH=(029,04), 
               029:126,03,CHANGE=(4,C'020',121,04),NOMATCH=(029,04), 
                                                                     
* SET UP FOR $10 DENOMINATION                                         
               034:086,03,CHANGE=(4,C'010',081,04),NOMATCH=(034,04), 
               034:096,03,CHANGE=(4,C'010',091,04),NOMATCH=(034,04), 
               034:106,03,CHANGE=(4,C'010',101,04),NOMATCH=(034,04), 
               034:116,03,CHANGE=(4,C'010',111,04),NOMATCH=(034,04), 
               034:126,03,CHANGE=(4,C'010',121,04),NOMATCH=(034,04), 
                                                                     
* SET UP FOR $5 DENOMINATION                                         
               039:086,03,CHANGE=(4,C'005',081,04),NOMATCH=(039,04),
               039:096,03,CHANGE=(4,C'005',091,04),NOMATCH=(039,04),
               039:106,03,CHANGE=(4,C'005',101,04),NOMATCH=(039,04),
               039:116,03,CHANGE=(4,C'005',111,04),NOMATCH=(039,04),
               039:126,03,CHANGE=(4,C'005',121,04),NOMATCH=(039,04)))


The output would be
Code:

EMPLY1 2025-07-20 0001 0002 0005 0002 0003
EMPLY1 2025-07-20 0008 0002 0001 0000 0001
EMPLY2 2025-07-20 0000 0003 0008 0000 0000
EMPLY3 2025-07-20 0001 0002 0004 0002 0000
EMPLY3 2025-07-20 0000 0000 0006 0000 0001

_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group