I am trying to get non matching records from File 1 & File 2 in Out 1 & Out2 on multiple fields using following code however I am getting abend S013 U0000
In Output I want records, which are not matching on any of fields which are in file 1 in OUT1 & records which are in file 2 in OUT2
Ex
//PS001 EXEC PGM=SYNCTOOL
//TOOLMSG DD SYSOUT=*
//*
//DFSMSG DD SYSOUT=*
//*
//IN1 DD DSN=SS.S.INPUT.PART.FILE1,DISP=SHR
//*
//IN2 DD DSN=SS.S.INPUT.PART.FILE2,DISP=SHR
//*
//T1 DD DSN=&&TEMP,DISP=(MOD,PASS,DELETE)
//*
//F1 DD DSN=&&TEMP,DISP=(MOD,PASS,DELETE)
//*
//OUT1 DD DSN=SS.S.PART.OUT1, RECS IN FILE1 ONLY
// DISP=(NEW,CATLG,DELETE),
// DSORG=PS,
// RECFM=FB,
// LRECL=81,
// BLKSIZE=0,
// UNIT=SYSDA
//*
//OUT2 DD DSN=SS.S.PART.OUT2, RECS IN FILE2 ONLY
// DISP=(NEW,CATLG,DELETE),
// DSORG=PS,
// RECFM=FB,
// LRECL=81,
// BLKSIZE=0,
// UNIT=SYSDA
//*
//TOOLIN DD *
SELECT FROM(IN1) TO(F1) -
ON(1,23,CH) - * FIRST FIELD
ON(35,5,CH) - * SECOND FIELD
ON(59,10,CH) - * THIRD FIELD
FIRST
SELECT FROM(IN2) TO(F1) -
ON(1,23,CH) - * FIRST FIELD
ON(35,5,CH) - * SECOND FIELD
ON(59,10,CH) - * THIRD FIELD
FIRST
SELECT FROM(F1) TO(T1) -
ON(1,23,CH) - * FIRST FIELD
ON(35,5,CH) - * SECOND FIELD
ON(59,10,CH) - * THIRD FIELD
FIRSTDUP USING(CTL1)
SELECT FROM(F1) TO(T1) -
ON(1,23,CH) - * FIRST FIELD
ON(35,5,CH) - * SECOND FIELD
ON(59,10,CH) - * THIRD FIELD
NODUPS USING(CTL2)
COPY FROM(IN1) TO(T1) USING(CTL3)
COPY FROM(IN2) TO(T1) USING(CTL4)
SPLICE FROM(T1) TO(OUT1) -
ON(1,23,CH) - * FIRST FIELD
ON(35,5,CH) - * SECOND FIELD
ON(59,10,CH) - * THIRD FIELD
WITHALL WITH(1,82) USING(CTL5)
/*
//CTL1CNTL DD
OUTFIL FNAMES=T1,OVERLAY=(82:C'DD')
/*
//CTL2CNTL DD
OUTFIL FNAMES=T1,OVERLAY=(82:C'UU')
/*
//CTL3CNTL DD
OUTFIL FNAMES=T1,OVERLAY=(82:C'11')
/*
//CTL4CNTL DD
OUTFIL FNAMES=T1,OVERLAY=(82:C'22')
/*
//CTL5CNTL DD
OUTFIL FNAMES=OUT1,INCLUDE=(82,2,CH,EQ,C'1U'),
BUILD=(1,81)
OUTFIL FNAMES=OUT2,INCLUDE=(82,2,CH,EQ,C'2U'),
BUILD=(1,81)
/*
//*
I am getting toolmsg as
Code:
SELECT FROM(F1) TO(T1) -
ON(1,23,CH) - * FIRST FIELD
ON(35,5,CH) - * SECOND FIELD
ON(59,10,CH) - * THIRD FIELD
FIRSTDUP USING(CTL1)
SYNCSORT CALLED WITH IDENTIFIER "0003"
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
Hello,
Is your abend an 013-20? You have not posted most of the error information which would help. If the abend is an 013-20, it means you have a dcb cvonflict. The more complete error info will also tell you which dd statement has the problem.
Also, you have specified SPLICE which (i believe) is not supported in Syncsort. It is supported in DFSORT.
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
Hello,
If you talk with your system support people, they can tell you the proper module name or which loadlib needs to be named. Different sites have different ways to place/name multiple sort programs.
You might try executing ICETOOL instead of SYNCTOOL.
Also, some places name the sort executables SYNCSORT and DFSORT - usually "SORT" executes one or the other when both are installed.
Again, your support people can tell you how your environment is configured.
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
Hello,
The functionality you want has not yet been incorporated into syncsort. Several peopple have asked similar questions and so far, i recall no posted working "Syncsort only" solution for what you want.
I'd suggest you go ahead and write the program code to do what you want.
Does that mean in my shop both the tools SYNC- & DF-SORT are installed ..actually I doubt it, because the system-messages thrown in TOOLMSG shows that SYNCSORT is invoked, meassges displayed are :
Code:
SYT000I SYNCTOOL RELEASE 1.5.1 - COPYRIGHT 2004 SYNCSORT INC.
SYT001I INITIAL PROCESSING MODE IS "STOP"
SYT002I "TOOLIN" INTERFACE BEING USED
COPY FROM(IN1) TO(TMP1) USING(CPY1)
SYT020I SYNCSORT CALLED WITH IDENTIFIER "0001"
SYT030I OPERATION COMPLETED WITH RETURN CODE 0
COPY FROM(IN2) TO(TMP1) USING(CPY2)
SYT020I SYNCSORT CALLED WITH IDENTIFIER "0002"
SYT030I OPERATION COMPLETED WITH RETURN CODE 0
SPLICE FROM(TMP1) TO(OUT) ON(1,3,CH) WITH(11,5)
SYT020I SYNCSORT CALLED WITH IDENTIFIER "0003"
SYT031I NUMBER OF RECORDS PROCESSED: 000000000000009
SYT026I NUMBER OF SELECTED RECORDS: 000000000000004
SYT030I OPERATION COMPLETED WITH RETURN CODE 0
SYT004I SYNCTOOL PROCESSING COMPLETED WITH RETURN CODE 0
SYT004I SYNCTOOL PROCESSING COMPLETED WITH RETURN CODE 0
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
Hello,
Spent some time on the phone with Syncsort and learned that many of the ICETOOL functions (such as SPLICE) are available in SYNCTOOL.
Unfortunately, there is no downloadable documentation at this time. SYNCTOOL was distributed to make life easier for people who knew ICETOOL and is designed to support the same style of syntax as ICETOOL. There is a direction that SYNCTOOL documentation be provided and it may be available the first part of next year (2008).
I asked about PARSE and that function is not yet available, but is planned for - currently, sometime early next year.
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
Thanks Dick. Yeah, I tried to use PARSE verb as well, but it's not working.
Quote:
I can't resist saying that DFSORT has had ICETOOL with full documentation since 1991, and PARSE, etc since April, 2006.
ah...well.. Frank your documentation on DFSORT can make any one to fall in love with DFSORT. I was also failed to resist myself when compared DFSORT functionalities with other similar products. I am sure soon you'll come up with some new feactures of DFSORT. Good Luck