|
View previous topic :: View next topic
|
| Author |
Message |
Girija
New User
Joined: 29 Jul 2005 Posts: 14 Location: Mysore
|
|
|
|
Hi,
I am getting ABEND=S000 U0016 by executing the Syncsort code which is as below:
//ICETOOL1 EXEC PGM=ICETOOL
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=TSSEQ.TEST.AUD.POHDR,DISP=SHR
//IN2 DD DSN=TSSEQ.TEST.AUD.PODTL,DISP=SHR
//OUT DD DSN=TSSEQ.TEST.POHDRDT.BASE,
// DISP=(,CATLG,DELETE),
// SPACE=(CYL,(50,50),RLSE),
// DCB=(RECFM=FB,LRECL=615)
//T1 DD DSN=TSSEQ.TEST.POHDRDT.TEMP01,
// DISP=(MOD,CATLG,DELETE),
// SPACE=(CYL,(50,50),RLSE),
// DCB=(RECFM=FB,LRECL=615)
//TOOLIN DD DSN=TSPDS.SORTPARM(TPSORT04),DISP=SHR
//CTL1CNTL DD DSN=TSPDS.SORTPARM(TPSORT01),DISP=SHR
//CTL2CNTL DD DSN=TSPDS.SORTPARM(TPSORT02),DISP=SHR
//*
// IF (ICETOOL1.RC ?= 0) THEN
// EXEC PGM=DUMBO
// ENDIF
in1 has LRECL=500
In2 Has LRECL=115
TPSORT01-OUTREC FIELDS=(1,500,501:115X)
TPSORT02- OUTREC FIELDS=(1,500,501:01,115)
TPSORT04-
COPY FROM(IN1) TO(T1) USING(CTL1)
COPY FROM(IN2) TO(T1) USING(CTL2)
SPLICE FROM(T1) TO(OUT) ON(1,9,CH) WITH(501,115)
The abend message is as follows:
CALLER-PROVIDED IDENTIFIER IS "0002"
SYSDIAG= 242063, 844334, 844334, 608677
8,964K BYTES OF VIRTUAL STORAGE AVAILABLE, MAX REQUESTED,
0 BYTES RESERVE REQUESTED, 3M BYTES USED
IN2 : RECFM=FB ; LRECL= 115; BLKSIZE= 27945
OUTREC FIELD OUTSIDE RANGE
Anybody please guide me where I am going wrong? |
|
| Back to top |
|
 |
expat
Global Moderator

Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
I think it may have to do with the 115 byte record. It looks as though your OUTREC may be incorrect.
The code below is coded from memory so may need a little tweak, but this is how I see it-
1,115 = original 115 byte record
385X = 385 spaces to build up to 500 bytes
1,115 = append original record after spaces
OUTREC=(1,115,385X,1,115) |
|
| Back to top |
|
 |
Girija
New User
Joined: 29 Jul 2005 Posts: 14 Location: Mysore
|
|
|
|
Thanks it's working, not getting any abend.
In1 - Has key field Purchase order with 9 bytes and not containing item number
In2 - Has key field Purchase order with 9 bytes and Item number with 10 bytes
if I have considered only PO number as key for SPLICE, then we may not get all records from 2nd file
Ex: In1, infile1 containing following records
Po - 001111111
002222222
003333333
In2, infile2 containing following records
Po - 001111111 Item - 0000000010
- 0000000011
002222222 Item - 0000000010
- 0000000011
- 0000000020
- 0000000021
003333333 Item - 0000000010
- 0000000011
- 0000000020
- 0000000021
In the output i need to get the records as follows :
a) Output
001111111 001111111 0000000010
001111111 001111111 0000000011
002222222 001111111 0000000010
002222222 001111111 0000000011
002222222 001111111 0000000020
002222222 001111111 0000000021
003333333 001111111 0000000010
003333333 001111111 0000000011
003333333 001111111 0000000020
003333333 001111111 0000000021
Using SPLICE , getting only one record
001111111 001111111 0000000010
002222222 001111111 0000000010
003333333 001111111 0000000010
Is there any other way, so that we can get the ouput as stated in the output. |
|
| Back to top |
|
 |
expat
Global Moderator

Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
| Try ading the WITHALL keyword |
|
| Back to top |
|
 |
Girija
New User
Joined: 29 Jul 2005 Posts: 14 Location: Mysore
|
|
|
|
| I am not able to understand, can you please explain me with syntax |
|
| Back to top |
|
 |
guptae
Moderator

