COBOL History COBOL (Common Business Oriented Language) was one of the earliest high-level programming languages. It was developed in 1959 by a group of computer professionals called the Conference on Data Systems Languages (CODASYL). Since 1959 it has undergone several modifications and improvements. In an attempt to overcome the problem of incompatibility between different versions of COBOL, the American National Standards Institute (ANSI) developed a standard form of the language in 1968. This version was known as American National Standard (ANS) COBOL. 1 In 1974, ANSI published a revised version of (ANS) COBOL, containing a number of features that were not in the 1968 version. In 1985, ANSI published still another revised version that had new features not in the 1974 standard. The language continues to evolve today. Object-oriented COBOL is a subset of COBOL 97, which is the fourth edition in the continuing evolution of ANSI/ISO standard COBOL. COBOL 97 includes conventional improvements as well as object-oriented features. Like the C++ programming language, objectoriented COBOL compilers are available even as the language moves toward standardization. 2 Areas of Application COBOL is ideally suited for the solution of business problems. For example, if a company wanted to keep track of its employees’ annual wages, COBOL would be ideal language for implementation. It is interesting to note that COBOL was the first programming language whose use was mandated by the Department of Defense (DoD). 3 It’s not dead! • millions of lines of COBOL code presently exist • heavy need for year 2000 • new standards in ‘98 4 Introduction to COBOL and Program Development • COBOL – – COmmon Business Oriented Language • First released in 1960 by CODASYL – Conference of Data Systems Language • Purpose was to provide a High-Level Programming Language for the business world. 5 High-Level Vs. Low-Level Languages • High-Level Language – The program statements are not closely related to the internal characteristics of the machine. – Are more English-like and less cryptic – Can be easily transferred from one • Examples – COBOL, C++, C#, Java, VB, etc. 6 High vs. Low-Level Languages+ • Low-Level Language – Uses symbolic notation to represent machine instructions – Is closely related to the internal architecture of the machine – Cannot be transferred from, one machine system to another • Examples: – Machine language, Assembly language 7 COBOL’s Survival • COBOL is widely accepted • Has been in use for over 35 years • Many businesses have great investment in COBOL programs. • COBOL is available on every computer platform • Object-COBOL is available • COBOL Versions: ’68, ’74, ’85, ’90? 8 Advantages of COBOL • COBOL was designed to be machineindependent, English-like, and selfdocumenting • COBOL has had ANSI support since 1960 • ANSI – American National Standards Institute • COBOL Compiler – Translates COBOL source code into machine language 9 Disadvantages of COBOL • COBOL programs are wordy • They are longer than those produced in most other languages • Is not popularly employed for coding scientific applications 10 Information Processing • Information Processing – The production of information by processing data on a computer. • Stream Input/Output – This is typical with C++, Java, VB, etc – Program reads data and assigns it to variables • Record Input/Output – This is typical with COBOL – COBOL groups data into fields and records 11 Record Blocking • Increases the efficiency of record I/O • Blocking – Grouping the records transmitted from secondary memory to the CPU as needed by the program – Records are supplied one at a time to the program through READ statements • The block is a physical record and each record within the block is a logical record 12 Steps in the Programming Process • • • • • Understand the Problem Design the Program Code the Program Test the Program Document the Program 13 Step 1 - Understanding the Problem • Be sure that you have a complete understanding of the purpose of the program • read the specifications • Establish and maintain a channel of communication with the client • Determine what the output of the program should be • Examine the input • Determine what mathematical calculations are needed 14 Step 2 - Design the Program • Develop the sequence of steps you will need to solve the problem • Should not involve a computer • Tools needed are: spacing chart, flowcharts, hierarchy charts, and pseudocode. • Make use of the top-down design approach to problem solving 15 Step + 2 -- Design Tools • Spacing chart – Consists of rows and columns that can be used to design the appearance of a screen or a printed report • Flowchart – A graphical representation of the steps needed to solve a problem • Hierarch chart – Demonstrates the relationship between the paragraphs used in the program and how the solution is organized • Pseudocode – An English-like representation of the actions needed to solve the problem. 16 Step 3 - Coding the Program • Design the logic and then translate it into COBOL code • Source code – These are the instructions you write for the computer to carry out. – It is your code before it is translated into machine language – You write source code with a text editor – A language sensitive editor helps you by placing the cursor in the correct column positions and pointing out syntax errors • Syntax errors –caused by not using the language 17 correctly Step 4 - Testing the Program • After writing the program, you need to compile it. • Compilation – translating the source code (program) to machine code – This is done by the compiler • If syntax errors show up, you should correct them and recompile until you obtain a clean compile 18 Step 5–Documenting the Program • Documentation is necessary to allow people to figure out how to use your program and/or fix it when future errors show up or modifications are necessary. • Program documentation can take many forms: – External documentation • Notes and Manuals for other programmers – Comments lines and meaningful data names • These help with program readability and enhances the self-documenting nature of COBOL code. 19 Structured Programming • Structured programming uses the three basic logic control structures: – Sequence, selection, & iteration • A logic control structure is a way in which statements in a program can be executed. • Advantages offered: – Programs appear neater and are more readable – Reliability and efficiency of programs are improved – Reduces time spent on debugging, testing, and modifying programs – Increases programmer productivity 20 Top-Down Design/Programming • Methodologies for solving large problems • Top-Down Design – Breaks a large, complex problem into smaller, less complex units – Also called Divide and Conquer strategy • Top-Down Programming – The high-level modules are coded as soon as they are designed. 21 Divisions of a COBOL Program • All COBOL programs are divided into four divisions. • IDENTIFICATION DIVISION • ENVIRONMENT DIVISION • DATA DIVISION • PROCEDURE DIVISION • Each division has a function in the overall development and execution of the program 22 IDENTIFICATION DIVISION • Provides the computer with basic information about the program • Has only one required entry • The division header contains the reserved words IDENTIFICATION DIVISION • The reserved word: PROGRAM-ID is used to name the program. • The program name is selected by the programmer. • Periods are required at end of each division . 23 IDENTIFICATION + DIVISION • The COBOL language processor looks for periods to terminate various elements of the program. • The asterisk (*) is used to convey documentation in the program. • Comment – The * is placed in column 7 and is ignored by the COBOL compiler. 24 IDENTIFICATION DIVISION • Identifies the program • Example IDENTIFICATION DIVISION. PROGRAM-ID. PRGM01. 25 ENVIRONMENT DIVISION • This is the most hardware-dependent part of a COBOL program • Defines Input and Output • Contains the INPUT-OUTPUT SECTION and the FILE-CONTROL paragraph. • The INPUT-OUTPUT SECTION: – Designates the data files that the program uses. – Each data file is associated with a hardware inputoutput device 26 2.0 ENVIRONMENT DIVISION • There are two sections in this division • Configuration section (Hardware details; this section is NOT NEEDED) • Input-Output section(File details) INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SALES-FILE ASSIGN TO DISK. SELECT PRNT-FILE ASSIGN TO PRINTER. 27 DATA DIVISION • This DIVISION typically contains two sections – FILE SECTION, and – WORKING-STORAGE SECTION • File section deals with Input and Output file descriptions – FD - File description (starts in Area A) – 01 - to describe the record layout (also in area A) • Working Storage section – Is the section where the input and output records are manipulated and all other variables needed are defined. – Typically contains the variables, heading lines and detail 28 record COBOL Language Elements • In a COBOL program, you’ll find the following words – Words • Reserved words • User Defined words – Constants or Literals • Non-Numeric • Numeric • Figurative constants – Note: Reserve words, and User Defined words 29 are case NON-sensitive COBOL Language Elements • Reserved words • User Defined words – These are data names for storage, paragraph, and section names – Examples: • EMPLOYEE-NAME-OUT • WS-END-OF-FILE-INDICATOR 30 COBOL Language Elements – Rules: • max 30 characters • A-Z, 0-9, and hyphen (-) • must start and end with A-Z, or 0-9 (paragraph ad section name are the only user defined words that are allowed to start with 0-9) • cannot begin or end with hyphen • must be at least one alphabetic character • cannot be a reserved word 31 COBOL Language Elements • Non-Numeric Literals – these are string constants – Examples: • “Summary of Loans Report” • “ABC” – Rules: • max 160 characters • quotation marks are required before and after (single or double - compiler option) • contents between the quotes are casesensitive 32 COBOL Language Elements • Numeric Literals – these are hard-coded numbers – Examples: • 12.45 • -1 – Rules: • max 18 digits • +, - must appear on the left of the number 33 Non-Edited Picture Characters • X Alpha-numeric (1 byte) • 9 Numeric (1 bytes) • S Operational SIGN (does not take up any space) • e.g. 05 WS-CREDIT PIC S9(3) • V Implied Decimal Point • e.g. 05 WS-SALARY PIC 9(5)V9(02) 34 Example Input file and File Description Data File of SALEFILE • • • • 111111111MOOING MARTY 222222222PATSY POTATO 333333333ROWDY RODENT 444444444STARING STACEY 001451255000 450003569050 205001259020 000090000650 The File Description: FD SALES-FILE RECORD CONTAINS 80 CHARACTERS DATA RECORD IS SALES-REC. 01 SALES-REC. 05 EMPLOYEE-NUM-IN PIC 9(09). 05 NAME-IN PIC X(20). 05 QUANTITY-IN PIC 9(05). 05 AMOUNT-IN PIC 9(05)V99. 05 FILLER PIC X(39) Note the use of X and 9 and numbers in parentheses 35 Example Input file and File Description Main Memory Program Executable Code Disk ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SALES-FILE ASSIGN TO DISK-SALEFLE. DATA DIVISION. FILE SECTION. FD FD SALES-FILE RECORD CONTAINS 80 CHARACTERS DATA RECORD IS SALES-REC. Buffer 01 SALES-REC. 05 EMPLOYEE-NUM-IN 05 NAME-IN 05 QUANTITY-IN 05 AMOUNT-IN 05 FILLER Working Storage SALEFLE file . PIC PIC PIC PIC PIC 9(09). X(20). 9(05). 9(05)V99. X(39) AS400 Operating System 36 Working Storage Section • Purpose – to save, or store temporary data for use in the program • Records and variables – consist of Group and Elementary items – Elementary items MUST HAVE a PIC clause – Group items may consist of one or more elementary item, or other Group items – Group items are consider alphanumeric always – To show groupings, LEVEL numbers are used 37 Working Storage Section – Rules: • In sequence (from smaller numbers to larger) • But don’t have to be consecutive • Also, not required to jump by any given interval; can be random • Record level is 01 level • Valid numbers are 01 through 49 inclusive • 66, 77, 88 have special purpose usage 38 Working Storage Section – VALUE clauses are ONLY allowed in Working Storage (not allow in FILE section). – Used to initial elementary data items – Cannot be used for group items – can take a • literal • Figurative constant • the word ALL 39 Working Storage Section – Examples: 01 WS-RPT-TITLE. 05 WS-RPT-TITLE PIC X(20)VALUE ‘SALES REPORT’. 05 WS-CHRISTMAS-DAY. 10 XMAS-YR PIC 9(04) VALUE 2002. 10 XMAS-MM PIC 9(02) VALUE 12. 10 XMAS-DD PIC 9(02) VALUE 25. 01 DRAW-LINE PIC X(133) VALUE ALL “*”. 40 The PROCEDURE DIVISION • Contains the program logic processing steps • Contains procedures, which are actions to be carried out by the program • It s made up of separate modules called paragraphs. • Statements in the PROCEDURE DIVIDION begin with action verbs 41 The Paragraph Name • • • • A paragraph name is user-defined. It must end with a period. No blanks are allowed in the name. Hyphens may be used to separate the words that make up the paragraph name. • Recommended to start the name with a module level number. • Following the paragraph name are COBOL statements – These designate operations to take place and thus begin with verbs. 42 Overall Program Execution • COBOL statements are not executed directly • They are converted into machine language • The statements in the program are called source code • The statements that the computer executes is called the object code • Execution of a program begins with the first statement following the PROCEDURE DIVISION and continues statement by statement until the end of the program is encountered. 43 COBOL Coding Format • The Coding form – this is divided into four major fields : Usage Columns Sequence numbers 1–6 Indicator area (*,-) 7 Area A (Headers) 8 – 11 Area B (statements) 12 – 72 Program identification 73 – 80 44 Program Preparation+ • Line numbers in the program are NOT entered by the programmer. They are generated by the compiler. • Area A and Area B entries – Columns 8 – 11 is area A – Columns 12 – 72 is area B • These columns are significant because COBOL entries must start in specific columns. 45 46 Procedure Division • Its very important to be precise while dealing with the procedure division. • This is the only division that requires hierarchy chart, pseudocode, and program flowcharts. • Hierarchy chart: Overview of the process. • Pseudocode: Near COBOL code without syntax. • Flowchart: Graphical representation of program flow. 47 Hierarchy Chart • Level1 MAIN-RTN • Level2 HDG-RTN READ-RTN • Level3 DETAIL-RTN READ-RTN 48 Pseudocode MAIN PROCESS OPEN FILES WRITE HEADINGS READ FIRST RECORD PROCESS RECORDS UNTIL NO MORE RECORDS CLOSE FILES STOP PROCESSING WRITE HEADINGS MOVE AND WRITE HEADING LINE 1 MOVE AND WRITE HEADING LINE 2 PROCESS RECORDS MOVE AND WRITE DETAIL RECORDS READ NEXT RECORD 49 F L O W C H A R T PROGRAM FLOW START OPEN FILES READRTN HDGRTN UNTIL WSEOF=‘Y’ DETAILRTN CLOSE FILES STOP 50 What should you do? • Ask questions • Read chapter • Do exercises at end of chapter • Think! • Ask questions! 51