You are on page 1of 29

1.

Arithmetic Operations
IDENTIFICATION DIVISION.
PROGRAM-ID. arithmet.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 num-1 pic s9(2) sign leading separate value 20.
77 num-2 pic s9(3) sign leading separate value -110.
77 add-result pic s9(3) sign leading separate value 0.
77 sub-result pic s9(3) sign leading separate value 0.
77 mul-result pic s9(3) sign leading separate value 0.
77 div-result pic s9(3) sign leading separate value 0.
77 div1-result pic s9(3) sign leading separate value 0.
PROCEDURE DIVISION.
accept num-1.
accept num-2.
display num-1.
display num-2.
add num-1, num-2 giving add-result.
subtract num-2 from num-1 giving sub-result.
Multiply num-1 by num-2 giving mul-result.
divide num-2 into num-1 giving div-result.
divide num-1 by num-2 giving div1-result.
display 'addition:' add-result.
display 'subtract:' sub-result.
display 'multiply:' mul-result.
display 'divide:'
div-result.
display 'divide:'
div1-result.
STOP RUN.
2.Celcius value Calculation
IDENTIFICATION DIVISION.
PROGRAM-ID. celcius.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 c pic 9(3).
77 f pic 9(2)v99 value is 96.99.
PROCEDURE DIVISION.
compute c rounded = (5 / 9) * (f - 32) on size error g
o to error-para.
display 'celcius value is =' c.
stop run.
error-para.
display 'an error has occured'.

3.Hello program(sample)
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
DISPLAY 'HELLO COBOL'.
STOP RUN.
4.perform
IDENTIFICATION DIVISION.
PROGRAM-ID. PERFORM1.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATA-NAMES.
02 I PIC 9(4) VALUE 0.
02 A PIC 9(4) OCCURS 20 TIMES.
PROCEDURE DIVISION.
BEGIN-PARA.
MOVE 1 TO I.
PERFORM ACCEPT-PARA VARYING I FROM 1 BY 1 UNTIL I>20.
PERFORM DISPLAY-PARA VARYING I FROM 1 BY 1 UNTIL I>20.
STOP RUN.
ACCEPT-PARA.
ACCEPT A(I).
ADD 100 TO A(I).
DISPLAY-PARA.
DISPLAY A(I).
5.Square Root
IDENTIFICATION DIVISION.
PROGRAM-ID. SQRT1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC S9(3) VALUE 17.
01 B PIC S9(3) VALUE -999.
01 C PIC S9(4) VALUE 0.
PROCEDURE DIVISION.
COMPUTE C = FUNCTION SQRT(A).
MOVE C TO B.
DISPLAY B.

STOP RUN.
6.System date
IDENTIFICATION DIVISION.
PROGRAM-ID. celcius.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 sysdt pic 9(6).
01 sysday pic x(10).
01 systme pic x(6).
PROCEDURE DIVISION.
accept sysdt from date.
display 'date/dd/mm/yy=' sysdt.
accept sysday from day.
display 'yyjulian=' sysday.
accept systme from time.
display 'time-hh-mm-ss=' systme.
stop run.
Files
1.

To create a sequential File

*PROGRAM TO CREATE A SEQUENTIAL FILE


IDENTIFICATION DIVISION.
PROGRAM-ID. FILE1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO INDD.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD.
01 EMP-REC.
02 E-NO PIC 9(4).
02 E-NAME PIC X(15).
02 E-SAL PIC 9(4)V999.
02 FILLER PIC X(7974).
WORKING-STORAGE SECTION.
77 EOF PIC X VALUE 'Y'.
PROCEDURE DIVISION.
BEGIN-PARA.
PERFORM OPEN-PARA.
PERFORM WRITE-PARA.
PERFORM CLOSE-PARA.

STOP RUN.
OPEN-PARA.
OPEN OUTPUT EMP-FILE.
WRITE-PARA.
ACCEPT E-NO.
ACCEPT E-NAME
ACCEPT E-SAL.
DISPLAY 'ACCEPTED:' EMP-REC
WRITE EMP-REC.
CLOSE-PARA.
CLOSE EMP-FILE.
2.Append files
*PROGRAM TO APPEND SEQUENTIAL FILE
IDENTIFICATION DIVISION.
PROGRAM-ID. FILE1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO INDD.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD.
01 EMP-REC.
02 E-NO PIC 9(4).
02 E-NAME PIC X(15).
02 E-SAL PIC 9(4)V999.
02 FILLER PIC X(7974).
WORKING-STORAGE SECTION.
77 EOF PIC X VALUE 'Y'.
PROCEDURE DIVISION.
BEGIN-PARA.
PERFORM OPEN-PARA.
PERFORM WRITE-PARA.
PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN EXTEND EMP-FILE.
WRITE-PARA.
ACCEPT E-NO.
ACCEPT E-NAME
ACCEPT E-SAL.
DISPLAY 'ACCEPTED:' EMP-REC
WRITE EMP-REC.
CLOSE-PARA.
CLOSE EMP-FILE.

