Help required in generating the footer in a specific format



Support for NetApp SyncSort for z/OS, Visual SyncSort, SYNCINIT, SYNCLIST and SYNCTOOL

Help required in generating the footer in a specific format

Postby siva219734 » Tue Dec 15, 2009 12:43 pm

Hi All,

I have a requirement in which I need to prepare footer in a specific format mentioned below.

Sample Input dataset(FB,LRECL=537):
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8....
ABC ABC ABC ABC ABC  2009-12-14-01.00.00.000000ABC 123 123 123 123 123 123 123 1....
ABC ABC ABC ABC ABC  2009-12-14-02.00.00.000000ABC 123 123 123 123 123 123 123 1....
ABC ABC ABC ABC ABC  2009-12-14-03.00.00.000000ABC 123 123 123 123 123 123 123 1....
ABC ABC ABC ABC ABC  2009-12-14-04.00.00.000000ABC 123 123 123 123 123 123 123 1....


Sample Output dataset:
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8....
ABC ABC ABC ABC ABC  2009-12-14-01.00.00.000000ABC 123 123 123 123 123 123 123 1....
ABC ABC ABC ABC ABC  2009-12-14-02.00.00.000000ABC 123 123 123 123 123 123 123 1....
ABC ABC ABC ABC ABC  2009-12-14-03.00.00.000000ABC 123 123 123 123 123 123 123 1....
ABC ABC ABC ABC ABC  2009-12-14-04.00.00.000000ABC 123 123 123 123 123 123 123 1....
SOURCEF_15122009151220091412200900:00:001412200923:59:59APPL V 1.0        82


Footer format:
COLS: 1-7 - FILE NAME
COLS: 8    - Filler(UNDERSCORE)
COLS: 9-16 - SYSTEM DATE(Format – MMDDYYYY)
COLS: 17-24 -SYSTEM DATE(Format – MMDDYYYY)
COLS: 25-32 -VALUE FROM INPUT FILE AT THE COLS: 22-32(Format converted to – MMDDYYYY)
COLS: 33-40 -HARD CODED TEXT(00:00:00)
COLS: 41-48 -VALUE FROM INPUT FILE AT THE COLS: 22-32(Format converted to – MMDDYYYY)
COLS: 49-56 -HARD CODED TEXT(23:59:59)
COLS: 57-62 -HARD CODED TEXT(APPL V)
COLS: 63-66 -HARD CODED TEXT(1.00)
COLS: 67-76 -INPUT FILE RECORD COUNT


I have a JCL which prepares the footer in the format above. Please hlep me in extracting the date from the input file from the specific columns from the input dataset and prepare the footer in the format mentioned above.

 OPTION COPY                                             
  OUTFIL REMOVECC,                                         
   TRAILER1=('SOURCEF_',9:DATENS=(DM4),17:DATENS=(DM4),   
   25:DATENS=(DM4),33:'00:00:00',41:DATENS=(DM4),         
   49:'23:59:59',57:'APPL V 1.0',CT)                       


Where CT is the record count extracted from the previous step.

Thanks in advance.

Regards,
Siva
User avatar
siva219734
 
Posts: 11
Joined: Thu Mar 13, 2008 3:34 am
Location: Mumbai
Has thanked: 0 time
Been thanked: 0 time

Re: Help required in generating the footer in a specific format

 

Re: Help required in generating the footer in a specific format

Postby siva219734 » Mon Jan 11, 2010 6:58 pm

I did it myself.!
--
No Me.... No Fun......!
Know Me... Know Fun....!
Siva Kumar Reddy
User avatar
siva219734
 
Posts: 11
Joined: Thu Mar 13, 2008 3:34 am
Location: Mumbai
Has thanked: 0 time
Been thanked: 0 time

Re: Help required in generating the footer in a specific format

Postby dick scherrer » Tue Jan 12, 2010 12:26 am

Good to hear it is working - thanks for letting us know :)

If you post your solution, it will probably help someone with a similar requirement later. . .

d
User avatar
dick scherrer
Global moderator
 
Posts: 6304
Joined: Sat Jun 09, 2007 8:58 am
Has thanked: 3 times
Been thanked: 91 times

Re: Help required in generating the footer in a specific format

Postby siva219734 » Tue Jan 12, 2010 11:48 am

Here it is. Please note that this JCL and REXX has been developed as per my requirement. I have posted the generalized version of the code.

The Temp dataset &&B003 in STEP30 and and STEP50 is the one which is created by the UNLOAD step in one of the previous step in the same JCL(not shown here).

