View previous topic :: View next topic
|
Author |
Message |
sreekanth1984
New User
Joined: 23 Mar 2010 Posts: 22 Location: Bangalore
|
|
|
|
Hi,
I have a requirement where I need to copy data from one flat file other flat file using SORT statement. Before copying the data I have to check record count in the input file. If the record count is greater than 1 then I should copy data from input file to output file.I could get the record count using SEQNUM, but I am not able to compare the count with 1. Please provide me sort steps to acheive this.
Please let me know any details required.
Thanks
Srikanth |
|
Back to top |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
only detail i would like to have is
why did you not search the forum?
this type of thing (actually exact requirement)
has been discussed before,
since the originating process did not delete the file in the first place.
one question: what kind of output file are you to have if there is only 1 record in the input file? |
|
Back to top |
|
|
sreekanth1984
New User
Joined: 23 Mar 2010 Posts: 22 Location: Bangalore
|
|
|
|
This requirement is posted only after extensive search is done in the forum....
And for the question raised, in case of input file contain only one record I don't want to write anything to output file.
Thanks
Srikanth |
|
Back to top |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
our definitions of 'extensive' differ. |
|
Back to top |
|
|
sreekanth1984
New User
Joined: 23 Mar 2010 Posts: 22 Location: Bangalore
|
|
|
|
Can anyone please provide solution for this.....? |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
You can use IDCAMS to determine if two or more records exist in the file, and then conditionally execute the sort step to perform the copy.
Not sure if your sort product will be able to do this in just one step, but then we do not know the sort product or release level that is installed at your site. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10886 Location: italy
|
|
|
|
Quote: |
Can anyone please provide solution for this.....? |
the previous identical post was deleted because it is considered uneducated behavior
to solicit for solutions after half an hour from the initial post
remember also the Frank and Kolusu work in a different time zone
so You cannot expect them to get up at three in the morning to answer Your question |
|
Back to top |
|
|
sreekanth1984
New User
Joined: 23 Mar 2010 Posts: 22 Location: Bangalore
|
|
|
|
Thanks Expact, I could do this using IDCAMS. Through IDCAMS I could check for input file is empty or not. But I want to check no. of records in the file for specific count like if the no. of records in the input file is 5 then I should copy data from input file to output file. Hence I looking for the SORT card to accomplish this... |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10886 Location: italy
|
|
Back to top |
|
|
Skolusu
Senior Member
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
|
|
|
|
sreekanth1984,
use the following DFSORT JCL. The first step sets a return code of 4 if there is just 1 record and return code of 0 if it has more than 1 record. The second step actually copies the file based on the return code.
Code: |
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=Your input file,DISP=SHR
//SORTOUT DD DUMMY
//SYSIN DD *
OPTION COPY
OUTFIL NULLOFL=RC4,STARTREC=2,ENDREC=2
//*
//STEP0200 EXEC PGM=SORT,COND=(4,EQ,STEP0100)
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=Your input file,DISP=SHR
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
//* |
|
|
Back to top |
|
|
sreekanth1984
New User
Joined: 23 Mar 2010 Posts: 22 Location: Bangalore
|
|
|
|
Thanks Skolusu. I have run the JCL mentioned for different input files containing single record, more than one record and for some empty files. In each case STEP0100 is executing with cond code 000. step0200 is executing in all the cases as condition mentioned is false and copying all the input records to output reocrds.
I have mentione Output file in the SORTOUT statement of STEP0200, which was SYSOUT=* in the JCL provided by you.
The JCL provided is not serving my requirement.
Please let me know for any corrections.
Thanks
Srikanth |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
Post all of the informational messages including message ids for a run that does not do what you want. |
|
Back to top |
|
|
Skolusu
Senior Member
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
|
|
|
|
sreekanth1984 wrote: |
Thanks Skolusu. I have run the JCL mentioned for different input files containing single record, more than one record and for some empty files. In each case STEP0100 is executing with cond code 000. step0200 is executing in all the cases as condition mentioned is false and copying all the input records to output reocrds.
I have mentione Output file in the SORTOUT statement of STEP0200, which was SYSOUT=* in the JCL provided by you.
The JCL provided is not serving my requirement.
Please let me know for any corrections.
Thanks
Srikanth |
The provided job works exactly as you described the requirement. If the file is empty or has just 1 record , step0100 will issue an RC of 4. If it is not working then you need to show me the SYSOUT of step0100 to prove that. Show me the complete sysout of step0100. |
|
Back to top |
|
|
gcicchet
Senior Member
Joined: 28 Jul 2006 Posts: 1702 Location: Australia
|
|
|
|
Hi Kolusu,
I noticed with your example that you are reading the entire file to identify whether more than 1 record exists in the input file, ie. if the file has millions of records there seems to be many unnecessary reads.
Would this be a better option
Code: |
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
//SORTOUT DD DUMMY
//SYSIN DD *
OPTION COPY,SKIPREC=1,STOPAFT=1
OUTFIL NULLOFL=RC4
//*
//STEP0200 EXEC PGM=SORT,COND=(4,EQ,STEP0100)
//SYSOUT DD SYSOUT=*
//SORTIN DD *
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
//*
|
Gerry |
|
Back to top |
|
|
sreekanth1984
New User
Joined: 23 Mar 2010 Posts: 22 Location: Bangalore
|
|
|
|
JCL used:
In the previous post I have given STARTREC=1,ENDREC=200 which is changed as STARTREC=2,ENDREC=2 and the outputs are below.
Apologies for incorrect data provided in the previous post.
Code: |
//STEP1 EXEC PGM=SORT
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=Input file
//SORTOUT DD DUMMY
//SYSIN DD *
OPTION COPY
OUTFIL NULLOFL=RC4,STARTREC=2,ENDREC=2
//*
//STEP2 EXEC PGM=SORT,COND=(4,EQ,STEP1)
//SYSOUT DD SYSOUT=*
//SORTIN DD DISP=SHR,DSN=Input file
//SORTOUT DD DISP=SHR,DSN=Output file
//SYSIN DD *
OPTION COPY |
System messages for case 1, if the file is empty.
Code: |
ICH70001I H27840 LAST ACCESS AT 05:00:01 ON THURSDAY, NOVEMBER 11, 2010
IEF236I ALLOC. FOR H2784090 STEP1
IEF237I JES2 ALLOCATED TO SYSPRINT
IEF237I JES2 ALLOCATED TO SYSOUT
IGD103I SMS ALLOCATED TO DDNAME SORTIN
IEF237I DMY ALLOCATED TO SORTOUT
IEF237I JES2 ALLOCATED TO SYSIN
IEF142I H2784090 STEP1 - STEP WAS EXECUTED - COND CODE 0000
IEF285I H27840.H2784090.JOB05382.D0000103.? SYSOUT
IEF285I H27840.H2784090.JOB05382.D0000104.? SYSOUT
IGD104I Input file RETAINED, DDNAME=SORTIN
IEF285I H27840.H2784090.JOB05382.D0000101.? SYSIN
IEF373I STEP/STEP1 /START 2010315.0501
IEF374I STEP/STEP1 /STOP 2010315.0501 CPU 0MIN 00.02SEC SRB 0MIN 00.00S
IEF236I ALLOC. FOR H2784090 STEP2
IEF237I JES2 ALLOCATED TO SYSOUT
IGD103I SMS ALLOCATED TO DDNAME SORTIN
IGD103I SMS ALLOCATED TO DDNAME SORTOUT
IEF237I JES2 ALLOCATED TO SYSIN
IEF142I H2784090 STEP2 - STEP WAS EXECUTED - COND CODE 0000
IEF285I H27840.H2784090.JOB05382.D0000105.? SYSOUT
IGD104I Input file RETAINED, DDNAME=SORTIN
IGD104I Output file RETAINED, DDNAME=SORTOUT
IEF285I H27840.H2784090.JOB05382.D0000102.? SYSIN
IEF373I STEP/STEP2 /START 2010315.0501
IEF374I STEP/STEP2 /STOP 2010315.0501 CPU 0MIN 00.03SEC SRB 0MIN 00.00S
IEF375I JOB/H2784090/START 2010315.0501
IEF376I JOB/H2784090/STOP 2010315.0501 CPU 0MIN 00.05SEC SRB 0MIN 00.00S
|
Sysout of step1:
Code: |
SYNCSORT FOR Z/OS 1.3.2.0R U.S. PATENTS: 4210961, 5117495 (C) 2007 SYNCSO
z/OS 1.10.0
SYNCSORT LICENSED FOR IBM GMBH LICEN
SYSIN :
OPTION COPY
OUTFIL NULLOFL=RC4,STARTREC=2,ENDREC=2
WER108I SORTIN : RECFM=VB ; LRECL= 354; BLKSIZE= 7476
WER110I SORTOUT : RECFM=VB ; LRECL= 354; BLKSIZE= 7476
WER405I SORTOUT : DATA RECORDS OUT 0; TOTAL RECORDS OUT 0
WER449I SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
WER054I RCD IN 0, OUT 0
WER169I RELEASE 1.3 BATCH 0487 TPF LEVEL 2.0
WER052I END SYNCSORT - H2784090,STEP1,,DIAG=A800,728E,8084,004C,E07A,4C83,02C8
|
SYSOUT of STEP2
Code: |
SYNCSORT FOR Z/OS 1.3.2.0R U.S. PATENTS: 4210961, 5117495 (C) 2007 SYNCSO
z/OS 1.10.0
SYNCSORT LICENSED FOR IBM DEUTSCHLAND GMBH LICEN
SYSIN :
OPTION COPY
WER108I SORTIN : RECFM=VB ; LRECL= 354; BLKSIZE= 7476
WER110I SORTOUT : RECFM=VB ; LRECL= 354; BLKSIZE= 7476
WER449I SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
WER246I FILESIZE 0 BYTES
WER169I RELEASE 1.3 BATCH 0487 TPF LEVEL 2.0
WER052I END SYNCSORT - H2784090,STEP2,,DIAG=8A00,D180,A295,6C7F,C37A,6C8B,2240
|
For the case 2 if the file contains more than one record.
JESYSMSG
Code: |
ICH70001I H27840 LAST ACCESS AT 04:16:43 ON THURSDAY, NOVEMBER 11, 2010
IEF236I ALLOC. FOR H2784090 STEP1
IEF237I JES2 ALLOCATED TO SYSPRINT
IEF237I JES2 ALLOCATED TO SYSOUT
IGD103I SMS ALLOCATED TO DDNAME SORTIN
IEF237I DMY ALLOCATED TO SORTOUT
IEF237I JES2 ALLOCATED TO SYSIN
IEF142I H2784090 STEP1 - STEP WAS EXECUTED - COND CODE 0000
IEF285I H27840.H2784090.JOB04963.D0000103.? SYSOUT
IEF285I H27840.H2784090.JOB04963.D0000104.? SYSOUT
IGD104I Input file RETAINED, DDNAME=SORTIN
IEF285I H27840.H2784090.JOB04963.D0000101.? SYSIN
IEF373I STEP/STEP1 /START 2010315.0456
IEF374I STEP/STEP1 /STOP 2010315.0456 CPU 0MIN 00.01SEC SRB 0MIN 00.00S
IEF236I ALLOC. FOR H2784090 STEP2
IEF237I JES2 ALLOCATED TO SYSOUT
IGD103I SMS ALLOCATED TO DDNAME SORTIN
IGD103I SMS ALLOCATED TO DDNAME SORTOUT
IEF237I JES2 ALLOCATED TO SYSIN
IEF142I H2784090 STEP2 - STEP WAS EXECUTED - COND CODE 0000
IEF285I H27840.H2784090.JOB04963.D0000105.? SYSOUT
IGD104I Input file RETAINED, DDNAME=SORTIN
IGD104I Output file RETAINED, DDNAME=SORTOUT
IEF285I H27840.H2784090.JOB04963.D0000102.? SYSIN
IEF373I STEP/STEP2 /START 2010315.0456
IEF374I STEP/STEP2 /STOP 2010315.0456 CPU 0MIN 00.01SEC SRB 0MIN 00.00S
IEF375I JOB/H2784090/START 2010315.0456
IEF376I JOB/H2784090/STOP 2010315.0456 CPU 0MIN 00.02SEC SRB 0MIN 00.00S |
SYSOUT of STEP1
Code: |
SYNCSORT FOR Z/OS 1.3.2.0R U.S. PATENTS: 4210961, 5117495 (C) 2007 SYNCSO
z/OS 1.10.0
SYNCSORT LICENSED FOR IBM DEUTSCHLAND GMBH LICEN
SYSIN :
OPTION COPY
OUTFIL NULLOFL=RC4,STARTREC=2,ENDREC=2
WER108I SORTIN : RECFM=VB ; LRECL= 354; BLKSIZE= 7476
WER110I SORTOUT : RECFM=VB ; LRECL= 354; BLKSIZE= 7476
WER405I SORTOUT : DATA RECORDS OUT 11; TOTAL RECORDS OUT 11
WER449I SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
WER054I RCD IN 11, OUT 11
WER169I RELEASE 1.3 BATCH 0487 TPF LEVEL 2.0
WER052I END SYNCSORT - H2784090,STEP1,,DIAG=8200,5042,AAA8,0066,CA56,6CEB,2AE8 |
SYSOUT of STEP2
Code: |
SYNCSORT FOR Z/OS 1.3.2.0R U.S. PATENTS: 4210961, 5117495 (C) 2007 SYNCSO
z/OS 1.10.0
SYNCSORT LICENSED FOR IBM DEUTSCHLAND GMBH LICEN
SYSIN :
OPTION COPY
WER108I SORTIN : RECFM=VB ; LRECL= 354; BLKSIZE= 7476
WER110I SORTOUT : RECFM=VB ; LRECL= 354; BLKSIZE= 7476
WER449I SYNCSORT GLOBAL DSM SUBSYSTEM ACTIVE
WER246I FILESIZE 1,599 BYTES
WER169I RELEASE 1.3 BATCH 0487 TPF LEVEL 2.0
WER052I END SYNCSORT - H2784090,STEP2,,DIAG=C600,4040,EAB9,AC77,8E56,68CB,2660 |
I have replaced actual files as input and output files in the above. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
You do realize you are not using DFSORT . . . You are using Syncsort.
Topic moved to proper part of the forum.
d |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hi Gerry,
Good catch
d |
|
Back to top |
|
|
gcicchet
Senior Member
Joined: 28 Jul 2006 Posts: 1702 Location: Australia
|
|
|
|
Hi Srikanth,
try this for SYNCSORT
Code: |
OPTION COPY,NULLOUT=RC4,SKIPREC=1,STOPAFT=1
|
Gerry |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8796 Location: Welsh Wales
|
|
|
|
Why oh why do I bother to ask for the information that identifies the sort product and release level. It usually gets ignored and people end up wasting their valuable time working on inappropriate solutions because the OP is just too dumb or lazy to respond to questions designed to eliminate this. |
|
Back to top |
|
|
|