3.Read a File
*PROGRAM TO READ A SEQUENTIAL FILE
IDENTIFICATION DIVISION.
PROGRAM-ID. READF.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO INDD.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD.
01 EMP-REC.
02 E-NO PIC 9(4).
02 E-NAME PIC X(15).
02 E-SAL PIC 9(4)V999.
02 FILLER PIC X(14).
WORKING-STORAGE SECTION.
77 DATA1 PIC X.
88 EOF VALUE 'Y'.
88 NOT-EOF VALUE 'N'.
01 I PIC 99.
01 WS-EMP-REC.
02 WS-E-NO PIC 9(4).
02 WS-E-NAME PIC X(15).
02 WS-E-SAL PIC 9(4)V999.
02 WS-FILLER PIC X(14).
PROCEDURE DIVISION.
BEGIN-PARA.
MOVE 'N' TO DATA1
PERFORM OPEN-PARA.
PERFORM READ-PARA.
PERFORM DISP-PARA UNTIL EOF.
PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN INPUT EMP-FILE.
READ-PARA.
DISPLAY 'INSIDE'.
READ EMP-FILE INTO WS-EMP-REC AT END MOVE 'Y' TO DATA1.
DISP-PARA.
COMPUTE I = I + 1.
MOVE EMP-REC TO WS-EMP-REC.
DISPLAY 'WS-EMP-REC' I , WS-EMP-REC.
PERFORM READ-PARA.
CLOSE-PARA.
CLOSE EMP-FILE.
4. Rewrite a File

*PROGRAM TO REWRITE A SEQUENTIAL FILE


IDENTIFICATION DIVISION.
PROGRAM-ID. REWRIT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO INDD.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD.
01 EMP-REC.
02 E-NO PIC 9(4).
02 E-NAME PIC X(15).
02 E-SAL PIC 9(7).
02 E-FILLER PIC X(14).
WORKING-STORAGE SECTION.
77 DATA1 PIC X.
88 EOF VALUE 'Y'.
88 NOT-EOF VALUE 'N'.
01 I PIC 99.
01 WS-NO-1 PIC 9999.
01 WS-EMP-REC.
02 WS-E-NO PIC 9(4).
02 WS-E-NAME PIC X(15).
02 WS-E-SAL PIC 9(7).
02 WS-FILLER PIC X(14).
PROCEDURE DIVISION.
BEGIN-PARA.
MOVE 'N' TO DATA1
PERFORM OPEN-PARA.
PERFORM READ-PARA.
PERFORM ACCEPT-PARA.
PERFORM DISP-PARA UNTIL EOF.
PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN I-O EMP-FILE.
READ-PARA.
READ EMP-FILE AT END MOVE 'Y' TO DATA1.
ACCEPT-PARA.
ACCEPT WS-NO-1.
DISPLAY 'WS-NO-1: ' WS-NO-1.
DISP-PARA.
IF E-NO = WS-NO-1
ACCEPT WS-E-NO
ACCEPT WS-E-NAME
ACCEPT WS-E-SAL
MOVE E-FILLER TO WS-FILLER

REWRITE EMP-REC FROM WS-EMP-REC.


DISPLAY EMP-REC.
PERFORM READ-PARA.
CLOSE-PARA.
CLOSE EMP-FILE.
4.Alternative for rewrite
*PROGRAM TO REWRITE A SEQUENTIAL FILE
IDENTIFICATION DIVISION.
PROGRAM-ID. REWRIT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO INDD.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD.
01 EMP-REC.
02 E-NO
PIC 9(4).
02 E-NAME
PIC X(15).
02 E-SAL
PIC 9(7).
02 E-FILLER PIC X(14).
WORKING-STORAGE SECTION.
01 EOF
PIC X VALUE 'N'.
01 WS-EMP-REC.
02 WS-EMP-NO
PIC 9(4).
02 WS-EMP-NAME
PIC X(15).
02 WS-EMP-SAL
PIC 9(7).
02 WS-EMP-FILLER
PIC X(14).
PROCEDURE DIVISION.
000-BEGIN-PARA.
PERFORM 100-OPEN-PART.
PERFORM 200-ACCEPT-PART.
PERFORM 300-READ-PART UNTIL EOF = 'Y'.
PERFORM 400-CLOSE-PART.
STOP RUN.
100-OPEN-PART.
OPEN I-O EMP-FILE.
200-ACCEPT-PART.
ACCEPT WS-EMP-NO.
300-READ-PART.
READ EMP-FILE AT END MOVE 'Y' TO EOF
NOT AT END
IF E-NO = WS-EMP-NO
ACCEPT WS-EMP-NO

ACCEPT
ACCEPT
MOVE
REWRITE
END-IF
END-READ.

WS-EMP-NAME
WS-EMP-SAL
E-FILLER TO WS-EMP-FILLER
EMP-REC FROM WS-EMP-REC

400-CLOSE-PART.
CLOSE EMP-FILE.
5.Copy a sequential file to another
*PROGRAM TO COPY A SEQUENTIAL FILE
IDENTIFICATION DIVISION.
PROGRAM-ID. COPYF.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO INDD.
SELECT EMP1-FILE ASSIGN TO OUTDD.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD.
01 EMP-REC.
02 E-NO PIC 9(4).
02 E-NAME PIC X(15).
02 E-SAL PIC 9(4)V999.
02 FILLER PIC X(14).
FD EMP1-FILE
LABEL RECORDS ARE STANDARD.
01 EMP1-REC.
02 E1-NO PIC 9(4).
02 E1-NAME PIC X(15).
02 E1-SAL PIC 9(4)V999.
02 FILLER PIC X(14).
WORKING-STORAGE SECTION.
77 DATA1 PIC X.
88 EOF VALUE 'Y'.
88 NOT-EOF VALUE 'N'.
01 I PIC 99.
01 WS-EMP-REC.
02 WS-E-NO PIC 9(4).
02 WS-E-NAME PIC X(15).
02 WS-E-SAL PIC 9(4)V999.
02 WS-FILLER PIC X(14).
PROCEDURE DIVISION.
BEGIN-PARA.
MOVE 'N' TO DATA1
PERFORM OPEN-PARA.
PERFORM READ-PARA.

