Lab Exercise-Module:Cobol Cobcomp
Lab Exercise-Module:Cobol Cobcomp
Lab Exercise-Module:Cobol Cobcomp
COBCOMP
COBRUN
//MTPLB21J JOB ,,
// CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),LINES=(1,CANCEL),
// NOTIFY=MTPLB21
//RUN EXEC PGM=INITIAL
//*DD1 DD DSN=MTPLB21.COBOL.PRI4,DISP=SHR
//*DD3 DD DSN=MTPLB21.COBOL.PRI5,DISP=OLD
//* UNIT=SYSDA,VOL=SER=MTBLR1,
//* SPACE=(TRK,(1,2),RLSE),
//* DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)
//STEPLIB DD DSN=MTPLB21.COBOL.LOADLIB,DISP=SHR
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//
[WHEN WE DO COBOL PGMS. IN ORDER TO EXECUTE THE PROGRAMS COPY COBCOMP & COBRUN
TO THE PDS CONTAINING OUR COBOL PGMS
COBCOMP
-------
IF PDS IS MTPLB21.COBOL.JAIKUM & MEMBER = SORTFILE THEN IN COBCOMP GIVE
//COBOL.SYSIN DD DSN=MTPLB21.COBOL.JAIKUM(SORTFILE),DISP=SHR
//COBOL.SYSLIB DD DSN=MTPLB21.COBOL.JAIKUM,DISP=SHR ==>COPY LIBRARY
COBRUN
------
IF THERE IS INPUT TO GIVE CHANGE
//SYSIN DD DUMMY
AS
//SYSIN DD *
---
---
--- (INPUT)
//
1
IT IS A MUST IN SORT & MERGE PGMS TO GIVE
//SYSOUT DD SYSOUT=*
IF THERE IS DD NAMES GIVE THAT AS
//DD1 DD DSN=MTPLB21.COBOL.PRI4,DISP=SHR
//DD3 DD DSN=MTPLB21.COBOL.PRI5,DISP=OLD
]
PGM2 : ADDITION
IDENTIFICATION DIVISION.
PROGRAM-ID SAMPLE.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9(2).
01 B PIC 9(2).
01 C PIC Z99.
PROCEDURE DIVISION.
MAIN-PARA.
DISPLAY 'ENTER THE VALUE FOR A'
ACCEPT A
DISPLAY 'ENTER THE VALUE FOR B'
ACCEPT B
ADD A, B GIVING C.
DISPLAY C.
STOP RUN.
PGM3 : SUBTRACT
IDENTIFICATION DIVISION.
PROGRAM-ID SUBST.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9(2).
01 B PIC 9(2).
2
01 C PIC +99.
PROCEDURE DIVISION.
MAIN-PARA.
DISPLAY 'ENTER THE VALUE FOR A'
ACCEPT A
DISPLAY 'ENTER THE VALUE FOR B'
ACCEPT B
SUBTRACT A FROM B GIVING C.
DISPLAY C.
STOP RUN.
PGM4 : MULTIPLY
IDENTIFICATION DIVISION.
PROGRAM-ID MULTI.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9(2).
01 B PIC 9(2).
01 C PIC ZZ99.
PROCEDURE DIVISION.
MAIN-PARA.
DISPLAY 'ENTER THE VALUE FOR A'
ACCEPT A
DISPLAY 'ENTER THE VALUE FOR B'
ACCEPT B
MULTIPLY A BY B GIVING C.
DISPLAY C.
STOP RUN.
PGM5 : DIVISION
IDENTIFICATION DIVISION.
PROGRAM-ID DIVIS.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 99.
01 B PIC 99.
01 C PIC 99.
PROCEDURE DIVISION.
MAIN-PARA.
DISPLAY 'ENTER THE VALUE FOR A'.
ACCEPT A.
DISPLAY 'ENTER THE VALUE FOR B'.
ACCEPT B.
DIVIDE B INTO A GIVING C.
DISPLAY 'THE RESULT IS'
DISPLAY C.
STOP RUN.
PGM6 : MOVE
3
IDENTIFICATION DIVISION.
PROGRAM-ID REDEFI.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MSG-FLD PIC X(10) VALUE IS 'HAI'.
01 DATA-FLD PIC X(10).
01 OLD-ADDR.
05 NOM PIC X(5) VALUE IS '123'.
05 NAME PIC X(15) VALUE IS 'ABCDEF'.
01 NEW-ADDR.
05 N-NO PIC X(5).
05 N-NAME PIC X(15).
PROCEDURE DIVISION.
MAIN-PARA.
MOVE MSG-FLD TO DATA-FLD.
MOVE OLD-ADDR TO NEW-ADDR.
DISPLAY DATA-FLD.
DISPLAY NEW-ADDR.
STOP RUN.
4
MAIN-PARA.
DISPLAY 'ENTER THE FIRST NO.'.
ACCEPT FLD1.
DISPLAY 'ENTER THE SECOND NO.'.
ACCEPT FLD2.
DISPLAY 'ENTER THE THIRD NO.'.
ACCEPT FLD3.
DISPLAY 'ENTER THE FOURTH NO.'.
ACCEPT FLD4.
DISPLAY 'ENTER THE FIFTH NO.'.
ACCEPT FLD5.
ADD FLD1, FLD2 GIVING SUM1.
DISPLAY SUM1.
SUBTRACT FLD2 FROM FLD3 GIVING SUBS.
DISPLAY SUBS.
DIVIDE FLD4 BY FLD2 GIVING DIVI.
DISPLAY DIVI.
MULTIPLY FLD5 BY FLD1 GIVING PROD.
DISPLAY PROD.
COMPUTE SUM1 = FLD1 + FLD2.
MOVE SUM1 TO SUM11.
DISPLAY SUM11.
COMPUTE SUBS = FLD3 - FLD2.
MOVE SUBS TO SUBS1.
DISPLAY SUBS1.
COMPUTE DIVI = FLD4 / FLD2.
MOVE DIVI TO DIVI1.
DISPLAY DIVI1.
COMPUTE PROD = FLD5 * FLD1.
MOVE PROD TO PROD1.
DISPLAY PROD1.
STOP RUN.
[ INPUT
-----
//SYSIN DD *
60
100
100000
60000
0070000
OUTPUT
------
SUM = 160.00
SUBS = 900
DIVI = 600
PROD = 42000.00 ]
5
DATA DIVISION.
WORKING-STORAGE SECTION.
01 GRP1.
05 AAA PIC X(12).
05 BBB PIC A(10).
05 CCC PIC X(10).
01 GRP2.
05 BBB PIC A(10).
05 FILL1 PIC X(2).
05 AAA PIC X(12).
05 FILL2 PIC X(2).
05 CCC PIC X(10).
05 FILL3 PIC X(2).
PROCEDURE DIVISION.
MAIN-PARA.
ACCEPT AAA OF GRP1.
ACCEPT BBB OF GRP1.
ACCEPT CCC OF GRP1.
MOVE CORRESPONDING GRP1 TO GRP2.
DISPLAY GRP2.
STOP RUN.
[ INPUT
-----
//SYSIN DD *
COBOLPROGRAM1
COMPUTEVER
MULTIPLY12
//
SAME OUTPUT]
6
DISPLAY X1.
MOVE "A1" TO Y1.
DISPLAY X1.
DISPLAY X3.
DISPLAY X4.
DISPLAY X5.
STOP RUN.
7
01 STR2 PIC X(10).
77 I PIC 99.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM VARYING I FROM 1 BY 1 UNTIL STR1 = STR2
MOVE STR1(1:I) TO STR2
DISPLAY STR2
* DISPLAY I
IF STR1 = STR2
DISPLAY "LENGTH OF " STR1 "IS " I
END-IF
END-PERFORM.
STOP RUN.
[OUTPUT
------
M
MA
MAT
MATH
MATHE
MATHEM
MATHEMA
MATHEMAT
MATHEMATI
LENGHT OF MATHEMATI IS O9]
8
CONT-PARA.
IF K = "HAI"
IF M = "HELLO"
CONTINUE
ELSE
DISPLAY "CONTROL PASSED TO M<>HELLO"
END-IF
DISPLAY "HI"
DISPLAY "M=HELLO--SO CONTROL COMES OUT OF CURRENT IF".
END-IF.
LAST-PARA.
STOP RUN.
[OUTPUT
------
CONTROL COMES OUT OF WHOLE LOOP
NEXT SENTENCE GOT EXECUTED
HI
M=HELLO--SO CONTROL COMES OUT OF CURRENT IF]
PGM14 : EVALUATE
IDENTIFICATION DIVISION.
PROGRAM-ID. EVAL.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MONTH PIC 99.
01 MONTHNAME PIC A(10).
01 DAYS PIC 99.
PROCEDURE DIVISION.
MAIN-PARA.
DISPLAY "ENTER THE MONTH NUMBER" .
ACCEPT MONTH.
DISPLAY MONTH.
* DISPLAY MONTHNAME.
MONTH-PARA.
EVALUATE MONTH
WHEN 1 MOVE 'JANUARY' TO MONTHNAME
WHEN 2 MOVE 'FEBRUARY' TO MONTHNAME
WHEN 3 MOVE 'MARCH' TO MONTHNAME
WHEN 4 MOVE 'APRIL' TO MONTHNAME
WHEN 5 MOVE 'MAY' TO MONTHNAME
WHEN 6 MOVE 'JUNE' TO MONTHNAME
WHEN 7 MOVE 'JULY' TO MONTHNAME
WHEN 8 MOVE 'AUGUST' TO MONTHNAME
WHEN 9 MOVE 'SEPTEMBER' TO MONTHNAME
WHEN 10 MOVE 'OCTOBER' TO MONTHNAME
WHEN 11 MOVE 'NOVEMBER' TO MONTHNAME
WHEN 12 MOVE 'DECEMBER' TO MONTHNAME
END-EVALUATE.
DAY-PARA.
9
* MOVE 'DDDDDDD' TO MONTHNAME.
* DISPLAY MONTHNAME.
EVALUATE TRUE
WHEN MONTH = 4 OR 6 OR 9 OR 11
MOVE 30 TO DAYS
WHEN MONTH = 2
MOVE 28 TO DAYS
WHEN OTHER MOVE 31 TO DAYS
END-EVALUATE.
DISP-PARA.
DISPLAY "THE MONTH IS " MONTHNAME.
DISPLAY "DAYS IS " DAYS.
STOP-PARA.
STOP RUN.
[INPUT
-----
//SYSIN DD *
05
//
OUTPUT
------
05
THE MONTH IS MAY
DAYS IS 31]
10
[INPUT
-----
//SYSIN DD *
1
//
OUTPUT
------
MARITAL STATUS
0-SINGLE/1-MARRIED/2-WIDOWED/3.DIVORCED (VALUE ACCEPTED FROM SYSIN)
1350 ]
PGM16 : LAB PGM 3.1 : CREATE ONE SEQ. FILE & WRITE TO IT.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM32FI.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT SEQ-FILE ASSIGN TO DD1
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD SEQ-FILE.
01 SEQ-REC.
02 EMP-NO PIC X(6).
02 EMP-NAME PIC X(15).
02 DESG PIC X(10).
02 AGE PIC 9(2).
02 DEPT PIC X(8).
02 FILLER PIC X(39).
02 DEPT PIC X(8).
02 FILLER PIC X(39).
WORKING-STORAGE SECTION.
01 EOF PIC X.
PROCEDURE DIVISION.
MAIN-PARA.
OPEN OUTPUT SEQ-FILE.
PERFORM ACCEPT-P 3 TIMES.
PERFORM CLOSE-P.
ACCEPT-P.
ACCEPT EMP-NO.
ACCEPT EMP-NAME.
ACCEPT DESG.
ACCEPT AGE.
ACCEPT DEPT.
WRITE SEQ-REC.
CLOSE-P.
CLOSE SEQ-FILE.
STOP RUN.
[IN RUNCOB AFTER THE STMT. //RUN EXEC PGM=INITIAL GIVE FOLLOWING CODE
//DD1 DD DSN=MTPLB21.COBOL.PRI2,DISP=(NEW,CATLG,DELETE),
// DCB=(BLKSIZE=800,LRECL=80,RECFM=FB),UNIT=SYSDA,SPACE=(TRK,(1,1)RLSE)
11
-------
-------
INPUT FROM SYSIN
----------------
//SYSIN DD *
123
JAIKUM
PS
25
ET
.
.
. (15 ENTRIES FOR 3 RECORDS)
/*
AFTER EXECUTING RUNCOB OPEN FILE MTPLB21.COBOL.PRI2 -3 RECORDS WILL BE SHOWN AS
OUTPUT
------
123 JAIKUM PS 25 ET
456 PRIYA ET 24 GH
234 ANU WE 21 RT
]
12
WRITE SEQ-REC.
CLOSE SEQ-FILE.
STOP RUN.
[IN RUNCOB GIVE
//DD1=MTPLB21.COBOL.PRI2,DISP=OLD
-------
--------
//SYSIN DD *
133
ASDFDF
AS
DF
56
/*
PGM18 : LAB PGM 3.2 : READ RECORDS FROM AN OLD FILE & WRITE THEM TO A NEW FILE
ALSO DISPLAY RECORDS.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM32.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT SEQ-FILE ASSIGN TO DD1SEQ
ORGANIZATION IS SEQUENTIAL.
SELECT SOUT-FILE ASSIGN TO DD2SEQ
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD SEQ-FILE
LABEL RECORDS ARE STANDARD.
01 SEQ-REC.
02 EMP-NO PIC X(6).
02 EMP-NAME PIC X(15).
02 DESG PIC X(10).
02 AGE PIC 9(2).
02 DEPT PIC X(8).
02 FILLER PIC X(39).
FD SOUT-FILE
LABEL RECORDS ARE STANDARD.
01 SOUT-REC.
02 SEMP-NO PIC X(6).
02 SEMP-NAME PIC X(15).
02 SDESG PIC X(10).
02 SAGE PIC 9(2).
02 SDEPT PIC X(8).
02 FILLER PIC X(39).
WORKING-STORAGE SECTION.
01 EOF PIC X.
PROCEDURE DIVISION.
13
MAIN-PARA.
OPEN INPUT SEQ-FILE.
OPEN OUTPUT SOUT-FILE.
DISPH-P.
PERFORM READ-WRITE UNTIL EOF = 'Y'.
PERFORM CLOSE-P.
READ-WRITE.
READ SEQ-FILE AT END MOVE 'Y' TO EOF.
MOVE SEQ-REC TO SOUT-REC.
IF EOF NOT EQUAL TO 'Y' WRITE SOUT-REC.
IF EOF NOT EQUAL TO 'Y' DISPLAY SEQ-REC.
CLOSE-P.
CLOSE SEQ-FILE.
CLOSE SOUT-FILE.
STOP RUN.
[IN RUNCOB GIVE
//DD1SEQ DD DSN=MTPLB21.COBOL.PRI4,DISP=OLD
//DD2SEQ DD DSN=MTPLB21.COBOL.PRI6,DISP=(NEW,CATLG,DELETE),
// DCB=(BLKSIZE=800,LRECL=80,RECFM=FB),UNIT=SYSDA,SPACE=(TRK,(1,1)RLSE)D2
-------
--------
//SYSIN DUMMY
/*
14
MOVE A(I) TO TEMP
MOVE A(J) TO A(I)
MOVE TEMP TO A(J)
END-IF
END-PERFORM
END-PERFORM.
DISP-P.
DISPLAY A(I).
[INPUT OUTPUT
045 012
023 023
078 033
089 034
012 045
034 056
097 078
056 088
088 089
033 097]
15
STOP RUN.
FILL-P.
COMPUTE RATE(CT) = CT * 100.
DISP-P.
DISPLAY RATE(CT).
MNTH-P.
DISPLAY " ENTER MONTH NUMBER".
ACCEPT CT.
IF CT < 1 OR >12 DISPLAY "ERROR IN NUMBER"
ELSE DISPLAY MONTH(CT).
[INPUT
//SYSIN DD *
05
/*
OUTPUT
100
200
300
400
500
ENTER MONTH NUMBER (ALREADY ENTERED IN SYSIN)
MAY ]
IDENTIFICATION DIVISION.
PROGRAM-ID. SORTPROC.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT JCL-FILE ASSIGN TO DD1
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD JCL-FILE.
01 JCL-REC PIC X(80).
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PARA.
OPEN OUTPUT JCL-FILE.
MOVE '//MTPLB21J JOB ,,CLASS=A,MSGCLASS=H,NOTIFY=&SYSUID'
TO JCL-REC.
WRITE JCL-REC.
MOVE '//STEP1 EXEC PGM=IEFBR14' TO JCL-REC.
WRITE JCL-REC.
MOVE '//DD1 DD DSN=MTPLB21.JCL.ANJ123,' TO JCL-REC.
WRITE JCL-REC.
MOVE '// DISP=(NEW,CATLG,DELETE),' TO JCL-REC.
WRITE JCL-REC.
MOVE '// UNIT=SYSDA,SPACE=(TRK,(4,2),RLSE),'
16
TO JCL-REC.
WRITE JCL-REC.
MOVE '// DCB=(LRECL=80,RECFM=FB,BLKSIZE=800),'
TO JCL-REC.
WRITE JCL-REC.
MOVE '// VOL=SER=MTBLR1' TO JCL-REC.
WRITE JCL-REC.
MOVE '//SYSPRINT DD SYSOUT=*' TO JCL-REC.
WRITE JCL-REC.
MOVE '//SYSIN DD DUMMY' TO JCL-REC.
WRITE JCL-REC.
CLOSE JCL-FILE.
STOP RUN.
[OUTPUT
COBRUN
------
IN COBRUN GIVE //DDNAME DD SYSOUT=(*,INTRDR)
SO COBRUN WILL BE LIKE
//MTPLB21J JOB ,,
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),LINES=(1,CANCEL),
// NOTIFY=MTPLB21
//RUN EXEC PGM=INITIAL
//DD1 DD SYSOUT=(*,INTRDR)
//*DD2 DD DSN=MTPLB21.COBOL.PRI5,DISP=OLD
//*DD3 DD DSN=MTPLB21.COBOL.PRI6,DISP=OLD
//* UNIT=SYSDA,VOL=SER=MTBLR1,
//* SPACE=(TRK,(1,2),RLSE),
//* DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)
//STEPLIB DD DSN=MTPLB21.COBOL.LOADLIB,DISP=SHR
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//
AFTER EXECUTING THIS WE CAN SEE THAT THE FILE MTPLB21.JCL.ANJ123 IS CREATED.]
PGM22 : LAB PGM 4.1 ADD FIRST 10 ODD & EVEN NUMBERS IN 2 ARRAYS TAB1,TAB2 TO A
ARRAY TAB3
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM41.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 I PIC 9(2) VALUE 1.
77 J PIC 9(2) VALUE 2.
77 K PIC 9(2).
01 TABS.
17
02 TAB1 PIC 9(2) OCCURS 10 TIMES.
02 TAB2 PIC 9(2) OCCURS 10 TIMES.
02 TAB3 PIC 9(2) OCCURS 10 TIMES.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-P VARYING K FROM 1 BY 1 UNTIL K > 10.
PERFORM DISP-P.
STOP RUN.
ACCEPT-P.
MOVE I TO TAB1(K).
MOVE J TO TAB2(K).
COMPUTE TAB3(K) = TAB1(K) + TAB2(K).
COMPUTE I = I + 2.
COMPUTE J = J + 2.
DISP-P.
PERFORM VARYING K FROM 1 BY 1 UNTIL K > 10
* DISPLAY TAB1(K)
* DISPLAY TAB2(K)
DISPLAY TAB1(K) , ' + ' , TAB2(K) , ' = ' , TAB3(K)
END-PERFORM.
[OUTPUT
01 + 02 = 03
03 + 04 = 07
05 + 06 = 11
07 + 08 = 15
09 + 10 = 19
11 + 12 = 23
13 + 14 = 27
15 + 16 = 31
17 + 18 = 35
19 + 20 = 39 ]
PGM23 : LAB PGM 4.2 ACCEPT 12 ELEMENTS IN AN ARRAY & USE SEARCH
VERB TO SERCH A VALUE
IDENTIFICATION DIVISION.
PROGRAM-ID. ONEDARRY.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MONTH-TABLE.
02 FILLER PIC X(9) VALUE "JANUARY".
02 FILLER PIC X(9) VALUE "FEBRUARY".
02 FILLER PIC X(9) VALUE "MARCH".
02 FILLER PIC X(9) VALUE "APRIL".
02 FILLER PIC X(9) VALUE "MAY".
02 FILLER PIC X(9) VALUE "JUNE".
02 FILLER PIC X(9) VALUE "JULY".
02 FILLER PIC X(9) VALUE "AUGUST".
02 FILLER PIC X(9) VALUE "SEPTEMBER".
18
02 FILLER PIC X(9) VALUE "OCTOBER".
02 FILLER PIC X(9) VALUE "NOVEMBER".
02 FILLER PIC X(9) VALUE "DECEMBER".
01 MONTH-NAME REDEFINES MONTH-TABLE.
02 MONTH OCCURS 12 TIMES INDEXED BY CT.
05 FIRST-THREE PIC X(3).
05 BALANCE-REST PIC X(6).
77 M-NAME PIC X(9) VALUE SPACES.
PROCEDURE DIVISION.
MAIN-PARA.
DISPLAY "MONTH NAME".
ACCEPT M-NAME.
SET CT TO 1.
SEARCH MONTH AT END DISPLAY "NOT FOUND"
WHEN M-NAME = MONTH(CT)
DISPLAY FIRST-THREE (CT).
STOP RUN.
[INPUT
//SYSIN DD*
MARCH
/*
OUTPUT
MONTH NAME (ALREADY ACCEPTED FROM SYSIN)
MAR
19
[OUTPUT
002 003
003 004]
[OUTPUT
INITIALLY,
I=1, J=1, K=1 THEN XYZ =3
I=1, J=1, K=2 THEN XYZ =4
I=1, J=1, K=3 THEN XYZ =5
I=1, J=2, K=1 THEN XYZ =4
I=1, J=2, K=2 THEN XYZ =5
I=1, J=2, K=3 THEN XYZ =6
I=1, J=3, K=1 THEN XYZ =5 and so on...........]
20
PGM26 : LAB PGM 4.3 STRING,UNSTRING,INSPECT
IDENTIFICATION DIVISION.
PROGRAM-ID. ONEDARRY.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC X(7) VALUE 'CON,CON'.
77 B PIC X(7) VALUE 'CAT,CAT'.
77 C PIC X(10) VALUE 'ENATED,ABC'.
77 D PIC X(12) VALUE SPACES.
77 F PIC X(7) VALUE 'HIGHTEC'.
*77 G PIC X(7) VALUE SPACES.
77 SN PIC X(30) VALUE 'RAJA ROMOHAN ROY'.
77 FN PIC X(10) VALUE SPACES.
77 MN PIC X(10) VALUE SPACES.
77 LN PIC X(10) VALUE SPACES.
77 PS PIC X(15) VALUE 'SSUPERINDENDENT'.
77 HE PIC X(14) VALUE 'JAIKUM PRADEEP'.
77 COUN PIC 9(3) VALUE 1.
77 TALLY-COUNT PIC 9(2) VALUE 0.
PROCEDURE DIVISION.
MAIN-P.
PERFORM STRING-P.
PERFORM UNSTRING-P.
* PERFORM EXAMINE-P.
PERFORM INSPECT-P.
STOP RUN.
STRING-P.
DISPLAY "STRING VERB TO CONCATENATE STRINGS".
STRING A, B, C DELIMITED BY "," INTO D WITH POINTER COUN.
DISPLAY "STRING IS ", D.
COMPUTE COUN = COUN - 1.
DISPLAY "NO OF CHARACTERS IN ", D, "IS ", COUN.
STRING "MAIN" DELIMITED SIZE INTO F.
DISPLAY "HIGHTEC CHANGED TO ", F.
UNSTRING-P.
UNSTRING SN DELIMITED BY SPACE INTO FN, LN, MN.
DISPLAY "UNSTRINGED WORDS ARE ", FN, LN, MN.
*EXAMINE-P.
* EXAMINE PS TALLYING ALL "E".
* DISPLAY "E IN", PS, "IS", TALLY.
* EXAMINE PS TALLYING ALL "S".
* DISPLAY "LEADING S IN", PS, "IS", TALLY.
* EXAMINE PS TALLYING UNTIL FIRST "I".
* DISPLAY "NO. OF CHARS. TILL I IS", TALLY.
* EXAMINE PS REPLACING ALL "D" BY "Q".
* DISPLAY PS.
* EXAMINE PS REPLACING UNTIL FIRST "I" BY "W".
21
* DISPLAY PS.
INSPECT-P.
INSPECT HE TALLYING TALLY-COUNT FOR ALL "A".
DISPLAY "A IN ", HE, " IS ", TALLY-COUNT.
MOVE 0 TO TALLY-COUNT.
INSPECT HE TALLYING TALLY-COUNT FOR CHARACTERS.
DISPLAY "NO OF CHARS. IN ", HE, "IS " , TALLY-COUNT.
INSPECT HE REPLACING ALL 'E' BY 'S'.
DISPLAY HE.
[OUTPUT
STRING VERB TO CONCATENATE STRINGS
STRING IS CONCATENATED
NO OF CHARACTERS IN CONCATENATEDIS 012
HIGHTEC CHANGED TO MAINTEC
UNSTRINGED WORDS ARE RAJA ROMOHAN ROY
A IN JAIKUM PRADEEP IS 03
NO OF CHARS. IN JAIKUM PRADEEPIS 14
JAIKUM PRADSSP ]
22
STOP RUN.
[OUTPUT
23
35 JAIKUMA AAZHAKATHU
50 ABHILASH HMUMBAIIII
77 PRADEEPP PPBAHARAIN ]
[INPUT
-----
IN-FILE1 == MTPLB21.COBOL.PRI4
------------------------------
10 JAIKUMA AAZHAKATHU
15 PRIYAAA AABANGLORE
24
20 ANURAGG GGBOMBAYYYY
25 PRADEEPP PPBAHARAIN
30 ABHILASH HMUMBAIIII
IN-FILE2 == MTPLB21.COBOL.PRI5
------------------------------
12 AMITAAA AABANGLORE
17 TEJUAGG GGBOMBAYYYY
22 PREETHY AAZHAKATHU
54 APARNASH HMUMBAIIII
90 LEENAEPP PPBAHARAIN
COBRUN
------
//DD1 DD DSN=MTPLB21.COBOL.PRI4,DISP=SHR
//DD2 DD DSN=MTPLB21.COBOL.PRI5,DISP=SHR
//DD3 DD DSN=MTPLB21.COBOL.PRI6,DISP=OLD
OUTPUT
------
10 JAIKUMA AAZHAKATHU
12 AMITAAA AABANGLORE
15 PRIYAAA AABANGLORE
17 TEJUAGG GGBOMBAYYYY
20 ANURAGG GGBOMBAYYYY
22 PREETHY AAZHAKATHU
25 PRADEEPP PPBAHARAIN
30 ABHILASH HMUMBAIIII
54 APARNASH HMUMBAIIII
90 LEENAEPP PPBAHARAIN
25
EXIT PROGRAM.
END PROGRAM MPGM.
[OUTPUT
ENTERING SUBPROGRAM
BEGINNING CONTENTS
LEAVING SUBPGM
ENDING CONTENTS ]
IDENTIFICATION DIVISION.
PROGRAM-ID. SORTPROC.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN TO DD1
ORGANIZATION IS SEQUENTIAL.
SELECT OUT-FILE ASSIGN TO DD2
ORGANIZATION IS SEQUENTIAL.
SELECT WORK-FILE ASSIGN TO DD3.
DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-REC.
02 IN-SNO PIC 9(3).
02 IN-NAME PIC X(20).
02 IN-AMT PIC 9(6).
02 FILLER PIC X(51).
FD OUT-FILE.
01 OUT-REC.
02 OUT-SNO PIC 9(3).
02 OUT-NAME PIC X(20).
02 OUT-AMT PIC 9(6).
02 FILLER PIC X(51).
SD WORK-FILE.
01 WORK-REC.
02 W-NO PIC 9(3).
02 W-NAME PIC X(20).
02 W-AMT PIC 9(6).
02 FILLER PIC X(51).
WORKING-STORAGE SECTION.
01 EOF PIC X VALUE 'N'.
01 EOF1 PIC X VALUE 'N'.
PROCEDURE DIVISION.
SORTING SECTION.
MAIN-PARA.
SORT WORK-FILE ON ASCENDING KEY W-NO
INPUT PROCEDURE IS INPROC
OUTPUT PROCEDURE IS OUTPROC.
STOP RUN.
26
INPROC SECTION.
OPEN INPUT IN-FILE.
PERFORM READ-P UNTIL EOF = 'Y'.
CLOSE IN-FILE.
READ-P.
READ IN-FILE AT END MOVE 'Y' TO EOF.
IF IN-SNO = ZERO
NEXT SENTENCE
ELSE
RELEASE WORK-REC FROM IN-REC
END-IF.
OUTPROC SECTION.
OPEN OUTPUT OUT-FILE.
PERFORM READ1-PARA UNTIL EOF = 'Y'
CLOSE OUT-FILE.
READ1-PARA.
RETURN WORK-FILE INTO OUT-REC
AT END MOVE 'Y' TO EOF1.
IF OUT-AMT = ZERO
MOVE 999999 TO OUT-AMT
END-IF.
WRITE OUT-REC.
IDENTIFICATION DIVISION.
PROGRAM-ID. PARM.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 PAR.
49 PAR-LEN PIC S9(4) COMP.
49 PAR-TXT PIC X(50).
PROCEDURE DIVISION USING PAR.
DISPLAY PAR.
DISPLAY PAR-LEN.
STOP RUN.
[ COBRUN
------
//MTPLB21J JOB ,,
// CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),LINES=(1,CANCEL),
// NOTIFY=MTPLB21
//RUN EXEC PGM=INITIAL,PARM='JAIKUM'
//*D1 DD SYSOUT=(*,INTRDR)
//*DD2 DD DSN=MTPLB21.COBOL.PRI5,DISP=OLD
//*DD3 DD DSN=MTPLB21.COBOL.PRI6,DISP=OLD
//* UNIT=SYSDA,VOL=SER=MTBLR1,
//* SPACE=(TRK,(1,2),RLSE),
//* DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)
//STEPLIB DD DSN=MTPLB21.COBOL.LOADLIB,DISP=SHR
27
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//
OUTPUT
------
JAIKUM
0006
]
[NOTE : NUM ON STD COB , F10 ====> TO DISPLAY LINE NUMBERS IN A COBOL PGM]
28