SPLICE! - Help needed (urgent)

In this Mainframe Forum - You can post your queries on DFSORT, ICETOOL , SyncSort & JCL Utilities

Moderators: Frank Yaeger, Moderator Group

Post Reply
sts043
Member
Posts: 6
Joined: Wed Jul 08, 2009 3:43 pm

SPLICE! - Help needed (urgent)

Post by sts043 » Wed Jul 08, 2009 5:49 pm

We currently use SELCOPY to perform some data sorts and copies but my company want to get rid of selcopy and replace functinality with other software.

Wherever possible we are trying to standardise using SYNCSORT.

I know that Syncsort has most of the functions and capabilities of DFSORT so I need help as soon as possible on a particular problem.

We are using SPLICE to replicate a large Selcopy report.

The input data looks like this(but longer):

Code: Select all

                                  LONG TERM PLAN FOR DATE: 22/05/09       
GSHPHCD@DAILYCAT                       |                         |        
ORDENTRY         00.01          06.00 5| O.E AGN Reality Rpt  P/G|CPUR_003
GSHPKCD@DAILYCAT                       |                         |        
ORDENTRY         00.01          06.00 5| O.E KAL Reality Rpt  P/G|CPUR_003
GSHPRCD@DAILYCAT                       |                         |        
ORDENTRY         00.01          06.00 5| O.E REP Reality Rpt  P/G|CPUR_003
OOSPSSD@SSREPRTS                       |                         |        
SHOPPER          00.01          03.00 6| SHP Suplmntry Sales Rprt|DUMY_099
PAGFTD                                 |                         |        
HOMESHOP         00.01          04.00 5| HSH Load DBase 1080 |CPUR_020

etc etc
................................................................................
..........................................................................
................................................................
                                  LONG TERM PLAN FOR DATE: 23/05/09       
FDTPARW@ACQPRPRT                       |                         |        
MARKET           00.01          22.30 5| MKT Tdata Acq Report  #g|DUMY_001
FDTPASW@WTASUPDT                       |                         |        
MARKET           00.01          22.30 7| MKT Tdata A/c Summary #g|DUMY_001
FDTPCOW@COMMUPDT                       |                         |        
MARKET           00.01          22.30 7| MKT Tdata Commission  #g|DUMY_001
FDTPDFW@DFFLOAD                        |                         |        
MARKET           00.01          22.30 7| MKT Tdata Diff Tabl   #g|DUMY_001
FDTPD1W@DATMUPDT                       |                         |        

etc etc....
The output should look like this(but longer):

Code: Select all

                                  LONG TERM PLAN FOR DATE: 22/05/09       
GSHPHCD@DAILYCAT ORDENTRY         00.01          06.00 5| O.E AGN Reality Rpt  P
GSHPKCD@DAILYCAT ORDENTRY         00.01          06.00 5| O.E KAL Reality Rpt  P
GSHPRCD@DAILYCAT ORDENTRY         00.01          06.00 5| O.E REP Reality Rpt  P
OOSPSSD@SSREPRTS SHOPPER          00.01          03.00 6| SHP Suplmntry Sales Rp
PAGFTD           HOMESHOP         00.01          04.00 5| HSH Load DBase 1080   

etc etc

..............................................................................
......................................................................
...................................................

 
                                 LONG TERM PLAN FOR DATE: 23/05/09       
FDTPARW@ACQPRPRT MARKET           00.01          22.30 5| MKT Tdata Acq Report 
FDTPASW@WTASUPDT MARKET           00.01          22.30 7| MKT Tdata A/c Summary
FDTPCOW@COMMUPDT MARKET           00.01          22.30 7| MKT Tdata Commission 
FDTPDFW@DFFLOAD  MARKET           00.01          22.30 7| MKT Tdata Diff Tabl  

etc etc
We have successfully managed to reformat the output using SYNCTOOL using the following code:

