2. - COBOL is used for developing typically file-oriented BUSINESS
applications.
- Suitable for batch processing applications like PAYROLL, TELEPHONE/
ELECTRICITY BILLING,FINANCIAL ACCOUNTING etc
- Batch processing is also known as periodical processing
-With CICS as front end, COBOL is suitable for ONLINE applications
like RAILWAY RESERVATION SYSTEM, ONLINE BANKING etc
- COBOL is not suitable for developing system programs like OS, drivers
- COBOL is one of the oldest computer languages in use
(it was developed around the end of the 1950s).
COBOL is an acronym which stands for
COMMON BUSINESS ORIENTED LANGUAGE
3. - Higher Level Language
- English Like Language
- Self documenting Language
- File handling capability
- Easy to write
- Available across several platforms
- Largely Machine independent
ADVANTAGES OF COBOL
4. COBOL was Developed In 1959 By A Group Called CODASYL
(COnference on DAta SYstems Language)
Later ANSI standards were introduced
COBOL – 68
COBOL – 74
COBOL – 85
COBOL – 2003
( Enterprise COBOL )
5. FUTURE OF COBOL
COBOL will remain an important language in future also
Billions of lines of COBOL source are currently in use with
millions added each year.
Since 1000s of COBOL programmers retire every year
there is a continuous requirement of TRAINED man power
in COBOL for Maintenance and Development of COBOL
based applications.
7. COBOL 74 STD.
OS/VS COBOL VS COBOL II COBOL/370 COBOL FOR MVS & VM
COBOL 85 STD.
DBCS,
IMPROVED CICS
INTERFACE,
31 BIT
ADDRESSING ,
SAA SUPPORT,
ETC.
COBOL 74 STD.
COBOL 85 STD.
DBCS,
IMPROVED
CICS
INTERFACE,
31 BIT
ADDRESSING,
SAA SUPPORT,
ETC.
COBOL 74 STD. COBOL 74 STD.
COBOL 85 STD.
DBCS,
IMPROVED
CICS
INTERFACE,
31 BIT
ADDRESSING,
SAA SUPPORT,
ETC.
INTRINSIC
FUNCTIONS,
SUPPORT FOR
LANGUAGE
ENVIRONMENT
INTRINSIC
FUNCTIONS,
SUPPORT FOR
LANGUAGE
ENVIRONMENT
EXTENSIONS
FOR OOCOBOL,
C INTEROPERABLITY
IBM's latest host COBOL compiler
8. - For writing a COBOL program you have to be provided with
program specification by your BUSINESS ANALYST
- ANALYST studies a customer’s requirement for an
application package and prepares an over all design and
finally comes out with a detailed specification for every
program to be developed under an application
- The specification will contain the details of INPUT/OUTPUT file
descriptions, OUTPUT report layouts and descriptions,
Processing specifications, Calculation methods etc.
- A set of Test data is required to ensure that the programs
work as intended by the designer and customer
9. A COBOL PROGRAM IS DIVIDED INTO
– DIVISION
– SECTION
– PARAGRAPH
– SENTENCE
– STATEMENT
– WORDS
– CHARACTERS
COBOL WORDS ARE TWO CATEGORIES,
RESERVED WORDS AND USER DEFINED WORDS.
USER DEFINED WORDS CAN BE VARIABLES DECLARED IN DATA
DIVISION AND PARAGRAPH NAMES IN PROCEDURE DIVISION,
WHICH WILL SEE LATER
10. COBOL RESERVED WORDS
THE COBOL LANGUAGE HAS OVER 300 WORDS WHICH
HAVE A SPECIAL SIGNIFICANCE TO THE COMPILER AND
ARE CALLED RESERVED WORDS
USER DEFINED VARIBLES MUST NOT COINCIDE WITH
RESERVED WORDS
EXAMPLE :-
DIVISION, SECTION, STORAGE, ADD, ACCEPT, STOP,
COMMA, DIVIDE, DYNAMIC, LINKAGE , READ , WRITE
ETC.,
12. MARGIN A IS TO BE USED FOR WRITING
DIVISION NAMES
SECTION NAMES
PARAGRAPH NAMES
01 77 LEVEL ENTRIES
FD ENTRIES
MARGIN B IS TO BE USED FOR WRITING
02-49 66 88 LEVEL ENTRIES
SELECT STATEMENTS
PROCEDURE DIVISION STATEMENTS AND SENTENCES
13. Four Divisions of COBOL.
DIVISIONS/SECTIONS identify various parts of a COBOL program
File declarations, descriptions, temporary variables, processing logic,
communication with other programs etc are handled by various
DIVISONS/SECTIONS of a COBOL program
There are four DIVISIONS in all.
u IDENTIFICATION DIVISION. ( MANDATORY )
u ENVIRONMENT DIVISION. ( OPTIONAL )
u DATA DIVISION. ( OPTIONAL )
u PROCEDURE DIVISION. ( MANDATORY )
14. Functions of the four divisions.
The IDENTIFICATION DIVISION is used to specify the name of
program and programmer.
The ENVIRONMENT DIVISION is used to define the data sets
that are used by a program and links the data sets to the
corresponding DD names of JCL
As the name suggests, the DATA DIVISION is used to provide
the complete descriptions of data sets including record
description and field description and working storage variables.
15. Functions of the four divisions.
The PROCEDURE DIVISION contains executable instructions
( statements containing VERBS ) to process the data contained in
DATA DIVISION.
COBOL provides a means for specifying sequence, selection
and iteration constructs to code your processing logic.
16. COBOL coding rules
COBOL coding lines start in Margin A or Margin B
DIVISION, SECTION, PARAGRAPH names start in Margin A
FD entries,01,77 level entries, Procedure division paragraph
names start in Margin A.
Where as STATEMENTS, 02-49, 66, 88 level entries start in
Margin B.
Again, Procedure division sentences, statements start in
Margin B.
17. A SAMPLE COBOL program. ( just see the
structure - don’t worry about the details)
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
AUTHOR. SRG.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NUM1 PIC 9 VALUE ZEROS.
77 NUM2 PIC 9 VALUE ZEROS.
77 RESULT PIC 99 VALUE ZEROS.
77 WS-NAME PIC X(10) VALUE ‘MAPLES’.
PROCEDURE DIVISION.
CALC-RTN1.
ACCEPT NUM1.
ACCEPT NUM2.
MULTIPLY NUM1 BY NUM2 GIVING RESULT.
DISPLAY "RESULT IS = ", RESULT.
STOP RUN.
19. contd…………
WORKING-STORAGE SECTION.
77 WS-CTR PIC 9(5) VALUE 123.
01 WS-REC.
02 WS-EC PIC 9(4).
PROCEDURE DIVISION.
DISPLAY …………..
OPEN ………..
RTN1.
READ …………AT END CLOSE ……
NOT AT END
MOVE ……….
COMPUTE ……………
ADD ……….
WRITE …………
GO TO RTN1
END-READ.
20. IDENTIFICATION DIVISION
- IT IS THE SMALLEST AND LEAST SIGNIFICANT DIVISION
- IT IS USED TO IDENTIFY THE PROGRAM AND AUTHOR
- IT DOES NOT HAVE SECTIONS
- IT CONTAINS ONLY PARAGRAPHS
IDENTIFICATION DIVISION
PROGRAM-ID. TEST123.
AUTHOR. RAJ.
INSTALLATION. MAPLES.
DATE-WRITTEN. 21-08-1999.
DATE-COMPILED. 23-08-1999.
- PROGRAM-ID IS THE ONLY REQUIRED PARAGRAPH FOR THIS DIVISION.
- Program name CAN BE 1 – 30 CHARACTERS WITH ATLEAST ONE ALPHABET.
BUT MAINFRAME ACCEPTS ONLY 8 CHAR PROGRAM NAME
- ALL OTHER ENTRIES ARE OPTIONAL AND FOR DOCUMENTATION ONLY
21. ENVIRONMENT DIVISION
- THIS FOLLOWS THE IDENTIFICATION DIVISION.
- THIS IS THE MOST HARDWARE DEPENDENT DIVISION.
- THE COMPUTER AND OTHER DEVICE REQUIREMENTS ARE
DESCRIBED IN THIS SECTION.
- IT HAS 2 SECTIONS
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE COMPUTER. S390. (where the program is compiled)
OBJECT COMPUTER. S390. (where the program is executed)
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT employee-master ASSIGN TO DD1.
organization is sequential.
I-O-CONTROL.
SPECIAL-NAMES.
CURRENCY SIGN IS literal-1.
DECIMAL POINT IS COMMA.
22. DATA DIVISION
- Has TWO sections FILE SECTION and WORKING-STORAGE SECTION
- DESCRIBES THE CHARACTERICSTICS of FILES used in the program
LIKE REC SIZE, BLOCK SIZE, FORMAT ETC…
- IT CONTIANS RECORD STRUCTURE AND FIELD DESCRIPTION
entries.
- All the above are declared in FILE SECTION
- DATA DIVISION has working-storage section to declare temporary
memory variables used in the program.
- In essence, the contents of FILE SECTION variables are stored in the
devices like hard disk/printer where as the contents of WORKING-
STORAGE section are in RAM buffers and are lost once the program is
terminated
23. DATA DIVISION
DATA DIVISION HAS SIX SECTIONS AS PER STANDARDS
BUT MAINFRAME COBOL HAS ONLY FOUR SECTIONS
• FILE SECTION.
• WORKING-STORAGE SECTION.
• LINKAGE SECTION.
• LOCAL-STORAGE SECTION.
• REPORT SECTION
• SCREEN SECTION.
The last 2 sections are not supported in
IBM MAINFRAME COBOL
SCREEN SECTION REQUIREMENTS ARE TAKEN CARE BY THE OLTP
SOFTWARE CICS
24. The DATA DIVISION has the following structure
DATA DIVISION.
FILE SECTION.
……….. FILE SECTION ENTRIES …………..
WORKING-STORAGE SECTION.
……TEMPORARY MEMEORY VARIABLES, GROUP AND ELEMENTARY ITEMS..
EXAMPLE:
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
AUTHOR. SRG.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Num1 PIC 9 VALUE ZEROS.
01 Num2 PIC 9 VALUE ZEROS.
01 Result PIC 99 VALUE ZEROS.
DATA DIVISION Syntax
25. VARIABLES
Let us start with working- storage section
VARIABLES can be declared in WS section
Variables are also known as data items or identifiers
A data item starts with a level number followed by name, PIC
clause and optionally VALUE and other clauses
A variable name can be maximum of 30 chars consisting of
A-Z,0-9,hiphen
No other special characters, no blanks are allowed.
Must have at least one Alphabet
26. DATA ITEMS / VARIABLES
- DATA ITEMS CAN BE ELEMENTARY OR GROUP ITEMS
- ELEMENTARY ITEM IS ONE THAT CANNOT BE FURTHER SUBDIVIDED
- A SET OF RELATED ELEMENTARY ITEMS IS CALLED A GROUP ITEM
01 LEVEL IS USED FOR DECLARING GROUP ITEMS
- ELEMENTARY ITEMS WHICH ARE NOT PART OF ANY GROUP IS CALLED
INDEPENDENT ELEMENTARY ITEMS
- Generally Independent elementary items are declared in WS
- with level number 77
- Independent elementary items can also be declared with level number
01 from COBOL-85 version
27. Contd….
- 01 AND 77 LEVEL ITEM NAMES MUST BE UNIQUE
- 01 LEVEL IS ALSO USED FOR DECLARING GROUP ITEMS ,
IN WHICH CASE IT MAY HAVE SUB LEVEL ITEMS WITH LEVEL
NUMBERS 02-49
- 02-49 LEVEL DATA ITEMS MAY have duplicates
( DUPLICATE ITEMS CAN BE QUALIFIED --- LATER EXPLAINED)
- 01 77 levels are used in MARGIN-A where as other levels in MARGIN-B
28. COBOL Data Types
There are THREE basic data types in COBOL
Numeric, Alphabetic, Alphanumeric
Data type is important because it determines how the data has to be stored
inside the variable and what operations are valid on such variables
The contents in ALPHANUMERIC items are left justified
The contents in NUMERIC items are right justified
COBOL’s weakness is, it is poor in type Checking and enforcing.
29. How to declare Variables in WS?
Variables are declared with a level number, user defined name and PIC clause
WORKING-STORAGE SECTION.
77 WS-NAME PIC X(15) VALUE “MAPLES”. MAPLES---------
77 WS-CTR1 PIC 9(6) VALUE 1234. 001234
77 WS-CTR2 PIC 9(4) VALUE ZERO.
77 WS-LINE PIC X(10) VALUE ALL “-”. ------------
77 WS-ADDR PIC X(10) VALUE SPACES.
77 WS-AMT PIC 9(4)v9(3) value 12.56 0012560
Level number 77 indicates the item is independent data item
PIC means PICTURE Clause indicating the type and size of the item
Type can be X A 9 indicating alphanumeric, alphabetic, Numeric items
30. Contd…
VALUE indicates the initial contents of the variable
The constants are three types in COBOL
STRING CONSTANT, NUMERIC CONSTANT, FIGURATIVE CONSTANT
Though the initial values are called constants, the contents can be
modified late in the program
The max size of X and A is 32000 chars without value clause and 160 with
VALUE clause
For numeric data item max allowed is 18 digits but mainframe COBOL
allows up to 31 digits
( you have to set the compiler option PARM.COBOL=ARITH(EXTEND)
32. Figurative Constants
COBOL provides its special type of constants called Figurative Constants.
SPACE or SPACES
ZERO or ZEROS or ZEROES equivalent to 0
QUOTE or QUOTES = "
HIGH-VALUE or HIGH-VALUES = Max Value
LOW-VALUE or LOW-VALUES = Min Value
ALL literal = filling with character
33. The PROCEDURE DIVISION.
The PROCEDURE DIVISION is where all the data described in the DATA
DIVISION is processed .
It contains the logic to process the data .
The PROCEDURE DIVISION is hierarchical in structure and consists of
Sections, Paragraphs, Sentences and Statements.
There must be at least one paragraph, sentence and statement in the
PROCEDURE DIVISION.
The paragraph and section names in this division are chosen by the
programmer meaningfully.
34. PROCEDURE DIVISION
- THIS IS THE fourth division of a COBOL PROGRAM.
- IT CONTAINS SECTIONS/ PARAGRAPHS DEFINED BY USERS
- PARAGRAPHS CONTAIN ( INSTRUCTIONS ) STATEMENTS TO BE EXECUTED
- STATEMENTS ARE USED TO PROCESS THE DATA ITEMS
- A STATEMENT STARTS WITH A VERB LIKE OPEN, ADD, MOVE, DISPLAY ETC
- A SET OF COBOL STATEMENTS CAN BE GROUPED USING A PARAGRAPH NAME
• PARAGRAPH MUST BEGIN IN MARGIN A
• MUST NOT HAVE MORE THAN 30 CHARACTERS.
• MUST NOT BE A COBOL RESERVED WORD.
• MUST NOT HAVE ANY SPECIAL CHARACTERS EXCEPT HYPHEN (-)
• MUST BE generally UNIQUE.
35. SAMPLE PROCEDURE DIVISION
PROCEDURE DIVISION.
MAIN-PARA.
ADD A TO B.
MOVE B TO F.
.
.
EXIT-PARA.
STOP RUN.
-------------------------------------------------------------------------------------------------------------------------
MINIMUM COBOL RPOGRAM
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE2.
PROCEDURE DIVISION.
DISPLAY “HELLO WORLD".
STOP RUN.
36. FIRST PROCEDURE DIVISION STATEMENT
DISPLAY STATEMENT WILL SHOW THE CONTENTS OF A VARIABLE OR
LITERAL IN THE OUTPUT SPOOL (SYSOUT )
IDENTIFICATION DIVISION.
PROGRAM-ID. PRG1.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 WS-NAME PIC X(10) VALUE ‘MAPLES’.
PROCEDURE DIVISION.
DISPLAY “HALLO” WS-NAME.
STOP RUN.
Note: DISPLAY statement IN MAIN FRAME COBOL CANNOT control the
LINE or COLUMN position of the SCREEN
37. You have to use multiple display statements to show the contents on
separate lines
IDENTIFICATION DIVISION.
PROGRAM-ID. PRG1.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 WS-NAME PIC X(10) VALUE ‘MAPLES’.
PROCEDURE DIVISION.
DISPLAY “HALLO”
DISPLAY WS-NAME.
DISPLAY “HOW ARE YOU?”.
STOP RUN.
38. Procedure to compile and execute a COBOL program
using TWO JCLs COMPLINK and RUNJCL
1. Allocate two PDS MAPLE06.COBOL.PDS and MAPLE06.LOAD.PDS
2. Enter your COBOL program as a member of PDS
Ex: MAPLE06.COBOL.PDS( PRG1)
3. Create a JCL named COMPLINK as follows, in MAPLE06.COBOL.PDS
and submit
//MAPLE06R JOB NOTIFY=MAPLE06,CLASS=M
// JCLLIB ORDER=(ZOS.PROCLIB)
//S1 EXEC PROC=IGYWCL,MEM=PRG1
//COBOL.SYSIN DD DSN=MAPLE06.COBOL.PDS(&MEM),DISP=SHR
//LKED.SYSLMOD DD DSN=MAPLE06.LOAD.PDS(&MEM),DISP=SHR
//
--- THIS JCL IS USED TO COMPILE YOUR COBOL PROGRAM PRG1, CHECK FOR SYNTAX
ERRORS AND SAVE THE LOAD MODULE IN MAPLE06.LOAD.PDS
--- IGYWCL IS A CATALOGED PROCEDURE GIVEN BY IBM
39. How to execute your load module?
4. CREATE A JCL NAMED RUNJCL AS FOLLOWS IN MAPLE06.COBOL.PDS
AND SUBMIT
//MAPLE06R JOB NOTIFY=&SYSUID,CLASS=M
//JOBLIB DD DSN=MAPLE06.LOAD.PDS,DISP=SHR
//S1 EXEC PGM=PRG1
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
1234 KRISHNA TNAGAR ADMIN ………….
/*
//
==================================================================
NOTE: You can also use the procedure IGYWCLG which can compile, link and
execute with a single JCL
//GO.SYSIN DD * is to be used for giving the input
40. ACCEPT
ACCEPT statement reads a line from SYSIN DD * of RUNJCL
and stores the data in the variable. Data should be given in INTERNAL FORMAT
IDENTIFICATION DIVISION.
PROGRAM-ID. PRG1.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 WS-NAME PIC X(10).
77 WS-NUM PIC 9(5).
PROCEDURE DIVISION.
ACCEPT WS-NAME.
DISPLAY WS-NAME.
ACCEPT WS-NUM.
DISPLAY WS-NUM.
STOP RUN.
IMPORTANT: INPUT DATA IS TO BE GIVEN THRU SYSIN DD * IN RUNJCL
Giving data thru SYSIN DD * is different from VALUE CLAUSE
For numeric item input should be given as: 00123 NOT AS 123
41. EXAMPLE: 1
IDENTIFICATION DIVISION.
PROGRAM-ID. EX1.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NAME PIC X(15).
01 AGE PIC 9(2).
PROCEDURE DIVISION.
PARA-1.
ACCEPT NAME.
ACCEPT AGE.
DISPLAY “HELLO " NAME.
DISPLAY “YOUR AGE IS " AGE.
STOP RUN.
42. ACCEPT variable
FROM {DATE/TIME/DAY/DAY-OF-WEEK } [ YYYYMMDD ].
DISPLAY VAR1/LIT1 VAR2/LIT2 .. .. .. .. ..
DATE etc… are COBOL reserved data-items
ACCEPT can be followed by only one data-item
43. You have to use multiple display statements to show the contents on
separate lines
IDENTIFICATION DIVISION.
PROGRAM-ID. PRG1.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 WS-NAME PIC X(10).
PROCEDURE DIVISION.
ACCEPT WS-NAME
DISPLAY “HALLO”
DISPLAY WS-NAME.
DISPLAY “HOW ARE YOU?”.
STOP RUN.
44. You have to use multiple display statements to show the contents on
separate lines
IDENTIFICATION DIVISION.
PROGRAM-ID. PRG1.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NUMB PIC 9(3)V9(3) VALUE 12.34.
PROCEDURE DIVISION.
ACCEPT NUMB
DISPLAY NUMB.
STOP RUN.
IMPORTANT:
THRU SYSIN DD * YOU HAVE TO GIVE INPUT AS 012340 WITHOUT DOT
45. ACCEPT can be used to capture system registers like DATE, TIME etc.
IDENTIFICATION DIVISION.
PROGRAM-ID. PRG1.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 WS-DATE PIC 9(8).
PROCEDURE DIVISION.
ACCEPT WS-DATE
FROM DATE YYYYMMDD.
DISPLAY WS-DATE.
STOP RUN.
46. ACCEPT variations
ACCEPT WS-NAME
ACCEPT WS-DATE FROM DATE
ACCEPT WS-DATE FROM DATE YYYYMMDD.
ACCEPT WS-TIME FROM TIME
ACCEPT WS-DAY FROM DAY
ACCEPT WS-DAY FROM DAY YYYYDDD
ACCEPT WS-DWK FROM DAY-OF-WEEK