View previous topic :: View next topic
Author
Message
jjjjjavi New User Joined: 09 Nov 2005Posts: 1
Hello,
When using the next JCL, having a small size in TEMP1 and TEMP2 files, results in a return code=0, but the output file does not have all the records.
Can anyone help me?
Thank you in advance,
Javi.
Code:
//STEP EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//TOOLIN DD *
COPY FROM(SORTIN) TO(TEMP1) USING(CTL1)
COPY FROM(SORTPP1) TO(TEMP2) USING(CTL2)
SPLICE FROM(CONCAT) TO(SORTOUT) ON(1,4,FI) ON(5,4,FI) -
WITH(9,1) WITH(11,78) -
WITHALL KEEPBASE KEEPNODUPS USING(CTL5)
/*
//SORTIN DD DSN=&EN..HPA140CO.X0017X.C&CC.I&CI..F&FECHA..RNDI3,
// DISP=SHR
//SORTPP1 DD DSN=&EN..HPT281F1.X0037X.DDD.C&CC.I&CI..F&FECHA,
// DISP=SHR
//SORTOUT DD DSN=&EN..HPB010CO.X0017X.C&CC.I&CI..F&FECHA..TEST,
// DISP=(,CATLG,DELETE),
// SPACE=(CYL,(00900,00900),RLSE),
// UNIT=DISCO
//TEMP1 DD DSN=&&TEMP1,DISP=(,PASS),SPACE=(CYL,(50,50)),UNIT=SYSDA
//TEMP2 DD DSN=&&TEMP2,DISP=(,PASS),SPACE=(CYL,(50,50)),UNIT=SYSDA
//CONCAT DD DSN=*.TEMP1,VOL=REF=*.TEMP1,DISP=(OLD,PASS)
// DD DSN=*.TEMP2,VOL=REF=*.TEMP2,DISP=(OLD,PASS)
//CTL1CNTL DD *
OUTREC FIELDS=(9,4,13,4,C'00',1,8,17,71)
/*
//CTL2CNTL DD *
SORT FIELDS=(1,4,BI,A,5,4,BI,A,27,16,CH,A)
SUM FIELDS=NONE
OUTREC FIELDS=(1,4,5,4,C'11',27,16,89:C' ')
/*
//CTL5CNTL DD *
OUTFIL FNAMES=SORTOUT,OMIT=(10,1,CH,NE,C'0'), -
OUTREC=(1,9,11,79)
/*
Back to top
MGIndaco Active User Joined: 10 Mar 2005Posts: 432 Location: Milan, Italy
You must to know that you cannot concat within the same step an input defined as output because you will able to get only the records of first volume.
Try to read this link:
http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/ICE1CA10/1.8.3.1?SHELF=&DT=20050222160456&CASE=
Quote:
Be aware that, in some cases, if a DD statement specifies a data set
for output that is extended to a second or subsequent volume, and
another DD statement within the same step requests the same data set,
only the records on the first volume will be read, and incorrect
output will result.
Back to top
MGIndaco Active User Joined: 10 Mar 2005Posts: 432 Location: Milan, Italy
Ops, to solve this kind of problem Frank(that can correct me) suggest to use only one temporary dd with DISP=(MOD,PASS) so your jcl can be:
Code:
//STEP EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//TOOLIN DD *
COPY FROM(SORTPP1) TO(T1) USING(CTL2)
COPY FROM(SORTIN) TO(T1) USING(CTL1)
SPLICE FROM(T1) TO(SORTOUT) ON(1,4,FI) ON(5,4,FI) -
WITH(9,1) WITH(11,78) -
WITHALL KEEPBASE KEEPNODUPS USING(CTL5)
/*
//SORTIN DD DSN=&EN..HPA140CO.X0017X.C&CC.I&CI..F&FECHA..RNDI3,
// DISP=SHR
//SORTPP1 DD DSN=&EN..HPT281F1.X0037X.DDD.C&CC.I&CI..F&FECHA,
// DISP=SHR
//SORTOUT DD DSN=&EN..HPB010CO.X0017X.C&CC.I&CI..F&FECHA..TEST,
// DISP=(,CATLG,DELETE),
// SPACE=(CYL,(00900,00900),RLSE),
// UNIT=DISCO
//T1 DD DSN=&&TEMP1,DISP=(MOD,PASS),SPACE=(CYL,(50,50)),UNIT=SYSDA
//CTL1CNTL DD *
OUTREC FIELDS=(9,4,13,4,C'00',1,8,17,71)
/*
//CTL2CNTL DD *
SORT FIELDS=(1,4,BI,A,5,4,BI,A,27,16,CH,A)
SUM FIELDS=NONE
OUTREC FIELDS=(1,4,5,4,C'11',27,16,89:C' ')
/*
//CTL5CNTL DD *
OUTFIL FNAMES=SORTOUT,OMIT=(10,1,CH,NE,C'0'),
OUTREC=(1,9,11,79)
/*
I hope in this help.
Back to top
Frank Yaeger DFSORT Developer Joined: 15 Feb 2005Posts: 7129 Location: San Jose, CA
MGIndaco,
Yes, that's right. The system restriction on concatenation is most likely causing the loss of records, and the best way to avoid it is to use one MOD data set instead of concatenation.
Back to top
Please enable JavaScript!