Code: Select all

                                                                  
//******************************************************************    
//*-------------------------------------------------------------------* 
//* SYNCTOOL VERSION                                                  * 
//*-------------------------------------------------------------------* 
//SYNCTOOL EXEC PGM=SYNCTOOL                                            
//SYSPRINT DD SYSOUT=*                                                  
//SYSOUT   DD SYSOUT=*                                                  
//TOOLMSG  DD SYSOUT=*                                                  
//DFSMSG   DD SYSOUT=*                                                  
//SYSUDUMP DD SYSOUT=*                                                  
//INFILE   DD DSN=FIS1.D0.STS023.BANKSYN.PART1,                         
//            DISP=SHR                                                  
//OUT      DD DSN=FIS1.D0.STS023.BANKSYN.PART2,                         
//            DISP=(NEW,CATLG,DELETE),                                  
//            SPACE=(CYL,(5,5))                                         
//T1       DD DSN=&&TEMP01,                                             
//            DISP=(NEW,PASS),                                          
//            SPACE=(CYL,(5,5))                                         
//TOOLIN   DD *                                                         
  COPY FROM(INFILE) USING(CTL1)                                         
  SPLICE FROM(T1) TO(OUT) ON(1,8,ZD) -                                  
    WITHEACH WITH(28,102) USING(CTL2)                                   