Please let me know in case of any queries.

Thanks

JCL:
//********************************************************************
//* EXTRACT THE RECORD COUNT FROM THE TEMP. FILE             
//********************************************************************
//STEP030 EXEC PGM=ICEMAN,COND=(0,NE)                                 
//SORTIN    DD DSN=&&B003,DISP=SHR    <---- TEMP. DS created in the previous DB2 table unload step.
//SORTOUT   DD DSN=&&COUNT,DISP=(NEW,PASS,DELETE),                   
//             SPACE=(CYL,(1,1),RLSE),LRECL=100,                     
//             UNIT=SYSDA,RECFM=VB                                   
//SYSOUT    DD SYSOUT=*                                               
//SYSPRINT  DD SYSOUT=*                                               
//SYSPRNT   DD SYSOUT=*                                               
//SYSSNAP   DD SYSOUT=*                                               
//SYSABOUT  DD SYSOUT=*                                               
//SYSUDUMP  DD SYSOUT=*                                               
//SYSIN     DD *
   OPTION COPY                           
   OUTFIL REMOVECC,NODETAIL,             
   TRAILER1=(COUNT=(M11,LENGTH=12))
/*     
//********************************************************************
//* PREPARE THE FOOTER IN THE REQUIRED FORMAT                         
//********************************************************************
//*                                                                   
//STEP040 EXEC PGM=IKJEFT01,PARM='FOOT003'                           
//SYSEXEC   DD DSN=&HLQ..YOUR.PROCLIB,DISP=SHR                       
//DATEDD    DD DSN=&HLQ..DWHSQL.DATE.FILE,DISP=SHR                 
//COUNTDD   DD DSN=&&COUNT,DISP=SHR                               
//FOOTERDD  DD DSN=&&FOOTER,DISP=(NEW,PASS,DELETE),               
//             SPACE=(CYL,(1,1),RLSE),LRECL=100,                   
//             UNIT=SYSDA,RECFM=VB                                 
//SYSPRINT  DD SYSOUT=*                                           
//SYSABOUT  DD SYSOUT=*                                           
//SYSUDUMP  DD SYSOUT=*                                           
//SYSOUT    DD SYSOUT=*                                           
//SYSTSIN   DD DUMMY                                               
//SYSTSPRT  DD SYSOUT=*                                           
//****************************************************************
//*   MERGE THE FILE001 EXTRACT AND THE FOOTER FILE               
//****************************************************************
//*                                                               
//STEP050 EXEC PGM=SORT,COND=(0,NE)                               
//SORTIN    DD DSN=&&B003,DISP=SHR                                 
//          DD DSN=&&FOOTER,DISP=SHR                               
//SORTOUT   DD DSN=&HLQ..APPLCT.DWH.FILE001.GDG(+1),           
//             DISP=(NEW,CATLG,),                                 
//             DCB=(SYS1.MODEL,RECFM=VB,LRECL=100),UNIT=(SYSDA,3),     
//             SPACE=(CYL,(50,10),RLSE)                                 
//SYSPRINT  DD SYSOUT=*                                                 
//SYSOUT    DD SYSOUT=*                                                 
//SYSIN     DD *
 SORT FIELDS=COPY     
/*     
//**********************************************************************
//* DELETE THE TEMPORARY DATASETS CREATED IN THE ABOVE STEPS           
//**********************************************************************
//*                                                                     
//STEP070 EXEC PGM=IEFBR14                                             
//DELDD     DD DSN=&&COUNT,DISP=(OLD,DELETE,DELETE)                     
//          DD DSN=&&FOOTER,DISP=(OLD,DELETE,DELETE)                   
//          DD DSN=&&B003,DISP=(OLD,DELETE,DELETE)                     
//SYSPRINT  DD SYSOUT=*                                                 
//SYSOUT    DD SYSOUT=*                                                 
//**********************************************************************


REXX Program:

/* REXX  FOOTER                                                 */ 
/*--------------------------------------------------------------*/ 
/* PREPARE FOOTER FOR THE DWH EXTRACT                           */ 
/* CALCULATE THE SYSTEM DATE IN MMDDYYYY FORMAT                 */ 
/*--------------------------------------------------------------*/ 
    SAY "START"                                                     
    DAT = DATE(C)                                                   
    SAY "SYSTEM DATE(GREG FORMAT):" DAT                             
    SDAT1 = DATE('S',DAT,'C')                                       
          SDD = SUBSTR(SDAT1,7,2)                                   
          SMM = SUBSTR(SDAT1,5,2)                                   
          SYYYY = SUBSTR(SDAT1,1,4)                                 
          SDAT = (SMM)(SDD)(SYYYY)                                 
    SAY "SYSTEM DATE(MMDDYYYY FORMAT):" SDAT                       
