INPUT PROCEDURE (SORT)
EDIT MTPLP06.TABLE.PDS(INPRO) - 01.45
Command ===>
****** ***************************** Top of Data *********
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. SORT2.
000003 ENVIRONMENT DIVISION.
000004 INPUT-OUTPUT SECTION.
000005 FILE-CONTROL.
000006 SELECT INFILE ASSIGN TO DD1
000007 FILE STATUS IS FS1.
000008 SELECT OUTFILE ASSIGN TO DD2
000009 FILE STATUS IS FS2.
000010 SELECT WORKFILE ASSIGN TO DD3.
000011 DATA DIVISION.
000012 FILE SECTION.
000013 FD INFILE.
000014 01 IN-REC.
000015 02 ECODE PIC X(4).
000016 02 PIC X.
000017 02 ENAME PIC X(10).
000018 02 PIC X.
000019 02 ECITY PIC X(8).
000020 02 PIC X(56).
000021 FD OUTFILE.
000022 01 OUT-REC.
000023 02 PIC X(80).
000024 SD WORKFILE.
000025 01 WORK-REC.
000026 02 ECODE PIC X(4).
000027 02 PIC X(76).
000028 WORKING-STORAGE SECTION.
000029 77 FS1 PIC XX.
000030 77 FS2 PIC XX.
000031 77 FS3 PIC XX.
000032 77 EOF PIC X(3) VALUE 'NO'.
000033 PROCEDURE DIVISION.
000034 SORT WORKFILE ASCENDING KEY ECODE OF WORK-REC
000035 INPUT PROCEDURE IS PARA-1 GIVING OUTFILE.
000037 STOP RUN.
000038 PARA-1.
000039 OPEN INPUT INFILE.
000040 PERFORM UNTIL EOF = 'YES'
000041 READ INFILE AT END MOVE 'YES' TO EOF
000042 NOT AT END
000043 IF ECITY OF IN-REC = 'ROME' THEN
000044 MOVE IN-REC TO WORK-REC
000045 RELEASE WORK-REC
000046 ELSE DISPLAY 'CITY NOT EXIST'
000047 END-IF
000048 END-READ
000049 END-PERFORM.
COMPILE PROG IS SAME .
TO RUN
EDIT MTPLP06.TABLE.PDS(COBRUN) - 01.44
Command ===>
****** ***************************** Top of Data **********
000100 //MTPLP06A JOB NOTIFY=&SYSUID
000200 //RUN EXEC PGM=INPUT
000300 //STEPLIB DD DSN=MTPLP06.TABLE1.LOADLIB,DISP=SHR
000400 //SYSPRINT DD SYSOUT=*
000500 //SYSOUT DD SYSOUT=*
000600 //DD1 DD DSN=MTPLP06.TABLE.PDS(INFILE),DISP=SHR
000700 //DD2 DD DSN=MTPLP06.TABLE.PDS(OUTFILE1),DISP=SHR
000800 //SYSIN DD *
000900 /*
001000 //
I/P -->(WEHN WE WILL SORT FOR SITY PUNE ,IT WILL SEARCH THE CODE NAMED PUNE AND WILL COPY IT IN OUTFILE1. )
& WHEN WILL WRITE WRONG CITY IT WILL DISPLAY "CITY NOT EXIST IN SPOOL.
OUTPUT PROCE
EDIT MTPLP06.TABLE.PDS(OUTPRO) - 01.17
Command ===>
****** ***************************** Top of Data ********
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. OPRO.
000003 ENVIRONMENT DIVISION.
000004 INPUT-OUTPUT SECTION.
000005 FILE-CONTROL.
000006 SELECT INFILE ASSIGN TO DD1
000007 FILE STATUS IS FS1.
000008 SELECT OUTFILE ASSIGN TO DD2
000009 FILE STATUS IS FS2.
000010 SELECT WORKFILE ASSIGN TO DD3.
000011 DATA DIVISION.
000012 FILE SECTION.
000013 FD INFILE.
000014 01 IN-REC.
000015 02 ECODE PIC X(4).
000016 02 PIC X.
000017 02 ENAME PIC X(10).
000018 02 PIC X.
000019 02 ECITY PIC X(8).
000020 02 PIC X(56).
000021 FD OUTFILE.
000022 01 OUT-REC.
000023 02 ECODE PIC X(4).
000024 02 PIC X.
000025 02 ENAME PIC X(10).
000026 02 PIC X.
000027 02 ECITY PIC X(8).
000028 02 PIC X(56).
000029 SD WORKFILE.
000030 01 WORK-REC.
000031 02 ECODE PIC X(4).
000032 02 PIC X.
000033 02 ENAME PIC X(10).
000034 02 PIC X.
000035 02 ECITY PIC X(8).
000036 02 PIC X(56).
000037 WORKING-STORAGE SECTION.
000038 77 FS1 PIC XX.
000039 77 FS2 PIC XX.
000040 77 FS3 PIC XX.
000041 77 EOF PIC X(3) VALUE 'NO'.
000042 PROCEDURE DIVISION.
000043 SORT WORKFILE ASCENDING KEY ECODE OF WORK-REC
000044 USING INFILE OUTPUT PROCEDURE IS PARA1.
000045 STOP RUN.
000046 PARA1.
000047 OPEN OUTPUT OUTFILE.
000048 PERFORM UNTIL EOF = 'Y'
000049 RETURN WORKFILE AT END MOVE 'Y' TO EOF NOT AT END
000050 MOVE ECODE OF WORK-REC TO ECODE OF OUT-REC
000051 MOVE ENAME OF WORK-REC TO ENAME OF OUT-REC
000052 MOVE ECITY OF WORK-REC TO ECITY OF OUT-REC
000053 WRITE OUT-REC
000054 END-RETURN
000055 END-PERFORM.
(THIS IS INFILE AND BY O/P WILL GET SAME INPUT IN OUTFILE I.E CODE ,NAME AND CITY WILL MOVE TO OUTREC.)
EDIT MTPLP06.TABLE.PDS(INFILE) -
Command ===>
****** ***************************** T
000100 1617 ABCAASSDAD MUMBAI
000200 1212 DEFSAADXZD DELHI
000300 1312 SDSDDSDSDC PUNE
000400 1112 GHIFSDASDC CHENNAI
000500 1000 DDDFJHJHJF BHILLAI
000600 0022 ASDGQWERTY PUNE
000700 0112 GESHZXCVVB PUNE
SEARCH 1D PROG
EDIT MTPLP06.TABLE.PDS(SEARCH1D) - 01.13 Col
Command ===>
****** ***************************** Top of Data *************
000001 ID DIVISION.
000002 PROGRAM-ID. SEARCH1.
000003 ENVIRONMENT DIVISION.
000004 DATA DIVISION.
000005 WORKING-STORAGE SECTION.
000006 01 STUDENT.
000007 02 STUD OCCURS 8 TIMES INDEXED BY A.
000008 03 MARKS PIC 9(2).
000009 77 I PIC 9 VALUE 1.
000010 77 CHECK PIC X(2) VALUE 'N'.
000011 PROCEDURE DIVISION.
000012 PERFORM VARYING I FROM 1 BY 1 UNTIL I > 8
000013 ACCEPT MARKS(I)
000014 DISPLAY " THE MARKS IS: " MARKS(I)
000015 END-PERFORM.
000016 SEARCH STUD
000017 WHEN MARKS(A) = 30
000018 DISPLAY MARKS(A)
000019 END-SEARCH.
000020 STOP RUN.
( WE HAVE TO GIVE 8 I/PS A BELOW IN RUNJCL)
EDIT MTPLP06.TABLE.PDS(COBRUN) - 01.46
Command ===>
****** ***************************** Top of Data **********
000100 //MTPLP06A JOB NOTIFY=&SYSUID
000200 //RUN EXEC PGM=SEARCH1D
000300 //STEPLIB DD DSN=MTPLP06.TABLE1.LOADLIB,DISP=SHR
000400 //SYSPRINT DD SYSOUT=*
000500 //SYSOUT DD SYSOUT=*
000600 //*DD1 DD DSN=MTPLP06.TABLE.PDS(INFILE),DISP=SHR
000700 //*D2 DD DSN=MTPLP06.TABLE.PDS(OUTFILE1),DISP=SHR
000800 //SYSIN DD *
000810 35
000820 60
000830 78
000840 30
000850 70
000860 30
000870 50
000880 20
000900 /*
( I/P IS BELOW GIVEN IT WILL SEARCHED 30 )
THE MARKS IS: 35
THE MARKS IS: 60
THE MARKS IS: 78
THE MARKS IS: 30
THE MARKS IS: 70
THE MARKS IS: 30
THE MARKS IS: 50
THE MARKS IS: 20
30
SEARCH DUPLICATE
EDIT MTPLP06.TABLE.PDS(SERDUPLI) - 01.00 Columns 0000
Command ===> Scroll ==
****** ***************************** Top of Data **********************
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. XXX.
000003 ENVIRONMENT DIVISION.
000004 DATA DIVISION.
000005 WORKING-STORAGE SECTION.
000006 01 STUDENT.
000007 05 PERF OCCURS 8 TIMES INDEXED BY A.
000008 10 MARK PIC 9(2).
000009 77 I PIC 9(1).
000010 77 X PIC X VALUE IS 'N'.
000011 PROCEDURE DIVISION.
000012 PERFORM VARYING I FROM 1 BY 1 UNTIL I > 8
000013 ACCEPT MARK(I)
000014 END-PERFORM.
000015 SET A TO 1.
000016 PARA-2.
000017 SEARCH PERF AT END GO TO PARA-1 WHEN MARK(A) = 70
000018 DISPLAY MARK(A)
000019 END-SEARCH.
000020 MOVE 'Y' TO X.
000021 SET A UP BY 1.
000022 GO TO PARA-2.
000023 PARA-1.
000024 IF X = 'N' THEN
000025 DISPLAY "MARKS NOT FOUND".
000026 STOP RUN.
I/O--> IN THIS COMPILE & RUN WILL BE SAME AS ABOVE BUT ONLY DIFFERENCE IS IF IN RUN PROG IF WILL GIVE 70,70 70 IN OUTPUT IT WILL DISPLAY ALL THREE OF THEM).
(SORTING)
EDIT MTPLP06.TABLE.PDS(SOT) - 01.13
Command ===>
****** ***************************** Top of Data ***
000100 IDENTIFICATION DIVISION.
000130 PROGRAM-ID. SORTING1.
000140 ENVIRONMENT DIVISION.
000150 INPUT-OUTPUT SECTION.
000160 FILE-CONTROL.
000170 SELECT INFILE ASSIGN TO DD1
000180 FILE STATUS IS FS1.
000190 SELECT OUTFILE ASSIGN TO DD2
000191 FILE STATUS IS FS2.
000192 SELECT WORKFILE ASSIGN TO DD3.
000193 DATA DIVISION.
000194 FILE SECTION.
000195 FD INFILE.
000196 01 IN-REC.
000197 02 ECODE PIC X(4).
000198 02 PIC X(76).
000199 FD OUTFILE.
000200 01 OUT-REC.
000201 02 PIC X(80).
000202 SD WORKFILE.
000203 01 WORK-REC.
000204 02 ECODE PIC X(4).
000205 02 PIC X(76).
000206 WORKING-STORAGE SECTION.
000207 77 FS1 PIC XX.
000208 77 FS2 PIC XX.
000209 77 FS3 PIC XX.
000210 PROCEDURE DIVISION.
000211 OPEN INPUT INFILE OUTPUT OUTFILE.
000212 SORT WORKFILE ASCENDING KEY ECODE OF WORK-REC
000213 USING INFILE GIVING OUTFILE.
000214 CLOSE INFILE OUTFILE.
000215 STOP RUN.
EDIT MTPLP06.TABLE.PDS(INFILE)
Command ===>
****** *****************************
000100 1617 ABCAASSDAD MUMBAI
000200 1212 DEFSAADXZD DELHI
000300 1312 SDSDDSDSDC PUNE
000400 1112 GHIFSDASDC CHENNAI
000500 1000 DDDFJHJHJF BHILLAI
000600 0022 ASDGQWERTY PUNE
000700 0112 GESHZXCVVB PUNE
EDIT MTPLP06.TABLE.PDS(COBRUN) - 01.48
Command ===>
****** ***************************** Top of Data **********
000100 //MTPLP06A JOB NOTIFY=&SYSUID
000200 //RUN EXEC PGM=SOT
000300 //STEPLIB DD DSN=MTPLP06.TABLE1.LOADLIB,DISP=SHR
000400 //SYSPRINT DD SYSOUT=*
000500 //SYSOUT DD SYSOUT=*
000600 //DD1 DD DSN=MTPLP06.TABLE.PDS(INFILE),DISP=SHR
000700 //DD2 DD DSN=MTPLP06.TABLE.PDS(OUTFILE1),DISP=SHR
000800 //SYSIN DD *
000900 /*
001000 //
O/P---> ( THE SORTED O/P FOR ECODE WIL COME AS BELOW)
00001 0022 ASDGQWERTY PUNE
00002 0112 GESHZXCVVB PUNE
00003 1000 DDDFJHJHJF BHILLAI
00004 1112 GHIFSDASDC CHENNAI
00005 1212 DEFSAADXZD DELHI
00006 1312 SDSDDSDSDC PUNE
00007 1617 ABCAASSDAD MUMBAI
( CALL SUBROUTINE--- 1ST STATIC PROG IT WILL COMBINELY RUN AND COMPILE)
EDIT MTPLP06.CALLSUB.PDS(STATIC) - 01.12
Command ===>
****** ***************************** Top of Data ********
000001 ID DIVISION.
000002 PROGRAM-ID. SMITH.
000003 ENVIRONMENT DIVISION.
000004 DATA DIVISION.
000005 WORKING-STORAGE SECTION.
000006 77 A PIC X(30).
000007 PROCEDURE DIVISION.
000008 MOVE "I AM IN MAIN PROGRAM" TO A.
000009 DISPLAY A.
000010 CALL 'SUBPGM' USING A.
000011 DISPLAY A.
000012 STOP RUN.
000013 ID DIVISION.
000014 PROGRAM-ID. SUBPGM.
000015 ENVIRONMENT DIVISION.
000016 DATA DIVISION.
000017 LINKAGE SECTION. 000018 77 A PIC X(30).
000019 PROCEDURE DIVISION USING A.
000020 DISPLAY "I AM IN SUBPGM".
000021 MOVE "LEAVING THE SUBPGM" TO A.
000022 DISPLAY A.
000023 END PROGRAM SUBPGM Command ===>
000024 END PROGRAM SMIT
( DYNAMIC PROGRAM)
FIRST WE HAVE TO COMPILR SUBPGM THEN COMPIL MAIN AND THEN RUN MAIN AND WILL GET O/P GIVEN BELOW)
EDIT MTPLP06.CALLSUB.PDS(MAINDYN) - 01.08
Command ===>
****** ***************************** Top of Data ********
000100 ID DIVISION.
000200 PROGRAM-ID. SMITH.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 WORKING-STORAGE SECTION.
000600 77 A PIC X(30).
000700 PROCEDURE DIVISION.
000800 MOVE "I AM IN MAIN PROGRAM" TO A.
000900 DISPLAY A.
001000 CALL 'SUBPGM' USING A.
001100 DISPLAY A.
001200 STOP RUN.
EDIT MTPLP06.CALLSUB.PDS(SUBPGM) - 01.02
Command ===>
****** ***************************** Top of Data *********
000100 ID DIVISION.
000200 PROGRAM-ID. SUBPGM.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 LINKAGE SECTION.
000600 77 A PIC X(30).
000700 PROCEDURE DIVISION USING A.
000800 DISPLAY "I AM IN SUBPGM".
000900 MOVE "LEAVING THE SUBPGM" TO A.
001000 DISPLAY A.
001100 GOBACK.
(COMPILE FOR CALL WITH LKED COLUMN--USE LKED SYNTAX ONLY WHILE COMPILING MAIN PGM)
EDIT MTPLP06.CALLSUB.PDS(COMNEW) - 01.99 Columns 00001
Command ===> Scroll ===
****** ***************************** Top of Data ***********************
000100 //MTPLP06A JOB NOTIFY=&SYSUID,CLASS=A
000400 // JCLLIB ORDER=MAINTEC.PROC.LIB
000500 //STEP1 EXEC IGYWCL,
000600 // PGMLIB=MTPLP06.TABLE1.LOADLIB, ==>LOADLIB NAME
000700 // GOPGM=GLOBAL
000800 //COBOL.SYSIN DD DSN=MTPLP06.CALLSUB.PDS(GLOBAL),DISP=SHR
000810 //*LKED.SYSLIB DD DSN=MTPLP06.TABLE1.LOADLIB(SUBPGM),DISP=SHR-->ABOVE.
001000 //
(O/P FOR ALL STATIC, DYNAMIC AND GLOBAL WILL BE SAME AS BELOW)
****************************
I AM IN MAIN PROGRAM
I AM IN SUBPGM
LEAVING THE SUBPGM
LEAVING THE SUBPGM