During the 1950s, the western parts of the world experienced a tremendous need for a high level programming language suitable for business data processing. To meet this demand the U.S. Dept of Defence convened a conference on the 28th and 29th of May, 1958 to highlight and stress the importance of a high-level business data processing language. The conference led to the formation of a team called CODASYL (Conference On DAta Systems Language). This team had representatives from civil and governmental organisations, academics, computer manufacturers and other software enthusiasts to work towards the goal. As a result, a new language called COBOL (COmmon Business Oriented Language) was developed in September 1959. This was released with some minor modifications in April 1960. On May 5, 1961, COBOL-61 was published with some more revisions. It is this version which provided the foundation for later versions. In 1965, a re-revised version of COBOL was released with a number of additional features. However, it was only in 1968 that COBOL was approved by ANSI (American National Standards Institute) as a standard language for commercial use. This version of COBOL is known as COBOL-68. The next revised official standard was released in 1974 and is known as COBOL-74.
What does COBOL stand for? CO mmon B usiness O riented L anguage. Which are target area of COBOL applications? Defense, Aircraft, Insurance, Finance, Retail etc (file & data oriented applications involved) So we can say that COBOL is basically used for writing business applications and not for developing system software
The Constituents of a COBOL Program – DIVISIONS A DIVISION is the largest unit in the COBOL program and is a collection of SECTIONs and/or paragraphs. Every COBOL program is divided into four DIVISIONs viz. IDENTIFICATION DIVISION, ENVIRONMENT DIVISION, DATA DIVISION and PROCEDURE DIVISION. SECTIONS A SECTION is a collection of related paragraphs. The IDENTIFICATION DIVISION doesn’t contain any SECTIONs, the ENVIRONMENT AND DATA DIVISIONs have pre-defined SECTIONs that you may or may not include, depending on the requirement and the PROCEDURE DIVISION may contain only user defined SECTIONs. A user defined SECTION is indicated by a user-defined word followed by the reserved word SECTION. It is used mainly to divide the executable program into units that can be loaded and executed independently. Thus, a program larger than the memory size can be accommodated in memory. PARAGRAPHS A paragraph is a collection of sentences that form a logical unit in a COBOL program. It is the basic unit of organisation of a COBOL program and is referred by a user-defined name in the program. SENTENCES A sentence is a sequence of one or more statements, ending with a period. STATEMENTS A statement is a valid combination of a COBOL verb and its operands. It specifies an action to be taken by the object program. The COBOL statements can be broadly classified into two types viz. Imperative statements and Conditional statements. An imperative statement begins with a verb and specifies an unconditional action to be taken. On the other hand, a conditional statement is one in which the action to be taken is determined by some condition that is evaluated when the program is executed. RESERVED WORDS A reserved word is a character-string with a predefined meaning in a COBOL source program. There are several types of reserved words in COBOL. 1) Keywords :- appear in uppercase. Eg ADD, READ etc 2) Optional Words :- They improve readability. Eg GIVING, AFTER etc 3) Figurative constants :- Refer to constant values. Eg ZEROES, SPACES etc USER DEFINED WORDS They are constructed and used by the application programmer. They are normally used to define paragraph names, SECTION names, file names, temporary variables, etc., The following are the rules for forming user-defined words. 1) Length may be up to 30 characters. 2) Only letters, digits and hyphen (-) are allowed. 3) Embedded blanks are not allowed. 4) At least one character must be alphabetic. 5) Cannot be COBOL reserved words. 6) May not begin or end with hyphen. CHARACTERS The most basic and indivisible unit of the COBOL language is the character. The COBOL character set includes 78 characters that can be classified as letters of the alphabet, digits and special characters.
COBOL CODING RULES a) Each line is considered to be made up of 80 columns. b) Columns 1 to 6 are reserved for line numbers. c) Column 7 is an indicator column and has special meaning to the compiler. It can have - i) Asterisk ( * ) indicates comments ii) Hyphen ( - ) indicates continuation iii) Slash ( / ) indicates form feed d) Columns 8 to 11 are called Area A. All COBOL DIVISIONs, SECTIONs, paragraphs and some special entries must begin in Area A. e) Columns 12 to 72 are called Area B. All COBOL statements must begin in Area B. f) Columns 73 to 80 are identification area.
Almost all COBOL compilers treat a line of COBOL code as if it contained two distinct areas. These are - AREA A *) Between Column 8 to 11 *) Division, Section, Paragraph names, FD entries & 01 level entries must start in Area A AREA B *) Between Column 12 to 72 *) All Sentences & Statements start in Area B
DATA NAMES *) Data-names are named memory locations. They must be described in the DATA DIVISION before they can be used in the PROCEDURE DIVISION. *) They can be of elementary or group type and further can be qualified or subscripted. *) They are user-defined words.
RULES FOR FORMING USER-DEFINED WORDS USER DEFINED WORDS need to be as per the following rules - 1) They are used to form section, paragraph and data names. 2) They can be at most 30 characters in length. 3) Only alphabets, digits and hyphen are allowed. 4) Blanks are not allowed. 5) They may not begin or end with a hyphen. 6) They should not be a COBOL reserved word.
LITERALS A Literal is a symbol whose value does not change in a program. It is also known as constant. There are three types of literals in COBOL namely – a) Numeric literal b) Non-numeric literal c) Figurative constant
FIGURATIVE CONSTANTS FIGURATIVE CONSTANTS are reserved words that refer to specific constant values. The following are figurative constants and their meanings. ZERO/ZEROS/ZEROES Represents the numeric value zero (0), or one or more occurrences of the nonnumeric character zero (0), depending on context. When the context cannot be determined, a nonnumeric zero is used. SPACE/SPACES Represents one or more blanks or spaces. SPACE is treated as a nonnumeric literal. HIGH-VALUE/HIGH-VALUES Represents one or more occurrences of the character that has the highest ordinal position in the collating sequence used. For the EBCDIC collating sequence, the character is X'FF'; for other collating sequences, the actual character used depends on the collating sequence indicated by the locale. Note that HIGH-VALUE is treated as a nonnumeric literal. LOW-VALUE/LOW-VALUES Represents one or more occurrences of the character that has the lowest ordinal position in the collating sequence used. For the EBCDIC collating sequence, the character is X'00'; for other collating sequences, the actual character used depends on the collating sequence indicated by the locale. Note that LOW-VALUE is treated as a nonnumeric literal. QUOTE/QUOTES Represents one or more occurrences of the quotation mark character ("). QUOTE or QUOTES cannot be used in place of a quotation mark to enclose a nonnumeric literal.
COBOL(COMMON BUSINESS ORIENTEDLANGUAGE)By: Manjula SanjayAsst. prof, Dept. of MCA
Objective COBOL is one of the most widespread commercial applications languages in usetoday. The course is aimed at developers to get the basic knowledge of COBOLprogram development. This course covers all aspects of Programming withCOBOL. The course teaches the design, writing and testing of COBOL programs.Having studied this subject, the students should be able: Develop Structured COBOL Programs Understand and Use COBOL Verbs Develop COBOL programs using the available verbs Develop and Test COBOL print programs Develop and Test COBOL programs accessing different types of files
Text Books Text Book Nancy Stern and Robert A Stern, 11thedition, StructuredCOBOL Programming, John Wiley & Sons, 1998. Reference Book M.K.Roy and D. Ghosh Dastidar, COBOL Programming,Tata McGraw Hill, 2001, COBOL—85,2ndEdition.
Introduction Types of computer programs Operating system programs Application programs / Software Types of Processing Interactive – A point-of-Sale system Batch processing – Payroll System (Large volume ofinput at periodic intervals) COBOL support both type of processing Customized Application Package: Budget, Scheduling etc. Machine language programs Symbolic programs : translates to machine language by
Program Development Process Determine the program specification Design the program using program planning tools Code the program Compile the program Test the program Document the programCompile the programSource programin symboliclanguageObject programin machinelanguageTranslated bycompiler
Test the program Debug during compile & test phase Compile time errors: Syntax error e.g. ADD | AD Misspelled reserved words Missing punctuation Execution errors: Logic error e.g. ADD instead ofMultiply Run-Time error: Occurs if computer cannot executethe instruction.E.g.- Attempt to divide by zero Reading from a file that cannot be found.
Contents History of COBOL Features & Language Fundamentals Program Structure Coding Format for COBOL Programs Character Set, Words, Data Names, Literals.
Nature of COBOL popular Business-oriented language Standard language English-like language: Standard & business oriented Relatively easy to understand- User friendly Reference: http://www.ansi.org
History of COBOL 1959 – United States Department of Defense 1960 - COBOL initial specifications presented by CODASYL(COnference on Data SYstems Languages) 1961 – COBOL 61 1964 – BASIC COBOL extended to Visual COBOL 1968 – ANSI (American National Standards Institute) developedAmerican National Standard (ANS) COBOL 1974 – ANSI published revised version of (ANS) COBOL– Business applications needed to manipulate character aswell as numeric data– String operations added 1985 – COBOL 85 Standards was introduced with revisedversion of COBOL-74.
COBOL What does COBOL stand for?COmmon Business Oriented Language. Which are target area of COBOL applications?Defense, Aircraft, Insurance, Finance, Retailetc.(file & data oriented applications involved) So we can say that COBOL is basically used for writingbusiness applications and not for developing systemsoftware
Future of COBOL COBOL is likely to remain an important language in the yearsahead According to Datapro Information Services Groupabout 150 billion lines of COBOL source code inuse 5 billion new lines added each year Cobol is used by 42.7% of applicationprogrammers in medium to large U.S. companies $200 million revenues for 2001
Year 2000 Problem (Y2K) Year stored as two digits in older programs to savespace 19 assumed as valid prefix for all years 95 represented year 1995 Invalid as prefix for years 2000 and beyond 00 could mean 1900 or 2000
Year 2000 Problem (Y2K)Many calculations with dates incorrect starting in 2000 To find your age if you were born in 1970Subtract 70 from 95 (95 - 70 = 25) Calculation incorrect for year 2000 and beyond00 - 70 = -70 when age should be 30
Year 2000 Problem (Y2K)To correct problem Billions of lines of code, many written in COBOLneeded to be examined Code changed to use four digits for year Age, other calculations now correct1995 - 1970 = 252000 - 1970 = 302012 – 1988 = 24
Improving Program DesignTwo techniques used to develop programs that are easier tounderstand, test, debug and modify Structured Programming Top-Down Programming
Structured Programming Eliminates use of GO TO statements Allowed skipping to different sections of program withoutreturning to starting point Program logic easier to follow with "GO-TO-less"programming
Structured ProgrammingProgram divided into paragraphs Structured programming follows logical control constructsthat make program easier to read, modify, and debug. Main paragraph or module controls logic flow usingPERFORM statements Main module "performs" other modules when instructions inthat module required Each module can be written and tested independently ofothers
Top-Down Programming Another technique to make programs easier to understand,test, debug and modify Develop program like term paper Develop outline first Add details for each of main steps Add further refinement for more complex steps
Top-Down ProgrammingFor COBOL program Code main modules or routines first Code intermediate modules next Details deferred to minor modules and coded last
COBOL – Program StructurePrincipal portions of a program.There are 4 divisions –a) Identification (Required)b) Environment (Optional)c) Data (Optional)d) Procedure (Required)User defined chunk of codewhich consists of one/moreparagraphs.e.g.a) U000-CHECK-LOG SECTION.b) FILE SECTION.User defined chunk of codewhich consists of one/moresentences.e.g.a) P000-PRINT-FINAL-TOTALS.b) PROGRAM-ID.A SENTENCE consists of one ormore statements and isterminated by a full stop.e.g. a) MOVE .21 TO VAT-RATEb) COMPUTE VAT-AMOUNT =PRODUCT-COST * VAT-RATE.PROGRAMDIVISIONSSECTIONSPARAGRAPHSSENTENCESSTATEMENTSA STATEMENT consists of aCOBOL verb and anoperand or operands.e.g.SUBTRACT T-TAX FROM GROSS-PAY GIVING NET-PAYCHARACTERSRESERVED WORDSUSER DEFINED WORDS
ExampleIDENTIFICATION DIVISION.PROGRAM-ID. Multiplier.DATA DIVISION.WORKING-STORAGE SECTION.01 Num1 PIC 9 VALUE ZEROS.01 Num2 PIC 9 VALUE ZEROS.01 Result PIC 99 VALUE ZEROS.PROCEDURE DIVISION.DISPLAY "Enter first number (1 digit) : " .ACCEPT Num1.DISPLAY "Enter second number (1 digit) : “.ACCEPT Num2.MULTIPLY Num1 BY Num2 GIVING Result.DISPLAY "Result is = ", Result.STOP RUN.
1. DIVISIONS A DIVISION is the largest unit in the COBOL program and is acollection of SECTIONs and/or paragraphs. Every COBOLprogram is divided into four DIVISIONS. IDENTIFICATION DIVISION Identifies the program to the computer. It also providedocumentation about the program ENVIRONMENT DIVISION Define file-names and describe computer equipment used by theprogram DATA DIVISION Describe input and output format used by the program. Also defineconstants and work areas necessary for processing the data PROCEDURE DIVISION Instructions for reading input, processing and creating output
2. SECTIONS A SECTION is a collection of related paragraphs. The IDENTIFICATION DIVISION doesn’t contain anySECTIONs, the ENVIRONMENT AND DATA DIVISIONshave pre-defined SECTIONs that you may or may notinclude, depending on the requirement and thePROCEDURE DIVISION may contain only user definedSECTIONs. A user defined SECTION is indicated by a user-defined wordfollowed by the reserved word SECTION. It is used mainly to divide the executable program into unitsthat can be loaded and executed independently. Thus, a program larger than the memory size can beaccommodated in memory.
3. PARAGRAPHS & 4. SENTENCES3) A paragraph is a collection of sentences that form alogical unit in a COBOL program. It is the basic unit of organisation of a COBOLprogram and is referred by a user-defined name inthe program.4) A sentence is a sequence of one or more statements,ending with a period.
5. STATEMENTS A statement is a valid combination of a COBOL verb and itsoperands. It specifies an action to be taken by the object program. The COBOL statements can be broadly classified into twotypes - Imperative statements An imperative statement begins with a verb andspecifies an unconditional action to be taken. Conditional statements. A conditional statement is one in which the action to betaken is determined by some condition that is evaluatedwhen the program is executed.
6. RESERVED WORDS A reserved word is a character-string with a predefinedmeaning in a COBOL source program. There are several types of reserved words in COBOL. Keywords:- appear in uppercase. Eg ADD, READ etc Optional Words:- They improve readability. Eg GIVING, AFTER etc Figurative constants:- Refer to constant values. Eg ZEROES, SPACES etc
7. USER DEFINED WORDS They are constructed and used by the applicationprogrammer. They are normally used to define paragraph names,SECTION names, file names, temporary variables,etc., The following are the rules for forming user-definedwords. Length may be up to 30 characters. Only letters, digits and hyphen (-) are allowed. Embedded blanks are not allowed. At least one character must be alphabetic. Cannot be COBOL reserved words. May not begin or end with hyphen.
8. CHARACTERS The most basic and indivisible unit of the COBOLlanguage is the character. The COBOL character set includes 78 characters that canbe classified as letters of the alphabet, digits and specialCharacters.
COBOL coding rules Each line is considered to be made up of 80 columns. Columns 1 to 6 are reserved for sequence numbers.1 to 3 ---Page Number. 4 to 6 ---Line Number Column 7 is an indicator column and has specialmeaning to the compiler.Hyphen ( - ) indicates continuation.Slash ( / ) indicates comment line , forces page break whenprinting source listing.Asterisk ( * ) indicates comment line, no such page ejection. Columns 8 to 11 are called Area A. All COBOL DIVISIONs,SECTIONs, paragraphs and some special entries must begin inArea A. Columns 12 to 72 are called Area B. All COBOL statements mustbegin in Area B.
COBOL coding sheetAlmost all COBOL compilers treat a line of COBOLcode as if it contained two distinct areas. These are -AREA A*) Between Column 8 to 11*) Division, Section, Paragraphnames, FD entries & 01level entries must start inArea AAREA B*) Between Column 12 to 72*) All Sentences & Statementsstart in Area B
coding rules Columns 73 to 80 are identification area. Anything written inthis area , will be ignored by the compiler but will appear in thesource listing. Columns 1-6 and 73-80 optional and rarely used today Column 7 for continuation, comment, starting new page Columns 8-72 for COBOL program statementsColumn 7/ (slash) forces page break when printing source listing* (asterisk) designates entire line as comment- (dash) to indicate continuation of nonnumeric literal
Margin Rules Columns 8-72 divided into two areas Area A - columns 8, 9, 10, 11 Area B - columns 12-72 Division, section and paragraph-names must all begin in AreaA First letter of name must begin in column 8, 9, 10 or 11 Entry may extend into Area B All other statements, clauses, and sentences begin anywherein Area B (column 12, 13, 14, etc.) Select entries in ENVIRONMENT DIVISION Data description entries in DATA DIVISION All PROCEDURE DIVISION instructions
Character MeaningSpace+ Plus sign- Minus sign or hyphen* Asterisk/ Forward slash or solidus= Equal sign$ or £ Currency sign, Comma; Semicolon. Decimal point or period" Quotation mark( Left parenthesis) Right parenthesis> Greater than< Less thanA-Z (26) Alphabet (uppercase)a-z Alphabet (lowercase)0-9 (10) Numeric characters
COBOL Words 0-9 , A-Z and - Hyphen The total no of character must not be greater than 30. One of the character must be a letter. A word cannot begin with Hyphen. A word must not contain a blank or special character exceptHyfen (-) A Cobol word can be User defined or reserve wordValid words Invalid WordsGROSS-PAY -Gross-OVERTIME-HOURS OVERTIME HOURA 1-2-3B12-4 More than 30 characters
Data names and Identifiers Data names are named memory locations. Data Names must be described in the DATA DIVISION beforethey can be used in the PROCEDURE DIVISION. Can be of elementary or group type. Can be subscripted for Arrays. Are user defined words. Ingle data name or a data name qualified, indexed orsubscripted is normally referred to by the general termidentifier. Valid data names: A12 sum-natural net-pay Invalid: DATA ADD 45 46+2A
Rules for forming User-defined words/Datanames Can be at most 30 characters in length. At least one alphabetic character. Only alphabets, digits and hyphen are allowed. Blanks are not allowed. May not begin or end with a hyphen. Should not be a COBOL reserved word likeADD,SUBTRACT,MOVE,DISPLAY etc….
Data-Name Guidelines1. Use meaningful data-names that describe contents of field2. Use prefixes or suffixes in data-names when appropriate• -IN and -OUT for fields (Emp-Salary-IN and Emp-Salary-OUT)• -FILE and -RECORD for file and record names• Emp-File or Emp-Record• Amount-Due-In instead of A1
Identify the valid data-names• Identify the valid data-names1. Date-Of-Birth2. Amount$Out3. -First-Name4. 98-65. Time out6. ADD
Literals Literals are symbols whose value does not change in a program. A data name may have different values at different points of timewhereas a literal means the specific value which remainsunchanged throughout the execution of the program. For thisreason a literal is often called a constant.Example--- MOVE 0 to sum. (Here 0 is literal) There are 3 types of literals namely(1) Numeric literals.(2) Non-numeric literals.(3) Figurative constants.
Rules for Numeric Literals1. A numeric literal can be formed with the help of digits only.2. The maximum number of digits allowed in a numeric literalvaries from compiler to compiler. can have a maximum of18 digits.3. + or - sign may be included to left of first digit.4. Decimal point permitted within literal. May not follow lastdigit.Valid numeric literals23 , +2359.4 , .125 , -68734
Rules for Nonnumeric Literals• Composed of characters which are enclosed within quotationmarks.• Generally used for output messages or headings.• Any character in COBOL character set except quotation mark.• The maximum number of characters that are allowed is compilerdependent. ANSI 74: 120 characters.Valid Nonnumeric Literals“123 Main St.” “$14.99”“12,342” “Enter a value from 1 to 10”
Figurative Constants These are literals representing values that may be frequentlyused by most programs. These are given some fixed names and when the compilerrecognizes these names it sets up the corresponding valuesin the object program. Example--- MOVE ZERO TO sum. MOVE SPACES TO REPORT-REC. The following is the list of figurative constants and theirmeanings.
Figurative constants MeaningZERO(S) or ZEROES Represents the value 0, one ormore depending on the contextSPACE(S) Represents one or more spacesHIGH-VALUE(S) Represents the highest valueLOW-VALUE(S) Represents the lowest valueQUOTE(S) Represents single or doublequotesALLALL literalliteral Fill With LiteralLiterals – Figurative Constants
Figurative Constants - Examples01 GrossPay PIC 9(5)V99 VALUE 13.5.MOVE TO GrossPay.01 GrossPay PIC 9(5)V99 VALUE 13.5.MOVE TO GrossPay.ZEROZEROSZEROES01 StudentName PIC X(10) VALUE "MIKE".MOVE ALL "-" TO StudentName.01 StudentName PIC X(10) VALUE "MIKE".MOVE ALL "-" TO StudentName.StudentNameM I K EM I K E GrossPay0 0 0 1 3 5 0
Figurative Constants - Examples01 GrossPay PIC 9(5)V99 VALUE 13.5.MOVE TO GrossPay.01 GrossPay PIC 9(5)V99 VALUE 13.5.MOVE TO GrossPay.ZEROZEROSZEROES01 StudentName PIC X(10) VALUE "MIKE".MOVE ALL "-" TO StudentName.01 StudentName PIC X(10) VALUE "MIKE".MOVE ALL "-" TO StudentName.StudentName- - - - - - - - - -- - - - - - - - - -GrossPay0 0 0 0 0 0 0
Continuation of Lines A statement or an entry may be continued to the area B of thenext line as and when necessary. A hyphen(-) is used in the indicator field for continuation oflines. Actually, a hyphen in the indicator field means that the first non-blank character in the area B of the current line is the characterimmediately following the last non-blank character of theprevious line. Example—In case of non numeric literalIndicator line Area A Area BContinued line “Enter theContinuation Line - “Number”.
Is Cobol still used ? 75% of all business data is processed in COBOL. There are between 180 billion and 200 billion lines ofCOBOL code in use worldwide. 15% of all new applications (5 billion lines) through 2009 willbe in COBOL.