PERFORM DISP-PARA UNTIL EOF.


PERFORM CLOSE-PARA.
STOP RUN.
OPEN-PARA.
OPEN INPUT EMP-FILE OUTPUT EMP1-FILE.
READ-PARA.
DISPLAY 'INSIDE'.
READ EMP-FILE INTO WS-EMP-REC AT END MOVE 'Y' TO DATA1.
DISP-PARA.
COMPUTE I = I + 1.
MOVE EMP-REC TO WS-EMP-REC.
DISPLAY 'WS-EMP-REC' I , WS-EMP-REC.
WRITE EMP1-REC FROM EMP-REC.
PERFORM READ-PARA.
CLOSE-PARA.
CLOSE EMP-FILE.

Creating a vsam file

//APTJJXXX JOB (TVD2TM,TRNG),'MEENAL',


//
CLASS=X,NOTIFY=&SYSUID,
//
MSGCLASS=Y,MSGLEVEL=(1,1),RESTART=*
//STEP1
EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER
(
NAME(APTJJ.KSDS.CLUSTER) MGMTCLAS(MC0032)
TRACKS(5,5)
CONTROLINTERVALSIZE(2048) FREESPACE(10,20)
KEYS(5,1)
RECORDSIZE(80,80)
)
DATA
(
NAME(APTJJ.KSDS.CLUSTER.DATA)
)
INDEX
(
NAME(APTJJ.KSDS.CLUSTER.INDEX) CONTROLINTERVALSIZE(2048)
)
/*
//

5. To calculate the square Root


IDENTIFICATION DIVISION.
PROGRAM-ID. CALROOT.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Q
PIC 9(4)V99.
01 R
PIC 9(4)V99.
01 ROOT1
PIC S9(4)V99.
01 ROOT2
PIC S9(4)V99.
77 X
PIC 9(2) VALUE 2.
77 Y
PIC 9(2) VALUE 5.
77 Z
PIC 9(2) VALUE 2.
PROCEDURE DIVISION.
PERFORM CAL-PARA.
PERFORM DISP-PARA.
STOP RUN.
CAL-PARA.
COMPUTE Q = ( ( (Y * Y) - (4 * X * Z) ) ** 0.5 ) / ( 2 *
X )
COMPUTE R = (- 1) * Y / (2 * X)
COMPUTE ROOT1 = R + Q.
COMPUTE ROOT2 = R - Q.
DISP-PARA.
DISPLAY ROOT1.
DISPLAY ROOT2.
Subroutines
Main Program
1. IDENTIFICATION DIVISION.
PROGRAM-ID. SUBROUT1.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NUM
PIC 9(2).
PROCEDURE DIVISION.
ACCEPT NUM.
DISPLAY 'NUM:' NUM.
CALL 'FACT' USING NUM.
STOP RUN.
Factsubprogram
IDENTIFICATION DIVISION.
PROGRAM-ID. FACT.

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NUM1
PIC 9(2).
77 RESULT
PIC 9(3).
LINKAGE SECTION.
77 NUM
PIC 9(2).
PROCEDURE DIVISION USING NUM.
COMPUTE RESULT = 1.
PERFORM COMP-PARA VARYING NUM1 FROM 1 BY 1 UNTIL NUM1 > NUM
PERFORM DISP-PARA.
EXIT PROGRAM.
COMP-PARA.
COMPUTE RESULT = RESULT * NUM1.
DISPLAY 'RESULT:' RESULT NUM1.
DISP-PARA.
DISPLAY 'THE FACTORIAL VALUE IS' RESULT.
2.square root
Mainprogram
IDENTIFICATION DIVISION.
PROGRAM-ID. SUBROUT2.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 INPT
PIC 9(3)V99 VALUE 166.22.
77 SQROOT
PIC 9(3).99.
PROCEDURE DIVISION.
CALL 'CALROOT' USING INPT SQROOT.
DISPLAY SQROOT.
STOP RUN.
SQROOT
IDENTIFICATION DIVISION.
PROGRAM-ID. SQROOT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC S9(3) VALUE 17.
01 B PIC S9(3) VALUE -999.
01 C PIC S9(4) VALUE 0.
PROCEDURE DIVISION.
COMPUTE C = FUNCTION SQRT(A).

MOVE C TO B.
DISPLAY B.
STOP RUN.
3.For string
IDENTIFICATION DIVISION.
PROGRAM-ID. SUBROUTS.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NAME1
PIC X(12) VALUE 'PPPPPPP'.
77 NAME2
PIC X(10) VALUE 'AAAAAAA'.
77 NAME
PIC X(30).
PROCEDURE DIVISION.
CALL 'STRINGS' USING NAME1, NAME2.
DISPLAY NAME.
STOP RUN.

Strings
IDENTIFICATION DIVISION.
PROGRAM-ID. strings.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 op pic x(20) VALUE SPACES.
LINKAGE SECTION.
77 name3 pic x(12).
77 name4 pic x(10).
procedure division using name3 name4.
string name3, name4 delimited by ' ' into op.
display op.
exit program.
4.Main program for Unstring
IDENTIFICATION DIVISION.
PROGRAM-ID. SUBROUTU.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NAME1
PIC X(5).

77 NAME2
PIC X(5).
77 NAME
PIC X(11) VALUE 'AAAIAPPPIP'.
PROCEDURE DIVISION.
CALL 'UNSTRNGS' USING NAME.
DISPLAY 'HERE'.
DISPLAY 'NAME1:' NAME1.
DISPLAY 'NAME2:' NAME2.
STOP RUN.
Unstring
IDENTIFICATION DIVISION.
PROGRAM-ID. UNSTRNGS.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
77 OP PIC X(10).
77 NAME1 PIC X(5) VALUE SPACES.
77 NAME2 PIC X(5) VALUE SPACES.
PROCEDURE DIVISION USING OP.
UNSTRING OP DELIMITED BY 'I' INTO NAME1, NAME2.
DISPLAY NAME1.
DISPLAY NAME2.
EXIT PROGRAM.
Calroot
IDENTIFICATION DIVISION.
PROGRAM-ID. CALROOT.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
77 INPT1
PIC 9(3)V99.
77 SQROOT
PIC 9(3).99.
PROCEDURE DIVISION USING INPT1, SQROOT.
COMPUTE SQROOT = FUNCTION SQRT(INPT1).
DISPLAY SQROOT.
EXIT PROGRAM.
5.Facto
IDENTIFICATION DIVISION.
PROGRAM-ID. FACTO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
DATA DIVISION.

WORKING-STORAGE SECTION.
77 FN
PIC 9(5) VALUE 1.
77 NUM PIC 9(2) VALUE 0.
77 NUM1 PIC 9(2) VALUE 5.
77 NUM2 PIC $$$$$.
PROCEDURE DIVISION.
*
IF NUM1 = 0 PERFORM DISPLAY1-PARA.
PERFORM COMPT-PARA VARYING NUM FROM 1 B
Y 1 UNTIL NUM > NUM1.
PERFORM DISPLAY-PARA.
STOP RUN.
COMPT-PARA.
COMPUTE FN = FN * NUM.
DISPLAY-PARA.
MOVE FN TO NUM2.
DISPLAY 'THE FACTORIAL VALUE IS ' NUM2.
*DISPLAY1-PARA.

DISPLAY 'THE FACTORIAL VALUE IS 1'.


Vsam file program
IDENTIFICATION DIVISION.
PROGRAM-ID. VSAMPGM.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO EMPFILE
ORGANIZATION IS INDEXED
ACCESS IS DYNAMIC
RECORD KEY IS E-NO
FILE STATUS IS WS-EMP-FILE.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE
LABEL RECORDS ARE STANDARD.
01 EMP-REC.
02 E-NO
PIC 9(4).
02 E-NAME
PIC X(20).
02 E-FILLER PIC X(74).
WORKING-STORAGE SECTION.
01 E-O-F
PIC X VALUE 'N'.
01 WS-EMP-REC.
02 WS-EMP-NO
PIC 9(4).
02 WS-EMP-NAME
PIC X(15).
02 WS-EMP-SAL
PIC 9(7).
02 WS-EMP-FILLER
PIC X(14).
01 WS-EMP-FILE
PIC 9(02).
PROCEDURE DIVISION.
000-BEGIN-PARA.
PERFORM 100-OPEN-PART.

PERFORM 200-ACCEPT-PART.
PERFORM 400-CLOSE-PART.
STOP RUN.
100-OPEN-PART.
OPEN I-O EMP-FILE.
200-ACCEPT-PART.
ACCEPT E-NO. DISPLAY 'PASSED:' E-NO.
*
ACCEPT E-NAME. DISPLAY 'PASSED:' E-NAME.
START EMP-FILE KEY EQUAL TO E-NO.
PERFORM UNTIL E-O-F = 'Y'
READ EMP-FILE NEXT AT END MOVE 'Y' TO E-O-F END-READ
DISPLAY 'RECORD FOUND: NAME IS ' E-NAME E-NO
END-PERFORM.
*
*
*
*
*
*
*

IF E-O-F= 'Y'
ACCEPT WS-EMP-NAME
DELETE EMP-FILE RECORD NOT INVALID KEY DISPLAY 'DELETED:'
DISPLAY 'FILE:' WS-EMP-FILE.
ELSE
DISPLAY 'RECORD FOUND: NAME IS ' E-NAME E-NO
END-IF.
400-CLOSE-PART.
CLOSE EMP-FILE.

Temp
//APTJJXXX JOB (TG5GGY),CLASS=X,MSGCLASS=Y,MSGLEVEL=(1,1),
//
NOTIFY=&SYSUID
//*
//GDGDEFN EXEC PGM=IDCAMS
//*
//SYSPRINT DD SYSOUT=*
//SYSIN
DD *
DELETE (APTJJ.TEST.VSAM)
DEFINE CLUSTER ( NAME(APTJJ.TEST.VSAM) MGMTCLAS (MC003208) CYLINDERS (20 10) RECORDSIZE (98 98) VOLUMES(*,*,*) KEYS (4 0) IMBED FREESPACE (20 20) -

REUSE SHAREOPTIONS(2

3)

) DATA (NAME(APTJJ.TEST.VSAM.DATA)) INDEX (NAME(APTJJ.TEST.VSAM.INDEX))


REPRO INDATASET('APTJJ.COBOL.INPUTA') OUTDATASET('APTJJ.TEST.VSAM')
/*
Compile/Run Jcls
For file
//APTJJXXX
//
//*
//COBCOMP
//COBCOMPL
//STEPLIB
//SYSIN
//SYSLIB
//SYSPRINT
//SYSLIN
//
//
//SYSUT1
//SYSUT2
//SYSUT3
//SYSUT4
//SYSUT5
//SYSUT6
//SYSUT7
//*
//LKED
//SYSLIB
//
//SYSPRINT
//SYSLIN
//SYSLMOD
//
//SYSUT1
//COBCOMP
//*
//STEP1
//
//*
//PERI
//STEPLIB
//*EMPFILE

JOB (TG5GGY),CLASS=X,MSGCLASS=Y,MSGLEVEL=(1,1),
NOTIFY=&SYSUID
PROC
EXEC PGM=IGYCRCTL,REGION=2048K
DD DSN=SYS2.IGY.SIGYCOMP,DISP=SHR
DD DSN=&SISIN(&MEM),DISP=SHR
DD DSN=APTJJ.COBOL.PROGRAMS,DISP=SHR
DD SYSOUT=*
DD DSN=&&LOADSET,UNIT=SYSDA,
DISP=(MOD,PASS),SPACE=(TRK,(3,3)),
DCB=(BLKSIZE=3200)
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
EXEC PGM=HEWL,COND=(4,LT,COBCOMPL),REGION=1024K
DD DSN=SYS2.CEE.SCEELKED,DISP=SHR
DD DSN=APTJJ.COBOL.LOAD,DISP=SHR
DD SYSOUT=*
DD DSN=&&LOADSET,DISP=(OLD,DELETE)
DD DSN=&LOAD(&MEM),SPACE=(TRK,(10,10,1)),
UNIT=SYSDA,DISP=(MOD,KEEP)
DD UNIT=SYSDA,SPACE=(TRK,(10,10))
PEND
EXEC COBCOMP,SISIN='APTJJ.COBOL.PROGRAMS',MEM=CALROOT,
LOAD='APTJJ.COBOL.LOAD'
EXEC PGM=CALROOT,REGION=1024K,COND=(4,LT)
DD DSN=APTJJ.COBOL.LOAD,DISP=SHR
DD DSN=APTJJ.TEST.VSAM,DISP=(SHR,CATLG,KEEP)

//*indd and outdd can be included here for input and output file
respe*/
//*
//SYSIN DD *
1500
/*
//SYSPRINT DD SYSOUT=*
//SYSUDUMB DD SYSOUT=*
2.

For subroutines

//APTJJXXX JOB (TG5GGY),CLASS=X,MSGCLASS=Y,MSGLEVEL=(1,1),


//
NOTIFY=&SYSUID
//*
//COBCOMP PROC
//COBCOMPL EXEC PGM=IGYCRCTL,REGION=2048K
//STEPLIB DD DSN=SYS2.IGY.SIGYCOMP,DISP=SHR
//SYSIN
DD DSN=&SISIN(&MEM),DISP=SHR
//SYSLIB
DD DSN=APTJJ.COBOL.PROGRAMS,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN
DD DSN=&&LOADSET,UNIT=SYSDA,
//
DISP=(MOD,PASS),SPACE=(TRK,(3,3)),
//
DCB=(BLKSIZE=3200)
//SYSUT1
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT2
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT3
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT4
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT5
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT6
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT7
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//*
//LKED
EXEC PGM=HEWL,COND=(8,LT,COBCOMPL),REGION=1024K
//SYSLIB
DD DSN=SYS2.CEE.SCEELKED,DISP=SHR
//
DD DSN=APTJJ.COBOL.LOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN
DD DSN=&&LOADSET,DISP=(OLD,DELETE)
//SYSLMOD DD DSN=&LOAD(&MEM),SPACE=(TRK,(10,10,1)),
//
UNIT=SYSDA,DISP=(MOD,PASS)
//SYSUT1
DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//COBCOMP PEND
//*
//STEP1
EXEC COBCOMP,SISIN='APTJJ.COBOL.PROGRAMS',MEM=CALROOT,
//
LOAD='APTJJ.COBOL.LOAD'
//*
//*ARIV
EXEC PGM=CALROOT,REGION=1024K,COND=(4,LT)
//*STEPLIB DD DSN=APTJJ.COBOL.LOAD,DISP=SHR
//*SYSIN DD *
//*5
//*
//*SYSPRINT DD SYSOUT=*

//*SYSUDUMB DD

SYSOUT=*

Main Program compile


//APTJJXXX JOB (TG5GGY),CLASS=X,MSGCLASS=Y,MSGLEVEL=(1,1),
//
NOTIFY=&SYSUID
//*
//COBCOMP PROC
//COBCOMPL EXEC PGM=IGYCRCTL,REGION=2048K
//STEPLIB DD DSN=SYS2.IGY.SIGYCOMP,DISP=SHR
//SYSIN
DD DSN=&SISIN(&MEM),DISP=SHR
//SYSLIB
DD DSN=APTJJ.COBOL.PROGRAMS,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN
DD DSN=&&LOADSET,UNIT=SYSDA,
//
DISP=(MOD,PASS),SPACE=(TRK,(3,3)),
//
DCB=(BLKSIZE=3200)
//SYSUT1
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT2
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT3
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT4
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT5
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT6
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT7
DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//*
//LKED
EXEC PGM=HEWL,COND=(8,LT,COBCOMPL),REGION=1024K
//SYSLIB
DD DSN=SYS2.CEE.SCEELKED,DISP=SHR
//
DD DSN=APTJJ.COBOL.LOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN
DD DSN=&&LOADSET,DISP=(OLD,DELETE)
//SYSLMOD DD DSN=&LOAD(&MEM),SPACE=(TRK,(10,10,1)),
//
UNIT=SYSDA,DISP=(MOD,PASS)
//SYSUT1
DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//COBCOMP PEND
//*
//STEP1
EXEC
COBCOMP,SISIN='APTJJ.COBOL.PROGRAMS',MEM=SUBROUT2,
//
LOAD='APTJJ.COBOL.LOAD'
//*
//ARIV
EXEC PGM=SUBROUT2,REGION=1024K,COND=(4,LT)
//STEPLIB DD DSN=APTJJ.COBOL.LOAD,DISP=SHR
//SYSIN DD *
/*
//SYSPRINT DD SYSOUT=*
//SYSUDUMB DD SYSOUT=*

Load Dataset Info

Data Set Name . . . . : APTJJ.COBOL.LOAD


General Data
Management class . .
Storage class . . .
Volume serial . . .
Device type . . . .
Data class . . . . .
Organization . . .
Record format . . .
Record length . . .
Block size . . . .
1st extent tracks .
Secondary tracks .
Data set name type

:
:
:
:
:
:
:
:
:
:
:
:

MC003212
SC000404
VKP504
3390
**None**
PO
U
0
32760
8
8
PDS

Creation date . . . : 2001/09/21


2001/10/18
Expiration date . . : ***None***

Current Allocation
Allocated tracks . : 29
Allocated extents . : 5
Maximum dir. blocks : 10
Current Utilization
Used tracks . . . .
Used extents . . .
Used dir. blocks .
Number of members .

Referenced date . . :

For SEQUENTIAL FILE INPUT/output DATASET should be a PS


For Random access file input/output file should be a pds

Project

APSJA.LPG.SRC(MAIN)
IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTFILE ASSIGN TO DD1
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD CUSTFILE
LABEL RECORDS ARE STANDARD.
01 CUSTREC.
05 CNUM
PIC 9(3).
05 CNAME
PIC X(10).
05 CAGE
PIC 9(2).
05 CADD
PIC X(20).
05 CLCDD
PIC 9(5).
05 CCOMP
PIC X.
05 CWLNO
PIC 9(2).
05 FILLER PIC X(37) VALUE ' '.
WORKING-STORAGE SECTION.

:
:
:
:

29
5
5
29

77 CUSNO PIC 999.


77 MAXWAIT PIC 99.
77 FS
PIC XX.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM START-PARA.
PERFORM WAIT-PARA.
PERFORM CUSTYPE-PARA.
START-PARA.
OPEN INPUT CUSTFILE.
READ CUSTFILE.
MOVE 000 TO CUSNO.
WAIT-PARA.
MOVE CWLNO TO MAXWAIT.
PERFORM UNTIL FS = 10
READ CUSTFILE
IF CWLNO > MAXWAIT
MOVE CWLNO TO MAXWAIT
END-IF
END-PERFORM.
CLOSE CUSTFILE.
OPEN I-O CUSTFILE.
CUSTYPE-PARA.
IF CUSNO EQUAL TO SPACES
DISPLAY "INVALID DATA"
ELSE
PERFORM UNTIL FS = 10
READ CUSTFILE
IF CNUM = CUSNO
GO TO CALLOLD
END-IF
IF FS = 10
GO TO CALLNEW
END-IF
END-PERFORM
END-IF.
CALLOLD.
CALL 'OLD1' USING CUSTREC MAXWAIT.
GO TO LAST-PARA.
CALLNEW.
CALL 'NEW1' USING CUSNO MAXWAIT.
GO TO LAST-PARA.
LAST-PARA.
CLOSE CUSTFILE.
STOP RUN.
************************** Bottom of Data *******

Newmain

IDENTIFICATION DIVISION.
PROGRAM-ID. NEWMAIN.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTFILE ASSIGN TO DD1
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD CUSTFILE
LABEL RECORDS ARE STANDARD.
01 CUSTREC.
05 CNUM
PIC 9(3).
05 CNAME
PIC X(10).
05 CAGE
PIC 9(2).
05 CADD
PIC X(20).
05 CLCDD
PIC 9(5).
05 CCOMP
PIC X.
05 CWLNO
PIC 9(2).
WORKING-STORAGE SECTION.
77 CTYPE PIC X.
77 INPNO PIC 999.
77 CUSNO PIC 999 VALUE 100.
77 MAXWAIT PIC 99 VALUE 0.
77 FS
PIC XX.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM START-PARA.
PERFORM CUSTYPE-PARA.
PERFORM PARA-END.
START-PARA.
OPEN INPUT CUSTFILE.
*
PERFORM UNTIL FS = '10'
READ-PARA.
READ CUSTFILE AT END GO TO CUSTYPE-PARA.
DISPLAY CUSTREC.
IF MAXWAIT < CWLNO
MOVE CWLNO TO MAXWAIT
END-IF.
IF CUSNO < CNUM
MOVE CNUM TO CUSNO
END-IF.
*
END-PERFORM.
GO TO READ-PARA.
CLOSE CUSTFILE.
CUSTYPE-PARA.
ACCEPT CTYPE.

IF CTYPE = 'O'
OPEN I-O CUSTFILE
ACCEPT INPNO
PERFORM RD-PARA
ELSE
CALL 'NEW1' USING CUSNO MAXWAIT
END-IF.
RD-PARA.
PERFORM UNTIL FS = '10'

READ CUSTFILE AT END GO TO PARA-END.


IF CNUM = INPNO
CALL 'OLD1' USING CUSTREC MAXWAIT
REWRITE CUSTREC
CLOSE CUSTFILE
GO TO PARA-END
ELSE
GO TO RD-PARA
END-IF.
*
END-PERFORM
PARA-END.
STOP RUN.

New Customer
IDENTIFICATION DIVISION.
PROGRAM-ID. NEW1.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTFILE ASSIGN TO DD1
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD CUSTFILE
LABEL RECORDS ARE STANDARD.
01 CUST-REC.
05 C-NUM PIC 9(3).
05 C-NAME PIC X(10).
05 C-AGE PIC 9(2).
05 C-ADD PIC X(20).
05 C-LCDD PIC 9(5).
05 C-COMP PIC X(1).
05 C-WLNO PIC 9(2).
05 FILLER PIC X(37) VALUE SPACES.
WORKING-STORAGE SECTION.
01 FS PIC XX.
01 WL PIC 99 VALUE 00.
LINKAGE SECTION.
77 NUM1 PIC 999.

77 MAXWL PIC 99.


PROCEDURE DIVISION USING NUM1 MAXWL.
WPARA.
OPEN EXTEND CUSTFILE.
ADD 1 TO NUM1.
MOVE NUM1 TO C-NUM.
MOVE 'OH!GOD' TO C-NAME.
MOVE 50 TO C-AGE.
MOVE 'XXXXXXXXXXXXXXXXXX ' TO C-ADD.
ACCEPT C-LCDD FROM DAY.
MOVE 'N' TO C-COMP.
CALL 'STOCK' USING WL MAXWL.
MOVE WL TO C-WLNO.
WRITE CUST-REC.
DISPLAY "FILE STATUS IN NEW1 IS = " FS.
DISPLAY CUST-REC.
CLOSE CUSTFILE.
EXIT PROGRAM.

OLD CUSTOMER
IDENTIFICATION DIVISION.
PROGRAM-ID. OLD1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT COMPFILE ASSIGN TO COMPDD.
DATA DIVISION.
FILE SECTION.
FD COMPFILE.
01 COMPREC.
05 OCNO PIC 999.
05 ODOC PIC 9(5).
05 OCS PIC X.
05 FILLER PIC X(71) VALUE SPACES.
WORKING-STORAGE SECTION.
01 NEWDAY PIC 999.
01 JDATE PIC 9(5).
01 OLDDAY PIC 999.
LINKAGE SECTION.
01 OCREC.
05 NUM1 PIC 999.
05 NAME1 PIC X(10).
05 AGE1 PIC 99.
05 ADD1 PIC X(20).
05 LCDD1 PIC 9(5).

05 COMP1 PIC X.
05 WLNO1 PIC 99.
05 FILLER PIC X(37) VALUE SPACES.
77 MAXWL PIC 99.
PROCEDURE DIVISION USING OCREC MAXWL.
OLD-START.
OPEN I-O COMPFILE.
PERFORM DISP-PARA.
PERFORM DATE-PARA.
PERFORM CPLT-PARA.
PERFORM OLD-END.
DISP-PARA.
DISPLAY "THE CUSTOMER DETAILS:".
DISPLAY OCREC.
DATE-PARA.
ACCEPT JDATE FROM DAY.
MOVE JDATE(3:3) TO NEWDAY.
MOVE LCDD1(3:3) TO OLDDAY.
SUBTRACT OLDDAY FROM NEWDAY GIVING NEWDAY.
IF NEWDAY <= 20
DISPLAY "EARLY ORDER..SORRY....SAVE LPG !!"
GO TO OLD-END
ELSE
MOVE JDATE TO LCDD1
CALL 'STOCK' USING WLNO1 MAXWL
END-IF.
CPLT-PARA.
READ COMPFILE AT END GO TO OLD-END.
IF NUM1 = OCNO
IF COMP1 = 'Y'
IF OCS = 'O'
DISPLAY "COMPLAINT TO ATTEND ON DELIVERY..."
MOVE 'C' TO OCS
REWRITE COMPREC
ELSE
MOVE 'N' TO COMP1
END-IF
ELSE
DISPLAY "NO COMPLAINTS..THANX !! SAVE LPG !!"
END-IF
ELSE GO TO CPLT-PARA
END-IF.
OLD-END.
CLOSE COMPFILE.
EXIT PROGRAM.

STOCK FILE

IDENTIFICATION DIVISION.
PROGRAM-ID. STOCK.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STOCFILE ASSIGN TO DDSTK.
DATA DIVISION.
FILE SECTION.
FD STOCFILE
LABEL RECORDS ARE STANDARD.
01 STOC-REC.
05 S-QTY PIC 9(5).
05 S-ORDER PIC 9(5).
05 FILLER PIC X(70) VALUE SPACES.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
77 WLNO PIC 99.
77 MAXWL PIC 99.
PROCEDURE DIVISION USING WLNO MAXWL.
STK-START.
OPEN I-O STOCFILE.
STK-PARA.
READ STOCFILE INTO STOC-REC.
IF S-QTY <= 20
ADD 1 MAXWL GIVING WLNO MAXWL
DISPLAY " ORDER 100 "
DISPLAY "OUT OF STOCK...YOUR WLNO IS " WLNO
ADD 80 TO S-QTY
MOVE 80 TO S-ORDER
ELSE
DISPLAY " THE CYLINDER HAS BEEN DELIVERED "
MOVE ZEROS TO WLNO S-ORDER
SUBTRACT 1 FROM S-QTY
END-IF.
STK-LAST.

REWRITE STOC-REC.
CLOSE STOCFILE.
EXIT PROGRAM.
JCL PROGRAMS(UTILITIES INCLUDED)
1.//APSJASS1 JOB (4R8C1D,TRNG),'MAHIMAI',
//
CLASS=X, MSGCLASS=Y,
//
NOTIFY=&SYSUID
//STEP01 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=APSJA.EDS.PS,
//
DISP=(OLD,KEEP,KEEP)
//SYSUT2 DD DSN=APSJA.EDS.PS3,
//
DISP=(NEW,CATLG,DELETE),
//
SPACE=(TRK,(2,2)),
//
DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)
//SYSIN DD DUMMY
//
2.
//APSJAS00 JOB (4R8C1D,TRNG),'MAHIMAI',
//
CLASS=X,MSGCLASS=Y,NOTIFY=&SYSUID
//STEP01 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=APSJA.UTIL.JCL,
//
DISP=(SHR,KEEP,KEEP)
//SYSUT2 DD DSN=APSJA.MAHIMAI.JCL2,
//
DISP=(NEW,KEEP,KEEP),
//
SPACE=(TRK,(2,2,2)),
//
DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)
//SYSIN DD *
COPY INDD=SYSUT1,
OUTDD=SYSUT2

SELECT MEMBER=(MEM1)
/*
//
3. //APSJASS2 JOB (4R8C1D,TRNG),'COPY PDS-PS DATASET',
//
CLASS=X,MSGCLASS=Y,
//
NOTIFY=&SYSUID
//STEP02 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=APSJA.EDS.PDS,
//
DISP=(OLD,KEEP,KEEP)
//SYSUT2 DD DSN=APSJA.EDS.PS4,
//
DISP=(NEW,CATLG,KEEP),
//
SPACE=(TRK,(4,4)),
//
DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)
//SYSIN DD *
COPY INDD=SYSUT1 OUTDD=SYSUT2
/*
//
4. //APSJAS00 JOB (4R8C1D,TRNG),'SORTING',
//
CLASS=X,MSGCLASS=Y,NOTIFY=&SYSUID
//STEP01 EXEC PGM=SORT
//SYSPRINT DD SYSOUT=*
//SORTIN DD DSN=APSJA.EDS.PDS(BEFSORT),
//
DISP=OLD
//SORTOUT DD DSN=APSJA.EDS.PDS(AFTSORT),
//
DISP=OLD
//SORTWK01 DD UNIT=PERMDA,
//
SPACE=(CYL,(1,1),RLSE)
//SORTWK02 DD UNIT=PERMDA,
//
SPACE=(CYL,(1,1),RLSE)
//SYSIN DD *
SORT FIELDS(1,5,CH,A)
/*
//

5. //APSJASS1 JOB (4R8C1D,TRNG),'MAHIMAI',


//
CLASS=X, MSGCLASS=Y,
//
NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE GDG(NAME(APSJA.EDS.SORT),
LIMIT(10),
NOEMPTY,
SCRATCH)
//
6.
//APSJAAAA JOB (4R8C1D,TRNG),'CREATING A DATASET',
//
CLASS=X,NOTIFY=&SYSUID,
//
MSGCLASS=Y
//STEP1 EXEC PGM=IEFBR14
//FILE1 DD DSN=APSJA.MAHIMAI.TEMPW.JCL,
//
DISP=(OLD,DELETE,DELETE),
//
UNIT=PERMDA,
//
SPACE=(TRK,(2,2,2)),
//
DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//FILE2 DD DSN=APSJA.MAHIMAI.TEMPL.JCL,
//
DISP=(OLD,DELETE,DELETE),
//
UNIT=PERMDA,
//
SPACE=(TRK,(2,2,2)),
//
DCB=(RECFM=FB,LRECL=80,BLKSIZE=800)
//

Vsam

You might also like