Chapter 3 The DATA DIVISION 3-1 Chapter Objectives To familiarize you with • Systems design considerations • Ways in which data is organized • Rules for forming data-names • Defining input and output files in DATA DIVISION • Defining storage for work fields and constants 3-2 Chapter Contents • Systems Design Considerations • Forming Data-Names • The FILE SECTION of the DATA DIVISION • Types of Data • WORKING-STORAGE SECTION of the DATA DIVISION 3-3 Systems Design Considerations 1. Systems analyst designs computerized business information system 2. First determines what outputs from system should be 3. Then designs inputs needed to produce desired outputs 4. Designs specifications for programs to read required input and produce output 3-4 Interactive and Batch Programs • Fully Interactive Programs – Use ACCEPT to get input from keyboard – Use DISPLAY to display output on screen • Full Batch Programs – Get input from files on disk – Direct output to files on disk • Hybrid Programs – Use combination of interactive and batch input and output methods 3-5 COBOL Data Organization • Field - group of characters forming a meaningful unit or basic fact – Characters in a name or digits in an amount • Records - group of related fields – All fields related to customer • File - group of related records – Customer file made up of customer records 3-6 Categories of Data • Data categories in COBOL each assigned user-defined name – Files, records, fields in batch programs – Fields keyed in or displayed in interactive programs • Data-name or identifier for user-defined name in DATA DIVISION must follow certain rules 3-7 User-Defined Data-Name Rules 1. 2. 3. 4. 5. 6. 1 to 30 characters Letters, digits, hyphens (-) only No embedded blanks At least one alphabetic character May not begin or end with hyphen May not be COBOL reserved word 3-8 Identify the valid data-names 1. 2. 3. 4. 5. 6. Date-Of-Birth Amount$Out Section -First-Name 98-6 Time out 3-9 Data-Name Guidelines 1.Use meaningful data-names that describe contents of field • Amount-Due-In instead of A1 2.Use prefixes or suffixes in data-names when appropriate • -IN and -OUT for fields (Employee-Salary-IN and Employee-Salary-OUT) • -FILE and -RECORD for file and record names (Employee-File and Employee-Record) 3-10 DATA DIVISION • Defines, describes storage for all data • Two main sections – FILE SECTION • Defines all input and output files, records, fields • Required for any program that uses files, typically batch programs – WORKING-STORAGE SECTION • Defines constants, end-of-file indicators and work areas • Defines fields not part of input or output files 3-11 Types of Files to Define • Input files • Master files • Transaction files • Output files • New Master files • Report files 3-12 File Description Entries • Each file described with an FD (File Descriptor) sentence • One FD for each SELECT statement in ENVIRONMENT DIVISION • FD followed by • File-name • Optional clauses to describe file and format of its records 3-13 File Description Format FD file-name RECORD IS LABEL RECORDS ARE OMITTED STANDARD RECORD CONTAINS integer-1 CHARACTERS BLOCK CONTAINS integer-2 RECORDS . 3-14 File Description clauses • LABEL RECORDS clause – Used if labels stored in file • BLOCKS CONTAINS clause – Indicates blocking factor for disk files • Both labels and blocking usually handled by operating systems so clauses will be omitted 3-15 RECORD CONTAINS clause • Indicates size of each record • Optional but recommended since it provides check on record size • Given this FD FD Sales-File Record Contains 75 Characters. • If PICTURE clauses mistakenly add up to 76, compiler will report a syntax error 3-16 Defining a Record • Each FD followed by record description entries for the file • Data grouped in COBOL by levels • Record-name defined at the 01 level • Considered highest level of data • Fields within a record defined at subordinate level with level numbers from 02 to 49 3-17 Record Description Example 01 Employee-Rec-In. 05 Name-In … 05 Annual-Salary-In … 05 Job-Description-In … • Fields at 05 level subordinate to 01 level entry • All fields at same level (05), independent or not subordinate to each other 3-18 SELECT, FD, 01 entries & fields • SELECT names file, assigns it to hardware device • FD describes file • 01 names record • 02-49 describes fields within record 3-19 Elementary and Group Items • Items defined with a level number are one of two types – Elementary item - field that is not further subdivided • Must include a PICTURE clause – Group item - field that is further subdivided • Has no PICTURE clause 3-20 Elementary and Group Items 01 Employee-Rec-In. 05 Name-In … 10 First-Name-In (Picture clause) 10 Last-Name-In (Picture clause) 05 Annual-Salary-In (Picture clause) • Name-In is group item since it is subdivided into first and last name • Employee-Rec-In also group item • First-Name-In is elementary item since it is not further subdivided 3-21 Invalid Level Numbers 01 Employee-Rec-In. 05 Name-In … 10 First-Name-In (Picture clause) 12 Last-Name-In (Picture clause) 05 Annual-Salary-In (Picture clause) • Last-Name-In level number is invalid since it is not subordinate to First-Name-In • Both first and last name are at same level and should have same level number 3-22 PICTURE (PIC) clauses • Specify type of data stored in field • Indicate size of field 3-23 Types of data fields • Alphabetic • Only letters or blanks • For name, item description, etc. • Alphanumeric • Any character - letters, digits, special characters • For an address like 123 N. Main St. • Numeric • Only digits • For fields used in arithmetic operations 3-24 Data Types in PICTURE clause • A for alphabetic • X for alphanumeric • 9 for numeric 3-25 Size of Data Fields Denote size of field by: • Number of A’s, X’s or 9’s used in PICTURE 01 Cust-Rec-In. 05 05 Cust-ID-In Picture XXXX. Amt-In Picture 99999. 3-26 Size of Data Fields My also denote size of field by: • A, X or 9 followed by number in parentheses 01 Cust-Rec-In. 05 05 Cust-ID-In Picture X(4). Amt-In Picture 9(5). 3-27 Defining Fields in Record • Must account for all positions defined in record layout • Must describe fields in order they appear in record • Field names should be unique • For fields not used by program – Data-name may be left blank (preferable) – May use reserved word FILLER as data-name – Positions must still be defined using PIC clause 3-28 Implied Decimal Point • For fields used in arithmetic operations • Symbol V used in PIC clause to denote location of implied decimal point • Decimal point itself not stored as part of number • To store value 26.79 in field AMT-IN, code entry as 05 Amt-In Pic 99V99. 3-29 Variable and Constant Data • Entries in DATA DIVISION reserve storage for data • Entries in FILE SECTION reserve storage for data from records in input/output files • WORKING-STORAGE SECTION reserves storage for keyed input/output, and reserves storage for work fields 3-30 Variable Data • Entries in both SECTIONs define variable data • Contents of field change (vary) with each new record read or new value keyed in • Contents unknown until program begins execution 3-31 Constant Data • Data with a fixed value • Value that does not depend on input • Examples: • Fixed tax rate of .05 • Message “INVALID” displayed when a value is in error • .05 and “INVALID” are constant values 3-32 Types of Constants • Numeric literal • Examples: .05 5280 199.99 • Constant used for arithmetic operations • Nonnumeric (alphanumeric) literal • Examples: “INVALID” “Enter your name” • Constant used for all operations except arithmetic • Figurative constant • SPACES ZEROS • Reserved word for commonly used values 3-33 Rules for Numeric Literals 1. 1 to 18 digits. 2. + or - sign may be included to left of first digit. 3. Decimal point permitted within literal. May not follow last digit. Valid numeric literals 23 +2359.4 .125 -68734 3-34 Rules for Nonnumeric Literals • Must be enclosed in quotation marks • From 1 to 160 characters, including space • Any character in COBOL character set except quotation mark Valid Nonnumeric Literals '123 Main St.' '$14.99' '12,342' 'Enter a value from 1 to 10' 3-35 Nonnumeric Literals • Only characters within quotes are moved or displayed • May contain all numbers ('125') but not same as numeric literal (125) – Cannot be used in arithmetic operations – Cannot be moved to field with PIC of 9’s • Are not data-names – 'Amount-In' not same as field defined in DATA DIVISION called Amount-In 3-36 Figurative Constants - ZERO • ZERO, ZEROS or ZEROES means all zeros Example Move Zeros To Total-Out • Fills each position in Total-Out with a zero • May be used with both numeric and alphanumeric fields 3-37 Figurative Constants - SPACE • SPACE or SPACES means all spaces or blanks Example Move Spaces To Code-Out • Fills each position in Code-Out with a space or blank • Use only with alphanumeric fields since blank is invalid numeric character 3-38 WORKING-STORAGE SECTION • • • • Follows FILE SECTION Begins with heading on line by itself Starts in Area A, ends with period All items must be defined at 01 level or in entries subordinate to 01 level entry 3-39 WORKING-STORAGE SECTION • Rules for user-defined data-names apply • Elementary items: – Must include PICTURE clause – May be assigned initial value with VALUE clause 3-40 Uses of WORKING-STORAGE To define fields used for • Keyed input and displayed output • Intermediate arithmetic results • Counters and totals • End-Of-File Indicators 3-41 VALUE clause • To define initial value for field • If omitted, field’s value undefined when program begins execution • May be used only in WORKINGSTORAGE SECTION 3-42 VALUE vs MOVE • VALUE clause used in DATA DIVISION – Gives initial value before execution begins • MOVE used in PROCEDURE DIVISION – Assigns value to field after program begins • MOVE may change initial value of field 3-43 VALUE Clause • Contains literal or figurative constant • Data type must match PICTURE • Numeric literals or ZEROS used with PIC 9 fields 01 WS-Tax-Rate Pic V99 Value .06. 01 WS-Total Pic 999 Value Zeros. 3-44 VALUE Clause • Nonnumeric literals, ZEROS or SPACES used with PIC X fields 01 WS-EOF Pic X(3) Value ‘YES’. 01 WS-Descrip Pic X(8) Value Spaces. 3-45 Defining Constants or Literals Define a literal of .28 (28%) for a tax rate • Method 1 - code as literal in PROCEDURE DIVISION Multiply .28 by WS-Salary Giving WS-Tax • Method 2 - store in data item in WORKING-STORAGE SECTION 01 WS-Rate Pic V99 Value .28. 3-46 Defining Constants or Literals • Method 2 - use data-name in place of literal in PROCEDURE DIVISION Multiply WS-Rate by WS-Salary Giving WS-Tax – Preferable for literals used more than once – Reduces likelihood of error since literal value entered one time – Allows meaningful name to be associated with number 3-47 Continuation of Literals • Nonnumeric literals may be up to 160 characters • Long literals may not fit on one typed line • Subdividing long literals into separate fields is recommended 3-48 Continuation of Literals Example Separate this report title into two fields "Transaction Report for XYZ Corporation" 01 Report-Title. 05 Pic X18) Value 'Transaction Report'. 05 Pic X(20) Value ' for XYZ Corporation'. 3-49 Continuation of Literals • Long literals may be continued from one line to next, although this is not recommended • Rules for continuation of literals from one line to next – Begin literal with quotation mark. – Continue literal to position 72. Do not end with quotation mark. – Place hyphen on next line in position 7. – Continue literal with quotation mark starting anywhere in Area B. – End literal with quotation mark. 3-50 COBOL 2008 Changes 1. LABEL RECORDS clause will be phased out entirely 2. VALUE clause will be allowed in FILE SECTION 3. Way to continue nonnumeric literals will change 4. Margins A and B rules will be guidelines rather than requirements 5. Commas and dollar signs will be permissible in numeric literals 3-51 Chapter Summary • Data organized into files, records and fields • Variable data changes with each run depending on input values • Constant or literal data defined within program, not entered as input 3-52 Chapter Summary • FILE SECTION includes FD entry for each file used by program • Record names coded at 01 level • Field names coded at 02-49 level • Fields must be defined in order they appear in record 3-53 Chapter Summary • Group items are further subdivided • Elementary items are not subdivided • Elementary items have PICTURE clause • Codes X, A, 9, V used to describe data 3-54 Chapter Summary • WORKING-STORAGE SECTION used for storing – Intermediate results, counters – End-of-file indicators – Interactive data accepted as input or displayed • VALUE clauses may be used in this section to initialize fields 3-55 Copyright © 2003 John Wiley & Sons, Inc. All rights reserved. Reproduction or translation of this work beyond that permitted in Section 117 of the 1976 United States Copyright Act without the express written permission of the copyright owner is unlawful. Request for further information should be addressed to the Permissions Department, John Wiley & Sons, Inc. The purchaser may make back-up copies for his/her own use only and not for distribution or resale. The Publisher assumes no responsibility for errors, omissions, or damages, caused by the use of these programs or from the use of the information contained herein. Limited modifications to original presentation. 3-56