/*                                                                      
//CTL1CNTL DD *                                                         
*                                                                       
** Header records have no Sequence no.      
** 001-008 Blanks.                                 
** 009-129 Original data.                          
*                                                  
  OUTREC IFTHEN=(WHEN=(1,121,SS,EQ,C'LONG TERM'),  
                 BUILD=(1:C'        ',9:1,121)),   
*                                                  
** "Job" records have a "." in 21.                 
** 001-008 Seq No (for this IFTHEN)                
** 009-027 Blanks                                  
** 028-129 Original Job data.                      
*                                                  
         IFTHEN=(WHEN=(21,1,CH,EQ,C'.'),           
                 BUILD=(1:SEQNUM,8,ZD,             
                        9:18C' ',                  
                        27:1,104)),                
*                                                  
** OPC Application records.                        
** 001-008 Seq No.                                 
** 009-027 OPC application                         
*                                                  
         IFTHEN=(WHEN=NONE,                        
                 BUILD=(1:SEQNUM,8,ZD,9:1,19))     
                                                   
  OUTFIL FNAMES=T1,IFOUTLEN=129                    
/*                                                 
//CTL2CNTL DD *  
* Remove the group number.         
  OUTFIL FNAMES=OUT,BUILD=(9,121)  
/*                                 
The 'data' lines are spliced and output as required but we are only getting the first 'header'(the LONG TERM PLAN FOR DATE: dd/mm/yy bit)

How do we preserve the 'headers' in their rightful place??

Thanks in advance.

Glenn.

User avatar
arcvns
Member
Posts: 28
Joined: Sat May 30, 2009 10:19 pm
Location: Chennai, India

Post by arcvns » Wed Jul 08, 2009 8:29 pm

Glenn,

Hello and welcome to the forums. :)

Here's a Synctool job which I think does what you want. You can modify it as per your real file attributes.

Code: Select all

//STEP0100 EXEC PGM=SYNCTOOL                                        
//TOOLMSG  DD SYSOUT=*                                              
//DFSMSG   DD SYSOUT=*                                              
//IN       DD *                                                     
                                   LONG TERM PLAN FOR DATE: 22/05/09
 GSHPHCD@DAILYCAT                       |                           
 ORDENTRY         00.01          06.00 5| O.E AGN REALITY RPT       
 GSHPKCD@DAILYCAT                       |                           
 ORDENTRY         00.01          06.00 5| O.E KAL REALITY RPT       
 GSHPRCD@DAILYCAT                       |                           
 ORDENTRY         00.01          06.00 5| O.E REP REALITY RPT       
 OOSPSSD@SSREPRTS                       |                           
 SHOPPER          00.01          03.00 6| SHP SUPLMNTRY SALES R     
 PAGFTD                                 |                           
 HOMESHOP         00.01          04.00 5| HSH LOAD DBASE 1080       
                                   LONG TERM PLAN FOR DATE: 23/05/09
 FDTPARW@ACQPRPRT                       |                           
 MARKET           00.01          22.30 5| MKT TDATA ACQ REPORT      
 FDTPASW@WTASUPDT                       |                           
 MARKET           00.01          22.30 7| MKT TDATA A/C SUMMARY     
 FDTPCOW@COMMUPDT                       |                           
 MARKET           00.01          22.30 7| MKT TDATA COMMISSION
 FDTPDFW@DFFLOAD                        |                     
 MARKET           00.01          22.30 7| MKT TDATA DIFF TABL 
//OUT      DD SYSOUT=*                                        
//TOOLIN   DD *                                               
 SPLICE FROM(IN) TO(OUT) ON(99,8,CH) WITH(19,80) WITHALL -    
 KEEPNODUPS USING(CTL1)                                       
//CTL1CNTL DD *                                               
 INREC IFTHEN=(WHEN=INIT,OVERLAY=(99:SEQNUM,8,ZD)),           
       IFTHEN=(WHEN=(21,1,CH,EQ,C'.'),                        
       OVERLAY=(19:1,80,99:99,8,ZD,SUB,+1,M11,LENGTH=8))      
 OUTFIL BUILD=(1,80)  
OUT would have:

Code: Select all

                                   LONG TERM PLAN FOR DATE: 22/05/09    
 GSHPHCD@DAILYCAT  ORDENTRY         00.01          06.00 5| O.E AGN REAL
 GSHPKCD@DAILYCAT  ORDENTRY         00.01          06.00 5| O.E KAL REAL
 GSHPRCD@DAILYCAT  ORDENTRY         00.01          06.00 5| O.E REP REAL
 OOSPSSD@SSREPRTS  SHOPPER          00.01          03.00 6| SHP SUPLMNTR
 PAGFTD            HOMESHOP         00.01          04.00 5| HSH LOAD DBA
                                   LONG TERM PLAN FOR DATE: 23/05/09    
 FDTPARW@ACQPRPRT  MARKET           00.01          22.30 5| MKT TDATA AC
 FDTPASW@WTASUPDT  MARKET           00.01          22.30 7| MKT TDATA A/
 FDTPCOW@COMMUPDT  MARKET           00.01          22.30 7| MKT TDATA CO
 FDTPDFW@DFFLOAD   MARKET           00.01          22.30 7| MKT TDATA DI
Arun

sts043
Member
Posts: 6
Joined: Wed Jul 08, 2009 3:43 pm

Post by sts043 » Thu Jul 09, 2009 12:35 pm

Thanks arcvns... this works fine.

Can you tell me what the '99,8,ZD,SUB,+1,M11' is doing please?

Glenn.

User avatar
arcvns
Member
Posts: 28
Joined: Sat May 30, 2009 10:19 pm
Location: Chennai, India

Post by arcvns » Thu Jul 09, 2009 6:03 pm

sts043,

You're welcome. Glad that it works fine for you :)
Can you tell me what the '99,8,ZD,SUB,+1,M11' is doing please?
It will subtract 1 from the sequence number for all records where you have a dot(.) at pos-21.
Arun

sts043
Member
Posts: 6
Joined: Wed Jul 08, 2009 3:43 pm

Post by sts043 » Thu Jul 09, 2009 7:23 pm

Ok... thanks..

... and the M11?

Alissa Margulies
Member
Posts: 25
Joined: Tue Apr 28, 2009 10:53 pm
Location: USA
Contact:

Post by Alissa Margulies » Fri Jul 10, 2009 1:21 am

M11 is an Edit Mask, which specifies that all digits are significant with no leading or trailing signs.
Alissa Margulies
SyncSort Mainframe Product Services
zos_tech@syncsort.com
201-930-8260

sts043
Member
Posts: 6
Joined: Wed Jul 08, 2009 3:43 pm

Post by sts043 » Fri Jul 10, 2009 1:02 pm

Alissa Margulies wrote:M11 is an Edit Mask, which specifies that all digits are significant with no leading or trailing signs.
Thanks Ailissa :)

Post Reply

FREE TUTORIALS

Tutorials
Free tutorials from mainframegurukul
  • JCL Tutorial
    Covers all important JCL concepts.
  • Cobol Tutorial
    This tutorials covers all Cobol Topics from STRING to COMP-3.
  • DB2 Tutorial
    DB2 Tutorial focuses on DB2 COBOL Programming.
  • SORT Tutorial
    This Tutorial covers all important aspects of DFSORT with examples
  • CICS Tutorial
    This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions



Other References
Mainframe Tools and others