Wrete a JCL to compare two files and mached records move to
onc file & un mached rows wants to another file?
Answer Posted / ashish uplenchwar
ID DIVISION.
PROGRAM-ID. COMP1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT F1 ASSIGN TO DD1
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS FS1.
SELECT F2 ASSIGN TO DD2
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS FS2.
SELECT F3 ASSIGN TO DD3
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS FS3.
SELECT F4 ASSIGN TO DD4
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS FS4.
DATA DIVISION.
FILE SECTION.
FD F1.
01 FILE1.
02 F1EID PIC X(2).
02 FNAME PIC X(5).
02 FILLER PIC X(73).
FD F2.
01 FILE2.
02 F2EID PIC X(2).
02 LNAME PIC X(5).
02 FILLER PIC X(73).
FD F3.
01 FILE3.
02 F3EID PIC X(2).
02 FNAME1 PIC X(5).
02 LNAME1 PIC X(5).
02 FILLER PIC X(68).
FD F4.
01 FILE4.
02 F4EID PIC X(2).
02 FNAME3 PIC X(5).
02 LNAME3 PIC X(5).
02 FILLER PIC X(68).
WORKING-STORAGE SECTION.
77 FS1 PIC 9(2).
77 FS4 PIC 9(2).
77 FS2 PIC 9(2).
77 FS3 PIC 9(2).
01 TABLE1.
02 TAB1 OCCURS 5 TIMES INDEXED BY A1.
03 EID1 PIC X(2).
03 FNAME2 PIC X(5).
01 TABLE2.
02 TAB2 OCCURS 5 TIMES INDEXED BY A2.
03 EID2 PIC X(2).
03 LNAME12 PIC X(5).
PROCEDURE DIVISION.
OPEN INPUT F1.
OPEN INPUT F2.
OPEN OUTPUT F3.
OPEN OUTPUT F4.
PERFORM UNTIL FS1 = 10
READ F1
IF FS1 = 00 THEN
MOVE F1EID TO EID1(A1)
MOVE FNAME TO FNAME2(A1)
END-IF
SET A1 UP BY 1
END-PERFORM.
CLOSE F1.
PERFORM UNTIL FS2 = 10
READ F2
IF FS2 = 00 THEN
MOVE F2EID TO EID2(A2)
MOVE LNAME TO LNAME12(A2)
END-IF
SET A2 UP BY 1
END-PERFORM.
CLOSE F2.
SET A1 TO 1.
OPEN INPUT F2.
PERFORM UNTIL FS2 = 10
SET A1 TO 1
READ F2
IF FS2 = 00 THEN
SEARCH TAB1 AT END PERFORM P1
WHEN EID1(A1) = F2EID PERFORM P2
END-SEARCH
END-IF
END-PERFORM.
SET A2 TO 1.
OPEN INPUT F1.
PERFORM UNTIL FS1 = 10
SET A2 TO 1
READ F1
IF FS1 = 00 THEN
SEARCH TAB2 AT END PERFORM P3
WHEN EID2(A2) = F1EID PERFORM P4
END-SEARCH
END-IF
END-PERFORM.
CLOSE F2 , F3 ,F4.
STOP RUN.
P1.
MOVE FILE2 TO FILE4.
WRITE FILE4.
P2.
MOVE EID1(A1) TO F3EID.
MOVE FNAME2(A1) TO FNAME1.
MOVE LNAME TO LNAME1.
WRITE FILE3.
P3.
MOVE FILE1 TO FILE4.
WRITE FILE4.
P4.
MOVE EID2(A2) TO F3EID.
MOVE FNAME2(A2) TO FNAME1.
MOVE LNAME TO LNAME1.
WRITE FILE3.
| Is This Answer Correct ? | 1 Yes | 1 No |
Post New Answer View All Answers
//S10 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //CON DD DSN=VAR.INPUT1,DISP=SHR // DD DSN=VAR.INPUT2,DISP=SHR //OUT DD DSN=VAR.OUTPUT,DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(5,5)),UNIT=SYSDA //TOOLIN DD * * Splice the needed data from the two VB files together SPLICE FROM(CON) TO(OUT) ON(5,5,CH) WITHALL - WITH(12,5) WITH(22,20) VLENMAX /*
what is DSN in JCL and what are the parameters to declare the DSN?
how can the same proc be re-used and called by many jobs?
What do you understand by jcl?
how you will the direct the data to spool using sysout option?
what happens in execution stage in job processing?
How to resolve the error "WER488A JOIN CAPACITY EXCEEDED" I am using SYNCSORT with JOINKEYS to compare 2 files. I am Getting error - > WER488A JOIN CAPACITY EXCEEDED There are 2 files to be compared with about 2 million records each. LRECL is 3665. Can somebody give a pointer as to how to resolve this problem? I am using SYNCSORT with JOINKEYS to compare 2 files. I am Getting error - > WER488A JOIN CAPACITY EXCEEDED There are 2 files to be compared with about 2 million records each. LRECL is 3665. Can somebody give a pointer as to how to resolve this problem?
Explain the function of job statement in jcl?
The disp in the JCL is MOD and the program opens the file in OUTPUT mode. What happens ? The disp in the JCL is SHR and the pgm opens the file in EXTEND mode. What happens ?
what is the resolution for sb37 error
Explain how can an in-stream dataset be terminated?
How does jcl act on code(if you take a cobol program)?
How to submit a jcl from cics?
What is the purpose of dd * statement in jcl?
List the different components of jcl statement?