*************************************
*********NOT FOUND FILE**************
*********JOB XXXXXXXX***************
TOTAL RECORDS IN XXXXXXXXXX1: 0
TOTAL RECORDS IN XXXXXXXXXX2: 0
TOTAL RECORDS IN XXXXXXXXXX3: 0
TOTAL RECORDS IN XXXXXXXXXX4: 0
TOTAL RECORDS IN XXXXXXXXXX5: 0
TOTAL RECORDS IN XXXXXXXXXX6: 0
TOTAL RECORDS IN XXXXXXXXXX7: 0
In need to write the file 4 and file 5 to the output and it should appear in the output file in different format as shown below.
Code:
COUNT OF RECORDS IN XXXXXXX4: 0
COUNT OF RECORDS IN XXXXXXX5: 0
I used ICETOOL to sort the file and the control card I used is shown below will only overlay the records in the file with the format required. I want the records only which I overlayed not all the records.
Code:
OUTFIL FNAMES=OUT01,
IFTHEN=(WHEN=INIT,
PARSE=(%00=(ENDBEFR=C':',FIXLEN=28),
%01=(FIXLEN=11))),
IFTHEN=(WHEN=(2,28,CH,EQ,TOTAL RECORDS IN XXXXXXXXXX4:'),
BUILD=(2:C'COUNT OF RECORDS IN XXXXXXX4:',31:%01)),
IFTHEN=(WHEN=(2,28,CH,EQ,TOTAL RECORDS IN XXXXXXXXXX5:'),
BUILD=(2:C'COUNT OF RECORDS IN XXXXXXX5:',31:%01))
I am trying with IFTHEN and PARSE statment for the first time. However, same function can be done splitting the operation in two steps.First step to extract the required record from the file and the overlay the records in the next step.
Here my question is can we do the above function in one step using the ICETOOL SORT CARD . If the question is not clear i will post the JCL also.
Joined: 29 Jun 2006 Posts: 1436 Location: Bangalore,India
Praveen,
Try the following JCL -
Code:
//S@ EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SORTIN DD *
*************************************
*********NOT FOUND FILE**************
*********JOB XXXXXXXX***************
TOTAL RECORDS IN XXXXXXXXXX1: 0
TOTAL RECORDS IN XXXXXXXXXX2: 0
TOTAL RECORDS IN XXXXXXXXXX3: 0
----+----1----+----2----+----3----+----4----+----5---
TOTAL RECORDS IN XXXXXXXXXX4: 0
TOTAL RECORDS IN XXXXXXXXXX5: 0
TOTAL RECORDS IN XXXXXXXXXX6: 0
TOTAL RECORDS IN XXXXXXXXXX7: 0
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
OUTREC IFTHEN=(WHEN=(1,28,CH,EQ,C'TOTAL RECORDS IN XXXXXXXXXX4',OR,
1,28,CH,EQ,C'TOTAL RECORDS IN XXXXXXXXXX5'),
BUILD=(C'COUNT OF RECORDS IN ',
18,23))
/*
O/P:
Code:
----+----1----+----2----+----3----+----4----+----5----+--
*************************************
*********NOT FOUND FILE**************
*********JOB XXXXXXXX***************
TOTAL RECORDS IN XXXXXXXXXX1: 0
TOTAL RECORDS IN XXXXXXXXXX2: 0
TOTAL RECORDS IN XXXXXXXXXX3: 0
COUNT OF RECORDS IN XXXXXXXXXX4: 0
COUNT OF RECORDS IN XXXXXXXXXX5: 0
TOTAL RECORDS IN XXXXXXXXXX6: 0
TOTAL RECORDS IN XXXXXXXXXX7: 0
**************************** Bottom of Data *************
Hi,
I am not looking for this output. I want only two records in my output file.
Quote:
COUNT OF RECORDS IN XXXXXXXXXX4: 0
COUNT OF RECORDS IN XXXXXXXXXX5: 0
Any how I got the solution.
Code:
OUTFIL FNAMES=OUT1,
INCLUDE=(2,28,CH,EQ,C'TOTAL RECORDS IN XXXXXXXXXX4:',OR,
2,28,CH,EQ,C'TOTAL RECORDS IN XXXXXXXXXX5:'),
IFTHEN=(WHEN=INIT,
PARSE=(%00=(ENDBEFR=C':',FIXLEN=28),
%01=(FIXLEN=11))),
IFTHEN=(WHEN=(2,28,CH,EQ,C'TOTAL RECORDS IN XXXXXXXXXX4:'),
BUILD=(2:CNT_MSG1,31:%01)),
IFTHEN=(WHEN=(2,28,CH,EQ,C'TOTAL RECORDS IN XXXXXXXXXX5:'),
BUILD=(2:CNT_MSG2,31:%01))
BUt I was thinking to achieve the results with OUTREC and the JOb was ending with Syntax error. I found some examples using the Include and the results was fine.
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Praveen,
You have the right idea. However, if I understand what you're trying to do (and maybe I don't), your DFSORT job can be simplified and made more automatic as follows:
Code:
//S1 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN DD *
*************************************
*********NOT FOUND FILE**************
*********JOB XXXXXXXX***************
TOTAL RECORDS IN XXXXXXXXXX1: 0
TOTAL RECORDS IN XXXXXXXXXX2: 0
TOTAL RECORDS IN XXXXXXXXXX3: 0
TOTAL RECORDS IN XXXXXXXXXX4: 0
TOTAL RECORDS IN XXXXXXXXXX5: 0
TOTAL RECORDS IN XXXXXXXXXX6: 0
TOTAL RECORDS IN XXXXXXXXXX7: 0
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INCLUDE COND=(19,12,SS,EQ,C'XXXXXXXXXX4:,XXXXXXXXXX5:')
INREC PARSE=(%=(ENDBEFR=C':'),
%00=(SUBPOS=2,FIXLEN=2),
%01=(FIXLEN=11)),
BUILD=(2:C'COUNT OF RECORDS IN XXXXXXX',%00,%01)
/*
SORTOUT would have:
Code:
COUNT OF RECORDS IN XXXXXXX4: 0
COUNT OF RECORDS IN XXXXXXX5: 0