Programming in COBOL85 For IBM Mainframe System 390
Programming in COBOL-85 For IBM Mainframe System 390 Jyothi Sridhar Kini E&R, Infosys Mail-id: Jyothis@infosys. com Phone: 52179
Course Plan Ø Day 1: Introduction to COBOL Ø Day 2: Cobol Language constructs Ø Day 3: Sequential File Handling Ø Day 4: Index sequential file handling, COPY, CALL Ø Day 5, 6, 7: Working on project
Pre-requisites w Programming Fundamentals. w MVS Operating system and its subsystem TSO. w Job Control Language to submit jobs to MVS. w Navigating through ISPF.
Topics beyond the scope § Report writer feature of COBOL
References TITLE AUTHOR PUBLISHER COBOL Programming M. K. Roy and D. Ghosh Dastidar Tata Mc. Graw Hill COBOL Programming Nancy Stern and Robert Stern John Wiley & Sons Inc Programming with Newcomer and Structured Lawrence COBOL Mc. Graw Hill Books (Schaum Series) Any Time reference IBM manuals
Agenda for Day 1 v Evolution and Features of COBOL. v General Coding and Format rules. v Language Fundamentals. v Input and Output verbs. v Arithmetic verbs. v Design and development of simple COBOL programs
History of COBOL w Early years. w ANS Versions of COBOL. w Future of COBOL. http: //www. home. swbell. net/mck 9/cobol. html http: //www. infogoal. com/cbdhome. html
History of COBOL w 1960 – COBOL (Common Business Oriented Language) initial specifications presented by CODASYL (Conference on Data System Languages) w 1964 – revised to make COBOL more flexible w 1968 – ANSI (American National Standards Institute) developed American National Standard (ANS) COBOL – Standardized form – Attempted to overcome incompatibilities of different versions of COBOL w 1974 – ANSI published revised version of (ANS) COBOL – Business applications needed to manipulate character as well as numeric data – String operations added
History of COBOL w 1985 – ANSI published another revised version of COBOL – Designed to take advantage of structured programming techniques – Logic errors reduced with END statements – Case statement reduced nested IFs – Less English-like – Maintained readability and business orientation – Compatible with previous versions
COBOL w COBOL is an acronym which stands for COmmon Business Oriented Language. w The name indicates the target area of COBOL applications. w COBOL is used for developing business, typically file-oriented, applications. w It is not designed for writing systems programs. You would not develop an operating system or a compiler using COBOL. w COBOL is one of the oldest computer languages in use (it was developed in late 1950 s).
CODSYL
Nature of COBOL w Business Oriented Language. w Standard Language. w Robust Language. w Structured Programming Language. w English-like Language.
Structure of a COBOL program PROGRAM SENTENCES DIVISIONS STATEMENTS SECTIONS PARAGRAPHS RESERVED WORDS USER DEFINED WORDS CHARACTERS
COBOL Character set w Alphabets (Both upper and lower case) w Digits (0 to 9) w Special characters b - + * / = $ , ; . “ ‘ < > ( )
The COBOL DIVISIONs DIVISIONS are used to identify the principal components of the program text. There are four DIVISIONS in all. w IDENTIFICATION DIVISION. w ENVIRONMENT DIVISION. // Optional w DATA DIVISION. w PROCEDURE DIVISION. // Optional
IDENTIFICATION DIVISION w The purpose of the IDENTIFICATION DIVISION is to provide information about the program to the programmer and to the compiler. w Most of the entries in the IDENTIFICATION DIVISION are directed at the programmer and are treated by the compiler as comments.
IDENTIFICATION DIVISION. . . w An exception to this is the PROGRAMID clause. Every COBOL program must have a PROGRAM-ID. It is used to enable the compiler to identify the program. w There are several other informational paragraphs in the IDENTIFICATION DIVISION but we will ignore them for the moment.
IDENTIFICATION DIVISION. . . w The IDENTIFICATION DIVISION has the following structure IDENTIFICATION DIVISION. PROGRAM-ID. PGM-NAME. [AUTHOR. Your. Name. ] IDENTIFICATION DIVISION. PROGRAM-ID. FIRSTPGM. AUTHOR. Michael Coughlan.
IDENTIFICATION DIVISION. . . The keywords IDENTIFICATION DIVISION represent the division header and signal the commencement of the program text. The paragraph name PROGRAM-ID is a keyword. It must be specified immediately after the division header. The program name can be up to 8 characters long on MF(30 in case of windows).
IDENTIFICATION DIVISION. . . Is used to identify the program to the computer. Is the least significant DIVISION of a COBOL program. IDENTIFICATION DIVISION. PROGRAM-ID. Member-name. ( Max 8 chars, letters & digits only ) AUTHOR. / Optional entry INSTALLATION. / Optional entry DATE-WRITTEN. / Optional entry DATE-COMPILED. / Optional entry
ENVIRONMENT DIVISION w The ENVIRONMENT DIVISION is totally optional unless you want to use files / specify special devices to the compiler in ENVIRONMENT DIVISION. your program. CONFIGURATION SECTION. w Is. SOURCE-COMPUTER. used to indicate the Specific Computers VAX-6410. OBJECT-COMPUTER. IBM-ES 9000. used to develop and execute the program. INPUT-OUTPUT SECTION. The general format of ED is FILE-CONTROL. SELECT EMPL-FILE ASSIGN TO DISC. .
The DATA DIVISION w The DATA DIVISION is used to describe most of the data that a program processes. w The DATA DIVISION has two main sections– FILE SECTION. – WORKING-STORAGE SECTION. w The FILE SECTION is used to describe most of the data that is sent to, or comes from, the computer’s peripherals. w The WORKING-STORAGE SECTION is used to describe the general variables used in the program.
DATA DIVISION Is used to describe the structure of the fields, records, files and temporary variables used for calculations. DATA DIVISION. FILE SECTION. FD filename. . . . SD sortfile. . . . WORKING-STORAGE SECTION. . . . / Optional entry
PROCEDURE DIVISION w Is the most significant DIVISION of a COBOL program. w Includes statements and sentences necessary for reading input, processing it and writing the output. These are the instructions that are executed by the computer at the RUN TIME.
PROCEDURE DIVISION… w The PROCEDURE DIVISION is where all the data described in the DATA DIVISION is processed and produced desired results. It is here that the programmer describes his algorithm. w The PROCEDURE DIVISION is hierarchical in structure and consists of Sections, Paragraphs, Sentences and Statements.
PROCEDURE DIVISION. . . w Only the Section is optional. There must be at least one paragraph, sentence and statement in the PROCEDURE DIVISION. w In the PROCEDURE DIVISION, paragraph and section names are chosen by the programmer. w The names used should reflect the processing being done in the paragraph or section.
Sections w A SECTION is a block of code made up of one or more paragraphs. w A SECTION begins with the section-name and ends where next section name is encountered or where the program text ends. w A SECTION name consists of a name devised by the programmer or defined by the language followed by the word SECTION followed by a full stop. – U 0000 -SELECT-USER-RECORDS SECTION. – FILE SECTION.
Paragraphs w Each section consists of one or more paragraphs. w A PARAGRAPH is a block of code made up of one or more sentences. w A PARAGRAPH begins with the paragraphname and ends with the next paragraph or section name or the end of the program text. w The paragraph-name consists of a name devised by the programmer or defined by the language followed by a full stop. – P 0000 -PRINT-FINAL-TOTALS. – PROGRAM-ID.
Sentences and Statements w A PARAGRAPH consists of one or more sentences. w A SENTENCE consists of one or more statements and is terminated by a full stop. – MOVE. 21 TO VAT-RATE COMPUTE VAT-AMOUNT = PRODUCT-COST * VAT-RATE. – DISPLAY "Enter Name " WITH NO ADVANCING ACCEPT STUDENT-NAME DISPLAY "Name Entered was " STUDENT-NAME. w A STATEMENT consists of a COBOL verb and an operand or operands. – SUBTRACT T-TAX FROM GROSS-PAY GIVING NET-PAY – READ STUDENT-FILE AT END SET END-OF-FILE TO TRUE END-READ
First COBOL program IDENTIFICATION DIVISION. PROGRAM-ID. FIRSTPGM. AUTHOR. Michael Coughlan. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM-1 PIC 9(001) VALUE ZEROS. 01 WS-NUM-2 PIC 9(001) VALUE ZEROS. 01 WS-RESULT-1 PIC 9(002) VALUE ZEROS. PROCEDURE DIVISION. A 0000 -MAIN-PARA. ACCEPT WS-NUM-1 ACCEPT WS-NUM-2 MULTIPLY WS-NUM-1 BY WS-NUM-2 GIVING WS-RESULT-1 DISPLAY "Result is = ", WS-RESULT-1 STOP RUN.
The minimum COBOL program IDENTIFICATION DIVISION. PROGRAM-ID. SMALLPGM. PROCEDURE DIVISION. A 0000 -DISPLAY-PARA. DISPLAY "I did it. " STOP RUN. What is the model we have used to describe the TOP-DOWN COBOL program structure?
COBOL coding rules w Almost all COBOL compilers treat a line of COBOL code as if it contained two distinct areas. These are known as; Area A and Area B w When a COBOL compiler recognizes these two areas, all division, section, paragraph names, FD entries and 01 level entries must start in Area A. All other sentences/statements must start in Area B. w Area A is four characters wide and is followed by Area B.
COBOL coding rules. . . w In some COBOL compilers these coding restrictions are removed. – For example In Microfocus COBOL compiler directive $ SET SOURCEFORMAT"FREE" frees us from all formatting restrictions. $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. Program. Fragment. * This is a comment. It starts * with an asterisk in column 1
COBOL coding sheet Column numbers 1 2 3 4 5 6 7 8 9 10 11 12 Column numbers * Area A / Area B 72 80 I D E N T I F I C A T I O N A R E A
COBOL coding rules w Each line is considered to be made up of 80 columns. w Columns 1 to 6 are reserved for line numbers. w Column 7 is an indicator column and has special meaning to the compiler. Asterisk ( * ) indicates comments Hyphen ( - ) indicates continuation Slash ( / ) indicates form feed
COBOL coding rules w Columns 8 to 11 are called Area A. All COBOL DIVISIONs, SECTIONs, paragraphs and some special entries must begin in Area A. w Columns 12 to 72 are called Area B. All COBOL statements must begin in Area B. w Columns 73 to 80 are identification area.
COBOL data description w COBOL uses what could be described as a “declaration by example” strategy. w In effect, the programmer provides the system with an example, or template, or PICTURE of what the data item looks like. w From the “picture” the system derives the information necessary to allocate it.
Basic data types w Alphabetic w Numeric w Alphanumeric w Edited alphanumeric
Literals w Literals are symbols whose value does not change in a program. w There are 3 types of literals namely (1) Numeric literals. (2) Non-numeric literals. (3) Figurative constants.
Literals Numeric literals w Are formed using digits only. w May include a sign which must be the extreme left character. w There must not be any blank between the sign and the first digit. w May include a decimal point which can not be the right most character. w Can have at most 18 digits.
Literals Non-numeric literals w Are used display headings or messages. w Are a sequence of characters (except quotes) from the COBOL character set enclosed within quotes. w May contain up to 160 characters including spaces.
Literals Figurative constants Meaning ZERO(S) or ZEROES Represents the value 0, one or more depending on the context SPACE(S) Represents one or more spaces HIGH-VALUE(S) Represents the highest value LOW-VALUE(S) Represents the lowest value QUOTE(S) Represents single or double quotes
Data names w Are named memory locations. w Must be described in the DATA DIVISION before they can be used in the PROCEDURE DIVISION. w Can be of elementary or group type. w Can be subscripted. w Are user defined words.
Rules forming User-defined words w Are used to form section, paragraph and data names. w Can be at most 30 characters in length. w Only alphabets, digits and hyphen are allowed. w Blanks are not allowed. w May not begin or end with a hyphen. w Should not be a COBOL reserved word.
Description of data names w All the data names used in the PROCEDURE DIVISION must be described in the DATA DIVISION. w The description of a data name is done with the aid of (1) Level number (2) PICTURE clause (3) VALUE clause
Description of data names Level number w Is used to specify the data hierarchy. Level Number 01 02 to 49 Purpose Record description and independent items Fields within records and sub items 66 RENAMES clause 77 Independent items 88 Condition names
Description of data names PICTURE clause w Is used to specify the following (1) The data type (2) The storage requirement. w Can be abbreviated as PIC. w Can be abbreviated in case of recurring symbols. w Is used only elementary items.
Description of data names PICTURE clause Code Meaning 9 Numeric A Alphabetic X Alphanumeric V Decimal Point S Sign bit
Description of data names VALUE clause w Is used to assign an initial value to a elementary data item. w The initial value can be numeric literal, non- numeric literal or figurative constant. w Is an optional clause.
Group and elementary items w In COBOL the term “group item” is used to describe a data item which has been further subdivided. – A Group item is declared using a level number and a data name. It cannot have a picture clause. – Where a group item is the highest item in a data hierarchy it is referred to as a record and uses the level number 01.
Group and elementary items. . w The term “elementary item” is used to describe data items which are atomic, that is, not further subdivided. w An elementary item declaration consists of; • a level number, • a data name • picture clause. An elementary item must have a picture clause. w Every group or elementary item declaration must be followed by a full stop.
PICTURE Clauses for Group Items w Picture clauses are NOT specified for ‘group’ data items because the size of a group item is the sum of the sizes of its subordinate, elementary items and its type is always assumed to be PIC X. w The type of a group items is always assumed to be PIC X, because group items may have several different data items and types subordinate to them. w An X picture is the only one which could support such collections.
Group Items/Records - Example WORKING-STORAGE SECTION. 01 STUDENT-DETAILS PIC X(026). STUDENT-DETAILS H E N N E S S Y R M 9 2 3 0 1 6 5 L M 5 1 0 5 5 0 F
Group Items/Records - Example WORKING-STORAGE SECTION. 01 STUDENT-DETAILS. 02 STUDENT-NAME 02 STUDENT-ID 02 COURSE-CODE 02 GRANT 02 GENDER PIC PIC PIC X(010). 9(007). X(004). 9(004). X(001). STUDENT-DETAILS H EN N E S S Y RM 9 2 3 0 1 6 5 L M 5 1 0 5 5 0 F STUDENT-NAME STUDENT-ID COURSE-CODE GRANT GENDER
Group Items/Records WORKING-STORAGE SECTION. 01 STUDENT-DETAILS. 02 STUDENT-NAME. 03 SURNAME 03 INITIALS 02 STUDENT-ID 02 COURSE-CODE 02 GRANT 02 GENDER PIC PIC PIC X(008). X(002). 9(007). X(004). 9(004). X(001). STUDENT-DETAILS H EN N E S S Y RM 9 2 3 0 1 6 5 L M 5 1 0 5 5 0 F STUDENT-NAME SURNAME STUDENT-ID INITIALS COURSE-CODE GRANT GENDER
LEVEL Numbers & DATA hierarchy 01 w In COBOL, level numbers are used to decompose a structure into it’s constituent parts. w In this hierarchical structure the higher the level number, the lower the item is in the hierarchy. At the lowest level the data is completely atomic. w The level numbers 01 through 49 are general level numbers, but there also special level numbers such as 66, 77 and 88. w In a hierarchical data description what is important STUDENT-DETAILS. 01 STUDENT-DETAILS. is the relationship of the level numbers to one 02 STUDENT-NAME. 05 STUDENT-NAME. 03 SURNAME PIC X(008). 10 SURNAME PIC X(008). 03 another, INITIALS PICthe X(002). 10 numbers INITIALS PIC X(002). not actual level used. 02 STUDENT-ID PIC 9(007). 05 STUDENT-ID PIC 9(007). 02 02 02 COURSE-CODE GRANT GENDER PIC X(004). PIC 9(004). PIC X(001). 05 05 05 COURSE-CODE GRANT GENDER PIC X(004). PIC 9(004). PIC X(001).
Description of data names Example DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-REGNO PIC X(5). 01 WS-NAME. 05 WS-FIRST-NAME PIC A(15). 05 WS-MID-NAME PIC A(15). 05 WS-LAST-NAME PIC A(10). 01 WS-AGE PIC 99 V 99. 01 WS-SCHOLARSHIP PIC 9(4) VALUE 1000.
Break
Edited picture symbols Edit symbol Meaning Z Zero suppression * Check protection , Comma insertion - Minus sign insertion + Plus or minus sign insertion
Edited picture symbols Edit symbol $ Meaning Dollar sign insertion CR Credit symbol DB Debit symbol B Blank insertion / Slash insertion . Decimal point insertion BLANK WHEN ZERO Blank insertion when the value is zero.
PROCEDURE DIVISION Verbs w Data movement verb. w Arithmetic Verbs. w Input / Output Verbs. w Sequence control verbs. w File handling verbs.
Input / Output Verbs w ACCEPT Verb Syntax ACCEPT identifier [ FROM { DATE, DAY, TIME, mnemonic-name }]. Examples (1) ACCEPT NUMBER-1. (2) ACCEPT TODAY-DATE FROM DATE.
Input / Output Verbs w DISPLAY Verb Syntax DISPLAY { identifier-1, literal-1 } , . . . Examples (1) DISPLAY “The sum is ” SUM.
Arithmetic Verbs ADD SUBTRACT MULTIPLY DIVIDE COMPUTE
ADD Verb Syntax-1 ADD { identifier-1, literal-1 } [ , identifier-2, literal -2 ]. . . TO identifier-3 [ , identifier-4 ]. . . Syntax-2 ADD { identifier-1, literal-1 } { identifier-2, literal-2 } [ identifier-3, literal-3 ] GIVING identifier-4. . .
ADD Verb Examples (1) ADD NUM-1 TO NUM-2. (2) ADD NUM-1, NUM-2 TO NUM-3. (3) ADD 12, NUM-1, NUM-2 TO NUM-3, NUM-4. (4) ADD NUM-1, NUM-2 GIVING NUM-3. (5) ADD 12, NUM-1 GIVING NUM-2, NUM-3.
ADD Examples Before After ADD Cash TO Total. 3 1000 3 1003 ADD Cash, 20 TO Total, Wage. 3 1000 100 3 1023 123 ADD Cash, Total GIVING Result. 3 1000 0015 3 1000 1003 ADD Males TO Females GIVING Total. Students. 1500 0625 1234 1500 0625 2125
SUBTRACT Verb Syntax SUBTRACT { identifier-1, literal-1 } [ identifier-2, literal-2 ]. . . FROM identifier-3 [ , identifier-4 ] [ , GIVING identifier-5 [ , identifier-6 ]. . . ]
SUBTRACT Verb Examples (1) SUBTRACT NUM-1 FROM NUM-2. (2) SUBTRACT NUM-1, NUM-2 FROM NUM-3. (3) SUBTRACT 5, NUM-1 FROM NUM-2, NUM-3. (4) SUBTRACT 12 FROM NUM-1 GIVING NUM 2. (5) SUBTRACT NUM-1 FROM NUM-2 GIVING NUM-3.
SUBTRACT Examples Before After SUBTRACT Tax FROM Gross. Pay, Total. 120 4000 9120 3880 9000 SUBTRACT Tax, 80 FROM Total. 100 480 100 300 SUBTRACT Tax FROM Gross. Pay GIVING Net. Pay. 750 1000 0012 750 1000 0250
MULTIPLY Verb Syntax MULTIPLY { identifier-1, literal-1 } BY identifier-2 [ identifier-3 ]. . . [ , GIVING identifier-4 [ , identifier-5 ]. . . ]
MULTIPLY Verb Examples (1) MULTIPLY NUM-1 BY NUM-2. (2) MULTIPLY NUM-1 BY NUM-2 GIVING NUM-3. (3) MULTIPLY 5 BY NUM-1 GIVING NUM-2. (4) MULTIPLY NUM-1 BY NUM-2 GIVING NUM-4, NUM-5.
DIVIDE Verb Syntax-1 DIVIDE { identifier-1, literal-1 } INTO identifier-2 [ , identifier-2 ]. . . [ GIVING identifier-4 [ , identifier-5 ]. . Syntax-2 DIVIDE { identifier-1, literal-1 } BY { identifier-2, literal-2 } GIVING identifier-3 [ , identifier-4 ].
DIVIDE Verb Syntax-3 DIVIDE { identifier-1, literal-1 } { INTO , BY } { identifier-2, literal-2 } GIVING identifier-3 REMAINDER identifier-4.
DIVIDE Verb Examples (1) DIVIDE 5 INTO NUM-1. (2) DIVIDE 6 INTO NUM-1 GIVING NUM-2, NUM-3. (3) DIVIDE NUM-1 BY 3 GIVING NUM-2, NUM-3. (4) DIVIDE NUM-1 BY NUM-2 GIVING NUM-3. (5) DIVIDE NUM-1 BY NUM-2 GIVING NUM-3 REMAINDER NUM-4.
MULTIPLY and DIVIDE MULTIPLY Subs BY Members GIVING Total. Subs ON SIZE ERROR DISPLAY "Total. Subs too small" END-MULTIPLY. Before After Subs Members Total. Subs 15. 50 100 0123. 45 15. 50 100 1550. 00 MULTIPLY 10 BY Magnitude, Size. 355 125 3550 1250 DIVIDE Total BY Members GIVING Average ROUNDED. 9234. 55 100 1234. 56 9234. 55 100 92. 35
ROUNDED Option Syntax Arithmetic statement [ ROUNDED ]. Examples (1) ADD NUM-1, NUM-2, NUM-3 GIVING NUM-4 ROUNDED. (2) DIVIDE NUM-1 BY NUM-2 GIVING NUM-3 ROUNDED.
The ROUNDED option Receiving Field Actual Result Truncated Result Rounded Result PIC 9(3)V 9. 123. 25 123. 2 123. 3 PIC 9(3). 123. 25 123 u The ROUNDED option takes effect when, after decimal point alignment, the result calculated must be truncated on the right hand side. u The option adds 1 to the receiving item when the leftmost truncated digit has an absolute value of 5 or greater.
ON SIZE ERROR Option Syntax Arithmetic statement [ON SIZE ERROR imperative statement. . . ] Examples (1) ADD NUM-1, NUM-2, NUM-3 TO NUM-4 ON SIZE ERROR PERFORM 900 -EXIT-PARA. (2). DIVIDE NUM-1 BY NUM-2 ON SIZE ERROR PERFORM 800 -ERROR-PARA.
On size error option Receiving Field PIC 9(3)V 9. Actual Result 245. 96 1245. 9 PIC 9(3). 1246 PIC 9(3)V 9 Not Rounded 124. 45 PIC 9(3)V 9 Rounded 3124. 45 SIZE ERROR Yes Yes No Yes u A size error condition exists when, after decimal point alignment, the result is truncated on either the left or the right hand side. u If an arithmetic statement has a rounded phrase then a size error only occurs if there is truncation on the left hand side (most significant digits).
COMPUTE Verb Syntax COMPUTE identifier-1. . . [ ROUNDED ] = algebraic expression [ ON SIZE ERROR ] imperative statement. Example COMPUTE VOLUME = ( 4 / 3) * ( 22 / 7 ) * R ** 3. Note: If the ROUNDED and ON SIZE ERROR both appear, then the ROUNDED option should precede the ON SIZE ERROR.
The COMPUTE Precedence Rules. Before After 1. ** = POWER NN 2. * / = = MULTIPLY DIVIDE x ÷ 3. + - = = ADD SUBTRACT + - Compute Irish. Price = Sterling. Price / Rate * 1000. 50 156. 25 87 179. 59 156. 25 87
Review v. Features of COBOL. v. General Coding and Format rules. v. Language Fundamentals. v. Input and Output verbs. v. Arithmetic verbs.
Review questions w If an entry must begin in area A , it must begin in Column number 8, 9, 10, 11 w If an entry must begin in area B, it must begin in position 12 to 72 any where; w Program-id is the paragraph name that appears in the identification division w The word rounded (precedes, follows) the ON SIZE ERROR clause in an arithmetic statement precedes
Review questions w A numeric literal in COBOL can have at most 18 digits w A Non numeric literal can have maximum 160 characters including spaces w Indicate True or False – A 01 level entry cannot have a picture class – In COBOL a data name must contain at least 8 characters False – A COBOL sentence consists of one or more than one statement the last of which is terminated by a period True
Any Questions ? ?
Thank you Jyothi Sridhar Kini E&R, Infosys Mail-id: Jyothis@infosys. com Phone: 52179
- Slides: 87