|
|
| Author |
Message |
jjjjjavi
New User
Joined: 09 Nov 2005 Posts: 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 |
|
 |
References
|
|
 |
MGIndaco
Moderator
Joined: 10 Mar 2005 Posts: 478 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
Moderator
Joined: 10 Mar 2005 Posts: 478 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 Moderator
Joined: 15 Feb 2005 Posts: 4621 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 |
|
 |
|
|
|