Need your help ....compare 2 files using ICETOOL and SPLICE
Moderators: Frank Yaeger, DikDude, Moderator Group
Examples for segments:
1) kx010 – LRECL – 222 FB
Input File format
header-info key actual data
KX010 6460698 6460698 22110SDF
positions:
Header-info 1-18 KX010
key 19-30 6460698
actual data 31-222 6460698 22110SDF
2) kx020 – 627
Input File format
header-info key actual data
KX020 6234698 6460698 22110SDF
positions:
Header-info 1-18 KX020
key 19-30 6234698
actual data 31-627 6460698 22110SDF
3) kx030 – 363
Input File format
header-info key actual data
KX030 6456788 6456788 22110SDF
positions:
Header-info 1-18 KX030
key 19-30 6456788
actual data 31-363 6456788 22110SDF
4) kx040 – 956
Input File format
header-info key actual data
KX040 567890 567890 22110SDF
positions:
Header-info 1-18 KX040
key 19-30 567890
actual data 31-956 567890 22110SDF
5) kx050 – 229
Input File format
header-info key actual data
KX050 6123456 6123456 22110SDF
positions:
Header-info 1-18 KX050
key 19-30 6123456
actual data 31-229 6123456 22110SDF
1) kx010 – LRECL – 222 FB
Input File format
header-info key actual data
KX010 6460698 6460698 22110SDF
positions:
Header-info 1-18 KX010
key 19-30 6460698
actual data 31-222 6460698 22110SDF
2) kx020 – 627
Input File format
header-info key actual data
KX020 6234698 6460698 22110SDF
positions:
Header-info 1-18 KX020
key 19-30 6234698
actual data 31-627 6460698 22110SDF
3) kx030 – 363
Input File format
header-info key actual data
KX030 6456788 6456788 22110SDF
positions:
Header-info 1-18 KX030
key 19-30 6456788
actual data 31-363 6456788 22110SDF
4) kx040 – 956
Input File format
header-info key actual data
KX040 567890 567890 22110SDF
positions:
Header-info 1-18 KX040
key 19-30 567890
actual data 31-956 567890 22110SDF
5) kx050 – 229
Input File format
header-info key actual data
KX050 6123456 6123456 22110SDF
positions:
Header-info 1-18 KX050
key 19-30 6123456
actual data 31-229 6123456 22110SDF
- Frank Yaeger
- Moderator
- Posts: 812
- Joined: Sat Feb 18, 2006 5:45 am
- Location: San Jose, CA
- Contact:
Well, theoretically it would be possible. You could convert the first record of the input file to VB, determine it's FB LRECL as RDW length-4 and then generate symbols for the positions you need based on that LRECL, and use those symbols in the JOINKEYS step. But it would be quite tricky and I don't have time to do it for you.If there are 6 to 7 segments having different LRECL and Same format as FB then can we consolidate to one PROC with different jobs?
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
If you give me little bit idea or any hint, it would be greatly appericiated.You could convert the first record of the input file to VB, determine it's FB LRECL as RDW length-4 and then generate symbols for the positions you need based on that LRECL, and use those symbols in the JOINKEYS step.
I will do rest of the things.
I know, it would be quite tricky so that I need your dirction. Please help me.
- Frank Yaeger
- Moderator
- Posts: 812
- Joined: Sat Feb 18, 2006 5:45 am
- Location: San Jose, CA
- Contact:
Ok, this should get you started:
S1's CTL2CNTL generates two symbols based on the LRECL in 5,5,ZD:
RFFLD,1,00222
INC1,00445,1,CH
You would enhance it to generate all the symbols you need based on the LRECL and then use those symbols in S2. In the example, the DFSORT statements in S2 would be transformed to:
Code: Select all
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=... input file1 (FB/n)
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//SYM DD DSN=&&S1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//TOOLIN DD *
COPY FROM(IN) TO(T1) USING(CTL1)
COPY FROM(T1) TO(SYM) USING(CTL2)
//CTL1CNTL DD *
OPTION STOPAFT=1
OUTFIL FTOV
//CTL2CNTL DD *
* SET UP LRECL AS 5,5,ZD
INREC BUILD=(1,4,5:1,2,BI,SUB,+4,TO=ZD,LENGTH=5)
* USE LRECL IN 5,5,ZD TO CREATE NEEDED SYMBOLS
OUTFIL FNAMES=SYM,VTOF,
BUILD=(C'RFFLD,1,',
5,5,80:X,/,
C'INC1,',(5,5,ZD,MUL,+2),ADD,+1,TO=ZD,LENGTH=5,
C',1,CH')
//S2 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYMNAMES DD DSN=&&S1,DISP=(OLD,PASS)
//SYMNOUT DD SYSOUT=*
//IN1 DD DSN=... input file1 (FB/n)
//IN2 DD DSN=... input file2 (FB/n)
//OUT1 DD DSN=... output file1
//SYSIN DD *
* USE CREATED SYMBOLS IN DFSORT STATEMENTS
JOINKEYS F1=IN1,FIELDS=(19,12,A)
JOINKEYS F2=IN2,FIELDS=(19,12,A)
REFORMAT FIELDS=(F1:RFFLD,F2:RFFLD,?)
OUTFIL FNAMES=OUT1,INCLUDE=(INC1,EQ,C'2')
OPTION COPY
/*
RFFLD,1,00222
INC1,00445,1,CH
You would enhance it to generate all the symbols you need based on the LRECL and then use those symbols in S2. In the example, the DFSORT statements in S2 would be transformed to:
Code: Select all
JOINKEYS F1=IN1,FIELDS=(19,12,A)
JOINKEYS F2=IN2,FIELDS=(19,12,A)
REFORMAT FIELDS=(F1:1,222,F2:1,222,?)
OUTFIL FNAMES=OUT1,INCLUDE=(445,1,CH,EQ,C'2')
OPTION COPY
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Thanks!! I checked for all segement and its working propely. Thank you very much!!
But I have one last question while buliding a new file.
BUILD=(1:223,11,16:C'INS',19:241,12,31:253,192)
which symbol can we use instead of '223'?
for your referal, The existing code was as below
JOINKEYS F1=IN1,FIELDS=(19,12,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,12,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:RFFLD,F2:RFFLD,?)
OPTION COPY
OUTFIL FNAMES=OUT1,INCLUDE=(INC1,EQ,C'2')
BUILD=(1:223,11,16:C'INS',19:241,12,31:253,192)
But I have one last question while buliding a new file.
BUILD=(1:223,11,16:C'INS',19:241,12,31:253,192)
which symbol can we use instead of '223'?
for your referal, The existing code was as below
JOINKEYS F1=IN1,FIELDS=(19,12,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,12,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:RFFLD,F2:RFFLD,?)
OPTION COPY
OUTFIL FNAMES=OUT1,INCLUDE=(INC1,EQ,C'2')
BUILD=(1:223,11,16:C'INS',19:241,12,31:253,192)
- Frank Yaeger
- Moderator
- Posts: 812
- Joined: Sat Feb 18, 2006 5:45 am
- Location: San Jose, CA
- Contact:
You have to generate symbols for each field (p,m) you need, e.g.
BLD1,223,11
BLD2,241,12
BLD3,253,192
(BLD1,16:C'INS',19:BLD2,31:BLD3)
You can also generate symbols for the columns if necessary, e.g.
COLA,16
COLB,19
COLC,31
(BLD1,COLA:C'INS',COLB:BLD2,COLC:BLD3)
You'll need to use DFSORT's arithmetic functions with the LRECL in various ways like I did for INC1 in my example.
BLD1,223,11
BLD2,241,12
BLD3,253,192
(BLD1,16:C'INS',19:BLD2,31:BLD3)
You can also generate symbols for the columns if necessary, e.g.
COLA,16
COLB,19
COLC,31
(BLD1,COLA:C'INS',COLB:BLD2,COLC:BLD3)
You'll need to use DFSORT's arithmetic functions with the LRECL in various ways like I did for INC1 in my example.
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Thanks a lot!! All symbols are working properly.
But I have one question about DATE
As per your direction, I tried to create symbol for below date
//SYMNAMES DD *
CRDATE,S'&LMON./&LDAY./&LYR4'
But I didn't get success.
So I created output file by using date function as shown below
OUTFIL FNAMES=OUT5,INCLUDE=(INC1,EQ,C'1'),
BUILD=(1:DATE,14:1,11,25:C'DEL',29:SEQNUM,6,ZD,69:BLD4)
DATE is displaying in below format
09/02/11
I want the date in below format
09/02/2011
What will be changes required?
Can we create symbol for below format?
CRDATE,S'&LMON./&LDAY./&LYR4'
But I have one question about DATE
As per your direction, I tried to create symbol for below date
//SYMNAMES DD *
CRDATE,S'&LMON./&LDAY./&LYR4'
But I didn't get success.
So I created output file by using date function as shown below
OUTFIL FNAMES=OUT5,INCLUDE=(INC1,EQ,C'1'),
BUILD=(1:DATE,14:1,11,25:C'DEL',29:SEQNUM,6,ZD,69:BLD4)
DATE is displaying in below format
09/02/11
I want the date in below format
09/02/2011
What will be changes required?
Can we create symbol for below format?
CRDATE,S'&LMON./&LDAY./&LYR4'
- Frank Yaeger
- Moderator
- Posts: 812
- Joined: Sat Feb 18, 2006 5:45 am
- Location: San Jose, CA
- Contact:
I don't know what you did that wasn't successful, but you can certainly create the date that way. For example:As per your direction, I tried to create symbol for below date
//SYMNAMES DD *
CRDATE,S'&LMON./&LDAY./&LYR4'
But I didn't get success.
Code: Select all
//S1 EXEC PGM=SORT
//SYMNAMES DD *
CRDATE,S'&LMON./&LDAY./&LYR4'
//SYSOUT DD SYSOUT=*
//SORTIN DD *
RECORD
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INREC BUILD=(CRDATE)
09/02/2011
You'd have to show me the job you ran and the output or error messages you got for me to tell you what you're doing wrong.
Alternatively, you can change DATE in your BUILD statement to DATE=(MD4/) to get what you want.
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Frank,
I am getting an error while identifying updated records. The process is working properly while identifying newly inserted records and existing deleted data.
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=FLE2.IND.TEST.KX090SS.INPUT8,DISP=SHR
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//SYM DD DSN=&&S1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//TOOLIN DD *
COPY FROM(IN) TO(T1) USING(CTL1)
COPY FROM(T1) TO(SYM) USING(CTL2)
//CTL1CNTL DD *
OPTION STOPAFT=1
OUTFIL FTOV
//CTL2CNTL DD *
* SET UP LRECL AS 5,5,ZD
INREC BUILD=(1,4,5:1,2,BI,SUB,+4,TO=ZD,LENGTH=5)
* USE LRECL IN 5,5,ZD TO CREATE NEEDED SYMBOLS
OUTFIL FNAMES=SYM,VTOF,
BUILD=(C'LRECL,',5,5,80:X,/,
C'RFFLD,1,',5,5,80:X,/,
C'DATAL,',(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5,/,
C'INC1,',(5,5,ZD,MUL,+2),ADD,+1,TO=ZD,LENGTH=5,C',1,CH',/,
C'BLD1,',(5,5,ZD),ADD,+1,TO=ZD,LENGTH=5,C',11',/,
C'BLD2,',(5,5,ZD),ADD,+19,TO=ZD,LENGTH=5,C',50',/,
C'BLD3,',(5,5,ZD),ADD,+69,TO=ZD,LENGTH=5,C',',
(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5,/,
C'BLD4,69,',(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5)
//S1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYMNAMES DD DSN=&&S1,DISP=(OLD,PASS)
//SYMNOUT DD SYSOUT=*
//IN1 DD DSN=INPUT8,DISP=SHR
//IN2 DD DSN=INPUT9,DISP=SHR
//OUT3 DD DSN=UPDATE9,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT8
//OUT6 DD DSN=UPDCOUN9,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT8
//OUT7 DD DSN=NOUPD9,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT8
//SYSIN DD *
JOINKEYS F1=IN1,FIELDS=(19,50,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,50,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:RFFLD,F2:RFFLD,?)
OPTION COPY
OUTFIL FNAMES=OUT3,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:BLD1,16:C'UPD',19:BLD2,69:BLD3)
OUTFIL FNAMES=OUT6,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:DATE,14:1,11,25:C'UPD',29:SEQNUM,6,ZD,69:BLD3)
OUTFIL FNAMES=OUT7,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,EQ,BLD3,BI)),
BUILD=(1:DATE,14:1,11,29:SEQNUM,6,ZD,69:BLD4)
/*
SYMNOUT
------------------ SYMBOL TABLE -----------------
LRECL,665
RFFLD,1,665
DATAL,597
INC1,1331,1,CH
BLD1,666,11
BLD2,684,50
BLD3,734,597
BLD4,69,597
SYSOUT
1ICE270I 0 PROCESSING SYMNAMES STATEMENTS
ICE280I 1 ORIGINAL STATEMENTS FROM SYSIN FOLLOW
JOINKEYS F1=IN1,FIELDS=(19,50,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,50,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:RFFLD,F2:RFFLD,?)
OPTION COPY
OUTFIL FNAMES=OUT3,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:BLD1,16:C'UPD',19:BLD2,69:BLD3)
OUTFIL FNAMES=OUT6,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:DATE,14:1,11,25:C'UPD',29:SEQNUM,6,ZD,69:BLD3)
OUTFIL FNAMES=OUT7,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,EQ,BLD3,BI)),
BUILD=(1:DATE,14:1,11,29:SEQNUM,6,ZD,69:BLD4)
ICE282I 0 PERFORMING SYMBOL SUBSTITUTION AS NEEDED
ICE002I 0 DUPLICATE OR CONFLICTING JOIN STATEMENT
ICE411I 0 THIS IS THE JOINKEYS MAIN TASK FOR JOINING F1 AND F2
ICE416I 0 JOINKEYS IS USING THE F1 SUBTASK FOR IN1 - SEE JNF1JMSG
ICE416I 1 JOINKEYS IS USING THE F2 SUBTASK FOR IN2 - SEE JNF2JMSG
ICE419I 0 JOINED RECORDS: TYPE=F, LENGTH=1331
ICE201I H RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE805I 1 JOBNAME: TMPCMP7 , STEPNAME: S1
ICE802I 0 BLOCKSET TECHNIQUE IN CONTROL
ICE143I 0 BLOCKSET COPY TECHNIQUE SELECTED
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EX
ICE000I 1 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R12 - 23:27
JOINKEYS F1=IN1,FIELDS=(19,50,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,50,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
ICE002I 0 DUPLICATE OR CONFLICTING JOIN STATEMENT
REFORMAT FIELDS=(F1:1,665,F2:1,665,?)
OPTION COPY
OUTFIL FNAMES=OUT3,INCLUDE=(1331,1,CH,EQ,C'B',AND,(69,597,BI,NE,734,59*
7,BI)),BUILD=(1:666,11,16:C'UPD',19:684,50,69:734,597)
OUTFIL FNAMES=OUT6,INCLUDE=(1331,1,CH,EQ,C'B',AND,(69,597,BI,NE,734,59*
7,BI)),BUILD=(1:DATE,14:1,11,25:C'UPD',29:SEQNUM,6,ZD,69*
:734,597)
OUTFIL FNAMES=OUT7,INCLUDE=(1331,1,CH,EQ,C'B',AND,(69,597,BI,EQ,734,59*
7,BI)),BUILD=(1:DATE,14:1,11,29:SEQNUM,6,ZD,69:69,597)
ICE411I 0 THIS IS THE JOINKEYS MAIN TASK FOR JOINING F1 AND F2
ICE416I 0 JOINKEYS IS USING THE F1 SUBTASK FOR IN1 - SEE JNF1JMSG
ICE416I 1 JOINKEYS IS USING THE F2 SUBTASK FOR IN2 - SEE JNF2JMSG
ICE419I 0 JOINED RECORDS: TYPE=F, LENGTH=1331
ICE201I H RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE221A 1 INVALID FIELD OR CONSTANT IN OUT3 IFTHEN 0 CONDITION 2
ICE751I 0 C5-K62149 C6-K90026 C7-K58148 C8-K90026 E9-K60824 E7-K90026
ICE052I 3 END OF DFSORT
Input File 8:
JD100-FILE 6460698 001 ª001ÿ001CTM-CD CTM 6460698 0002000120010010001
JD100-FILE 6460698 004 ª004ÿÿÿÿCTM-JKL CTM 6460698 0002000120010010002
JD100-FILE 6460698 005 ª005ÿÿÿÿCTM-NEP CTM 6460698 0002002120010010002
JD100-FILE 6460698 006 ª006ÿÿÿÿCTM-YWQ CTM 6460698 0002000120010010002
JD100-FILE 6460701 001 ª001ÿ001CTM-CD CTM 6460701 0002002220010010001
JD100-FILE 6460701 004 ª004ÿÿÿÿCTM-LMN CTM 6460701 0002002320010010002
JD100-FILE 6460701 005 ª005ÿÿÿÿCTM-YWQ CTM 6460701 0002002320010010002
JD100-FILE 6460701 006 ª006ÿÿÿÿCTM-XBM CTM 6460701 0002002320010010002
JD100-FILE 6460702 001 ª001ÿ001CTM-CD CTM 6460702 0002000120010010001
JD100-FILE 6460702 004 ª004ÿÿÿÿCTM-NEP CTM 6460702 0002002320010010002
JD100-FILE 6460702 005 ª005ÿÿÿÿCTM-YWQ CTM 6460702 0002000120010010002
Input File 9:
JD100-FILE 6460698 001 ª001ÿ001CTM-CD CTM 6460698 0002000120010010001
JD100-FILE 6460698 004 ª004ÿÿÿÿCTM-JKL CTM 6460698 0002000120010010002
JD100-FILE 6460698 005 ª005ÿÿÿÿCTM-NEP CTM 6460698 0002002120010010002
JD100-FILE 6460698 006 ª006ÿÿÿÿCTM-YWQ CTM 6460698 0002123450010010002
JD100-FILE 6460701 001 ª001ÿ001CTM-CD CTM 6460701 0002002220010010001
JD100-FILE 6460701 004 ª004ÿÿÿÿCTM-LMN CTM 6460701 0002002320010010002
JD100-FILE 6460701 005 ª005ÿÿÿÿCTM-YWQ CTM 6460701 0002002320010010002
JD100-FILE 6460701 006 ª006ÿÿÿÿCTM-XBM CTM 6460701 0002002320010010002
JD100-FILE 6460702 001 ª001ÿ001CTM-CD CTM 6460702 0002000120010010001
JD100-FILE 6460702 004 ª004ÿÿÿÿCTM-NEP CTM 6460702 0005662320010010002
JD100-FILE 6460702 005 ª005ÿÿÿÿCTM-YWQ CTM 6460702 0002000120010010002
I am not sure why it is showing an error.
I am getting an error while identifying updated records. The process is working properly while identifying newly inserted records and existing deleted data.
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=FLE2.IND.TEST.KX090SS.INPUT8,DISP=SHR
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//SYM DD DSN=&&S1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//TOOLIN DD *
COPY FROM(IN) TO(T1) USING(CTL1)
COPY FROM(T1) TO(SYM) USING(CTL2)
//CTL1CNTL DD *
OPTION STOPAFT=1
OUTFIL FTOV
//CTL2CNTL DD *
* SET UP LRECL AS 5,5,ZD
INREC BUILD=(1,4,5:1,2,BI,SUB,+4,TO=ZD,LENGTH=5)
* USE LRECL IN 5,5,ZD TO CREATE NEEDED SYMBOLS
OUTFIL FNAMES=SYM,VTOF,
BUILD=(C'LRECL,',5,5,80:X,/,
C'RFFLD,1,',5,5,80:X,/,
C'DATAL,',(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5,/,
C'INC1,',(5,5,ZD,MUL,+2),ADD,+1,TO=ZD,LENGTH=5,C',1,CH',/,
C'BLD1,',(5,5,ZD),ADD,+1,TO=ZD,LENGTH=5,C',11',/,
C'BLD2,',(5,5,ZD),ADD,+19,TO=ZD,LENGTH=5,C',50',/,
C'BLD3,',(5,5,ZD),ADD,+69,TO=ZD,LENGTH=5,C',',
(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5,/,
C'BLD4,69,',(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5)
//S1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYMNAMES DD DSN=&&S1,DISP=(OLD,PASS)
//SYMNOUT DD SYSOUT=*
//IN1 DD DSN=INPUT8,DISP=SHR
//IN2 DD DSN=INPUT9,DISP=SHR
//OUT3 DD DSN=UPDATE9,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT8
//OUT6 DD DSN=UPDCOUN9,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT8
//OUT7 DD DSN=NOUPD9,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT8
//SYSIN DD *
JOINKEYS F1=IN1,FIELDS=(19,50,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,50,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:RFFLD,F2:RFFLD,?)
OPTION COPY
OUTFIL FNAMES=OUT3,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:BLD1,16:C'UPD',19:BLD2,69:BLD3)
OUTFIL FNAMES=OUT6,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:DATE,14:1,11,25:C'UPD',29:SEQNUM,6,ZD,69:BLD3)
OUTFIL FNAMES=OUT7,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,EQ,BLD3,BI)),
BUILD=(1:DATE,14:1,11,29:SEQNUM,6,ZD,69:BLD4)
/*
SYMNOUT
------------------ SYMBOL TABLE -----------------
LRECL,665
RFFLD,1,665
DATAL,597
INC1,1331,1,CH
BLD1,666,11
BLD2,684,50
BLD3,734,597
BLD4,69,597
SYSOUT
1ICE270I 0 PROCESSING SYMNAMES STATEMENTS
ICE280I 1 ORIGINAL STATEMENTS FROM SYSIN FOLLOW
JOINKEYS F1=IN1,FIELDS=(19,50,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,50,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:RFFLD,F2:RFFLD,?)
OPTION COPY
OUTFIL FNAMES=OUT3,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:BLD1,16:C'UPD',19:BLD2,69:BLD3)
OUTFIL FNAMES=OUT6,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:DATE,14:1,11,25:C'UPD',29:SEQNUM,6,ZD,69:BLD3)
OUTFIL FNAMES=OUT7,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,EQ,BLD3,BI)),
BUILD=(1:DATE,14:1,11,29:SEQNUM,6,ZD,69:BLD4)
ICE282I 0 PERFORMING SYMBOL SUBSTITUTION AS NEEDED
ICE002I 0 DUPLICATE OR CONFLICTING JOIN STATEMENT
ICE411I 0 THIS IS THE JOINKEYS MAIN TASK FOR JOINING F1 AND F2
ICE416I 0 JOINKEYS IS USING THE F1 SUBTASK FOR IN1 - SEE JNF1JMSG
ICE416I 1 JOINKEYS IS USING THE F2 SUBTASK FOR IN2 - SEE JNF2JMSG
ICE419I 0 JOINED RECORDS: TYPE=F, LENGTH=1331
ICE201I H RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE805I 1 JOBNAME: TMPCMP7 , STEPNAME: S1
ICE802I 0 BLOCKSET TECHNIQUE IN CONTROL
ICE143I 0 BLOCKSET COPY TECHNIQUE SELECTED
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EX
ICE000I 1 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R12 - 23:27
JOINKEYS F1=IN1,FIELDS=(19,50,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,50,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
ICE002I 0 DUPLICATE OR CONFLICTING JOIN STATEMENT
REFORMAT FIELDS=(F1:1,665,F2:1,665,?)
OPTION COPY
OUTFIL FNAMES=OUT3,INCLUDE=(1331,1,CH,EQ,C'B',AND,(69,597,BI,NE,734,59*
7,BI)),BUILD=(1:666,11,16:C'UPD',19:684,50,69:734,597)
OUTFIL FNAMES=OUT6,INCLUDE=(1331,1,CH,EQ,C'B',AND,(69,597,BI,NE,734,59*
7,BI)),BUILD=(1:DATE,14:1,11,25:C'UPD',29:SEQNUM,6,ZD,69*
:734,597)
OUTFIL FNAMES=OUT7,INCLUDE=(1331,1,CH,EQ,C'B',AND,(69,597,BI,EQ,734,59*
7,BI)),BUILD=(1:DATE,14:1,11,29:SEQNUM,6,ZD,69:69,597)
ICE411I 0 THIS IS THE JOINKEYS MAIN TASK FOR JOINING F1 AND F2
ICE416I 0 JOINKEYS IS USING THE F1 SUBTASK FOR IN1 - SEE JNF1JMSG
ICE416I 1 JOINKEYS IS USING THE F2 SUBTASK FOR IN2 - SEE JNF2JMSG
ICE419I 0 JOINED RECORDS: TYPE=F, LENGTH=1331
ICE201I H RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE221A 1 INVALID FIELD OR CONSTANT IN OUT3 IFTHEN 0 CONDITION 2
ICE751I 0 C5-K62149 C6-K90026 C7-K58148 C8-K90026 E9-K60824 E7-K90026
ICE052I 3 END OF DFSORT
Input File 8:
JD100-FILE 6460698 001 ª001ÿ001CTM-CD CTM 6460698 0002000120010010001
JD100-FILE 6460698 004 ª004ÿÿÿÿCTM-JKL CTM 6460698 0002000120010010002
JD100-FILE 6460698 005 ª005ÿÿÿÿCTM-NEP CTM 6460698 0002002120010010002
JD100-FILE 6460698 006 ª006ÿÿÿÿCTM-YWQ CTM 6460698 0002000120010010002
JD100-FILE 6460701 001 ª001ÿ001CTM-CD CTM 6460701 0002002220010010001
JD100-FILE 6460701 004 ª004ÿÿÿÿCTM-LMN CTM 6460701 0002002320010010002
JD100-FILE 6460701 005 ª005ÿÿÿÿCTM-YWQ CTM 6460701 0002002320010010002
JD100-FILE 6460701 006 ª006ÿÿÿÿCTM-XBM CTM 6460701 0002002320010010002
JD100-FILE 6460702 001 ª001ÿ001CTM-CD CTM 6460702 0002000120010010001
JD100-FILE 6460702 004 ª004ÿÿÿÿCTM-NEP CTM 6460702 0002002320010010002
JD100-FILE 6460702 005 ª005ÿÿÿÿCTM-YWQ CTM 6460702 0002000120010010002
Input File 9:
JD100-FILE 6460698 001 ª001ÿ001CTM-CD CTM 6460698 0002000120010010001
JD100-FILE 6460698 004 ª004ÿÿÿÿCTM-JKL CTM 6460698 0002000120010010002
JD100-FILE 6460698 005 ª005ÿÿÿÿCTM-NEP CTM 6460698 0002002120010010002
JD100-FILE 6460698 006 ª006ÿÿÿÿCTM-YWQ CTM 6460698 0002123450010010002
JD100-FILE 6460701 001 ª001ÿ001CTM-CD CTM 6460701 0002002220010010001
JD100-FILE 6460701 004 ª004ÿÿÿÿCTM-LMN CTM 6460701 0002002320010010002
JD100-FILE 6460701 005 ª005ÿÿÿÿCTM-YWQ CTM 6460701 0002002320010010002
JD100-FILE 6460701 006 ª006ÿÿÿÿCTM-XBM CTM 6460701 0002002320010010002
JD100-FILE 6460702 001 ª001ÿ001CTM-CD CTM 6460702 0002000120010010001
JD100-FILE 6460702 004 ª004ÿÿÿÿCTM-NEP CTM 6460702 0005662320010010002
JD100-FILE 6460702 005 ª005ÿÿÿÿCTM-YWQ CTM 6460702 0002000120010010002
I am not sure why it is showing an error.
It must show updated records as
JD100-FILE 6460698 006 ª006ÿÿÿÿCTM-YWQ CTM 6460698 0002123450010010002
JD100-FILE 6460702 004 ª004ÿÿÿÿCTM-NEP CTM 6460702 0005662320010010002
But it is showing an error saying that
ICE221A 1 INVALID FIELD OR CONSTANT IN OUT3 IFTHEN 0 CONDITION
Could you please tell me what is wrong with my job?
JD100-FILE 6460698 006 ª006ÿÿÿÿCTM-YWQ CTM 6460698 0002123450010010002
JD100-FILE 6460702 004 ª004ÿÿÿÿCTM-NEP CTM 6460702 0005662320010010002
But it is showing an error saying that
ICE221A 1 INVALID FIELD OR CONSTANT IN OUT3 IFTHEN 0 CONDITION
Could you please tell me what is wrong with my job?
- Frank Yaeger
- Moderator
- Posts: 812
- Joined: Sat Feb 18, 2006 5:45 am
- Location: San Jose, CA
- Contact:
Code: Select all
OUTFIL FNAMES=OUT3,INCLUDE=(...(69,597,BI,NE,734,597,BI)),...
See:
http://publibz.boulder.ibm.com/cgi-bin/ ... 0630155256
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Then it is quite difficult to create symbols for all the segments having different record length. Actually I have created symbols as shown in above post. But now I am facing difficulty because each segment having different key length and data length.
For example
segment1 - key length-12 and data length -192
segment2 - key length-20 and data length -597
Could you please suggest any hint on this?
I refered one of the topic in your forum where you had suggested below logic
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=... input file1 (VB/3100)
//IN2 DD DSN=... input file2 (VB/3100)
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//T2 DD DSN=&&T2,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//T3 DD DSN=&&T3,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//T4 DD DSN=&&T4,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//T1C DD DSN=&&T1C,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//T2C DD DSN=&&T2C,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//T3C DD DSN=&&T3C,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//CON DD DSN=*.T1C,VOL=REF=*.T1C,DISP=(OLD,PASS)
// DD DSN=*.T2C,VOL=REF=*.T2C,DISP=(OLD,PASS)
// DD DSN=*.T3C,VOL=REF=*.T3C,DISP=(OLD,PASS)
//OUT1 DD DSN=... output file1 (VB/3100)
//OUT2 DD DSN=... output file2 (VB/3100)
//OUT3 DD DSN=... output file3 (VB/3100)
//OUT4 DD DSN=... output file4 (VB/3100)
//TOOLIN DD *
COPY FROM(IN1) TO(T1) USING(CTL1)
COPY FROM(IN2) TO(T2) USING(CTL2)
COPY JKFROM USING(CTL3)
SPLICE FROM(T3) TO(T4) ON(7,9,BI) KEEPNODUPS VLENOVLY-
WITH(5,1) WITH(7,3096) USING(CTL4)
COPY FROM(CON) TO(OUT4)
//CTL1CNTL DD *
INREC BUILD=(1,4,5:C'BB',7:5)
//CTL2CNTL DD *
INREC BUILD=(1,4,5:C'VV',7:5)
//CTL3CNTL DD *
JOINKEYS F1=T1,FIELDS=(1,4,A,7,3096,A)
JOINKEYS F2=T2,FIELDS=(1,4,A,7,3096,A)
JOIN UNPAIRED,F1,F2,ONLY
SORT FIELDS=(7,9,BI,A,5,2,CH,A)
OUTFIL FNAMES=T3
//JNF1CNTL DD *
OPTION VLSHRT
//JNF2CNTL DD *
OPTION VLSHRT
//CTL4CNTL DD *
OUTFIL FNAMES=OUT1,INCLUDE=(5,2,CH,EQ,C'BB'),
BUILD=(1,4,7)
OUTFIL FNAMES=T1C,REMOVECC,NODETAIL,INCLUDE=(5,2,CH,EQ,C'BB'),
BUILD=(1,4,7),
TRAILER1=('Count of OUT1: ',COUNT=(M10,LENGTH=5))
OUTFIL FNAMES=OUT2,INCLUDE=(5,2,CH,EQ,C'VV'),
BUILD=(1,4,7)
OUTFIL FNAMES=T2C,REMOVECC,NODETAIL,INCLUDE=(5,2,CH,EQ,C'VV'),
BUILD=(1,4,7),
TRAILER1=('Count of OUT2: ',COUNT=(M10,LENGTH=5))
OUTFIL FNAMES=OUT3,INCLUDE=(5,2,CH,EQ,C'VB'),
BUILD=(1,4,7)
OUTFIL FNAMES=T3C,REMOVECC,NODETAIL,INCLUDE=(5,2,CH,EQ,C'VB'),
BUILD=(1,4,7),
TRAILER1=('Count of OUT3: ',COUNT=(M10,LENGTH=5))
/*
Will this code solve my difficulty?
For example
segment1 - key length-12 and data length -192
segment2 - key length-20 and data length -597
Could you please suggest any hint on this?
I refered one of the topic in your forum where you had suggested below logic
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN1 DD DSN=... input file1 (VB/3100)
//IN2 DD DSN=... input file2 (VB/3100)
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//T2 DD DSN=&&T2,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//T3 DD DSN=&&T3,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//T4 DD DSN=&&T4,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(,PASS)
//T1C DD DSN=&&T1C,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//T2C DD DSN=&&T2C,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//T3C DD DSN=&&T3C,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//CON DD DSN=*.T1C,VOL=REF=*.T1C,DISP=(OLD,PASS)
// DD DSN=*.T2C,VOL=REF=*.T2C,DISP=(OLD,PASS)
// DD DSN=*.T3C,VOL=REF=*.T3C,DISP=(OLD,PASS)
//OUT1 DD DSN=... output file1 (VB/3100)
//OUT2 DD DSN=... output file2 (VB/3100)
//OUT3 DD DSN=... output file3 (VB/3100)
//OUT4 DD DSN=... output file4 (VB/3100)
//TOOLIN DD *
COPY FROM(IN1) TO(T1) USING(CTL1)
COPY FROM(IN2) TO(T2) USING(CTL2)
COPY JKFROM USING(CTL3)
SPLICE FROM(T3) TO(T4) ON(7,9,BI) KEEPNODUPS VLENOVLY-
WITH(5,1) WITH(7,3096) USING(CTL4)
COPY FROM(CON) TO(OUT4)
//CTL1CNTL DD *
INREC BUILD=(1,4,5:C'BB',7:5)
//CTL2CNTL DD *
INREC BUILD=(1,4,5:C'VV',7:5)
//CTL3CNTL DD *
JOINKEYS F1=T1,FIELDS=(1,4,A,7,3096,A)
JOINKEYS F2=T2,FIELDS=(1,4,A,7,3096,A)
JOIN UNPAIRED,F1,F2,ONLY
SORT FIELDS=(7,9,BI,A,5,2,CH,A)
OUTFIL FNAMES=T3
//JNF1CNTL DD *
OPTION VLSHRT
//JNF2CNTL DD *
OPTION VLSHRT
//CTL4CNTL DD *
OUTFIL FNAMES=OUT1,INCLUDE=(5,2,CH,EQ,C'BB'),
BUILD=(1,4,7)
OUTFIL FNAMES=T1C,REMOVECC,NODETAIL,INCLUDE=(5,2,CH,EQ,C'BB'),
BUILD=(1,4,7),
TRAILER1=('Count of OUT1: ',COUNT=(M10,LENGTH=5))
OUTFIL FNAMES=OUT2,INCLUDE=(5,2,CH,EQ,C'VV'),
BUILD=(1,4,7)
OUTFIL FNAMES=T2C,REMOVECC,NODETAIL,INCLUDE=(5,2,CH,EQ,C'VV'),
BUILD=(1,4,7),
TRAILER1=('Count of OUT2: ',COUNT=(M10,LENGTH=5))
OUTFIL FNAMES=OUT3,INCLUDE=(5,2,CH,EQ,C'VB'),
BUILD=(1,4,7)
OUTFIL FNAMES=T3C,REMOVECC,NODETAIL,INCLUDE=(5,2,CH,EQ,C'VB'),
BUILD=(1,4,7),
TRAILER1=('Count of OUT3: ',COUNT=(M10,LENGTH=5))
/*
Will this code solve my difficulty?
segment1 - key length-12 and data length -192
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=INPUT1,DISP=SHR
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//SYM DD DSN=&&S1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//TOOLIN DD *
COPY FROM(IN) TO(T1) USING(CTL1)
COPY FROM(T1) TO(SYM) USING(CTL2)
//CTL1CNTL DD *
OPTION STOPAFT=1
OUTFIL FTOV
//CTL2CNTL DD *
* SET UP LRECL AS 5,5,ZD
INREC BUILD=(1,4,5:1,2,BI,SUB,+4,TO=ZD,LENGTH=5)
* USE LRECL IN 5,5,ZD TO CREATE NEEDED SYMBOLS
OUTFIL FNAMES=SYM,VTOF,
BUILD=(C'LRECL,',5,5,80:X,/,
C'RFFLD,1,',5,5,80:X,/,
C'DATAL,',(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5,/,
C'INC1,',(5,5,ZD,MUL,+2),ADD,+1,TO=ZD,LENGTH=5,C',1,CH',/,
C'BLD1,',(5,5,ZD),ADD,+1,TO=ZD,LENGTH=5,C',11',/,
C'BLD2,',(5,5,ZD),ADD,+19,TO=ZD,LENGTH=5,C',50',/,
C'BLD3,',(5,5,ZD),ADD,+69,TO=ZD,LENGTH=5,C',',
(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5,/,
C'BLD4,69,',(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5)
//S2 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYMNAMES DD DSN=&&S1,DISP=(OLD,PASS)
//SYMNOUT DD SYSOUT=*
//IN1 DD DSN=INPUT1,DISP=SHR
//IN2 DD DSN=INPUT2,DISP=SHR
//OUT1 DD DSN=INSERT1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT2 DD DSN=DELETE1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT3 DD DSN=UPDATE1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT4 DD DSN=INSCOUN1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT5 DD DSN=DELCOUN1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT6 DD DSN=UPDCOUN1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT7 DD DSN=NOUPD1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//SYSIN DD *
JOINKEYS F1=IN1,FIELDS=(19,12,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,12,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:RFFLD,F2:RFFLD,?)
OPTION COPY
OUTFIL FNAMES=OUT1,INCLUDE=(INC1,EQ,C'2'),
BUILD=(1:BLD1,16:C'INS',19:BLD2,69:BLD3)
OUTFIL FNAMES=OUT2,INCLUDE=(INC1,EQ,C'1'),
BUILD=(1:1,11,16:C'DEL',19:19,50,69:BLD4)
OUTFIL FNAMES=OUT3,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:BLD1,16:C'UPD',19:BLD2,69:BLD3)
OUTFIL FNAMES=OUT4,INCLUDE=(INC1,EQ,C'2'),
BUILD=(1:DATE,14:BLD1,25:C'INS',29:SEQNUM,6,ZD,69:BLD3)
OUTFIL FNAMES=OUT5,INCLUDE=(INC1,EQ,C'1'),
BUILD=(1:DATE,14:1,11,25:C'DEL',29:SEQNUM,6,ZD,69:BLD4)
OUTFIL FNAMES=OUT6,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:DATE,14:1,11,25:C'UPD',29:SEQNUM,6,ZD,69:BLD3)
OUTFIL FNAMES=OUT7,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,EQ,BLD3,BI)),
BUILD=(1:DATE,14:1,11,29:SEQNUM,6,ZD,69:BLD4)
/*
segment2 - key length-20 and data length -597
The changed statement is
JOINKEYS F1=IN1,FIELDS=(19,20,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,20,A),SORTED
I want to consolidate these 2 jobs in one. Please suggest any hint. Because I am facing difficulty while creating symbols when logical record length is greter than 256
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=INPUT1,DISP=SHR
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//SYM DD DSN=&&S1,UNIT=SYSDA,SPACE=(TRK,(1,1)),DISP=(,PASS)
//TOOLIN DD *
COPY FROM(IN) TO(T1) USING(CTL1)
COPY FROM(T1) TO(SYM) USING(CTL2)
//CTL1CNTL DD *
OPTION STOPAFT=1
OUTFIL FTOV
//CTL2CNTL DD *
* SET UP LRECL AS 5,5,ZD
INREC BUILD=(1,4,5:1,2,BI,SUB,+4,TO=ZD,LENGTH=5)
* USE LRECL IN 5,5,ZD TO CREATE NEEDED SYMBOLS
OUTFIL FNAMES=SYM,VTOF,
BUILD=(C'LRECL,',5,5,80:X,/,
C'RFFLD,1,',5,5,80:X,/,
C'DATAL,',(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5,/,
C'INC1,',(5,5,ZD,MUL,+2),ADD,+1,TO=ZD,LENGTH=5,C',1,CH',/,
C'BLD1,',(5,5,ZD),ADD,+1,TO=ZD,LENGTH=5,C',11',/,
C'BLD2,',(5,5,ZD),ADD,+19,TO=ZD,LENGTH=5,C',50',/,
C'BLD3,',(5,5,ZD),ADD,+69,TO=ZD,LENGTH=5,C',',
(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5,/,
C'BLD4,69,',(5,5,ZD),SUB,+68,TO=ZD,LENGTH=5)
//S2 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYMNAMES DD DSN=&&S1,DISP=(OLD,PASS)
//SYMNOUT DD SYSOUT=*
//IN1 DD DSN=INPUT1,DISP=SHR
//IN2 DD DSN=INPUT2,DISP=SHR
//OUT1 DD DSN=INSERT1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT2 DD DSN=DELETE1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT3 DD DSN=UPDATE1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT4 DD DSN=INSCOUN1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT5 DD DSN=DELCOUN1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT6 DD DSN=UPDCOUN1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//OUT7 DD DSN=NOUPD1,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// LIKE=INPUT2
//SYSIN DD *
JOINKEYS F1=IN1,FIELDS=(19,12,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,12,A),SORTED
JOIN UNPAIRED,F1,F2
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:RFFLD,F2:RFFLD,?)
OPTION COPY
OUTFIL FNAMES=OUT1,INCLUDE=(INC1,EQ,C'2'),
BUILD=(1:BLD1,16:C'INS',19:BLD2,69:BLD3)
OUTFIL FNAMES=OUT2,INCLUDE=(INC1,EQ,C'1'),
BUILD=(1:1,11,16:C'DEL',19:19,50,69:BLD4)
OUTFIL FNAMES=OUT3,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:BLD1,16:C'UPD',19:BLD2,69:BLD3)
OUTFIL FNAMES=OUT4,INCLUDE=(INC1,EQ,C'2'),
BUILD=(1:DATE,14:BLD1,25:C'INS',29:SEQNUM,6,ZD,69:BLD3)
OUTFIL FNAMES=OUT5,INCLUDE=(INC1,EQ,C'1'),
BUILD=(1:DATE,14:1,11,25:C'DEL',29:SEQNUM,6,ZD,69:BLD4)
OUTFIL FNAMES=OUT6,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,NE,BLD3,BI)),
BUILD=(1:DATE,14:1,11,25:C'UPD',29:SEQNUM,6,ZD,69:BLD3)
OUTFIL FNAMES=OUT7,INCLUDE=(INC1,EQ,C'B',AND,
(BLD4,BI,EQ,BLD3,BI)),
BUILD=(1:DATE,14:1,11,29:SEQNUM,6,ZD,69:BLD4)
/*
segment2 - key length-20 and data length -597
The changed statement is
JOINKEYS F1=IN1,FIELDS=(19,20,A),SORTED
JOINKEYS F2=IN2,FIELDS=(19,20,A),SORTED
I want to consolidate these 2 jobs in one. Please suggest any hint. Because I am facing difficulty while creating symbols when logical record length is greter than 256
- Frank Yaeger
- Moderator
- Posts: 812
- Joined: Sat Feb 18, 2006 5:45 am
- Location: San Jose, CA
- Contact:
As I said earlier:
Sorry.
Maybe you'd be better off writing a program in your favorite programming language.
I also don't have time to figure out what you're trying to do, let alone fix it for youWell, theoretically it would be possible. You could convert the first record of the input file to VB, determine it's FB LRECL as RDW length-4 and then generate symbols for the positions you need based on that LRECL, and use those symbols in the JOINKEYS step. But it would be quite tricky and I don't have time to do it for you.
Sorry.
Maybe you'd be better off writing a program in your favorite programming language.
Frank Yaeger - DFSORT Development Team (IBM) - yaeger@us.ibm.com
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
Specialties: JOINKEYS, FINDREP, WHEN=GROUP, ICETOOL, Symbols, Migration
=> DFSORT/MVS is on the Web at http://www.ibm.com/storage/dfsort
FREE TUTORIALS
Tutorials
Free tutorials from mainframegurukul
- JCL Tutorial
Covers all important JCL concepts. - Cobol Tutorial
This tutorials covers all Cobol Topics from STRING to COMP-3. - DB2 Tutorial
DB2 Tutorial focuses on DB2 COBOL Programming. - SORT Tutorial
This Tutorial covers all important aspects of DFSORT with examples - CICS Tutorial
This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions
- Cobol Interview Questions
50+ Interview Questions - JCL Interview Questions
50+ Interview Questions - DB2 Interview Questions
100+ Interview Questions - CICS Interview Questions
70+ Interview Questions - VSAM Interview Questions
27 Interview Questions
Other References
Mainframe Tools and others
- XPEDITER Reference
Explains how we can debug a program - FILEAID Reference
Explains how to browse , edit and delete datasets - Change Man Reference
Quick Start tutorial on Changeman - Abend Reference
Important Abend codes explained - FaceBook Page
MainframeGurukul FaceBook Page - LinkedIn Page
MainframeGurkul Linkedin Page