/*--------------------------------------------------------------*/ 
/* READ THE DATE FILE(DATEDD) TO GET THE GREG DATE              */ 
/* CALCULATE THE DWH EXTRACTION DATE IN MMDDYYYY FORMAT         */ 
/*--------------------------------------------------------------*/ 
    D = DATE(C)                                                     
    DOLD = D - 1                                                   
    SAY ' EXTRACTION DATE(GREG FORMAT) SHOULD BE:' DOLD               
    "EXECIO * DISKR DATEDD (STEM DTEI."                               
    PARSE VAR DTEI.1 DFILE ' '                                       
           DATE_PREV = DFILE - 1                                     
        IF DOLD ¬= DATE_PREV THEN                                     
           DO                                                         
  SAY ''                                                             
  M1='SYSTEM DATE - 1 DAY value did not match with the Extraction'   
  M2='date. Hence the Extraction date is prepared from the date file,'
  M3='instead of the SYSTEM DATE - 1 DAY.'                           
  SAY '' (M1)                                                         
  SAY '' (M2)                                                         
  SAY '' (M3)                                                         
  SAY ''                                                             
           DOLD    = DATE_PREV                                       
           END                                                       
    EDAT1 = DATE('S',DOLD,'C')                                       
          EDD = SUBSTR(EDAT1,7,2)                                     
          EMM = SUBSTR(EDAT1,5,2)                                     
          EYYYY = SUBSTR(EDAT1,1,4)                                   
          EDAT = (EMM)(EDD)(EYYYY)                                     
  SAY ''                                                               
  M4='The Extraction Date and the FILE Record Count would be:'       
  SAY '' (M4)                                                           
    SAY "EXTRACTION DATE(GREG FORMAT):" DFILE                           
    SAY "EXTRACTION DATE(MMDDYYYY FORMAT):" EDAT                       
/*--------------------------------------------------------------*/     
/* READ THE COUNT FILE(COUNTDD) TO GET THE FILE RECORD COUNT */     
/*--------------------------------------------------------------*/     
    "EXECIO * DISKR COUNTDD (STEM DTEI."                               
    PARSE VAR DTEI.1 RCOUNT ' '                                         
    SAY "NUMBER OF RECORDS IN FILE FILE:" RCOUNT                     
/*--------------------------------------------------------------*/     
/* ASSIGN CONSTANTS TO THE TEMP. VARIABLES W1,W2,W3 AND W4      */     
/*--------------------------------------------------------------*/     
  W1 = 'FILE001_'                                                       
  W2 = '00:00:00'                                                       
  W3 = '23:59:59'                                                       
  W4 = 'APPLCT 1.0'                                                     
/*--------------------------------------------------------------*/     
/*PREPARE THE FOOTER IN REQUIRED FORMAT                         */     
/*--------------------------------------------------------------*/     
  RECORD1 = (W1)(EDAT)(SDAT)(EDAT)(W2)(EDAT)(W3)(W4)(RCOUNT)           
/*--------------------------------------------------------------*/     
/*DEFINE A NEW STACK AND PUSH THE FOOTER IN TO THE OUTPUT FILE  */     
/*--------------------------------------------------------------*/     
  "NEWSTACK"                                                           
  PUSH RECORD1                                                         
  "EXECIO 1 DISKW FOOTERDD"                                             
  "DELSTACK"                                                           
  SAY "FOOTER GENERATED:" RECORD1                                       
  SAY "END"                                                             
RETURN                                                                 
/*--------------------------------------------------------------*/     
/*  END OF PROGRAM                                              */     
/*--------------------------------------------------------------*/     
--
No Me.... No Fun......!
Know Me... Know Fun....!
Siva Kumar Reddy
User avatar
siva219734
 
Posts: 11
Joined: Thu Mar 13, 2008 3:34 am
Location: Mumbai
Has thanked: 0 time
Been thanked: 0 time

Re: Help required in generating the footer in a specific format

Postby dick scherrer » Tue Jan 12, 2010 11:54 pm

Thank you for posting your solution :)

d
User avatar
dick scherrer
Global moderator
 
Posts: 6304
Joined: Sat Jun 09, 2007 8:58 am
Has thanked: 3 times
Been thanked: 91 times


Return to Syncsort/Synctool

 


  • Related topics
    Replies
    Views
    Last post