COBOL Programming
COBOL Programming
2
Topics Covered
Introduction to COBOL
Program Structure
Data Types
Coding Format
Programming Divisions
Programming Syntax
Input/Output Processing
String Handling
Report Generation
3
Objectives
To Understand
The Features of COBOL
COBOL Programming Syntax
Condition Statements
Modes of File Processing
How to Call other Programs
Report Generation
4
COBOL LANGUAGE
6
SOME COBOL FEATURES
VOLUMINOUS DATA PROCESSING
More complex mathematical manipulations involving large
volumes of data
PRINCIPLES OF MODULAR DESIGN
Inherent Structured programming principles makes the
program modular.
7
SOME COBOL FEATURES
I/O OPERATIONS ARE EASILY DESIGNNATED
where the placement of input and output definitions are known.
SERVES BUSINESS FUNCTIONS
Programs are compiled and an object program is created for
execution.
8
COBOL PROGRAM STRUCTURE
PROGRAM
DIVISIONS
SECTIONS
PARAGRAPHS
SENTENCES
STATEMENTS
WORDS
9
COBOL WORDS
RESERVED WORDS
These are the Cobol verbs for specific functions can not be
used as user defined data names.
e.g: TYPE, CR, DR, BLANK, SPACE, ZERO etc.
10
COBOL WORDS
USER DEFINED WORDS
-The word/Name can be anything adhering to the prescribed
standards and naming conventions.
-Other than Reserved words.
MAX 30 CHARACTERS
A-Z
0-9
HYPHEN which may not appear as first or last character
11
COBOL DATA
LITERALS (CONSTANTS)
DATA-NAMES (VARIABLES)
12
LITERALS
13
DATA NAMES (IDENTIFIERS)
3 TYPES OF DATA NAMES
ALPHANUMERIC
Max 160 characters, Defined with PIC X.
NUMERIC
Max 18 digits
Defined with PIC 9 (S for Sign V for decimal)
S and V are implicit
ALPHABETIC
Max 160 digits, can contain only space & alphabets
Defined with PIC A
14
COBOL Coding Format
16
COBOL CODING FORMAT
COLUMNS 1-6
Ignored by the compiler
1-3 page number and 4-6 line number
COLUMN 7
comment *
continuation -
page break /
debug D
17
COLUMNS 8 - 11
Area A
Division names, Section names,Paragraph names
COLUMNS 12 - 72
Area B
COBOL code is written here
COLUMNS 73-80
Ignored by compiler
18
COBOL CODING FORMAT
There are Divisions, sections, paragraphs, sentences,
statements and words in Cobol.
Division, section names are predefined and same names
are to be coded.
Paragraph names can be any name as per the TCS
prescribed standards or as per the standards provided by
the client.
19
COBOL CODING FORMAT
|--A--|------------------------B---------------------------------------------
1…...8.10……………………………………………………….72…….80
DIVISIONS.
SECTIONS
PARAGRAPHS
SENTENCES CONSISTING OF STATEMENTS AND
WORDS
20
COBOL CODING FORMAT
Identification Division will provide the information to identify the
program-id, author, dates and the purpose and function of the
program.
21
DIVISIONS OF COBOL
DIVISIONS
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISION
PROCEDURE DIVISION
22
IDENTIFICATION DIVISION
PROGRAM-ID. PROGRAM-NAME.
[AUTHOR. Comment entry]
[INSTALLATION. Comment entry]
[DATE-WRITTEN. Comment entry]
DATE-COMPILED. Comment entry]
SECURITY. Comment entry]
23
ENVIRONMENT DIVISION
2 SECTIONS
CONFIGURATION SECTION
INPUT-OUTPUT SECTION
CONFIGURATION SECTION
SOURCE-COMPUTER
OBJECT-COMPUTER.
SPECIAL-NAMES.
24
INPUT-OUTPUT SECTION
CONSISTS OF 2 SECTIONS
FILE-CONTROL.
Names each file : All files consisting of inputs, outputs
are to be defined here.
Identifies file medium
I-O CONTROL.
Specifies file location on multiple file reel
shared memory areas
25
INPUT-OUTPUT SECTION
FILE-CONTROL.
Syntax:
Select infil assign to infile.
Logical File Name : File name referred throughout the program for open,
read, write and close. (infil)
Physical File Name: File name referred in JCL and Shell Scripts to link to
the logical file name in the program.(infile)
26
INPUT-OUTPUT SECTION
Disk Storage
Select EMPFILE assign to EMPFILE
FD EMPFILE.
01 EMPREC.
05 EMPNO Central Storage
05 EMPNAME
05 EMPDESGCODE EMPREC (RECORD)
05 EMPBASIC
Field Field Field Field Field
05 EMPPROJ
27
FILE CONTROL PARA
SELECT logical file name ASSIGN TO ddname
ORGANIZATION IS SEQUENTIAL
INDEXED
RELATIVE
ACCESS IS SEQUENTIAL
RANDOM
DYNAMIC
RECORD KEY IS data-name-1
ALTERNATE KEY IS data-name-2
FILE STATUS IS file-stat
28
FILE CONTROL PARA
29
FILE CONTROL PARA
FILE-STATUS
Used to check the following:
1. To check the existence of a file while open, close.
2. To check the existence of a record.
3. To check the invalid keys
30
DATA DIVISION
FILE SECTION
WORKING-STORAGE SECTION
LINKAGE SECTION
31
DATA DIVISION
LEVEL STRUCTURE
Inherent in the logical record
Each basic subdivision is an elementary item
Elementary items may form part of one or more groups
Level numbers : 01 - 49
: 66 77 88
32
DATA DIVISION
PICTURE CLAUSE
Picture clause is used to specify the type of field, its size, and its form.
PIC used in Cobol is the abbreviated form of PICTURE.
PIC or PICTURE is a reserved word.
PIC or PICTURE can not be used as a user defined data name.
PIC is followed by type and length of field in brackets
33
DATA DIVISION
PICTURE CLAUSE
Specified for every elementary item
Numeric Data item - 9 P S V ( )
Alphabetic data item - A B ( )
Alphanumeric data item - X ( )
34
PICTURE CLAUSES
EXAMPLES :
9(4)V99 = numeric value with decimals.
X(20) = alphanumeric values
A(10) = aliphatic values
S9(4)V99 = signed field
B(4) = number of blanks
35
FILE SECTION
The rules for defining a file structure.
File description is denoted by FD followed by the logical file name.
Record name will have to be at 01 level. The name defined at 01 level represents
the entire record.
The segments or fields of record are defined with levels which is greater than 01. (In
general it will be multiples of 5.)
Values can not be assigned to any field in the file lay out. Exception is 88 level
which is explained in the subsequent PPT.
36
FILE SECTION
Example for defining file layout.
FD EMPMAS.
01 EMPREC.
05 EMP-NO PIC 9(06).
05 EMP-NAME.
10 FIRST-NAME PIC X(15).
10 MIDDLE-NAME PIC X(20).
10 LAST-NAME PIC X(20).
(Naming standards are not followed here)
37
FILE SECTION
FD ENTRY FOR EACH FILE
FOLLOWED BY RECORD DESCRIPTION
(begins in 01 level)
File record naming convention :
ex: XNN-TTTT-REC
XNN : First 3 characters of file name
TTTT: Name of record ( 1 to 22 characters)
REC : Should appear as it is
DO1-CONTROL-REC
P09-PRINT-REC
38
WORKING-STORAGE SECTION
Examples:
05 ws-basic pic 9(05) value 20000.
05 ws-code pic x(05) value ‘CD2000’.
05 ws-variable-pay pic 9(05) value zero.
40
EDITING CHARACTERS
41
CONDITION NAMES
APPEARS IN LEVEL 88.
CONSIDER A DATA ITEM SALARY
01 SALARY PIC 9(5)V99 .
TO CHECK FOR VALIDITY,
IF SALARY > 8000 AND SALARY < 25000
CAN BE USED.
USING CONDITION-NAMES
01 SALARY PIC 9(5)V99.
88 C-VALID-SALARY VALUE 8000 THRU 25000
IF C-VALID-SALARY CAN BE USED.
42
CONDITION NAMES - CONTINUED
43
REDEFINES
THIS CLAUSE ALLOWS THE SAME AREA OF MEMORY TO BE REFERENCED
BY MORE THAN ONE DATA-NAME WITH DIFFERENT FORMATS AND
SIZES.
<LEVEL> <DATA-NAME-1>
REDEFINES <DATA-NAME-2>
THIS CLAUSE MUST IMMEDIATELY FOLLOW <DATA-NAME-1>
LEVEL NOS OF <NAME-1> AND <NAME-2> MUST BE IDENTICAL AND NOT
66 OR 88.
44
REDEFINES
AN EXAMPLE:
01 DAYS-IN-WEEK.
05 DAY-NAMES PIC X(21) VALUE “SUNMONTUE...”.
05 W-NAMES REDEFINES DAY-NAMES.
10 W-DAYS PIC X(3) OCCURS 7 TIMES.
The days can be accessed as W-DAYS(1),W-DAYS(2),ETC.
45
REDEFINES
NOTE 1: AT 01 LEVEL, REDEFINES & OCCURS CANNOT BE COMBINED.
NOTE 4: REMEMBER THAT BOTH WILL HAVE SAME VALUE UNLESS NEW
VALUES ARE ASSIGNED BEFORE MOVING TO OTHER ENTITY.
46
USAGE CLAUSE
FORMS OF INTERNAL REPRESENTATION
DISPLAY
COMP
COMP1
COMP2
COMP3
SYNTAX:
USAGE IS DISPLAY
COMP-1
47
USAGE CLAUSE CONTINUED
COMP
MAINTAINED IN BINARY FORM
NO.OF 9’S LENGTH IN BYTES
1 TO 4 2
5 TO 9 4
10 TO 18 8
COMP-1
ONE WORD IN FLOATING POINT FORMAT
48
USAGE CLAUSE CONTINUED
COMP-2
Two words in floating point form
no pic clause for COMP-1 & COMP-2.
COMP-3
4 binary digits representing single decimal digit
Each digit and sign occupy 1/2 byte
49
LINKAGE SECTION
Requires only when other programs are called to perform specific functions.
Ensure that the program-id in called program is same as that of the program
name called from main program.
50
LINKAGE SECTION
Example:
working-storage section.
-----
linkage section
01 x pic 99.
01 y pic 99.
01 z pic 99.
Note: Please see CALL verb for further details.
51
PROCEDURE DIVISION
STRUCTURE
SECTION - composed of paragraphs
PARAGRAPH - composed of sentences (identified by
Para name).
Eg., 0100-READ-INPUT
SENTENCE-Composed of one or more statements and
terminated by Period.
52
COBOL VERBS
CLASSIFICATION
INPUT OUTPUT
ARITHMETIC
PROCEDURE BRANCHING
DATA MOVEMENT
ENDING
CONDITIONAL
TABLE HANDLING
COMPILER DIRECTING
STRING-HANDLING
OTHERS
53
INPUT OUTPUT VERBS
ACCEPT
USED TO READ DATA
SYNTAX
ACCEPT identifier FROM mnemonic-name
DATE
TIME
DAY
54
DISPLAY
USED TO DISPLAY DATA
SYNTAX
DISPLAY identifier-1 ,identifier2
literal-1 ,literal2
55
ARITHMERIC VERBS
OPERATIONS :
ADD
SUBTRACT
MULTIPLY
DIVIDE
COMPUTE
56
ADD VERB
ADD A TO B
ADD A TO B ROUNDED
ADD A TO B C D GIVING E F G
ADD A B C TO D
57
MULTIPLY,DIVIDE,SUBTRACT
MULTIPLY
MULTIPLY A BY B GIVING C ON SIZE
ERROR PERFORM ERROR-PARA
DIVIDE
DIVIDE A BY B GIVING C REMAINDER D
SUBTRACT
Also has many formats. Similar to Add.
COMPUTE
COMPUTE PRICE = RATE * QTY - DISCOUNT
58
BRANCHING
PERFORM
GO TO (Unconditional branching)
EXIT (to exit from a paragraph)
59
PERFORM
60
IN-LINE PERFORM
To sum a series for eg., 1+2+3+4+5+….+N
MOVE 0 TO SUM-OF-DIGITS
MOVE 1 TO COUNTER
PERFORM UNTIL COUNTER > N
ADD COUNTER TO SUM-OF-DIGITS
ADD 1 TO COUNTER
END-PERFORM.
61
PERFORM
PERFORM PROCESS-DETAIL
WITH TEST AFTER UNTIL C-FILE-END
PERFORM PROCESS-DETAIL
WITH TEST BEFORE UNTIL C-FILE-END
62
DATA TRANSFER
63
DATA MOVEMENT VERBS
MOVE id-1 To id-2 id-3 id-n
lit-1
MOVE CORR G-1 TO G-2
64
CATEGORY OF RECEIVING DATA ITEM
CATEGORY OF ALPHABETIC ALPHANUMERIC NUMERIC
SENDING DATA ALPHANUMERIC INTEGER;
ITEM EDITED NUMERIC
NONINTEGER
NUMERIC
EDITED
ALPHABETIC YES YES NO
ALPHANUMERIC YES YES NO
ALPHANUMERIC NO YES NO
EDITED
NUMERIC INTEGER NO YES YES
NUMERIC NO NO YES
NONINTEGER
NUMERIC EDITED NO YES NO
65
ENDING
STOP RUN
RETURNS CONTROLTO OPERATING SYSTEM
STOP lit-1
TEMPORARILY HALTS A PROGRAM
EXIT PROGRAM
RETURNS FROM A SUB PROGRAM TO A MAIN
PROGRAM
66
CONDITIONAL EXPRESSIONS
RELATION
RELATIONAL OPERATORS
< = >= <= NOT =
CLASS
NUMERIC ALPHABETIC
SIGN
POSITIVE NEGATIVE ZERO
67
ABBREVIATED COMPOUND CONDITIONS
68
TABLE HANDLING
Eliminates need for separate entries for related data.
OCCURS clause defines tables of contiguous data items
Can be specified for elementary & group items but not
for 01 77 66 88 levels.
ONE DIMENSION TABLE
01 STUDENT-REC.
05 STUDENT-NAME PIC X(10).
05 STUDENT-MARKS OCCURS 10 TIMES PIC 999V99.
MARKS CAN BE ACCESSED AS STUDENT-MARKS(1) ETC.,
69
TABLE HANDLING
ONE DIMENSION TABLE
01 STUDENT-REC.
05 STUDENT-NAME PIC X(10).
05 STUDENT-MARKS OCCURS 10 TIMES PIC 999V99.
MARKS CAN BE ACCESSED AS STUDENT-MARKS(1) ETC.,
TWO DIMENSION TABLE
01 STUDENT-REC.
05 STUDENT-NAME PIC X(10).
05 STUDENT-MARKS OCCURS 10 TIMES.
10 MARKS-INT-EXT OCCURS 10 TIMES.
15 MARKS-INT PIC 99.
15 MARKS-EXT PIC 99.
MARKS CAN BE ACCESSED AS STUDENT-MARKS(1,1) ETC.,
70
OCCURS SYNTAX
FORMAT-1
OCCURS integer-2 TIMES {ASCENDING/DESCENDING}
KEY IS data-name-1 [data-name-2] …
[INDEXED BY index-name-1 [,index-name-2] …..
FORMAT-2
OCCURS integer-1 to integer-2 TIMES
DEPENDING ON data-name-1 {ASCENDING/DESCENDING}
KEY IS [data-name-2] …
[INDEXED BY index-name-1 [,index-name-2] …..
71
INDEX
INDEX IS A STACK VARIABLE
MUST BE INITIALISED BEFORE IT CAN BE USED- BY
USING SET VERB
EG.,
SET INDEX-1 TO 5
SET INDEX-1 UP BY 1
SET INDEX-1 DOWN BY 1
72
SEARCH
To search a table element
Two search options
SEARCH VARYING
SEARCH ALL - may be carried out of sorted tables.
73
SEARCH
SEARCH id-1 VARYING {index-1/ id-2}
AT END statement-1
WHEN Condition-1 stmt-2
SEARCH ALL id-1
AT END stmt-1
WHEN Condition-1 NEXT SENTENCE
74
SEARCH
77 NAME PIC X(20)
01 SAVE-BNK-ACCT.
05 ACCT-TBL OCCURS 400 TIMES INDEXED BY A1.
10 ACCT-NO PIC 9(6)
10 ACCT-NAME PIC X(20)
10 ACCT-AMT PIC 9(6)V99.
SET A1 TO 1.
SEARCH ACCT-TBL AT END DISPLAY “NOT FOUND”
WHEN NAME=ACCT-NAME(A1)
DISPLAY “NAME FOUND”
DISPLAY ACCT-NO “ “ ACCT-AMT.
75
SEARCH ALL
01 EMP-TABLE.
05 E-NAME-NO OCCURS 40 TIMES
ASCENDING KEY IS E-NAME
INDEXED BY INDX-1.
10 E-NAME PIC X(10).
10 E-NO PIC 9(10).
76
COMPILER DIRECTING
COPY VERB
SYNTAX : COPY “FILE”
77
Input/Output Processing
79
OPEN
MODES OF OPEN
INPUT
OUTPUT
I-O
EXTEND
80
OPEN
MODES OF OPEN
When files are opened in input mode, records can only be
read
81
OPEN, CLOSE VERBS
OPEN <mode> LOGICAL-FILE-NAME
CLOSE LOGICAL-FILE-NAME
82
HOW TO CHOOSE THE MODE?
OPERATION SEQUENTIAL INDEXED
83
READ
FORMAT-1
READ file-name AT END imperative statement
FORMAT-2
READ file-name INVALID KEY imperative statement
FORMAT-3
READ file-name NEXT RECORD INTO identifier
AT END imperative statement
84
READ
FORMAT-1
READ EMPFILE AT END MOVE ‘Y’ TO EOF.
85
READ
FORMAT-1
READ EMPFILE AT END MOVE ‘Y’ TO EOF.
EOF to be defined in working-storage section assigning value ‘N’.
FORMAT-2
READ EMPMAS INVALID KEY GO TO PARA-EXIT
FORMAT-3
READ file-name NEXT RECORD INTO identifier
AT END imperative statement
86
WRITE
FORMAT-1
WRITE record-name [FROM id-1]
{BEFORE/AFTER} ADVANCING {int-1, LINE,PAGE}
FORMAT-2
WRITE record-name INVALID KEY imperative-statement
87
REWRITE
REWRITE record-name INVALID KEY imperative statement
88
DELETE
DELETE file-name RECORD
INVALID KEY imperative statement
89
START
ENABLES POSITIONING OF POINTER AT A SPECIFIED POINT IN AN
INDEXED FILE
90
STRING HANDLING
INSPECT
Provides ability to tally, replace characters in a Data item
FORMAT-1
INSPECT id-1 TALLYING id-2 FOR
{ALL id-3/LEADING lit-1/CHARACTERS} {BEFORE/AFTER}
INITIAL {id-4/lit-2}
91
INSPECT …contd
MY-STRING X(20) CHANDRA BABU NAIDU
TALLY-COUNT 9(2) VALUE 08
INSPECT Y TALLYING CNT FOR ALL “L” REPLACING LEADING “A” BY “E” AFTER
INITIAL “L”
Y(BEFORE) LATTER Y(AFTER) LETTER CNT 1
92
STRING
01 NAME.
05 F-NAME PIC X(10).
05 M-NAME PIC X(10).
05 S-NAME PIC X(20).
01 OUT-REC PIC X(60).
01 A PIC X VALUE SPACES.
STRING S-NAME DELIMITED BY SPACES
A DELIMITED BY SIZE
F-NAME DELIMITED BY SPACES
A DELIMITED BY SIZE
M-NAME DELIMITED BY SPACES
INTO OUT-REC.
93
UNSTRING
01 FIELD-1 PIC X(15).
01 FIELD-2 PIC X(15).
01 FIELD-3 PIC X(15).
01 CMP-NAME PIC X(25)
VALUE IS “TATA CONSULTANCY SERVICES”.
UNSTRING CMP-NAME DELIMITED BY “ “
INTO FIELD-1 FIELD-2 FIELD-3.
FIELD CONTENTS
FIELD-1 TATA
FIELD-2 CONSULTANCY
FIELD-3 SERVICES
94
OTHER VERBS
SORT
RELEASE
RETURN
CALL
IF AND NESTED IF
EVALUATE
95
SORT VERB
SYNTAX
SORT SORT-FILE {ASCENDING/DESCENDING} KEY
data-name-1
[USING input-file/INPUT PROCEDURE IS
section-1 thru section-2]
[GIVING output-file/OUTPUT PROCEDURE IS
section-3 thru section-4]
96
RELEASE
Transfers records to the initial phase of a sort operation
SYNTAX
RELEASE record-name [FROM identifier]
97
RETURN
98
CALL
SYNTAX
CALL {id-1/lit-1} [USING data-name-1 [,data-name-2]…]
[ ;ON OVERFLOW imp-stmt]
PROCEDURE DIVISION
[USING data-name-1 [,data-name-2]…]
LINKAGE SECTION
01 level entries
EXIT PROGRAM
99
CALL
Calling Program:
IDENTIFICATION DIVISION.
PROGRAM-ID. TRNG1.
------------------------------
------------------------------
DATA DIVISION.
----
01 A PIC 99.
01 B PIC 99.
01 A-PLUS-B PIC 999.
01 STATUS-CODE PIC X(4).
----
PROCEDURE DIVISION.
CALL ‘TRNG2’ USING A, B, A-PLUS-B, STATUS-CODE.
IF STATUS-CODE = ‘O.K’
PERFORM A-PARA
ELSE
PERFORM B-PARA
END-IF.
100
CALL
Called Program:
IDENTIFICATION DIVISION.
PROGRAM-ID. TRNG2.
------------------------------
------------------------------
DATA DIVISION.
----
LINKAGE SECTION
01 A PIC 99.
01 B PIC 99.
01 A-PLUS-B PIC 999.
01 STATUS-CODE PIC X(4).
PROCEDURE DIVISION USING A, B, A-PLUS-B, STATUS-CODE.
COMPUTE-PARA.
IF A IS NUMERIC AND B IS NUMERIC
COMPUTE A-PLUS-B = A + B
MOVE ‘O.K’ TO STATUS-CODE
ELSE
MOVE SPACES TO STATUS-CODE
END-IF.
CALL-END-PARA.
EXIT PROGRAM.
101
IF AND ELSE
The most important verb in any language.
Used for conditional checks
Example:
if designation-code > 06
perform process-para1
thru process-para1-exit
else
perform process-para2
thru process-para2-exit
end-if
102
IF AND ELSE
Note1: Every If expression may have else to provide
alternate action for false condition.
103
Conditional statement-flow
false true
condition
Statement-2 Statement-1
Next sentence
104
NESTED IF
Points to Note:
Combination of several ‘IF and ELSE’ statements.
First ELSE pertains to the preceding if and next else pertains to the IF just
preceding the inner IF.
105
NESTED IF
IF---IF---IF---ELSE---ELSE---ELSE---
106
EVALUATE
107
EVALUATE
Example 1:
EVALUATE DESG-CODE
WHEN 01 PERFORM 01-PARA
WHEN 02 PERFORM 02-PARA
WHEN 03 PERFORM 03-PARA
WHEN OTHER PERFORM ERROR-PARA
END-EVALUATE
108
EVALUATE
Example 2:
EVALUATE TRUE
WHEN 01-ADD PERFORM 01-PARA
WHEN 02-ADD PERFORM 02-PARA
WHEN 03-ADD PERFORM 03-PARA
WHEN OTHER PERFORM ERROR-PARA
END-AVALUATE
Note: 01-ADD, 02-ADD and 03-ADD are 88 level condition names.
109
EVALUATE
Example 3:
EVALUATE DESG-CODE AND BASIC-PAY
WHEN 01 THRU 03 ALSO 10000 THRU
15000 PERFORM 0103-PARA
WHEN 04 THRU 06 ALSO 15001 THRU
20000 PERFORM 0406-PARA
WHEN OTHER PERFORM ERROR-PARA
END-AVALUATE
110
REPORT GENERATION
Requirements
1. input data.
2. formatting the report.
Input is however obtained from input files. Formatting a print
report in Cobol needs special attention.
111
REPORT GENERATION
112
Summary
Introduction to
COBOL Features
Programming Divisions
File processing
113
References
114