Joined: 14 Oct 2005 Posts: 1209 Location: Bangalore,India
|
|
|
|
Hi Girija,
I think expat mean to replace 'WITH' of ur sortcard to 'WITHALL'
| Code: |
COPY FROM(IN1) TO(T1) USING(CTL1)
COPY FROM(IN2) TO(T1) USING(CTL2)
SPLICE FROM(T1) TO(OUT) ON(1,9,CH) WITHALL(501,115) |
|
|
| Back to top |
|
 |
Girija
New User
Joined: 29 Jul 2005 Posts: 14 Location: Mysore
|
|
|
|
SPLICE FROM(T1) To(OUT) on(1,9,CH) WITHALL(501,115)
using the above code, gives JCL error as SPLICE always should contain WITH Keyword and after WITHALL keyword, should contain space instead of position mentioned above.
PLease correct me if I am wrong.
I saw in one of the tutor, it says ICETOOL works with matching keys, Hence in my case second file contains both po and Item fields and first File contains only PO. The keys between these two files are not in sync hence we won't get the records mentioned in the output.
Please let me know is there any other best method so that I can use the same. |
|
| Back to top |
|
 |
expat
Global Moderator

Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
This is a card that I have used in the past to get the results I wanted.
| Code: |
| SPLICE FROM(INFILE) TO(OUFILE) ON(1,44,CH) WITH(80,40) WITHALL |
|
|
| Back to top |
|
 |
Girija
New User
Joined: 29 Jul 2005 Posts: 14 Location: Mysore
|
|
|
|
| Thank you very much, it's working |
|
| Back to top |
|
 |
expat
Global Moderator

Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
Great stuff ......
And I'll say my thanks to Frank for guiding me in this topic many years ago. |
|
| Back to top |
|
 |
Girija
New User
Joined: 29 Jul 2005 Posts: 14 Location: Mysore
|
|
|
|
Thank you very Much
One more clarification is required.
//KILLFF EXEC PGM=DSKILLER,PARM='&TRS.SEQ.TEST1.AU2100.BASE'
//KILLGG EXEC PGM=DSKILLER,PARM='&TRS.SEQ.TEST1.AU2100.TEMP01'
//*
//ICETOOL1 EXEC PGM=ICETOOL
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=&TRS.SEQ.AU.MASTER.VEND,DISP=SHR
//IN2 DD DSN=&TRS.SEQ.AU.AU2100.OUTREC.SORT,DISP=SHR
//OUT DD DSN=&TRS.SEQ.TEST1.AU2100.BASE,
// DISP=(,CATLG,DELETE),
// SPACE=(CYL,(50,50),RLSE),
// DCB=(RECFM=FB,LRECL=200)
//T1 DD DSN=&TRS.SEQ.TEST1.AU2100.TEMP01,
// DISP=(MOD,CATLG,DELETE),
// DISP=(MOD,CATLG,DELETE),
// SPACE=(CYL,(50,50),RLSE),
// DCB=(RECFM=FB,LRECL=200)
//TOOLIN DD DSN=&TSP.PDS.SORTPARM(TPSORT08),DISP=SHR
//CTL1CNTL DD DSN=&TSP.PDS.SORTPARM(TPSORT06),DISP=SHR
//CTL2CNTL DD DSN=&TSP.PDS.SORTPARM(TPSORT07),DISP=SHR
//*
// IF (ICETOOL1.RC ?= 0) THEN
// EXEC PGM=DUMBO
// ENDIF
//
TPSORT06 -
OUTREC FIELDS=(1,31,32:166X)
TPSORT07 -
OUTREC FIELDS=(1,166,167:1,31)
TPSORT08 -
COPY FROM(IN1) TO(T1) USING(CTL1)
COPY FROM(IN2) TO(T1) USING(CTL2)
SPLICE FROM(T1) TO(OUT) ON(1,6,CH) WITH(32,166) WITHALL
Output is coming without any abend, data format is not correct. Please let me know where i am making wrong.
Output data is as follows:
1-31 bytes - 2nd file data
32-166 bytes - first file data
1-31 - first file data displaying at the end means after 167th byte
I need the output as follows:
Second file has to display with 31 bytes, then first file should be concatenated and should be displayed from 32nd position till 197 position |
|
| Back to top |
|
 |
Girija
New User
Joined: 29 Jul 2005 Posts: 14 Location: Mysore
|
|
|
|
| anybody answer this question please |
|
| Back to top |
|
 |
|
|
 |
All times are GMT + 6 Hours |
|