Any Questions? Week 1 - 2nd Lecture Intro to COBOL Programming Defining Files and Processing Data What is COBOL? • Designed by the US defense department • Meant to be English like for ease of maintenance COmmon Business Oriented Language Agenda • • • • • • • How does a compiler work? Creating a COBOL Program Parts of a COBOL Program The Perform Statement Defining Files Defining Variables COBOL Verbs Compilers • Translate programs written by humans into Machine Language Code directly executable code vs 2 step translate and execute programs ie Basic, C, C++, HTML etc. COBOL Compiler on the iSeries Source Code QCBLLESRC (PGM1) Compiled Listing (PGM1) COBOL Compiler Program Object (PGM1) Steps to Create a COBOL Program Working in the Source Physical File – QCBLLESRC (created previously) 1. Create a Source Member in the Source Physical file with the type CBLLE 2. Type in the COBOL code syntax statements using an editor i.e. RDS, SEU 3. Save & Exit 4. Compile and generate the executable code 5. Repeat 1 through 4 for each program required Defining Files and Processing Data Cobol Program Structure Common Elements 8 A source program consists of FOUR DIVISIONS IDENTIFICATION DIVISION. •Identifying the program ENVIRONMENT DIVISION. •Defining the files, peripherals, etc. DATA DIVISION. •Defining the variables to use in the program PROCEDURE DIVISION. •Instructing the computer to work with the data 9 Identifying The Program PT001F Payroll Records PAYREP The Cobol Program PRINTER FILE Payroll Report 10 Column 8 IDENTIFICATION DIVISION. PROGRAM-ID. PAYREP. AUTHOR. Barake, Juan - DB344E40. * TO PRINT PAYROLL REPORT To start Division, Paragraph Column 7 Comment Lines Ignored by the Compiler 11 Identification Division • Required – Name of the Program in the Program-ID paragraph. • Optional – – – – Author Installation Date-Written etc. Identification Division (Syntax) IDENTIFICATION DIVISION. PROGRAM-ID. program-name. [AUTHOR. [comment-entry] … ] [INSTALLATION. [comment-entry] …] [DATE-WRITTEN. [comment-entry] …] [DATE-COMPILED. [comment-entry] …] [SECURITY. [comment-entry] …] Environment Division Defines the operational environment and connecting a programs internal file / device requirements to the physical system environment. Environment Division [ENVIRONMENT DIVISION.] [CONFIGURATION SECTION.] Identifies the computer used to write / create the program and the computer it is intended to operate / execute on. [INPUT-OUTPUT SECTION.] [FILE-CONTROL.] Connects the programs internally declared devices / files to the operating system devices / files. Environment Division (Syntax) [ENVIRONMENT DIVISION.] [CONFIGURATION SECTION.] [SOURCE-COMPUTER. AS/400.] [OBJECT-COMPUTER. AS/400.] [INPUT-OUTPUT SECTION.] [FILE-CONTROL.] [SELECT nice-file-name ASSIGN to DISK/PRINTER/WORKSTATIONphysical-file-name.] Environment Division • INPUT-OUTPUT SECTION is only required if your program uses files. – Contains the FILE-CONTROL paragraph • • • • • DISK PRINTER DATABASE WORKSTATION FORMATFILE – similar to setting up file pointers THE ENVIRONMENT The Data File PT001F Payroll Records PAYREP The Cobol Program PRINTER FILE Payroll Report 18 ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT PAYROLL-FILE ASSIGN TO DATABASE-PT001F ORGANIZATION IS SEQUENTIAL. As known to the Cobol Program Syntax can use up to 30 char names Easier to maintain As known to the AS400 File System AS400 system only 10 links internal cobol structure to system 19 Select for a Database File Select Product-File Assign to disk-PRODPF. Select Product-file Assign to database-PRODPF Access is Sequential. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT PAYROLL-FILE ASSIGN TO DATABASE-PT001F ORGANIZATION IS SEQUENTIAL. •Data File = Collection of Records •Each Record = One employee Info •Records have same length (bytes) •Records made up of fields •Sequential means that records are organized in arrival sequence 21 Select Statement for a Printer (Spooled) File Select Product-Report assign to printer-qprint. Select Product-Report assign to printer-qsysprt. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT PAYROLL-FILE ASSIGN TO DATABASE-PT001F ORGANIZATION IS SEQUENTIAL. SELECT PRINT-FILE ASSIGN TO PRINTER. •PRINT-FILE is just a user-defined name •PRINTER is a device name •The Cobol program will refer to PRINT -FILE 23 Select Statement for an Externally Described Printer File Select Product-Report assign to formatfile-qsysprt. Select Statement for a Interactive-Display-File Select Display-File assign to workstation-PRDSPF organization is transaction. Select Display-File assign to workstation-PRDSPF-SI organization is transaction. Data Division Further divided into sections Declare / define the structure of ALL data objects used within a program. Data Division (Syntax) [DATA DIVISION.] [FILE-SECTION.] All objects imported into the program from external (Global) sources. [WORKING-STORAGE SECTION.] All objects required local to the program. [LINKAGE-SECTION.] All parameter objects (fields) received from another programs or bidirectionally passed between programs. Bringing the Outside IN Working Storage Section • Field or Variables needed by the program for internal processing • Field or variable is not part of any Input or Output. • Some examples: counters, flags, edited fields (masks), report lines, etc. • Fields are defined the same way as in the file section • Value clause used to initialize variables or literals (constants) used within the program. OUR PRINTING LAYOUT *...+....1....+....2....+....3....+....4....+....5....+....6....+....7.. HEADER Payroll Monthly List Juan Barake 40 $ 400.00 Mary O'Brian 375 $3,125.00 Berns, Andre 275 $1,984.00 HEADER RECORD DETAIL RECORD 30 WORKING-STORAGE SECTION. 01 HEADING-LINE. 05 FILLER PIC X(12) VALUE 'EMPLOYEE... '. 05 FILLER PIC X(110) VALUE SPACES. 01 DETAIL-LINE. 05 FILLER 05 DET-NAME 05 FILLER 05 DET-HOURS 05 FILLER 05 DET-PAY 05 FILLER 77 EOF-FLAG PIC X(8) VALUE SPACES. PIC X(25). PIC XX VALUE SPACES. PIC ZZZ. PIC XX VALUE SPACES. PIC $Z,ZZZ.99. PIC X(92) VALUE SPACES. PIC X HEADING-LINE: Temporary area to hold the print header. DETAIL-LINE: Temporary area to hold the print fields VALUE SPACES. EOF-FLAG: Just a variable used as a ‘loop control’ Used within the logic of the program 31 Defining Variables • • • • • • • • Zoned Decimals (or signed integers) Packed Decimal Alphabetic Alphanumeric Boolean Dates Time TimeStamp Variable Data vs Constant Data • Variable Data Changes • Constant Data doesn’t • Figurative Constants – ZERO, ZEROS, ZEROES – SPACES Data Division (Syntax) [DATA DIVISION.] [FILE-SECTION.] [FD nice-file-name] [RECORD CONTAINS 99 CHARACTERS]. [01 record-name.] [05 field-names PIC ????.] [WORKING-STORAGE SECTION.] [01 field-name PIC X(10).] [LINKAGE-SECTION.] [01 ws-prog-parameters.] [05 ws-parm-1 pic x(5).] [05 ws-param-2 pic 9(6).] DATA DEFINITIONS • Variable Names: •1 to 30 characters •Letters, digits, hyphen •See rules in page 74 of your textbook EMPNAME is valid EMP NAME is invalid EMP3NAME is valid 35 DATA DEFINITIONS • Data can be either a Constant or a Variable • Constant are known as Literals • Variables are known as Identifiers or Fields • Constants can be Numeric (1, 200, -100, 1.5) • Constants can be Alphanumeric (“CBL344 Course”) • Variables can be keywords (Cobol defined names such as DATA) or they can be user-defined (user makes up the name such as BALANCE) 36 File Section • Define the files used in the program – File Description – Record Description • Program Described vs Externally Described. File Section FD (file declaration) • Label Clause – Not used often – Transmitting Data • Block Clause – Optional – I’ve never seen it used File Section - FD • Records Clause – Optional – Used to double check that the record format File Section - Record Description • Starting at an 01 level and the subsequent field(s) detail(s) in each record Data Subordination DATA DIVISION. FILE SECTION. FD PAYROLL-FILE RECORD CONTAINS 45 CHARACTERS DATA RECORD IS EMPLOYEE-IN. 01 EMPLOYEE-IN. 05 EMP-NAME 05 EMP-HOURS 05 EMP-RATE 05 EMP-DEP PIC X(25). PIC 9(03). PIC 99V9 USAGE COMP-3. PIC X(15). Level Numbers indicate field subordination 01 indicates the top level Located in pos 8 thru 11 41 The Data PICture or PIC •Data content is internally represented by EBCDIC (IBM internal representation of data equivalent to ASCII) •It uses a byte (8 bits) to represent a single digit, a single letter, or any special character such as # •See the EBCDIC table in page 19 of your textbook •The content acceptable for a variable is defined by the clause PICTURE or simply PIC 42 The Data PICture or PIC • PICture describes occurrences of each character: •Numeric are represented by 9 •Alphanumeric is represented by X •Alphabetic is represented by A •S represented the sign •$ / - represent edited characters (for output) 43 DATA DIVISION. FILE SECTION. FD PAYROLL-FILE RECORD CONTAINS 45 CHARACTERS DATA RECORD IS EMPLOYEE-IN. 01 EMPLOYEE-IN. 05 EMP-NAME 05 EMP-HOURS 05 EMP-RATE 05 EMP-DEP PIC X(25). PIC 9(03). PIC 99V9 USAGE COMP-3. PIC X(15). Level Numbers indicate field subordination 01 indicates the top level Located in pos 8 thru 11 44 Elements of Data Definition DATA DIVISION. FILE SECTION. FD PAYROLL-FILE RECORD CONTAINS 45 CHARACTERS DATA RECORD IS EMPLOYEE-IN. 01 EMPLOYEE-IN. 05 EMP-NAME 05 EMP-HOURS 05 EMP-RATE 05 EMP-DEP Level Number Variable Name PICture Group level PIC X(25). PIC 9(03). PIC 99V9 USAGE COMP-3. PIC X(15). PICture 45 THE PRINTER LINE DEFINITION DATA DIVISION. FILE SECTION. FD PAYROLL-FILE RECORD CONTAINS 45 CHARACTERS DATA RECORD IS EMPLOYEE-IN. 01 EMPLOYEE-IN. 05 EMP-NAME 05 EMP-HOURS 05 EMP-RATE 05 EMP-DEP PIC X(25). PIC 9(03). PIC 99V9 USAGE COMP-3. PIC X(15). FD PRINT-FILE RECORD CONTAINS 132 CHARACTERS DATA RECORD IS PRINT-LINE. 01 PRINT-LINE PIC X(132). 01 pr-header-line-1. 03 hd1-report name pic x(20). 03 filler pic x(15). 03 hd2-date pic 9999b99b99. 03 filler pic x(15). 01 pr-detail-line. 03 filler pic x(10). 03 dt1-quantity pic z(5)9-. 03 filler pic xxx. 03 dt1-descr pic x(30). etc etc Record formats Record formats Record formats 46 Optionally define the record format structure Working-Storage THE DATA DEFINITIONS The Payroll File EACH EMPLOYEE RECORD LAYOUT: PT001F = PAYROLL-FILE Data Field Buffer Buffer Field Column Field Type Length Length Position Usage Heading EMPNAME CHAR 25 25 1 Both NAME Field text . . . . . . . . . . . . . . . : NAME Alternative name . . . . . . . . . . . . : PT001F_NAME Coded Character Set Identifier . . . . . : 37 EMPHOUR ZONED 3 0 3 26 Both HOURS Field text . . . . . . . . . . . . . . . : HOURS Alternative name . . . . . . . . . . . . : PT001F_HOURS EMPRATE PACKED 3 1 2 29 Both RATE Field text . . . . . . . . . . . . . . . : RATE Alternative name . . . . . . . . . . . . : PT001F_RATE EMPDEP CHAR 15 15 31 Both DEPARTMENT Field text . . . . . . . . . . . . . . . : DEPARTMENT Alternative name . . . . . . . . . . . . : PT001F_DEPART Coded Character Set Identifier . . . . . : 37 48 COPY Importing DATA DEFINITIONS into your program LIBRARY - PF Spoolfile printout Note: +’s on inserted lines FFD External data record format structure Linkage Section • Define Parameters Variable Names • • • • • Up to 30 Characters Letters, numbers and hypens (-) No blanks At least one letter Not a COBOL Reserved Word (see text for list of reserved words) • Meaning full names please Variable Name Examples Variable Name Cindy Laurin BAC344 Zero Sales% SOL-IN Correct? PICture Clauses (Elementary Items) • • • • 9 - Number X – Alphanumeric A - Alphabetic V - Decimal Point PACKED-DECIMAL = COMP-3 PIC Clauses PIC 9(3) PIC 9(3)V9(3) PIC X(5) PIC S99999 COMP-3 PIC 99999 COMP-3 PIC 999 Date, Time, & TimeStamp fields 01 Todays-date format of date. 01 Todays-time format of time. 01 Todays-timestamp format of timestamp. Boolean Variables 01 IN99 pic 1. PIC Clauses (Group Items) • Mix of Elementary Items. • Used to break a variable into smaller portions PIC Clauses (Group Item – Example) 01 Student-Number PIC 9(9). 01 Student-Number-Edited. 05 Student-Number-Part-1 PIC 9(3). 05 Student-Number-Part-2 PIC 9(3). 05 Student-Number-Part-3 PIC 9(3). Picture Clause Review • Define Variables • Define how Variables are displayed 61 Editing Functions Function Character Printing of a / as a separator Printing of Decimal Point in an integer Suppress Leading Zeros in an integer Print a Dollar Sign in front of an integer / . Z $ Print a Comma in an integer Printing of + or – signs Printing of ‘Debit’ or ‘Credit’ symbols Printing of Spaces as separators , + or DB or CR B Printing of Zeros as separators Print Leading asterix 0 * 62 Examples Trans-Amount PIC 9(6)V999 Value 4565.78. Report-Item PIC 9(6)V999 PIC $999999V999 PIC $ZZZ,ZZZ.99 PIC $ZZZ,ZZZ.9 Edited Results 63 Examples Trans-Amount PIC 9(6)V999 Value 4565.78. Report-Item PIC $ZZZ,ZZZ.99PIC $ZZZ,ZZZ.99CR PIC $ZZZZZZB99 PIC $ZZZZZZ.99+ Edited Results 64 For Next Week • Review Reserved words in Text • Do your assignment!