60229400_3300_COBOL_MASTER_Feb69 60229400 3300 COBOL MASTER Feb69
60229400_3300_COBOL_MASTER_Feb69 60229400_3300_COBOL_MASTER_Feb69
User Manual: Pdf 60229400_3300_COBOL_MASTER_Feb69
Open the PDF directly: View PDF .
Page Count: 329
Download | |
Open PDF In Browser | View PDF |
COMPUTER SYSTEMS USASI COBOL/ MASTER REFERENCE MANUAL CONTROL DATA CORPORATION REVISION RECORD 60229400 REVISION (2-6-69\ NOTES Original printing. Additional copies of this manual may be obtained from the nearest Control Data Corporation sales office. Pub. No. 60229400 February 1969 :91969 Control Data Corporation Printed in the enited States of America Address comments concerning this manual to: Control Data Corporation Software Documentation 4201 North Lexington Avenue St. Paul, ~,1innesota 55112 or USE:' Comment Sheet h the back of this manual. PREFACE The features of USASI COBOL/MASTER specified in ihis manual conform to the United States of America Standards Institute (USASI) COBOL Standard. The USASI specifications define a Nucleus for internal processing and eight functional processing modules: Table Handling, Sequential Access, Random Access, Random Processing, Sort, Report Writer, Segmentation, and Library. The Nucleus is divided into two levels, low and high. USASI COBOL/MASTER is implemented at the high level of the Nucleus. Of the modules, only Random Processing and Segmentation are not implemented. All other modules are implemented at the high level. The Report Writer module can be omitted from the COBOL library. USASI COBOL/MASTER runs under control of the :MASTER operating system. Additional features of COBOL are implemented in USASI COBOL/MASTER to facilitate operating and to support system interfaces. The inclusion of COBOL features over and above the USASI standard is not prohibited by the standard; however, an installation option is available to diagnose all nonUSASI features as errors at compile time. The Business Data Processing Unit (3312) must be present to compile and execute USASI COBOL/ MASTER programs on a CONTROL DATA® 3300 computer. The CONTROL DATA® 3500 computer comes equipped with the Business Data Processing hardware. This manual is organized in the traditional manner of Identification, Environment, Data, and Procedure Divisions with the exception of the Report Writer and Library modules which are described in separate chapters. 60229400 iii ACKNOWLEDGMENT COBOL is an industry language and is not the property of any company or group of companies, or of any organization or group of organizations. No warranty, expressed or implied, is made by any contributor or by the COBOL Committee as to the accuracy and functioning of the programming system and language. Moreover, no responsibility is assumed by any contributor, or by the committee, in connection therewith. Procedures have been established for the maintenance of COBOL. Inquiries concerning the procedures for proposing changes should be directed to the Executive Committee of the Conference on Data System s Languages. The authors and copyright holders of the copyrighted material used herein: FLOW-IV1ATIe (Trademark of Sperry Rand Corporation), Programming for the Univac (R) I and II, Data Automation Systems copyrighted 1958, 1959, by Sperry Rand Corporation IBM Commercial Translator Form No. F 28-8013, copyrighted 1959 by IBM FACT, DSI 27A5260-2760, copyrighted 1960 by Minneapolis-Honeywell have specifically authorized the use of this material in whole or in part, in the COBOL specifications. Such authorization extends to the reproduction and use of COBOL specifications in programming manuals or similar publications. 60229400 v INTRODUCTION INTRODUCTION TO COBOL COBOL (Common Business Oriented Language) is a programming language which uses English terms to simplify the programming of business data processing problems. This manual presents the details and rules for writing a program in USASI COBOL/MASTER for the CONTROL DATA® 3300 and 3500 computers. Familiarity with basic COBOL is desirable, but not essential. This introduction contains a brief outline of the COBOL language elements, program structure and content. Used in conjunction with the rest of the manual, it provides the new user with an introduction to the fundamentals of COBOL programming. LANGUAGE ELEMENTS The COBOL language is made up of the following elements: COBOL reserved words User-defined words Literals Level numbers Symbols Pictures The user composes user-defined words, literals, and pictures according to rules that govern the choice and arrangement of characters. Within the limits imposed by the rules, it is virtually possible to compose an infinite number of words, literals, and pictures. The COBOL' reserved words, symbols, and level numbers are presented in fixed sets from which the user selects what he needs. He cannot invent new reserved words, symbols, or level numbers and must use these elements according to the rules of the language. The sample COBOL source program entry below shows all six elements: f level number 60229400 ,DATA-fAME - l , PICTURE user-defined word ~ T YjUE, ~ picture \ COBOL reserved words liter~Symbol vii COBOL Reserved Words Over 250 English words and abbreviations have been set aside as COBOL reserved words. (Appendix C contains a complete list of these reserved words.) Special meanings have been assigned to these words; the user • Does not define reserved words • Cannot change the meaning of a reserved word • Cannot add words to the reserved word list • Cannot substitute other words for those on the list • Must not alter or misspell reserved words • May use reserved words only for specified purposes The reserved words have various purposes as defined in the reference formats. They may identify program units,such as SECTION, PROCEDURE, WORKING-STORAGE. They may identify parts of entries, such as VALUE, PICTURE, USAGE. They may specify actions like WRITE, PERFORM, DIVIDE. They may have specific functional meanings such as NEGATIVE, COMPUTATIONAL, EQUAL. As figurative constants, they can represent specific data values: ZERO, SPACES, LOWVALUE. (A complete list of figurative constants is given in appendix B.) User-Defined Words The user must supply words that name data items, data conditions, and procedures. These words have no preassigned meaning, but they must be defined within the program in which they are used. The formation of these words is governed by the following rules: • A word may be up to 30 characters long. • It may contain letters (A through Z), digits (0 through 9) and the hyphen (-). • Only procedure names may be entirely numeric; all other words must contain at least one letter. • A word may neither begin nor end with a hyphen. • Spaces (blanks) must not appear in a word. • It must not be spelled exactly like a reserved word. The example below contains user-defined words as well as reserved words and symbols. ADD-DEDUCTIONS. l\nD reserved words 'HOSP-INS~STATE-lNE~ TOT-DED . user-defined words viii 80229400 Appendix B contains a detailed description of the formation of different types of user-defined words such as data-names, condition-names, procedure-names, and so forth. Literals Literals are a special case of user-defined words. They are actual values used in the program and as such are self-defining. Literals may be numeric or non-numeric. A numeric literal is a string of digits that may include a plus or minus sign, and a decimal point. Its value is the quantity represented by the characters in the literal. Every numeric literal is classed as a numeric item. A non-numeric literal is a string of one to 120 characters enclosed in quotation marks from the computer's character set (appendix B). It may contain reserved words and spaces but not the quotation mark. The value of a non-numeric literal is the string of characters excluding the quotation marks. Non-numeric literals are classed as alphanumeric items. Rules governing the formation of literals are given in appendix B. The following examples show the use of literals in an entry: DIVIDE ~TO CONVERTED-TEMPl GIVING TEMP-2. numeric literal 77 HEADING-A PICTURE X(lO) VALUE IS :'COBOL ~ non-numeric literal Level Numbers Level numbers (01 through 49, 66, 77, and 88) are used in entries that assign names to data items and data values. They deSignate the level of the entries relative to each other. Numbers 01 through 49 designate the hierarchy of data entries within records. 01 is always assigned to the record itself; 02 through 49 are assigned to items within the record. Level numbers need not be consecutive but must be ordered so that the higher the number, the lower the entry in the hierarchy. Level number 66 deSignates an entry that renames a previously defined entry. It is always used with the reserved word RENAMES. Level number 77 deSignates an independent data item, one that is not part of a record. Level number 88 is used with entries that assign condition names to specific values a data item may assume. 60229400 ix Whenever a level number is used, it is the first element in the entry. The entries below show how level numbers are used: 77 ITEM-A PICTURE:XX VALUE Ol. £~ ~ UPDATE-RECORD. RECORD-ID. p4. CODE-NUMBER PICTURE X. level> _&.§ NEW-CODE VALUE "A". numbers I ,88. OLD-CODE VALUE "B". ~ ACCOUNT-NUMBER PICTURE 999. ~ CUSTOMER-IDENTIFICATION. RETAIL-ID RENAMES CUSTOMER-IDENTIFICATION. 6 ~ Symbols Symbols are special characters which have specific meanings for the compiler. Symbols are used in punctuation, as operators in arithmetic expressions, as relational operators in conditions, and as editing symbols in pictures. The COBOL Character Set in appendix B lists all the symbols available to the COBOL programmer. Punctuation rules are given in appendix B, the rules for arithmetic and conditional operators in chapter 4, and picture symbols in chapter 3. Pictures Pictures describe such characteristics of data items as: • Size of item • Class of item: numeric, alphabetic, or alphanumeric • Whether the item is signed • Position of an assumed decimal point • Editing (deletion, insertion, or replacement of characters) to be performed on the item Each picture is a string of from 1 to 30 characters. Pictures are composed of the characters listed under PICTURE in chapter 3. In general, the number of characters defines the size of the item and the character itself defines the class: X=alphanumeric, 9=numeric, A=alphabetic. A picture may be abbreviated by enclosing an integer in parentheses to show the size immediately after the character defining the class. For instance, X(20) means the same as 20 X's in a row; both mean that the item consists of 20 alphanumeric characters. x 60229400 The word PICTURE or the words PICTURE IS or the abbreviation PIC always precedes the picture itself in an entry. Examples of pictures in entries: 02 FILLER PICTURE ~ . tu 02 STOCK-ITEM PIC ~ pIC res PROGRAM STRUCTURE A COBOL source program is composed of entries organized into divisions, sections, and paragraphs. In general, a division is made up of sections, and a section is made up of paragraphs. Divisions All COBOL programs consist of four divisions each with a fixed name: IDENTIFICATION, ENVIRONMENT, DATA, and PROCEDURE. The divisions always appear in that order in a program. The beginning of each division is marked by a division header entry consisting of the name of the division followed by the word DIVISION and a period. The division header always appears on a line by itself. Sections The inclusion of sections depends on the particular division. There are no sections in the Identification Division. The Environment and Data Divisions always have sections and these sections have fixed names. Sections are optional in the Procedure DiviSion, and when sections are included, the section names are supplied by the user. Each section is identified by a header entry consisting of the section name followed by the word SECTION and a period. A section header usually appears on a line by itself. Paragraphs All divisions except the Data Division contain paragraphs. Paragraph names in the Identification and Environment Divisions are fixed. In the Procedure Division, paragraph names are user defined. Paragraphs are identified by header entries consisting of a name followed by a period and a space. A paragraph header need not appear on a line by itself; it must be the first entry on a line, but may befollowedonthe same line by one or more entries in that paragraph. 60229400 xi Entries An entry is one or a series of language elements terminated by a period and a space. The precise sequence of elements in each entry is dictated by the format rules contained in this manual. Sample Division showing structural units division entries sections c ENVIRONMENT DIVISION. C CONFIGURATION SECTION. L SOURCE-COMPUTER. C c c c c [ [ 3500. OBJECT-COMPUTER. 3500. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT OLD-MASTER-FILE ASSIGN TO TAPE Ol. SELECT NEW-MASTER-FILE ASSIGN TO TAPE 02. PROGRAM CONTENTS A COBOL source program must be identified, it must specify linkage between the computer system and the data files to be processed, it must define the data to be processed, and finally it must specify how the data is to be processed. A COBOL source program consists of the information required to perform these functions organized into the four required divisions. Identification Division contains the information that identifies the program. At the very least, this division states the program name. In addition, it may contain the date the program was written, the date compiled, the author, the installation, and any remarks that might be useful to someone reading the program. xii 60229400 Environment Division contains information about the equipment used to compile and execute the program. Its primary function is to assign each data file by name to an input-output device and to specify any special input-output techniques. Data Division contains a full description of the data to be processed by the object program. In the File Section, it describes the data items that make up each of the files named in the Environment Division. In the Working-Storage section it describes the data items used for constants and for data developed during execution of the program. If the program is divided into subprograms, the CommonStorage Section contains deSCriptions of data common to more than one subprogram. The Report Section contains a description of data to be output on a printed report in terms of the format in which it will be presented. Data Division entries show how data items are grouped and organized into files and records. Data names, level numbers, pictures, and other information are contained in these entries. Procedure Division specifies the actions required to process the data and it indicates the sequence of processing. The basic functions of this division are input-output, arithmetic, data movement. and sequence control. In addition, it provides the user with the capability to sort files, search tables, and write reports. REFERENCE FORMATS Each COBOL entry is described in terms of a reference format. Throughout this manual a format is shown adjacent to information defining the entry. When more than one specific arrangement is permitted, the format is separated into numbered formats. Notation Used in Reference Formats UPPER CASE words are COBOL reserved words. They must be spelled correctly including any hyphens and may not be used in a source program except as speCified in the reference formats. UNDERLINED UPPER CASE words are required when the format in which they appear is used. They define the action of the compiler. lower-case-words are generic terms which represent the words or symbols supplied by the user. When generic terms are repeated in a format, a number or letter is appended to the term for identification. level numbers are one- or two-digit numbers that precede entries in the Data Division to indicate the hierarchy level of entries. [ ] Brackets enclose optional portions of a reference format. All of the format within the brackets may be omitted or included at the user's option. 60229400 xiii ~f Braces enclose two or more vertically stacked items in a reference format when only one of the enclosed items can be used. .•. Ellipses immediately following a pair of brackets or braces indicate that the enclosed material can be repeated at the user's option. Punctuation symbols (period, comma, semicolon) shown within the formats are required unless enclosed in brackets and specifically noted as optional. Notation used in Examples t indicates the position of an assumed decimal point in an item. + A plus or minus sign above a numeric character (n) indicates an operational sign is stored in combination with the numeric character. Character positions in storage are shown by boxes, IA I B I C ID I An empty box means an unpredictable result . .6. xiv indicates a space (blank). 60229400 CONTENTS CHAPTER 1 CHAPTER 2 IDENTIFICA TION DIVISION 1-1 l.1 1-1 1-2 1-2 ENVIRONMENT DIVISION 2-1 2.1 2.2 2-1 2-2 2-2 2-2 2-3 2-4 2.3 CHAPTER 3 Specification of Environment Division CONFIGURA TION SECTION 2.2.1 SOURCE -COMPUTER Paragraph 2.2.2 OBJECT-COMPUTER Paragraph 2.2.3 SPECIAL-NAMES Paragraph INPUT-OUTPUT SECTION 2.3.1 FILE-CONTROL Paragraph 2.3.2 I-O-CONTROL Paragraph 2-5 2-10 DATA DIVISION 3-1 3.1 3-1 3-2 3-2 3-3 3-3 3-4 3-4 3-5 3-5 3-5 3-6 3-6 3-6 3-6 3-7 3-9 3.2 3.3 3.4 60229400 Specification of Identification Division l.l.1 PROGRAM - ID Paragraph l.1. 2 DATE-COMPILED Paragraph Sections 3.1.1 FILE SECTION 3.l.2 COMMON-STORAGE SECTION 3.l. 3 WORKING-STORAGE SECTION 3.1.4 REPORT SECTION Data Division Concepts 3.2.1 Entry 3.2.2 Item 3.2.3 Record 3.2.4 Level Number 3.2.5 Data Name 3.2.6 Initial Value 3.2.7 Literal 3.2.8 Figurative Constant File Description Entry Data Description Entry xv 3.5 CHAPTER 4 3-11 3-11 3:-12 3-13 3-14 3-16 3-18 3-22 3-28 3-33 3-34 3-35 3-36 3-37 3-38 3-40 3-43 PROCEDURE DIVISION 4-1 4. 1 4-1 4-2 4-3 4-4 4-4 4-5 4-6 4-7 4-7 4-9 4-10 4-10 4-11 4-12 4-12 4-13 4-13 4-13 4-14 4-15 4-15 4-15 4-16 4. 2 4. 3 4.4 4. 5 -1:. 6 xvi Data Division Clauses 3.5.1 BLANK WHEN ZERO 3.5.2 BLOCK CONTAINS 3.5.3 DATA RECORDS 3.5.4 JUSTIFIED 3.5.5 LABEL RECORDS 3.5.6 OCCURS 3.5.7 PICTURE 3.5.8 PICTURE Edit RECORD CONTAINS 3.5.9 3.5.10 RECORDING MODE 3.5.11 REDEFINES 3.5.12 RENAMES 3.5.13 SEQUENCED ON 3.5.14 SYNCHRONIZED 3.5.15 USAGE 3.5.16 VALUE Specification of Procedure Division 4. 1 . 1 Declaratives 4.1.2 Statements and Sentences Arithmetic Expressions and Statements 4.2.1 Expressions 4. 2. 2 Statements Conditions 4. 3. 1 Relation Condition Comparison of Numeric Operands 4.3.2 Comparison of Nonnumeric Operands 4.3.3 4.3.4 Comparisons with Index Names/Index Data Items Sign Condition 4.3.5 Class Condition 4.3.6 4.3.7 Condition-Name Condition 4.3.8 Evaluation Rules Common Options in Statements 4.4.1 ROUNDED Option 4.4.2 SIZE ERROR Option 4. 4. 3 CORRESPONDING Option Table Handling 4.5.1 Subscripts 4. 5. 2 Indexing 4. 5. 3 Search Function 4.5.4 Restrictions on Indexing, Subscripting and Qualification Debugging Aid 4-16 4-17 60229400 4.7 Procedure Division Statements ACCEPT 4.7.2 ADD 4.7.3 ALTER 4.7.4 CLOSE 4.7.5 COMPUTE 4.7.6 DISPLAY 4.7.7 DIVIDE 4.7.8 ENTER 4.7.9 EXAMINE 4.7.10 EXIT 4.7.11 GO TO 4.7.12 IF 4.7.13 MOVE 4.7.14 MULTIPLY 4.7.15 NOTE 4.7.16 OPEN 4.7.17 PERFORM 4.7.18 READ 4.7.19 RELEASE 4.7.20 RETURN 4.7.21 SEARCH 4.7.22 SEEK 4.7.23 SET 4.7.24 SORT 4.7.25 STOP 4.7.26 SUBTRACT 4.7.27 TRACE 4.7.28 USE 4.7.29 WRITE 4.7.1 CHAPTER 5 RE PORT WRITER 5-1 5.1 5-1 5-2 5-2 5-3 5-4 5-4 5-5 5-6 5-7 5.2 60229400 4-17 4-17 4-18 4-20 4-21 4-23 4-24 4-25 4-26 4-29 4-30 4-31 4-32 4-35 4-39 4-40 4-41 4-44 4-51 4-53 4-54 4-55 4-61 4-62 4-64 4-67 4-68 4-70 4-72 4-74 General. Description 5.1.1 Control Group/Control Break 5.1. 2 Page Break 5.1. 3 LINE -COUNTER 5.1. 4 PAGE-COUNTER Data Division Entry Formats 5.2.1 F He Description Entry 5.2.2 Report Description Entry 5.2.3 Report Group Description Entry xvii 5.3 5.4 5.5 CHAPTER 6 LIBRARY 6.1 6.2 CHAPTER 7 COpy Statement Source Library Preparation SOURCE PROGRAM PREPARATION t COMPILATION, EXECUTION 7.1 7.2 7.3 7.4 7.5 xviii Data Division Clauses 5.3.1 CODE 5.3.2 COLUMN NUMBER 5.3.3 CONTROL 5.3.4 GROUP INDICATE 5.3.5 LINE NUMBER 5.3.6 NEXT GROUP 5.3.7 PAGE LIMIT 5.3.8 RESET 5.3.9 SOURCE-SUM-VALUE 5.3.10 TYPE Procedure Division Statements 5.4.1 GENERATE 5.4.2 INITIATE 5.4.3 TERMINATE 5.4.4 USE BEFORE RE PORTING Sample Report Writer Program Reference Format 7.1.1 COBOL Coding Sheet COBOL Control Cards 7.2.1 UCBL Card 7.2.2 END PROGRAM Card 7.2.3 FINIS Card 7.2.4 ENDATA Card MASTER Control Cards 7.3.1 JOB Card 7.3.2 SCHEDULE Card 7.3.3 *DEF Card 7.3.4 Task Name Cards Outputs from Compilation 7.4.1 Source Program Listing 7.4.2 Error Diagnostics 7.4.3 Symbolic Listing of Object Program 7.4.4 Object Program 7.4.5 Data Map Rerun/Restart Procedures 7.5.1 Rerun 7.5.2 Restart 5-9 5-9 5-10 5-11 5-12 5-13 5-15 5-16 5-19 5-20 5-23 5-26 5-26 5-28 5-29 5-30 5-31 6-1 6-1 6-3 7-1 7-1 7-1 7-2 7-4 7-4 7-5 7-5 7-6 7-6 7-6 7-7 7-8 7-8 7-8 7-8 7-9 7-9 7-9 7-9 7-9 7-10 6022!).100 7.6 Sample COBOL Decks 7.6.1 Compile Only 7.6.2 COBOL Source Deck 7.6.3 Compile and Execute 7.6.4 Restart 7.6.5 Compile and Execute 7.6.6 Execute 7-11 7-11 7-12 7-13 7-14 7-15 7-16 APPENDIX SECTION APPENDIX A SAMPLE PROGRAM A-I APPENDIX B COBOL LANGUAGE B-1 APPENDIX C COBOL RESERVED WORD LIST C-1 APPENDIX D COBOL COLLATING SEQUENCE D-1 APPENDIX E STANDARD FILE LABELS E-1 APPENDIX F FILE BLOCKING FORMATS F-1 APPENDIX G INPUT/OUTPUT SUMMARY TABLE G-1 APPENDIX H DIFFERENCES BE1WEEN MS COBOL AND USASI COBOL H-1 APPENDIX I DIAGNOSTICS I-I APPENDIX J ENTER VERB OBJECT CODE EXAMPLES J-1 60229400 xix IDENTIFICATION DIVISON 1 The Identification Division specifies the information to identify the source program and the output from compilation. It must include the program name, and may also include the date the program was written, the date compiled, and so forth. Information specified in this division is included in the listing of the source program, but only the PROGRAM -ID clause affects the object program. 1.1 SPECIFICATION OF IDENTIFICATION DIVISION IDENTIFICATION DIVISION. PROGRAM-ID. program-name. [AUTHOR. comment-paragraph.] [INSTALLATION. comment-paragraph.] [DATE-WillTTEN. comment-paragraph.] [DATE-COMPILED. [comment-paragraph.]] [SECURITY. comment-paragraph. ] [REMARKS. comment-paragraph.] The header IDENTIFICATION DIVISION begins in column 8 of the first line and is followed by a period and a space. The name of each succeeding paragraph is specified on a new line; each begins in column 8 and is followed by a period and a space. The comment paragraphs are any combination of characters from the COBOL character set (appendix B) organized to conform to sentence and paragraph structure. Only the PROGRAM-ID paragraph is required. 60229400 1-1 1.1.1 PROGRAM-ID The PROGRAM-ID paragraph gives the name by which the program is identified. PROGRAM-ID. program-name. The program name is a word and must conform to the rules for forming a word (appendix B). The program name identifies the source program, the object program, and all listings pertaining to the program. The first seven characters of this name must be unique within the COBOL source program. 1.1.2 DATE-COMPILED DATE-COMPILED The DATE-COMPILED paragraph provides the compilation date in the Identification Division source program listing. DATE-COMPILED. [comment-paragraph.] The paragraph name DATE -COMPILED causes the current date to replace the comment paragraph during program compilation. The remaining paragraphs in the division supply documentary information and if specified, will appear in the source program listing. 1-2 60229400 ENVIRONMENT DIVISION 2 The Environment Division describes aspects of a COBOL program that depend on the physical characteristics of a specific computer. This division must be rewritten and the entire source program recompiled when the object program is to be run on different computers. The Environment Division specifies the configuration of the compiling computer and the object computer. In addition, information relating to inputoutput control, special hardware characteristics, and control techniques can be specified. The information in the Environment Division is specified in hvo sections: The Configuration Section specifies the characteristics of the source computer and the object computer. The Input-Output Section specifies the information needed to control transmission and handling of data between external devices and the object program. 2.1 SPECIFICATION OF ENVIRONMENT DIVISION ENVIRONMENT DIVISION. CONFIG URATION SE CTION. SOURCE-COMPUTER. source-computer entry. OBJECT-COMPUTER. object-computer entry. [SPECIAL-NAMES. special-names entry.] INPUT -OUTPUT SE CTION. r ] [FILE-CONTROL. file-control entry.] [I -O-CONTROL. input-output-control entry.] The Environment Division must begin with the header: ENVIRONMENT DIVISION followed by a period and a space. 60229400 2-1 2.2 CONFIGURATION SECTION 2.2.1 SOURCE-COMPUTER This paragraph describes the computer upon which the program is to be compiled. SOURCE-COMPUTER. COPY statement.} { SOURCE-COMPUTER. computer-name. COpy is used only when the COBOL library contains the complete text of the SOURCE-COMPUTER paragraph. The COpy statement is described in section 6. 1. Computer name is a word which must appear as the first entry following SOURCE-COMPUTER. 3300 and 3500 are the only words permitted as computer names in this paragraph. The SOURCE-COMPUTER paragraph is used for documentation only, and has no effect on the object program. 2.2.2 OBJECT COMPUTER This paragraph describes the computer on which the program is executed. ~ OBJECT-COMPUTER. COPY statement. t OBJECT-COMPUTER. computer-name rMEMORY SIZE L integer t~ ~~:::!CTERs}J t MODULES ) COPY is used only when the COBOL library contains the complete OBJECTCOMPUTER paragraph. The COpy statement is described in section 6.1. Computer name is a word and must appear as the first entry following the paragraph name OBJECT-COMPUTER. The computer names may be either 3300 or 3500. The integer memory size may be any value and may include alphabetic characters. This paragraph is used for documentation purposes only and has no effect on the object program. Example: OBJECT-COMPUTER. 2-2 3500 MEMORY SIZE 262K WORDS. 60229400 2.2.3 SPECIAL NAMES This paragraph assigns special control characters and implementor names to user defined mnemonic names. Two clauses permit the specification of nonstandard currency conventions. If none of these features is required, this paragraph may be omitted. Format 1: SPECIAL-NAMES. COpy statement. Format 1 is used only when the COBOL library contains the entire description of all SPECIAL-NAMES used in the program. The COpy statement is described in section 6.1. Format 2: SPECIAL-NAMES. [implementor-name IS mnemonic-name] ... [, literal IS mnemonic-name] [, CURRENCY SIGN IS literal] [, DECIMAL-POINT IS COMMA]. Each mnemonic name defined under SPECIAL-NAMES must be unique within the source program. implementor-name IS mnemonic-name Implementor names are restricted to the following hardware names: SYSTEM -INPUT SYSTEM-PUNCH SYSTEM -OUTPUT CONSOLE Mnemonic names must be used in references to system files or the console in an ACCEPT or DISPLAY statement in the Procedure Division. literal IS mnemonic-name The non-numeric literal is a one-character identifier used in either of the following: carriage control in the WRITE ADVANCING mnemonic-name LINES statement record prefix code in the CODE clause of the Report Description 60229400 2-3 CURRENCY SIGN IS literal The non-numeric literal is used in the PICTURE clause to represent a currency symbol other than the $ (dollar sign). Alternate currency symbols are used for foreign currency. The literal must be a single character and may not be any of the following: digits 0-9 alphabetic characters ABC D E P R S V X Z space special characters *+- , . ; () " If the CURRENCY SIGN clause is absent, only $ (dollar sign) may be used as a currency symbol in a PICTURE clause. DECIMAL- POINT IS COMMA This clause indicates that the function of comma and period are exchanged in any PICTURE clause character string and in numeric literals. This clause is useful for specifying foreign currency. Example: SPECIAL-NAMES. SYSTEM-OUTPUT IS PRINT, 'A' IS EJECT, CURRENCY SIGN IS 'M', DECIMAL-POINT IS COMMA. 2.3 INPUT - OUTPUT SECTION 2-4 This section consists of the header INPUT-OUTPUT SECTION and the two paragraphs FILE-CONTROL and I -O-CONTROL. If neither paragraph is used, the entire section can be omitted. 60229400 2.3.1 FILE-CONTROL This paragraph names each file, identifies the file device, and allows particular hardware assignment. It also specifies alternate input-output areas, the access mode and file limits of mass storage files, and the key to accessing random access files. Format 1: FILE-CONTROL. COpy statement. Format 1 is used only when the COBOL library contains the entire text of the FILE-CONTROL paragraph. The COpy statement is described in section 6.1. Format 2: FILE -COl'l'TROL. lSELECT [OPTIONAL] file-name-l [, RENAMING file-name-2] ASSIGN TO [integer-1] hardware-name-1 dsi-1 [,{:-rdware-name-2 dsi-2} ] [, FOR MULTIPLE [. RESERVE {~~ETL} ] {~~eger-2 } ALTERNATE [{1~~!S}] ] FILE-LIMIT IS }. . ] Integer-3 [THRU Integer-4] [ ' { FILE-UMITS ARE [,ACCESS MODE IS {~:~:rIAL} ] [, PROCESSING MODE IS SEQUENTIAL] [,ACTUAL KEY IS data-name-IJ. i ... If file-name-1 is a sort file, only the SELECT and ASSIGN clauses are included in the FILE-CONTROL paragraph. If file-name-1 is in the USING or GIVING options of the SORT verb, FOR MULTIPLE REEL/UNIT and RESERVE clauses may be included in addition to the required SELECT and ASSIGN clauses. (See SORT, section 4. 7. 24) . 60229400 2-5 SELECT [OPTIONAL] file-name-l The SELECT clause is required for each file described in the Data Division. Each file is named only once as file-name-l in the FILE-CONTROL paragraph following the key word SELECT. Each selected file must have a file description entry in the Data Division of the source program unless a RENAMING clause relates the selected file to a file that is the subject of another SELECT clause. The SELECT clause for the renamed file must not contain the RENAMING option. The key word OPTIONAL is required for input files that are not necessarily present each time the object program is run. RENAMING file-name-2 If the RENAMING clause is used, file-name-l uses the file description entry, including the associated record description already specified for file-name-2. The files do not share the same area unless the SAME AREA clause appears in the I-O-CONTROL paragraph. File-name-l is essentially a duplicate of file-name-2 except that file-name-l has its own FILE-CONTROL paragraph entry. File-name-2, the renamed file, may not be a sort file. ASSIGN TO [integer-I] hardware-name-l dsi-l ['{:rdware-name-2 dsi-2} ] All files used in the program must be assigned to an input or output device (hardware name) . Allowable hardware names are as follows: READER SYSTEM -INPUT TAPE TTY (teletypewriter) PRINTER SYSTEM-OUTPUT DISK CRT (211 display) PUNCH SYSTEM-PUNCH SCRATCH Each hardware name, except SYSTEM-INPUT, SYSTEM-OUTPUT and SYSTEM-PUNCH must be accompanied by a data set identifier (dsi). The dsi is a 1-4 character alphanumeric identifier used by MASTER and the input-output control system for all references to this file during the running of the program. It must not begin with an asterisk (*), and may not be INP, OUT, PUN or any COBOL reserved word. Integer-l indicates the number of input-output units of a given hardware name assigned to the file name. This option is used for documentation purposes only. 2-6 60229400 If alternating tape units are to be used, each must be given a unique dsi. Each file on a multi -file reel must have the same dsi. System files do not requi re dsi. Examples: SELECT PAY-FILE ASSIGN TO TAPE AI, TAPE B2. SELECT PAY-FILE ASSIGN TO DISK MSOl. When a file is assigned to hardware names TTY and CRT, a second identifier code, terminal unit identifier, must follow the dsi. (When the hardware-name is TTY or CRT, only one hardware-name may be specified.) The terminal unit identifier (tui) is a 1-4 character alphanumeric code used by MASTER and the input-output control system to determine the local terminal unit associated with the assigned file. This identifier must match the code ass.igned to the device when it is entered into the MASTER operating system hardware unit table. For further information concerning the tui, refer to the MASTER 2.0 Reference Manual Pub. No. 60213600 and applicable installation procedures documentation. Examples: SELECT TWX-FILE ASSIGN TO TTY ABS AOOl. SELECT DISPLAY-FILE ASSIGN TO CRT DEF BOlO. All equipment assigned, except TTY and CRT, must be scheduled on the $SCHED card. Additionally, if the system printer, reader or punch are to be used directly by the program they must be preempted from MASTER with a $DIRECT card. (See Section 7, Source Program Preparation, Compilation and Execution) . SCRATCH files are automatically allocated by the I-O control system in the system scratch file area. These files exist only for the duration of the job and are released by MASTER at the end of each job. They may be processed and used in all respects as a sequential mass storage file might be used. Scratch area for these files must be scheduled with the $SCHED card (section 7.3.2) . If file-name-1 is a file, only the ASSIGN clause can follow the key word SELECT in the FILE-CONTROL paragraph (section 4.7.24, Sort). 60229400 2-7 FOR MULTIPLE {REEL} UNIT The MULTIPLE REEL clause must be included whenever the number of tape units assigned, explicitly or implicitly, might be less than the number of reels in the file. The MULTIPLE UNIT clause must be included whenever the number of mass storage devices assigned might be less than the number of mass storage units in the file. This can occur when the file is assigned to disk packs. If a random file is located on multiple disk packs, all such packs must be mounted on the drives at the time the file is opened. RESERVE {integ er-2} ALTERNATE NO [{AREA }] AREAS The RESERVE clause allows the user to modify the number of input-output areas allocated by the compiler. The option RESERVE integer-2 ALTERNATE AREAS reserves integer-2 areas for the file in addition to the minimum area. Two additional alternate areas may be assigned for unblocked files, one for blocked files. The NO ALTERNATE AREAS option is documentary only. This clause does not apply to random files. Blocked random files have one alternate area; unblocked, no alternate areas. Alternate areas are never allocated to files assigned to TTY and CRT. All integers must be positive. FILE-LIMIT IS }. . mteger-3 [THRU Integer-4] { FILE-LIMITS ARE The FILE-LIMIT clause is applicable only to permanent mass storage files which will be internally allocated and/or expanded by the input-output control system at object time. Integer-3 indicates the number of blocks to be initially allocated to the file. The THRU integer-4 option applies only to sequential files. During program execution the file limits logic operates as follows: When an OPEN request is made on a mass storage file, the input-output control system attempts to open the file through the MASTER operating system. If the request to MASTER is rejected because the file does not exist, an internal allocation is performed, using the information furnished in the file description entry for the file. Open processing then continues in a normal manner. If the allocated area is exceeded and the user has speCified the THRU integer-4 option, the 1-0 control system automatically expands the file by ten percent of integer-3. This expansion may continue until the file reaches the maximum limit indicated by integer-4. 2-8 60229400 ACCESS MODE IS {RANDOM __ SEQUENTIAL }' The ACCESS MODE clause must be included for mass storage files. When ACCESS MODE IS SEQUENTIAL, the mass storage records are obtained or placed sequentially. That is, the next logical record is made available from the file on execution of a READ statement, or a specific logical record is placed into the file on execution of a WRITE statement. No ACTUAL KEY entries are necessary for the SEQUENTIAL mode. When ACCESS MODE IS RANDOM, mass storage records are organized randomly and records are retrieved according to the contents of the ACTUAL KEY data name. PROCESSING MODE IS SEQUENTIAL This clause specifies that mass storage records are processed in the order in which they are accessed; it is documentary only. ACTUAL KEY IS data-name-l The ACTUAL KEY clause must be specified for random access files. The mass storage control system obtains or writes each record randomly. The specific logical record is located through data-name-l of the ACTUAL KEY clause and is made available on execution of a READ statement. When a WRITE statement is executed for a random access file, effectively, the record is placed at the location in the file specified by data-name-l of the ACTUAL KEY clause. Mass storage records in a random file are processed in the order in which they are accessed. If a SEEK statement is executed prior to a READ or WRITE, the location of the record as specified by the value of data-name-l is made available to the next READ or WRITE executed. If no SEEK is issued, the record is automatically located from the value of data-name-l upon execution of a READ or WRITE. The user is responsible for setting the value of data-name-l prior to execution of each SEEK or READ or WRITE statement associated with a random access file. Data-name-l is a 12-character numeric group item, subdivided into two fields. The first is a seven-character block number indicating the relative position of this block from the beginning of the file (1 = the first block, etc.). The second field is a five-character position number giving the first character position of the record relative to the beginning of a block (0 = the first character, etc.). 60229400 2-9 The ACTUAL KEY item should be defined in the Data Division as follows: 01 RECORD-ADDRESS. 02 BLOCK-NUMBER PIC 9(7). 02 RECORD-POSITION PIC 9(5). If data-name-1 points to the location of a record outside the specified file limits, the INVALID KEY clause of the READ or WRITE is executed. The ACTUAL KEY clause is optional for sequential access files. If it is specified, the input-output control system updates data-name-1 by the following rules: Mter a WRITE is executed, the contents of the ACTUAL KEY data item are always implicitly updated. Before a READ is executed, the contents of the ACTUAL KEY data item are implicitly updated only if the READ was not logically preceded by a WRITE. Since implicit updating of the ACTUAL KEY data item is a function of the input-output control system, changes made by the programmer to the ACTUAL KEY data item do not affect the mass storage file processing; but they may result in unpredictable values if the programmer makes subsequent reference to the contents of the ACTUAL KEY data item. 2.3.2 I-O-CONTROL The I -a-CONTROL paragraph specifies the points at which rerun is to be established, the memory area to be shared by different files, and the location of files on a multiple-file reel. Format 1: I -a-CONTROL. COpy statement. Format 1 is used only when the COBOL library contains the complete text of the I-a-CONTROL paragraph. The COpy statement is described in section 6.1. 2-10 60229400 Format 2: I -O-CONTROL. RERUN ON SAME [{ ~~i~JRD }] , ] t UNIT EVERY. Integer-1 [ f har{~::~7e~~::~3} '[ OF file-name-3 RECORDS) ... AREA FOR file-name -4 {, file-name-5} ••• ] ~ MULTIPLE FILE TAPE CONTAINS file-name-6 [POSITION integer-3] [, file-name-7 [POSITION integer-4]] ... ] . .. . This paragraph is optional. The file name of a sort file cannot appear in a RERUN or MULTIPLE FILE option; nor can a sort file name appear in the SAME clause, unless the RECORD option is used. The END OF UNIT option may be used only if file-name-4 is a sequentially accessed mass storage file. RERUN ON hardware-name-3 dsi-3 EVERY END OF fREEL} ) UNIT { integer-1 RECORDS } OF file-name-3 If the RERUN clause is specified, the contents of memory and of all necessary registers and the position of all files during execution are saved on the device specified by hardware-name-3. This device may be either magnetic tape or mass storage. If the dump file is to be on mass storage, the file must be allocated. In either case, it must be opened prior to execution with a *DEF card. The dsi parameter on the OPEN card must be identical to that specified in dsi-3. The rerun dump can be used to restart execution at the point where a dump was taken (chapter 9, Source Program Execution). If the END OF REEL/UNIT option is used, a rerun dump is taken at the end of every reel or unit of the file named in file-name-3. The END OF U1\TJT condition occurs when the next sequential physical record is in a file segment of a disk pack other than the pack currently mounted on the device assigned to the file. If the integer-1 RECORDS option is used, a rerun dump is taken each time the number of physical records specified by integer-1 is read from or written on the device associated with file-name-3. 60229400 2-11 SAME AREA FOR file-name-4 ~, file-:name-5 ~ ... This clause specifies that two or more files are to use the same memory area during processing. If the RECORD option is specified, the files, including any sort-files, share only the area in which the current logical record is processed. Several files may be open at the same time but the logical record of only one file can reside in the record area at one time. If the SORT option is used, one or more file names representing sort files may appear within the set of file names. For each sort file, the SAME SORT AREA clause is interpreted as follows: The SORT statement referring to the sort file and any associated input or output procedures can use all buffer storage associated with the other files in the SAME SORT AREA clause. All other files are thus guaranteed to be closed throughout operation of the SORT statement and any associated input or output procedures. Files other than sort files in the SAME SORT AREA clause do not share the same storage area. If other files are to share the same storage area, the user must write a SAME RECORD AREA clause. If a SAME AREA clause does not contain the RECORD or SORT option, the shared area includes all storage areas assigned to the files; therefore, no more than one file may be open at one time. MULTIPLE FILE TAPE CONTAINS file-name-6 [POSITION integer-3] ... The MULTIPLE FILE clause is required when more than one file shares the same reel of tape. Regardless of the number of files on a Single reel, only those files used in the object program need be specified. If all file names have been listed in consecutive order, the POSITION option need not be given. If any file in the sequence is not listed, the POSITION relative to the beginning of the tape must be given. Not more than one file on the same tape reel may be opened at one time. Files on a multiple-file reel are handled in the same manner as other files except that OPEN and CLOSE perform the additional functions to locate each of the files on the reel. The input-output control system searches for and locates any file on an input multifile reel which the user opens. If the indicated file is further along the tape than the current position, the tape is skipped forward; other\vise, the tape is rewound, then skipped fOr\vard to the correct file. 2-12 60229400 The files on an output multifile reel are written in the order dictated by the logic of the program rather than the order in which they are defined in the MULTIPLE FILE clause. If an output multifile reel is to be used as input to the same program, the input-output control system assumes that the files were written in the order specified by the MULTIPLE FILE clause. The input-output control system assumes that all files on the multifile reel have the same type of labeling. Since no two files on a multifile reel may be open simultaneously, they share buffer and record areas automatically. No file which shares a reel with another file can extend across reels; that is, a file cannot be on a multifile reel and also be multireel. 60229400 2-13 DATA DIVISION 3 The Data Division, required in every COBOL program, contains a full description of the data to be processed by the object program. The data falls into four categories: Data stored on external files Data common to more than one subprogram Constants and data developed during program operation Output reports 3.1 SECTIONS The Data Division is divided into four sections corresponding to the categories of data: DATA DIVISION. [FILE SECTION.] [COMMON-STORAGE SECTION.] [WORKING-STORAGE SECTION.] [REPORT SECTION.] The Data Division must begin with the header: DATA DIVISION followed by a period and a space. Each of the sections is optional; when present, they must be in the order of appearance shown in the format above. Each section header is followed by one or more sets of entries; the File Section and Report Section contain file descriptions followed by associated record description entries, the Working-Storage and Common -Storage headers are followed by data description entries for independent items, followed by record descriptions. 60229400 3-1 3.1.1 FILE SECTION The File Section defines the contents of data files stored on an external device and the contents of sort files. Each file is defined by a file description entry followed by one or more record description entries. A file description entry consists of a level indicator (FD or SD), a file name, and a series of independent clauses. An external file is described with a level FD entry which indicates recording mode, block size, labeling conventions, names of records or reports in the file, and so on. Every external file must have a level FD file description entry. Sort files are described with level SD entries which specify the name, size, and number of records to be sorted. FILE SECTION. FD file-name-l. .. 01 data-name-l. .. 02 data-name-2 •.. 66 data-name-3 RENAMES data-name-2. 01 03 data-name-4 ... data-name-5 ... 02 data-name-6 ... 88 condition-name-1 ... 01 data-name-7 ... SD file-name-2 ... FD file-name-3 ... 3.1.2 COMMON-STORAGE SECTION During execution of an object program, independently compiled subprograms communicate through common storage. Each item in a Common Storage Section has a record description entry; all entries are preceded by the header COMMON-STORAGE SECTION and a period. All data structures permitted in the Working Storage Section are legal in the Common Storage Section. A Common Storage Section must be present in each independently compiled subprogram so that all references to common storage will be properly defined. The item descriptions in each Common Storage Section should be identical in format; if they are not, the contents of common storage in memory cannot be guaranteed. 3-2 60229400 The system loader loads only the first Common Storage SectlOn encountered. Subsequent Common Storage Sections are ignored and all reference to common storage items in communicating subprograms are directed to the firRt Common Storage Section loaded. 3.1.3 WORKING-STORAGE SECTION During execution of an object program, intermediate results and other information need to be stored before being processed further or transferred out of memory. The storage areas, called working storage items, are contained in the Working Storage Section. The Working Storage Section is composed of the section header WORKINGSTORAGE SECTION followed by a period. This header is followed by any independent data description entries which are in turn followed by any record description entries. Each name of an independent item or a record must be unique. Subordinate data names need not be unique if they can be made unique by qualification, t COMMON-STORAGE SECTION. WORKING-STORAGE SECTION.~ 1 77 data-name-1 88 condition-name-1 77 01 data-name-2 data-name-3 02 data-name-4 01 60229400 66 data-name-5 RENAMES data-name-4 data-name-6 02 data-name-7 03 data-name-3 88 condition-name-2 3-2 3.1.4 REPORT SECTION The Report Writer enables the user to specify the format of reports generated by a COBOL program. The Report Section is included when the Report Writer module is used. The content and format of reports are described in the Report Section. The header REPORT SECTION and a period is followed on succeeding lines by entries describing the physical format of each report to be produced. Section 5 contains a complete description of the Report Writer and Report Section entries. REPORT SECTION. RD report-name-l 01 [data-name-l] 02 [data-name-2] 01 01 02 (data-name-3] [data-name-4] (data-name-5] 01 [data-name-6] RD report-name- 2 3.2 DATA DIVISION CONCEPTS 3.2.1 ENTRY The basic unit of description for the data in all sections is an entry. Each entry consists of a level indicator or level number, a name which can be referenced elsewhere in the program, and one or more clauses describing the data item. The Data Division contains three types of entry: File description entries describe physical characteristics of a file. Record description entries describe characteristics of items used in the program. Report and report group description entries describe items generated as a report. The Working Storage and Common Storage Sections contain record descriptions only; the File Section contains file descriptions and record descriptions; the Report Section contains report and report group descriptions. 3-4 60229400 3.2.2 ITEM An item is an area used to contain data of a particular kind. language recognizes four kinds of items: The COBOL ~..J ~..t ~ ~ elementary group ~ ~.J:--..t., independent report Elementary items are items that are not subdivided into smaller items. A group item is subdivided into smaller items which can themselves be group or elementary items. Group and elementary items may be used in all sections of the Data Division. Independent items are unrelated elementary items not contained in a record; each is defined by the special level number 77. Independent items are illegal in the File Section. Report items are group or elementary items that appear in a report. They may be used only in the Report Section (see Report Writer, section 5). 3.2.3 RECORD A record is the most inclusive item in the File, Working Storage or Common Storage Sections. It is usually, but not necessarily a group item. A record must have the level number 1 or 01 and a data name. Each item in a record must have at least a level number and a data name. In addition, any elementary items in a record must have at least a PICTURE or USAGE defined as INDEX, COMPUTATIONAL-I, or COMPUTATIONAL-2. Data names of items not at the 01 level in a record need not be unique if they can be made unique by qualification. In the File Section only, data names at the 01 level need not be unique since they can be qualified by a file name. 3.2.4 LEVEL NUMBER The level number shows the hierarchy of data within a record description; the more inclusive an item, the lower its level number. Level numbers need not be consecutive as long as the less inclusive item has the higher number. The specific number is determined by the user. The first entry in a record description always has the level number 1 or 01. Group and elementary items within a record have level numbers in the range 2 -49. Special level numbers are assigned to certain entries where there is no real concept of level: 66 identifies RENAMES entries. 77 identifies independent items. 88 identifies condition -name entries. 60229400 3-5 3.2.5 DATA NAME Every entry must have a subject; that is, a name assigned to the item. This data name is used to reference the item from the Procedure Division. It must not be qualified or subscripted when used as the subject of a Data Division entry. The word FILLER may be used instead of a data name as the subject of an entry that is never referenced. It may name only an unused elementary item within a record. A record containing a FILLER item can be referenced from the Procedure Division, although the FILLER item itself cannot. A FILLER item must have a level number and any data description clauses that would be required for a data-name entry in the same location. Report names, file names, library names, and condition names are special cases of the data name used in report, description, file description, source library, and condition name entries. Appendix B contains the rules for forming all data-names. 3.2.6 INITIAL VALUE The initial value of any item in the Working Storage Section is specified with the VALUE clause in the record description entry. 3.2.7 LITERAL A literal is an explicit statement of the value to be used in an operation performed by the object program. Literals may be used wherever the format indicates. Appendix B contains a description of literals and the rules governing their formation. 3.2.8 FIGURATIVE CONSTANT 3-6 Figurative constants are predefined as part of the COBOL language. They may be used wherever a literal is allowed in the reference format. A complete list of figurative constants is contained in Appendix B. 60229400 3.3 FILE DESCRIPTION ENTRY A file description entry provides information about the physical structure, identification, and record names of each file used in the source program. Format 1: {~g} file-name-1 COpy statement. Format 2: FD file-name-1 l (IBINARY DECIMAL \ J [ [ ~ ; RECORDING MODE IS ) I SECTOR ( TRACK \ [ n {~R } DENffiTY] lJ (J SEGMENTED I CONTIGUOUS \ {~~~~~~~ERS}] [ ; BLOCK CONT ArNS [integer-l TO] integer- 2 [ ; RECORD CONTAINS [integer-3 TO] integer-4 CHARACTERS [ DEPENDING ON {data-name-1 RECORD-MARK . LABEL , IS I ~ata -name-6 hteral-2 ; I DATA ; I }J] STANDARD} OMITTED { data-name-2 l I RECORDS ARE RECORD IS \ . VALUE OF llabel-field-1~ , data-name-3 \ [ IS I data-name- 4 literal-1 l f [, I label-field-2l data-name-5 \ lfJ...J 1~~~~~~;~REI REPORT IS REPORTS ARE fl ) data-name-7 [, data-name-8] '" ! report-name-1 [, report-name-2] [; SEQUENCED ON data-name-9]. 60229400 3-7 Format 3: SD file-name-l [; RECORD CONTAINS [integer-l TO] integer-2 CHARACTERS [DEPENDING ON ; DATA 1~~~~~~RK RECORD IS ~ RECORDS ARE~ 1 m data-name-2 [, data-name-3] Format 1 is used only when the COBOL library contains the entire FD or SD entry; format 2 describes external files; format 3 describes sort files. The COpy statement is defined in section 6.1. The level indicator FD or SD identifies the beginning of each file description entry and must precede the file name. All semicolons are optional, but the entry must be terminated by a period. The clauses which follow the name of the file are optional in many cases, and their order of appearance is immaterial. The REPORT clause of the FD entry is used only when Report Writer is used; it is described in chapter 5. 3-8 60229400 3.4 DA TA DESCRIPTION ENTRY A data description entry specifies the characteristics of each particular item of data. Format 1: 01 data-name COpy statement Format 2: level-number data-name-ll FILLER 1 [; REDEFINES data-name-2] IS character-stringJ INDEX DISPLAY j COMPUT ATIONAL ! ,COMP ; USAGE IS COMPUTATIONAL-I! 1COMP-l COMPUTATIONAL-2! 1COMP-2 [; OCCURS [integer-l TO] integer-2 TIMES [DEPENDING ON data-name-l]] [1 ASCENDING ! DESCENDING KEY IS data-name-2 [, data-name-3] .. J . [INDEXED BY index-name-l [, index-name-2] ••. ] I [; 1SYNC SYNCHRONIZED [; JUST 1JUSTIFIED I LEFT !J 1RIGHT RIGHT J [; BLANK WHEN ZERO] [; VALUE IS literal-3]. Format 3: 66 data-name-l RENAMES data-name-2 [THRU data-name-3]. 60229400 3-9 Format 4: 88 condition-name l VALUE IS VALUES ARE\ 1 literal-1 [THRU literal-2] [, literal-3 [THRU literal-411 ..•• Format 5: l PIC 77 data-name-l PIcTURE pS ... [USAGE IS] ... [VALUE IS]. .. 1 etc. All semicolons and commas are optional in the data description, but the entry must be terminated by a period. Format 1 is used at the 01 level only. It may be used when the complete record description is contained in the COBOL library. The COpy statement is described in section 6.1. Format 2 has a level number in the range 1-49. The clauses are written in any order with one exception: the REDEFINES clause, when used, must immediately follow the data name. PICTURE must be specified for every elementary item unless USAGE is L~DEX, COMP-l, or COMP-2. The following clauses may be specified only at the elementary item level: PICTURE, SYNCHRONIZED, JUSTIFIED, and BLANK WHEN ZERO. Format:3 is used with the RENAMES clause for alternate naming of elementary items or group items not at the 01 level. The level number must always be 66. The RENAMES clause must not be used with independent, level 77, entries. Format 4 is used for condition name entries. Each condition name requires a separate entry with the level number 88. A condition name is a data name assigned to the condition; VALUE(S) specifies the value, values, or range of values associated with the condition name. A condition name entry must follow the entry describing the variable item with which it is associated. A condition name can be associated with any elementary or group item except the following: another condition name, a level 66 item, a group of items requiring special handling such as synchronization or usage, an index data item. Format 5 describes independent items. An independent item is elementary, and is not part of a record or in the File Section. The level number must be 77. Independent items are described with the same clauses used in format 2 for elementary items. 3-10 60229400 3.S DATA DIVISION CLAUSES 3.S.1 BLANK WHEN ZERO All clauses in the file and data description reference formats are described in this section with the exception of the REPORT clause which is described in section 5. The clauses are listed alphabetically. The BLANK WHEN ZERO clause permits the blanking of an item when its value is zero. BLANK WHEN ZERO When this clause is specified, the item will contain nothing but spaces if the value of the item is zero. This clause may be used only with a numerically edited item. -60229400 3-11 3.5.2 BLOCK CONTAINS This clause specifies the size of a block or physical record. BLOCK CONTAINS [integer-1 TO] integer-2 l CHARACTERSI RECORDS BLOCK CONTAINS is required in a file description entry unless the block contains exactly one logical record. A file assigned to TTY or CRT cannot be blocked. Integer-1 and integer-2 are positive integers. For a mass storage file the size is stated in terms of RECORDS. The CHARACTERS option should be used if one of the following situations exists: • Logical records extend across blocks • The block contains padding, an area not contained in a logical record • Logical records are grouped in such a manner that an inaccurate block size is implied When the CHARACTERS option is used, the physical record size is specified in terms of the number of characters in the physical record. Characters are specified in standard data format regardless of their types. If only integer-2 is shown, it represents the exact size of the physical record. If integer-1 and integer-2 are both shown, they refer to the minimum and maximum size of the physical record respectively. If logical records of differing size are grouped into one physical record, the end of the logical record must be explicitly defined in the record description entry unless the RECORD CONTAINS DEPENDING ON option is used. The maximum file block size is 131,067 characters. Appendix F describes COBOL/MASTER file blocking formats. Block A block is a physical unit of data that is convenient for storage on an input or output device for a particular computer. It is identical with physical record. The block size has no direct relationship to the size of the file containing it, or to the size of logical records contained in the block. A block is normally composed of one or more logical records, or a portion of a logical record. Logical Record A COBOL logical record is a group of related information, uniquely identifiable, and treated as a unit. The concept of logical record is not restricted to file data but is carried over into the definition of working storage items. Logical records, whether in the File Section, Working Storage, or Common Storage Sections are defined by record description entries (section 3.2.3). 3-12 60229400 3.5.3 DATA RECORDS The DATA RECORDS clause is required in each file description entry. processor uses it to correlate file and record description entries. DATA -- 1RECORD RECORDS ARE! IS The data-name-7 [, data-name-8] .•• The data names are names of data records which must have 01 level numbers. The presence of more than one data name indicates that the file contains more than one type of data record. The order in which names are listed is immaterial. Data records in a file need not have the same description. All data records within a file are processed from the same record area. The size of this area is equivalent to the largest record in the file. When the file description entry is for a sort file (SD), the data names identify records named in the RELEASE statement. This clause or the REPORT clause (Report Writer, section 5) must be included in each file description entry. 60229400 3-13 3.5.4 JUSTIFIED The JUSTIFIED clause specifies nonstandard positioning of data within a receiving data item. JUSTIFIED} RIGHT { JUST The JUSTIF IED clause can be specified only at the elementary item level in a record description entry. The standard rules for positioning data within an elementary data item area depend on the category of the receiving item. Receiving Item Rule for Positioning Data Numeric Data is aligned by decimal point and moved to the receiving character positions with zero fill or truncation on either end as required. If an assumed decimal point is not explicitly specified, the item is treated as if an assumed decimal point immediately followed the rightmost character. Numeric Edited Data is aligned by decimal point with zero fill or truncation at either end as required within the receiving data item, except where editing causes replacement of leading zeros. Alphanumeric/ Alphabetic Data is moved to the receiving character positions and aligned at the leftmost character position with space fill or truncation to the right. The JUSTIFIED clause cannot be specified for an item described as numeric or for a numeric edited data item. When the receiving item is described with the JUSTIFIED clause and the sending item is larger than the receiving data item, the leftmost characters are truncated; when the receiving item described with the JUSTIFIED clause is larger than the sending item, the data is aligned at the rightmost character position in the data item with space fill. 3-14 60229400 Example: Picture Item Justified 101011121!1 Right justified, zeros filled-in. ~ ~ 101010111~1 No Justification, aligned by point. ~ Right illegal; item is numeric. X(5) IAIBlel I~I~IAIBI el Right Right justified; blanks filled-in. X(5) IAIBlel IAIBlel~I~1 X(2) IAIBlel [ill] 89(5) 89(4)V9 89(4)V9 60229400 Data 11121~1 Left justified normally. Right Right justified, left character truncated. 3-15 3.5.5 LABEL RECORDS The LABE L RE CORDS clause is required in every file description entry regardless of the presence or absence of label records. It identifies labels as standard or as nonstandard; but if labels are not present, it specifies that they are omitted. Format 1: LABEL RECORDS ARE RECORD IS 1 I . STANDARD VALUE OF label-fleld-l IS 1~t;:~~~~e -1 ! [, label-field -2 IS 1!:~!e -2 !] Format 2: LABEL l RECORDS ARE RECORD IS \ data-name-3 VALUE OF data-name-4 IS 1 literal-3 l l data-name-5\ [ , data-name-6 IS lliteral-4 data-name-7 I] Format 3: LABEL 1RECORDS ARE/ RECORD IS OMITTED Format 1 is used when a file has standard labels (appendix E). All mass storage files except scratch files must be specified STANDARD in this clause. Mass storage scratch files, may have OMITTED or STANDARD labels. Mass storage file labels are maintained by MASTER File Supervisor and are not accessible to the user. For any non-mass storage file that has standard labels, the record area defined for that file is used by the input-output control system for processing the header and/or trailer labels. Thus, the user may access each label within the USE declarative procedures. Format 2 is used when labels are nonstandard or user defined. Data-name-3 is the name of a label record area. It must not appear in the DATA RECORDS clause, and is either the subject of a record description associated with the file, or an area in working or common storage. Only the beginning labels are checked for files with data name labels. All Procedure Division references to the data name specified in this clause, or to any items subordinate to this data name, must appear within USE procedures. Format 3 is specified w hen no explicit labels exist for the file or for the device to which the file is assigned. Files assigned to TTY or CRT do not have labels and OMITTED should be specified. 3-16 60229400 The VALUE OF clause is used only in formats 1 and 2. It specifies the values of data items used to identify or create the labels. A figurative constant may be substituted for any literal in the format. The following label field names are used to define the values of standard labels: Mass storage Tape {::ENTIFICATION} t:ENTIFICATION} EDITION-NUMBER REEL-NUMBER RETENTION-CYCLE OWNER { } OWNER-ID EDITION - N1J1VIBER ACCESS-PRIV ACY MODIFICATION-PRIVACY The IDENTIFICATION or ID field is required. The specified label fields are checked against the label record by the input-output control system. If the physical file labels do not agree, the file is not processed. The values of these fields must exactly match the values given as parameters on any external file control cards. (*DEF cards, section 7. 7. 3) . When a label is nonstandard, the VALUE OF clause is required to define the values of identifying data items. Each of the subject data names (data-name-4, data-name-6, and so forth) is in the label record. The data names or literals following IS must be in the Working-Storage Section. The data names in this clause can be qualified but not subscripted or indexed, nor can they be described by USAGE IS INDEX. VALUE OF causes the following action to be taken: 60229400 Input file A label routine checks to see that the value of each label record data name or label field is equal to the value of its corresponding literal or data name. If any field does not compare, the file is rejected and a request is made to mount the correct file. Output file The value of each label record name or label field is made equal to the value of its corresponding literal or data name. 3-17 3.5.6 OCCURS The OCCURS clause eliminates the need for separate entries when the items in a sequence are identical to each other in every respect except value. It also supplies information required to subscript or index the repeated items. OCCURS [integer-l T01 integer-2 TIMES [DEPENDING ON data-name-l] [l ASCENDING DESCENDING I KEY IS data-name-2 [, data-name-3] ... ] [ INDEXED BY index-name-l [, index-name-2] ..• ] Each integer must be positive. If both are used, the value of integer-l must be less than that of integer-2. The value of integer-l can be zero; the value of integer-2 can never be zero. The OCCURS clause is optional. entry that has: It cannot be specified in a data description A level number of 01 or 77 Subordinate item containing the OCCURS ... DEPENDING ON option The OCCURS clause is used to define tables and other homogeneous sets of repeated data. The data name which is the subject of the data description entry containing the OCCURS clause must be either subscripted or indexed when it is referenced by any statement. If the entry containing OCCURS is a group item, each data name in the group must also be subscripted or indexed when referenced. The other clauses in an entry containing OCCURS apply to each occurrence of the item they describe. Three levels of nested OCCURS clauses are permitted. The DEPENDING ON option is used to specify that the subject of the entry has a variable number of occurrences. Integer-l represents the minimum number of occurrences and integer-2 the maximum. If the DEPENDING ON option is not specified, integer-2 is the exact number of occurrences and integer-I, if specified, is documentary only. Data-name-l contains the count of the actual number of occurrences; its value must not exceed integer-2. Data-name-l must be a positive COMPUTATIONAL integer; if it is described in the same record as the current entry, it must not be the subject of, or be subordinate to, an entry containing an OCCURS •.. DEPENDING ON clause. The value of data-name-l should not be reduced below the actual number of occurrences of the data items; otherwise, the content of any data items whose occurrences exceed the new value of data-name-l become unpredictable. An entry containing the DEPENDING ON option must not be the object of a REDEFINES clause. 3-18 60229400 When the DE PENDING ON option is specified in a data description in the File Section, records written on external devices will be variable in length depending on the value of data-name-I. DEPENDING ON may appear only once in a record description entry and must be at the last major level of the record. The KEY IS option indicates that the repeated data is arranged in ascendil'lg or descending order according to the value of the key data names (dataname-2, data-name-3, etc.). This option is required when a SEARCH ALL statement is used in the Procedure Division to search the table of repeated data. The key data names are listed in descending order of significance. Data-name-2 either names the entry containing the OCCURS clause or names an entry subordinate to the entry containing OC CURS. If data-mune-3 or any succeeding key data names are used, each must name an entry subordinate to the group item which is the subject of the entry containing OCCURS. Except when data-name-2 is the subject of the OCCURS clause, none of the key data names can be the subject of, or subordinate to an entry containing an OCCURS clause. The INDEXED BY option is required if the subject of this entry (or if it is a group, an item within it) is referred to by indexing or is referenced by the SEARCH statement. The index name is not defined elsewhere since its allocation and format is controlled by the compiler. It is not data, and cannot be associated with any data hierarchy. However, an index name must be initialized by the SET statement before it is used as a table reference. Index name items are one computer word in length and are in binary format (COMPUTATIONAL-I) . The VALUE clause must not be stated in a data description entry which contains OCCURS or is subordinate to an entry containing OCCURS. This rule does not apply to condition name entries. Initial values of items in working storage may be specified in the following manner: The table is described as a record with contiguous data description entries each of which has a VALUE clause as well as other clauses, (USAGE, PICTURE, etc.) required to complete the description. The table must be specified again with a REDEFINES clause to show its hierarchical structure. The entries subordinate to the REDEFINES entry are repeated because of the OCCURS clause; but they must not contain VALUE clauses. An alternate method can be used when the table elements do not require separate handling because of usage, synchronization, etc. In this case, the value of the entire table can be specified in the entry defining the table. The lower level entries specify the hierarchical structure of the table with OCCURS; they cannot contain VALUE clauses. 60229400 3-19 Examples: 1. 01 PARTS-LIST. 02 A-PARTS. 03 PART-AI PICTURE 9(10) VALUE xxxxxxxxxx. 03 PART-A2 PICTURE 9(10) VALUE xxxxxxxxxx. 02 02 02 03 PART-A100 PICTURE 9(10) VALUE xxxxxxxxxx. B-PARTS. 03 PART-B1 PICTURE 9(10) VALUE xxxxxxxxxx. 03 PART-B2 PICTURE 9(10) VALUE xxxxxxxxxx. 03 PART-B100 PICTURE 9(10) VALUE xxxxxxxxxx. C-PARTS. 03 PART-C1 PICTURE 9(10) VALUE xxxxxxxxxx. J-PARTS. 03 PART-J1 PICTURE 9(10) VALUE xxxxxxxxxx. The above list contains a thousand entries, 100 lower level entries for each 02 level entry and 10 entries at the 02 level. To reference the list by subscripting or indexing, it must be redefined as: 01 2. PARTS-TABLE REDEFINES PARTS-LIST. 02 LIST OCCURS 10 TIMES. 03 PART PICTURE 9(10) OCCURS 100 TIMES. If the list PARTS-LIST has a varying number of occurrences of the entries at the 02 level, it is redefined as follows: 01 PARTS-TABLE REDEFINES PARTS-LIST. 02 PART PICTURE 9(10) OCCURS 1 TO 150 DEPENDING ON PART-NUMBER. In this case, the number of occurrences is contained in the data item named PART-NUMBER with the following data description. 77 PART-NUMBER PICTURE 999 COMPUTATIONAL VALUE xxx. Value must be a positive integer. 3-20 60229400 3. A table referenced by a SEARCH statement or by indexing can be described as follow s : 01 DATA-LIST OCCURS 25 TIMES INDEXED BY LIST-INDEX, ITEM - INDEX. 03 ITEMA PICTURE 9(3) OCCURS 10 TIMES The SET statement can be used to set the initial values of LIST-INDEX and ITEM-INDEX: SET LIST-INDEX TO 25. SET ITEM-INDEX TO 10. 4. A table to be searched by the SEARCH ALL statement can be described as follows: 01 DATA-LIST OCCURS 25 TIMES INDEXED BY LIST-INDEX, ITEM-INDEX DESCENDING KEY IS DATA-LIST, ITEM-KEY. 03 ITEMA OCCURS 10 TIMES. 05 AVALUE PICTURE 9(7) 88 VALA VALUES ARE 1 THRU 999999. 03 ITEM -KEY PICTURE X. When a table area or record area requires subscripting or indexing, hardware indexing is employed only if the defined area is less than 16,383 characters. For a larger area, however, software logic is used for subscripting and indexing. Thus, subscripting and indexing may be slower if the defined area is greater than 16, 383 characters. 60229400 3-21 3.5.7 PICTURE The PICTURE clause describes general characteristics and editing requirements of an elementary item; it may be used only at the elementary item level. PICTURE} . IS character strmg { PIC A character string consists of a maximum of 30 characters from the COBOL set. The particular combination of characters determines the category of the item. Six categories of data may be described with a PICTURE clause: alphabetic, numeric, alphanumeric, alphanumeric edited, numeric edited, and floating point edited. The number of symbols that represent character positions indicate the size of an item. (Size means the number of character positions occupied by the item in standard data format.) For instance, an item containing 12 character positions is represented by a PICTURE clause containing either 12 symbols, AAAAAAAAAAAA, or the integer 12 in parentheses following the symbol, A(12). An integer in parentheses can be used to show the number of consecutive occurrences of the symbols: A X 9 P B 0 * , + - Z or the currency sign. Alphabetic The PICTURE string for an alphabetic item contains only the symbol A specified as many times as required. The item may contain any combination of letters of the alphabet and spaces not exceeding 131,067 alphabetic character positions. Numeric The PICTURE string for a numeric item is composed of the symbols 9 P S V. The item may contain any combination of numerals 0 1 2 3 4 5 6 7 8 9 and an optional plus (+) or minus (-) sign. The maximum size of the item is 18 numeric digit positions. Alphanumeric The PICTURE string for an alphanumeric item may contain the symbols A X and 9 only. It may contain all X's, but not all A's or all 9' s; and an alphanumeric item is always treated as if it were all X's. Contents of the item are characters allowable in the computer's character set. The maximum size of the item is 131,067 alphanumeric character positions. The following three categories are PICTURES of edited items. Editing alters the format or the punctuation of data in an item; characters can be suppressed or added. 3-22 60229400 Numeric Edit The PICTURE string for a numeric edited item contains only the symbols B P V Z 0 9 , . / * + - CR DB and the currency sign. Allowable symbol combinations are determined by the order of precedence of symbols and editing rules. A maximum of 4095 character positions may be represented in the character string, but only 18 may be numeric digit positions. Contents of character positions representing digits must be numerals 0-9. Alphanumeric Edit The PICTURE string of an alphanumeric edited item contains the symbols A X 9 B 0; combinations are restricted to: at least one B and one X or at least one 0 and one X or at least one 0 and one A. An alphanumeric edited item contains characters allowable in the computer's character set not exceeding 4095 alphanumeric character positions. Floating Point Edit The PICTURE string of a floating point edited item is restricted to the following symbols in the order listed: + or - One to eleven 9's with leading, embedded, or trailing decimal point or scaling symbol V (the coefficient). Letter E + or - (sign of the exponent) Three 9' s (value of the exponent) The initial plus indicates that a plus sign represents positive values and a minus sign negative values; the initial minus indicates that blank represents positive values, a minus negative values. The maximum size is 18 alphanumeric character positions; the coefficient can have up to 11 numeric digit positions and the exponent 3 numeric digit positions. CAUTION: The PICTURE clause defines the characteristics of the expected contents in a data item, and the code generated by the compiler is dependent upon the PICTURE descriptions. During object program execution, the actual contents of the data item are assumed to conform with the PICTURE. No data validation is ever performed by the generated code. If invalid data is introduced to the program the course of events is unpredictable. 60229400 3-23 Definition of Symbols Used in PICTURE Symbol Definition A Represents character position which can contain only a letter or a space; it is counted in size of item. x Represents a character position containing any allowable character from computer's character set; it is counted in size of item. 9 Represents a character position which contains a number; it is counted in the size of the item. P Indicates an assumed decimal scaling position when this position does not occur within the number that appears in the data item. It is not counted in the size of a numeric data item, but it is counted in determining the maximum size of a numeric edited item used as an operand in an arithmetic statement. P can appear only to the left or right in a string of one or more P's within the character string. The assumed decimal point is to the left of the leftmost P or to the right of the rightmost P; each P represents an implied character position (treated as zero) between the assumed decimal point and the leftmost character of the data item if the P's are to the left and the rightmost character if the P's are to the right. The assumed point location may be up to 31 places to the right or 30 places to the left of the rightmost digit position in the picture. The symbol V is redundant when P is specified. For example, a data item containing the number 2567 is treated as 256700 if the PICTURE is 9999PP; or as .002567 if the PICTURE is PP9999. 3-24 S Indicates the presence of an operational sign (+ or -) and must be written as the leftmost character of a PICTURE string. It is not counted in determining the size of an item. (This character is used for documentation purposes only.) V Indicates the location of an assumed decimal point for aligning items during computation. It does not represent a character position and is not counted in determining the size of an item. V may appear only once in a PICTURE string. V is redundant when the assumed decimal point is to the right of the rightmost symbol in the PICTURE string. 60229400 Symbol Definition B Represents a character position into which a space is inserted. It is counted in the size of the item. z Represents the leftmost leading numeric character position to be replaced by a space when the contents of that position and all positions to the left of it are zero. Each Z is counted in the size of the item. o Represents a character position into which the digit 0 will be inserted. Each 0 is counted in the size of the item. (zero) (comma) (period) Represents a character position into which the comma will be inserted. It is counted in the size of the item. Represents the decimal point for alignment purposes as well as a character position into which the period will be inserted. It is counted in the size of the item. For a giVen program the functions of the period and comma are exchanged if DECIMAL-POINT IS COMMA is specified in the SPECIAL-NAMES paragraph of the Environment Division. In this special case, all rules for a period apply to the comma, and rules for the comma apply to the period wherever they appear in a PICTURE clause. + CR DB * Represents a leading numeric character position into which an asterisk is placed when the contents of that position is zero. Each * is counted in determining the size of the item. / Represents a character position into which the slash character will be inserted. It is counted in the size of the item. (asterisk) (slash) currency symbol $ E 60229400 Used as editing sign control symbols to represent the character position into which the symbol is placed. These four symbols are mutually exclusive in anyone PICTURE string. Each character is counted in determining the size of the item. Represents a character position into which the symbol will be placed. The dollar sign or a single character specified in the CURRENCY SIGN clause of the SPECIAL-NAMES paragraph in the Environment Division. It is counted in the size of the item. Used in the PICTURE string of a floating point edited item to indicate the exponent. It is counted in the size of the item. 3-25 Examples: PICTURE Result Item Data Item Alphabetic AAAAA or A(5) Numeric 999 99V999 S99V99 PPP9999 SPPP9999 S999PPP 11 11 11 11 11 11 2 3 2 3 4 51 2 3 4 2 3 4 2 3 4 2 3 to 00 111213141 to 00 111213141 1112131000. Alphanumeric 3-26 XXXXXXXX or X(8) IA IBIC IDI-I *I *1*I IAIBlcIDI-I*I*I* I XXXXXXXX or X(8) 11 1213 I. 141516 171 11 12 13 1_ AAAX999 IAI B Ic 1/ 11 1 2 13 1 IA IB Ic 1/ 11 12 13 1 14 15 16 17 60229400 I PICTURE Data Item Result Item Numeric Edit $99 ~ 1$141 S I $$$99 10 10 14 Is 1$141 S I ZZZ99 10 10 19 12 31 I~ I~ 19 12 13 1 99.99 141S1314 *****.99 10 10 10 11 01 7 15 1 4 1S I· 13 14 1 1* 1* 1* 11 10 I. 1715 I ++999 10 10 121S 21 1+ 121S121 +999 121S121 1+ j2 js j2 i IAIBlcl I~ I~ I~ IAIB Icl~1 11 12 13 1 1010101112131 Value of Data +4.0 1+14 ·IE+olo 01 +999. 9E+999 -3.125 1-1 3 112 +. 99999 E+999 +15275. 1+1- 115 2 715 EI+lo 01 5 -999. 99E+999 +74.325 1714 31· 2 51 E -10 10 11 -9. 99E+999 -S4.2 I-Is _1412 EI+lo 10 11 1 .Alphanumeric Edit BBBXXXB OOOXXX Floating Point Edit +9. E+999 60229400 51E -1 0 1 0 21 3-27 1 3.S.S PICTURE EDIT Editing Rules Editing is accomplished by insertion or by suppression with replacement. Insertion editing consists of simple insertion, special insertion, fixed insertion, and floating insertion. Suppression with replacement editing consists of zero suppression with replacement by spaces or asterisks. Simple insertion editing is performed only on alphanumeric edited items. All types of editing may be performed on numeric edited items with the following restrictions: Floating insertion editing and suppression with replacement editing cannot be used in the same PICTURE. One type of replacement (either spaces or asterisks) with zero suppression can be used in the same PICTURE. A variable length item cannot be edited. Simple Insertion Editing Insertion characters are: , (comma), the letter B, / (slash), and 0 (zero). Insertion characters are counted in the size of the item and represent the position in the item into which the character is inserted. If the item is alphanumeric edited, only B or 0 may be used. Examples: PICTURE 9,999 99/99/99 09/99/99 BB99.99 S~cial ThLta Item 10 1 5 41 0 1 2 31 6 17 1 11 2 3 61 71 10 1 5 710 10 1 1 Result Item 01,1 1154 1 10111/12 31/1 617 10111/12 31/1 6171 1~1~1517 ., 010 I 1 1 Insertion Editing The only special insertion character is the period. It also represents the decimal point for alignment purposes. When used as an actual decimal point, the period is counted in the size of the item. An assumed decimal point represented by the symbol V may not appear in the same PICTURE string as an actual decimal point represented by a period. When the period is the last symbol in the PICTURE string, it must be followed immediately by one of the punctuation characters, semicolon or period, followed by a space. The result of special insertion editing is the appearance of the insertion character in the item in the same position as shown in the character string. 3-28 60229400 Fixed Insertion Editing The fixed insertion characters are the currency symbol (cs) and the editing sign control symbols: + - CR and DB. Only one currency symbol and only one editing control symbol can be used in a given PICTURE string. CR and DB must be tbe rightmost character positions in the item; they are each counted as two character positions in determining the size of the item. The symbol + or - must be either the leftmost or the rightmost character position in the item. The currency symbol must be the leftmost character position unless it is preceded by a + or a -. The +, the -, and the currency symbol are each counted in determining the size of the item. Fixed insertion editing results in the insertion of the editing symbol in the same position in the item as it occupied in the PICTURE. The result depends on the value of the item: Symbol in Picture Character String Result Data Item Positive Data Item Negative + + - - space - CR 2 spaces CR DB 2 spaces DB Examples: 60229400 PICTURE Data Item +999 2 91 2 +999,999 0 010 -999 2 -99.99 0 219 21 99.99DB 2 317 99.99DB 2\317 61 99.99CR 11113 41 1111 99.99CR 11113141 1111 $BB999.99 2141312111 1$1.6..6.1 2 4 31.1 2 11 1 $00999.99 2141312111 1$10 01 2 4 31.1 2 11 1 Result Item 1-12 9 2 0111~1 91~ +10 0 0 , 1 0 11121 .6. 2 9 2 61 - 0 2 . 9 21 2 3 • 716 DIBI 2 3 • 7 6 ~~ 3 4 clRI .1 3 4 Lil .6.1 3-29 Floating msertion Editing The symbols used for floating insertion are: the currency symbol (cs) , and the editing sign symbols + or -. They are mutually exclusive as floating insertion characters in a given PICTURE string. Floating insertion editing is indicated by using at least two of the floating symbols in the leftmost numeric character positions. Any other insertion symbols embedded in the string of floating insertion symbols or to the immediate right of the string are part of the floating string. Floating insertion in a PICTURE may be represented in two ways: Any or all leading numeric character poSitions to the left of the decimal point are insertion symbols. All numeric character positions in the picture are represented by the floating insertion symbol. The first case results in a single insertion character placed in the position immediately preceding the first nonzero character or the decimal point, whichever is encountered first. The result in the second case depends on the value of the data. If the value is zero, the entire edited item will contain spaces. If the value is not zero, the insertion character is placed in the position immediately preceding the first nonzero character or the decimal point, whichever is encountered first. Examples: PICTURE Data Item ------- or 7(-) 0 0 0 01 0 0 I~I~I~I~ ~ 7(+) 0 0 0 112 3 I~I~I~I+ 1 2 31 4(+).99 0 0 0 112 3 1~1~1+11 2 3 $$$$$.99 0 0 4 31 5 9 1~1$1413 5 9 7($) 0 0 0 01 0 1 0 161~1~1~1~1~1~ 0 0 0 1~1~1~1$1·1215 5($).99 1 01 215 Result Item ~ ~I The PICTURE character string must contain at least one more floating insertion character than the maximum number of significant digits in the item to be edited. All floating insertion characters are counted in the size of the item. 3-30 60229400 Zero Suppression Editing Suppression of leading zeros in numeric character positions is indicated by the symbols Z or * in the PICTURE string. If Z is used, leading zeros are replaced by the space; if * is used, leading zeros are replaced by the asterisk. The PICTURE string contains one or more of either symbols in the leading numeric character positions. Any of the insertion characters embedded in or to the immediate right of this string are part of the string. The symbols + * Z and the currency symbol (cs) are mutually exclusive within a given PICTURE string. Zero suppression within a PICTURE string may be represented in two ways: Any or all leading numeric character positions to the left of the decimal POi."lt are represented by suppression symbols. All numeric character positions are represented by suppression symbols. In the first case, any leading zero in the data which corresponds to a symbol in the string is replaced. Suppression terminates with the first nonzero digit or at the decimal point, whichever is encountered first. In the second case, the result depends on the value of the data. If the value is zero, the entire data item is set to spaces when the suppression symbol is all Z or all *, except the decimal point when the symbol is *. If the value is not zero, the result is the same as if the suppression characters were only to the left of the decimal point. When the asterisk is used as a suppression symbol and the clause BLANK WHEN ZERO also appears in the same entry, zero suppression editing overrides the function of BLANK WHEN ZERO. 60229400 3-31 Examples of Zero Suppression Editing: PICTURE 3-32 !)ata Result Item Item ZZ999 10 01 9 213 ZZZ, 999. 99 10 112 314 51 ~11121,1314151.lo 0 Z99,999.99 001121341 ~lolol,loI1121.13 4 $ZZZ,ZZ9.99 0 01 0 112 31 $1~1~1~1~1~1~111. 2 31 $ZZZ,ZZZ.99 0 010 011 21 $I~ ~ ~I~I~I~ ~I· 1 2 $*** , **9.99 0 0 11 2 3 41 $1* * 11,1 2 1 34 1. 01 0 $***,***.99 11 2 1 3 4 5 61 $ 1231,141561.010 $*** , *** . 99 II $ * * *1*1*1* 11.1 2 13 -ZZZ,ZZZ 0 010 0 1 21 $ZZZ, ZZ9. 99CR 1 2 3 4 5 $ZZZ,ZZ9.99DB 0 0 0 1 I21~ I$ ~I~I~I~I~ ~11 2 3 $(4),$$9.99 0 0 1 21314 1~1~1~1~1$11 4 0 $(4),$$$.99 0 0 0 0 1010 I~I~I~I~I~I~I~I$ zzzz.zz 00001 010 I~I~I~I~ I~ I~I~ I $$$$,$ZZ.99 0 0 0 01011 21 3 4 5 61 61 1I$ L\I~IL\I~IL\ 1 2 1 11 2 3 1, 14 5 6 213 0 0 C IR .0 I ~I~ I 0 illegal picture 60229400 3.5.9 RECORD CONTAINS The RECORD CONTAINS clause of a file description entry specifies the size of data records in the file. RECORD CONTAINS [integer-3 TO] integer-4 CHARACTERS rDEPENDING -N jdata-name-l lJ l U i RECORD-MARK ~ This clause is not required. When present, however, the following rules apply: Integer-3 and integer-4 must be positive integers. Only integer-4 is used when all data records in the file have the same size. In this case, integer-4 represents the exact number of characters in each record. When integer-3 and integer-4 are both shown, integer-3 refers to the minimum number of characters in the smallest data record and integer-4 refers to the maximum number of characters in the largest data record. Size is specified in terms of the number of characters in the logical record. These characters are given in standard data format regardless of types within the logical record. Record sizes are determined according to the rules for obtaining the size of a group item. The maximum record size is 131,067 characters. The DEPENDING ON option provides a key field (data-name-l) which governs the size of the record. Normally, it is a field within the record but may be located elsewhere. Data-name-l may be a BCD integer or a binary number. If data-name-l is binary (COMPUTATIONAL-I) the key field is prefixed at the beginning of each record by the input-output control system. A prefixed key field format is called a universal record. If RECORD MARK is specified, each record is terminated by a special character, external 328 (0,2,8 multiple punch). Reading or writing terminates when the RECORD MARK is encountered. Files assigned to TTY or CRT must have fixed length logical records. 60229400 3-33 3.S.10 RECORDING MODE The RECORDING MODE clause of a file description entry specifies the manner in which data is recorded on external storage devices. RECORDING MODElS jl BINARY I DECIMAL lSECTORI TRACK LOW } HIGH [{ . HYPER SEGMENTED ~] CONTIGUOUS \ DE NffiTY ] I [1 For magnetic tape, the density settings are: LOW=200 bpi, HIGH=556 bpi, and HYPER=800 bpi. If this clause is not present, a RECORDING MODE of DECIMAL HIGH DENSITY will be assumed. The SECTOR/TRACK and SEGMENTED/CONTIGUOUS options apply only to mass storage files. When the FILE-LIMITS clause of the Environment Division is specified, the input-output control system will internally allocate and/or expand permanent mass storage files at object time. This allocation is performed according to the RECORDING MODE specification. SECTOR indicates that the minimum unit of allocation is a sector; TRACK that it is a track. SEGMENTED means that the file may be located in different areas of the same disk file. The MASTER file supervisor keeps track automatically of the locations of file portions. If CONTIGUOUS is specified, the file is assigned to one area large enough to hold the entire file on a single device (disk file or disk pack). The input-output control system automatically releases any unused portion of any file specified as SECTOR SEGMENTED. If RECORDING MODE is not specified for mass storage files, SECTOR SEGMENTED is assumed. Whenever possible, mass storage files should be allocated in CONTIGUOUS mode to minimize read/write head movement, thus increasing the rate of proceSSing. A file assigned to TTY or CRT is always assumed to have a recording mode of DECIMAL. 3-34 60229400 3.5.11 REDEFINES The REDEFINES clause allows data items in the same physical area in memory to be specified in an alternate manner. The data is not changed, only the method of referencing the data; this includes giving the item a new name. level-number data-name-1; REDEFINES data-name-2 The level number of data-name-1 must be the same as that specified for data-name-2; it may not be 66 or 88. This clause may not be at the 01 level in the File Section. Implicit redefinition is provided by the DATA RECORDS clause in the file description entry. Entries giving the new description of the area in memory must immediately follow entries describing the area being redefined. Redefinition starts at data-name-2 and ends when a level number less than or equal to that of dataname-2 is encountered. Unless data-name-1 is at the 01 level, it must specify an area in memory the same size as that of data-name-2. The data-name-2 entry cannot contain an OCCURS clause and cannot be subordinate to an entry containing an OCCURS clause. Nor can an OCCURS clause with the DEPENDING ON option be specified for any entries in the original item or its redefinition. Example: 01 LIST. 02 PART-1 PICTURE 999 VALUE IS xxx. 02 PART-2 PICTURE 999 VALUE IS xxx. 02 PART-3 PICTURE 999 VALUE IS xxx. 02 PART-50 PICTURE 999 VALUE IS xxx. 01 NEW-LIST REDEFINES LIST. 02 PARTS PICTURE 999 OCCURS 50 TIMES. 60229400 3-35 3.5.12 RENAMES The RENAMES clause permits alternate, possibly overlapping, groupings of elementary items. 66 data-name-1, RENAMES data-name-2 [THRU data-name-3] All RENAMES entries associated with a given entry must immediately follow the last data item description in the entry. One or more RENAMES entries may be written for a given record description. Data-name-2 and data-name-3 must be names of elementary items or groups of elementary items in the associated record description entry; they must not be the same data name. Data-name-2 must precede data-name-3 in the record description. Data-name-3 must not be subordinate to data-name-2. A level 66 entry cannot rename another level 66 entry nor can it rename a level 77, level 88, or level 01 entry. Data-name-1 must not be used as a qualifier and may be qualified only by the names of level 01 or FD entries. Data-name-2 and data-name-3 may be qualified. Neither data-name-2 nor data-name-3 may have an OCCURS clause in its data description entry nor be subordinate to an item that has an OCCURS clause in its data description entry. When the THRU option is specified, data-name-1 is a group item which includes all elementary items starting with data-name-2 if data-name-2 is an elementary item, or the first elementary item in data -name-2 if dataname-2 is a group item, and concluding with data-name-3 if data-name-3 is an elementary item, or the last elementary item in data-name-3 if dataname-3 is a group item. When the THRU option is not specified, data-name-2 can be either a group or an elementary item. If data-name-2 is a group item, data-name-1 is treated as a group item; if data-name-2 is an elementary item, data-name-1 is treated as an elem entary item. Examples: 1. 3-36 01 DATE-WORD. 02 YEAR-1 PICTURE 99. 66 YEAR-2 RENAMES YEAR-I. 02 MONTH-1 PICTURE 99. 66 MONTH-2 RENAMES MONTH-I. 02 DAY -1 PICTURE 99. 66 DAY-2 RENAMES DAY-I. 66 DAY -3 RENAMES DAY-I. 60229400 2. 01 DETAIL. 03 ITEM-NUMBER PICTURE 9(4). 03 VENDOR-IDE NT. 05 VENDOR-CLASS PICTURE 9(3). 05 VENDOR-NUMBR PICTURE 9(5). 03 CUST-I DE NT • 05 CDST-CLASS PICTURE 9(3). 05 CUST-NUMBR PICTURE 9(5). 66 ALL-IDENT RENAMES VENDOR-IDENT THRU CUST-IDENT. l,,, fN.'"\~'-3: 'bC~ "e",.'-'s V ~~S)o" _"'k"'\.~" \~lu.. CU~ \_~~«..,-r3.S.13 SEQUENCED ON The SEQUENCED ON clause of a file description entry indicates the location of the identification field of a record accessed by RESPOND. RESPOND is the remote file processing system for the 3300/3500 computer configurations. SEQUENCED ON data-name-9 If the FD entry for a file contains this clause and also specifies: RECORD CONTAINS integer-l TO integer-2 CHARACTERS DEPENDING ON data-name-n where data-name-n is defined as COMP-l } USAGE IS { COMPUTATIONAL-l The input-output control system will insert the following information into the mass storage file label when the file is created: Leftmost character position, relative to the beginning of the record, of the identification field (data-name-9) Identification field length Identification field mode (numeric or alphanumeric) See appendix F for the description of the mass storage file label. 60229400 3-37 3.5.14 SYNCHRONIZED The SYNCHRONIZED clause specifies positioning of an elementary item within a computer word or words. SYNCHRONIZED} { SYNC LEFT} { RIGHT This clause may appear only with an elementary item. SYNCHRONIZED specifies that the COBOL compiler, in creating the internal format of this item, must place the item in the minimum number of computer words which can contain it. If the size of the item, explicit or implicit, is not an exact multiple of the number of characters in a computer word, the character positions between the item and the computer word boundary cannot be assigned to another item. Such unused character positions are included in: the size of any group to which the elementary item belongs; and the complter memory allocation when the elementary item appears as the object of a REDEFINES clause. SYNCHRONIZED LEFT (SYNC LEFT) specifies that the elementary item is positioned to begin at the left boundary of a com}Xlter word. SYNCHRONIZED RIGHT (SYNC RIGHT) specifies that the elementary item is positioned to terminate at the right boundary of a computer word. When a SYNCHRONIZED item is referenced in the source program, the original size of the item, as shown in the PICTURE clause is used in determining any action that depends on size, such as justification, truncation, or overflow. If the data description of an item contains the SYNCHRONIZED clause and an operational sign, the sign of the item appears in the normal operational sign position of the computer whether the item is SYNCHRONIZED LEFT or SYNCHRONIZED RIGHT. When the SYNCHRONIZED clause is specified for an item within the scope of an OCCURS clause, each occurrence of the item is SYNCHRONIZED. (See OCCURS.) Items described as SYNCHRONIZED in the File Section are assumed on input to be synchronized on the external device, and on output are written in SYNCHRONIZED form on external device. If the elementary item immediately preceding an item containing the SYNCHRONIZED clause does not terminate at a word boundary, the remaining character positions are regarded as FILLER and are not addressable. 3-38 60229400 Examples: PICTURE 89(3)V 89(3)V 89(3)V 89(3)V 89(5) 89(5) X(9) Data SYNCHRONIZED Result Item (machine words) Lilill1 RIGHT ~1121~1 LEFT 111213~ cqillJ ijillJ [ili[ij RIGHT ~01011~ LEFT 10 10 ~ LEFT IAIBlclDIEIFIGIHIII LEFT ~ RIGHT 11~ rft;1 • X(9) 60229400 3-39 3.5.15 USAGE The USAGE clause specifies the format of a data item in storage. USAGE IS DISPLAY COMPUTATIONAL} { COMP COMPUTATIONAL-1 } { COMP-1 COMPUT ATIONAL-2 } {,COMP-2 INDEX --- The USAGE clause can be written at any level; at a group level, it applies to each elementary item in the group. The USAGE clause of an elementary item cannot contradict the USAGE clause of a group to which the item belongs. H USAGE is not specified for an elementary item, or for any group to which the item belongs, usage is assumed to be DISPLAY. DISPLA Y indicates that the data is standard data format. Standard data format uses the decimal system to represent numbers (regardless of the radix used by the computer), and the remaining characters in the COBOL character set to describe nonnumeric data items. A COMPUTATIONAL item contains a value to be used in computations; it must be numeric. The PICTURE string of a COMPUTATIONAL item without an integer suffix can contain only 9 S V and one or more pI s. H a group item is described as COMPUTATIONAL, the elementary items in the group are COMPUTATIONAL; however, the group item, itself, is not COMPUTATIONAL since a group cannot be used in computations. A COMPUTATIONAL item is stored in standard data format and its sign is stored over the loworder numeric digit. Its size must not exceed 18 numeric digits. COMPUTA TIONAL-1 describes an elementary item in fixed point binary format. Such an item occupies one computer word (24 bits) and its value may not exceed 223_1. A fixed point binary number consists of a Sign bit and coefficient as shown below: 00 2322 II coefficient + sign bit 3-40 60229400 The binary point is assumed to be immediately to the right of the lowest order bit (00). The upper bit of any fixed number designates the sign of the coefficient (23 low order bits). Coefficient Sign Bit 1 Negative o Positive COMPUTATIONAL-2 describes an item in floating point format. Such an item occupies two computer words (48 bits) and is stored as follows: 4746 II 35 00 Coefficient Exponent Sign bit The coefficient consists of a 36-bit fraction in the low order positions of the floating point word. The coefficient is a normalized fraction; it is equal to or greater than 1/2 but is less than 1. The highest order bit position (47) is occupied by the sign bit of the coefficient. Sign Bit Coefficient 1 Negative o Positive The floating point exponent is expressed as an II-bit quantity with a value ranging from 0000 to 37778. It is formed by adding a true positive exponent and a bias of 2000 8 or a true negative exponent and a bias of 1777 8 . This results in an effe~tive exponent modulus of ±1023 . 10 For further information concerning fixed point and floating point arithmetic, refer to the 3300 Computer Systems Reference Manual, Pub. No. 60157000. The only meaningful clauses to be used with COMPUTATIONAL-n are the VALUE and REDEFINES clauses. COMPUTATIONAL-n items are synchronized left. USAGE IS INDEX describes an elementary item as an index data item. An index data item is always one computer word in length in binary format; USAGE IS INDEX has the same effect as USAGE IS COMPUTATIONAL-I. An index data item is referred to by a SEARCH or a SET statement. It contains the character address bias of a table element. (The character address bias is the value added to the base character address of a table to give the character address of a particular element in the table.) An index data item can also appear in a relation condition, but it cannot be a conditional variable. 60229400 3-41 If a group is described with USAGE IS INDEX, all the elementary items in the group are assumed to be index data items. The group itself cannot be an index data item and cannot be referenced in a SEARCH or SET statement or a relation condition. The group can be referenced in a MOVE or an inputoutput statement; but no conversion takes place. SYNCHRONIZED, JUSTIFIED, PICTURE, VALUE, and editing clauses cannot be used to describe group or elementary items for which usage is INDEX. Examples: 1. 01 PRINT-LINE. 02 FILLER PIC X(8) USAGE DISPLAY VALUE 'EMPLOYEE'. 02 NAME PIC X(16) USAGE DISPLAY VALUE SPACES. The described item would appear in memory as follows: E M P L 0 Y E E ~ ~ ~ A A ~ ~ A A A A ~ ~ ~ ~ 2. ~ 77 SUB-TOTAL PIC 9999V99 USAGE COMP VALUE ZEROS. This item appears in memory as follows: 0 0 0 1 1 1 1°1°1 0 1 assumed decimal point 3. 3-42 01 OUTPUT-RECORD. 02 RECORD-SIZE USAGE COMP-1 VALUE 120. 02 FILLER PICTURE X(13) USAGE DISPLAY VALUE 'MASTER-FILE-A I. 02 FILE-DATE PICTURE X(8) VALUE SPACES. 60229400 This group appears in memory as follows: 00 00 01 70 binary value M A S ~ E R - iF I L E - A ~ .6- ~ ~ ~ ~ ~ ~ 4. 77 TODAYS-DATE PIC X(8) USAGE DISPLAY VALUE '01/26/68'. 77 SALARY-MA.."XIMUM PIC 9(4) V99 USAGE COMPUTATIONAL VALUE IS 5000.00. 77 SALARY-TOTAL PIC 9(4) V99 USAGE IS COMP VALUE ZEROS. 77 HOURS-WORKED USAGE COMP-l VALUE ZEROS. 77 MAX-HOURS-WORKED USAGE COMP-1 VALUE 60. 77 COMP-VAL-1 USAGE COMPUTATIONAL-2 VALUE IS 3.46875EO. 77 COMP-VAL-2 USAGE COMP-2 VALUE 12. 279296EO. The above items appear in memory as follows: SALARY -MAXIMUM (6 BCD digits) HOURS-WORKED (fixed point binary) COMP-VAL-1 (floating point) 0 1 / 2 6 / 6 8 5 0 0 0 0 0 0 0 0 0 0 0 { } SALARY-TOTAL (6 BCD digits) 00 00 00 00 MAX-HOURS-WORKED (fixed point binary) 00 00 00 74 { 20 02 67 40 00 00 00 00 20 04 61 06 00 00 00 00 60229400 TODAYS-DATE (8 BCD characters) } COMP-VAL-2 (floating point) 3-43 3.5.16 VALUE The VALUE clause defines the initial value of working storage items or the values associated with a condition name. Format 1:VALUE 15 literal Format 2: VALUE IS l 1VALUES ARE' literal-l [THRU literal-2] [, literal-3 (THRU literal-4]J ... The VALUE clause cannot be stated for any item for which size is variable, explicitly or implicitly. A figurative constant may be used wherever literal appears in the format. If VALUE is specified for a group, the literal must be a figurative constant or a non-numeric literal, and the group area is initialized without regard for the individual elementary or group items. VALUE must not be specified for subordinate items within the group. Format 2 is used only with condition names. In the THRU option, must be less than literal-2, and literal-3 less than literal-4, etc. VALUE clause is required in a condition name entry, and it is the permitted in the entry. Characteristics of the condition name are those of its associated data item (its conditional variable). literal-l The only clause implicitly The values specified in a VALUE clause must be consistent with any other clauses in the data description of the item. The following rules apply: If the category of the item is numeric, all literals in the VALUE clause must be numeric literals. The literal is aligned according to the alignment rules given for the JUSTIFIED clause. The literal must not have a value requiring truncation of nonzero digits. Literals aSSigned to COMPUTATIONAL-2 items must be in the floating point literal format. If the category of the item is alphabetic or alphanumeric, all literals in the VALUE clause must be non-numeric. The literal is aligned according to the rules; the number of characters in the literal must not exceed the size of the item. All numeric literals in a VALUE clause must have a value within the range indicated by the PICTURE. For example, if the PICTURE is PPP99 the literal must be within the range. 00000 through. 00099. 3-44 60229400 The function of the editing clause or editing characters in a PICTURE is ignored in determining the initial appearance of the item. However, editing characters are included in determining the size of the item. Rules governing the use of the VALUE clause differ in different sections of the Data Division: Section Rule F He Section The VALUE clause may be used in condition name entries. It is documentary only in other entries. Working-Storage/ Common -Storage Sections The VALUE clause may be used in condition name entries and also to specify the initial value of any data item. The item assumes the specified value at the start of the object program. If VALUE is not specified, the initial value of an item is unpredictable. Report Section The VALUE clause causes the report data item to assume the specified value each time its report group is presented. This clause may be used only at the elementary level. The VALUE clause must not be stated in a record description entry which contains an OC CURS clause or in an entry subordinate to an entry containing OCCURS. Nor can the VALUE clause be stated in an entry which contains a REDEFINES clause, or in an entry subordinate to an entry containing REDEFINES. These rules do not apply to condition name entries. The VALUE clause must not be written for a group item containing descriptions that include SYNCHRONIZED or USAGE clauses. Examples: 1. The value of an independent constant item is defined: 77 FICA-MAX PICTURE 999V9 VALUE IS 150.0. The constant item will appear as follows: fll5TOTOl ~ assumed decimal point location 60229400 3-45 2. Value is specified for the range of a condition name associated with an item: 01 YEARS PICTURE IS 9(4). 88 SIX-YEARS VALUES ARE 1951 THRU 1956. 3. Value is specified for the initial value of an item: 01 HEADING-A. 03 FIRST-WORD PICTURE X(10) VALUE IS "COBOL-IlST". 3-46 60229400 PROCEDURE DIVISION 4 Statements in the Procedure Division describe the operations to be performed by the object program. Execution of the object program begins with the first statement of the Procedure Division, excluding declaratives, and statements are executed in order of appearance until they are exhausted. The order of execution can be altered according to rules specified below. Declaratives define procedures to be executed in addition to the standard error and label record handling procedures of the input-output control system. Procedures specified in a declarative are executed automatically under the input-output control system according to conditions specified in a USE statement. USE is the only declarative statement. 4.1 SPECIFiCATiON OF PROCEDURE DIVISION PROCEDURE DIVISION. DECLARATIVES. section-name-1 SECTION. introductory- sentence -1. paragraph-name-1. END DECLARATIVES. [section-name-2 SECTION.] paragraph-name-2. paragraph-name-3. [section-name-n SECTION.] paragraph-name-no 60229400 4-1 The division begins with the header and a period on the first line. When declaratives are included, the entire declarative portion of the specification is written immediately following the division header. If declaratives are not included, the next line contains the first section name followed by a space and the word SECTION. If sections are not specified, the next line is the first paragraph name followed by a period. Sections are optional, but if any paragraph in the division is in a section, then all paragraphs must be in sections. Statem ents in the Procedure Division are combined to form sentences and paragraphs; paragraphs may be combined to form sections. Sentences are terminated by a period and a space; paragraphs by the next paragraph name, section name, or the end of the division. Sections are terminated by the next section name, the end of the division, or if they are declarative sections, by the terminator END DECLARA TIVES. Paragraphs and sections are both called procedures; paragraph names and section names are referred to as procedure names. The elements of statements are COBOL words, identifiers, and literals. A summary description of these elements ani of procedure names is contained in appendix B. When the entire contents of a paragraph or section are contained in the COBOL library, the procedure name may be followed by the COpy statement. Section 6 contains a description of the COBOL library and the COpy statement. 4.1.1 DEClARA TlVES 4-2 Declarative sections are grouped at the beginning of the Procedure Division under the collective header DE CLARA TIVES. They are followed by the collective termination header END DEC LARA TIVES. Each declarative is specified in a section by itself, preceded by a section header. The introductory sentence containing a USE statement follows the header. Associated procedures are specified according to the same rules as all other procedures in the program. The introductory USE sentence defines the conditions under which these procedures are to be executed by the input-output control system. 60229400 4.1.2 STATEMENTS AND SENTENCES The three types of statements correspond to the three sentence types: imperative, conditional, and compiler directing. A semicolon, may be used as a separator between statements or within the IF statement to make a sentence more readable. A separator may not immediately follow another separator. An imperative statement indicates a specific action to be taken by the object program. An imperative sentence is an imperative statement terminated by a period followed by a space. An imperative statement may consist of a sequence of imperative statements each separated optionally from the next by a separator. Imperative verbs are the following: ACCEPT ADDt ALTER CLOSE COMPUTEt DISPLAY DIVIDEt EXAMINE EXIT GENERATE GO INITIATE MOVE MULTIPLyt OPEN PERFORM RELEASE SEEK SET SORT STOP SUBTRACTt TERMINATE WRITEtt In a statement format, the term, imperative-statement, refers to a sequence of consecutive imperative statements ended by a period or an ELSE associated with a previous IF verb or a WHEN associated with a previous SEARCH verb. A conditional statement specifies a condition to be evaluated for truth, and subsequent action of the object program is dependent on this truth value. A conditional sentence is a conditional statement or sequence of conditional statements optionally preceded by an imperative statement, terminated by a period followed by a space. Conditional statements are the following: IF READ SEARCH RETURN WRITE with INVALID KEY Arithmetic statements with ON SIZE ERROR A compiler directing statement consists of a compiler directing verb and its operands. A compiler directing sentence is a single compiler directing statement terminated by a period followed by a space. Compiler directing verbs are the following: COpy ENTER NOTE tWithout the SIZE ERROR option ttWithout the INVALID KEY option 60229400 4-3 4.2 ARITHMETIC EXPRESSIONS AND STATEMENTS 4.2.1 EXPRESSIONS An arithmetic expression may be composed of the following elements: Identifier of a numeric elementary item Numeric literal Identifiers and literals separated by arithmetic operators Two arithmetic expressions separated by an arithmetic operator Arithmetic expression enclosed in parentheses Figurative constant: ZERO (S) (ES) An identifier is a data name followed, as required, by the syntactically correct combination of qualifiers, subscripts, and indexes necessary to make unique reference to the data item. The identifiers and literals appearing in an arithmetic expression are numeric elementary items or numeric literals on which arithmetic may be performed. The USAGE of the identifiers is specified as: COMPUTATIONAL, COMPUTA TIONA L-l , or COMPUTATIONAL-2 The following arithmetic operators are used in arithmetic expressions: Operator + Meaning Addition Subtraction * Multiplication / Division ** Exponentiation Each operator is preceded by a space and followed by a space. negation is expressed by a unary -. Logical An arithmetic expression may begin only \vith: left parenthesis ( unary - variable and may end only with: right parenthesis ) 4-4 variable 60229400 A one-to-one correspondence is necessary between left and right parentheses such that each left parenthesis is to the left of its corresponding right parenthesis. Arithmetic expressions may be evaluated according to paired parentheses. Expressions within parentheses are evaluated first, and, within a test of parentheses, evaluation proceeds from the least inclusive to the most inclusive set. When parentheses are not used, or parenthesized expressions are at the same level of inclusiveness, the following hierarchical order of operations is implied: Unary - ** * and / + and- When the order of a sequence of consecutive operations is not on the same hierarchical level completely specified by parentheses; the order of evaluation is from left to right. 4.2.2 STATEMENTS Arithmetic statements are ADD, COMPUTE, DIVIDE, MULTIPLY, and SUBTRACT. They have several common features: data descriptions of the operands need not be the same; any necessary conversion and decimal point alignment is supplied throughout the calculation. The maximum size of each operand is 18 decimal digits. Operands may be COMPUTATIONAL, COMPUTATIONAL-I, or COMPUTA TIONAL-2 items. When the operands in arithmetic statements are not all the same mode, the compiler must generate conversions. In the following conversions: COMPUTATIONAL-2 to COMPUTATIONAL-I COMPUTATIONAL-2 to COMPUTA TIONAL COMPUTATIONAL-I to COMPUTATIONAL the converted value may not fit in the resultant field. The most significant digits could be lost making the result completely unreliable. To avoid this situation, the user should specify the ON SIZE ERROR option (see OPTIONS, 4.4.2). He may also use MOVE statements prior to the arithmetic statements to make the operands all the same mode. 60229400 4-5 4.3 CONDITIONS A condition causes the object program to select between alternate paths of control depending on the truth value of a test. Conditions are used in IF, PERFORM, and SEARCH statements. A condition is one of the following: Relation condition Class condition Condition-name condition Sign condition NOT condition Condition 1~:n [ (Condition) The construction: NOT condition, where condition is one of the first four types listed above, is not permitted if the condition itself contains NOT. Conditions may be combined into logical operators. The logical operators must be preceded by a space and followed by a space. Logical Operator Meaning OR Logical Inclusive Or AND Logical Conjunction NOT Logical Negation The figure below shows the relationships between the logical operators and conditions, A and B. Condition 4-6 Condition and Value A B AANDB AORB NOTA true true true true false false true false true true true false false true false false false false false true 60229400 4.3.1 RELATION CONDITION A relation condition results in acorn parison of two operands; the operands may be identifiers, literals, or arithmetic expressions. Comparison of two numeric operands is permitted regardless of the format specified by USAGE. For all other comparisons the operands must have the same usage specification. General format for relation condition: identifier-l literal-l { arithmetic-expression-l identifier-2 } } relational literal-2 -operator { arithmetic-expression -2 The first operand (to the left of the operator) is called the subject of the condition; the second operand (to the right of the operator) is called the object of the condition. The subject and object may not both be literals. The relational operators specify the comparison to be made in a relation condition. They must be preceded by a space and followed by a space. Relational Operator Meaning IS[NOT]GREATER THAN} { IS [NOT].2: Greater than, or not greater than IS [NOT] LESS THAN} { IS[NOTJ~ Less than or not less than IS[NOT]EQUAL TO } { IS[NOT1=~ Equal to or not equal to In any relation condition other than the first in a sentence, the subject, the subject and relational operator, or the subject and ob ject may be omitted. The effect is the same as if the omitted parts were taken from the nearest preceding complete relation condition within the same sentence. If in a consecutive sequence of relation conditions, separated by logical operators, the subjects are identical, the relational operators are identical, and the logical connectors are identical, the sequence may be abbreviated as follows: 60229400 4-7 Only the first occurrence of the subject and relational operator is written. The logical operator is written only once immediately preceding the last object. IF X IS EQUAL TO 2 OR X EQUAL TO Y OR X EQUAL TO Z MOVE M TO N can be abbreviated to IF X IS EQUAL TO 2, Y, OR Z MOVE M TO N Abbreviation 1: Identical subjects are omitted in a consecutive sequence of relation conditions. IF A EQUAL TO B OR A IS LESS THAN C can be abbreviated to. IF A EQUAL TO B OR 1S LESS THAN C and IF A EQUAL TO B MOVE M TO N ELSE IF A IS LESS THAN C ADD X TOY can be abbreviated to IF A EQUAL TO B MOVE M TO N ELSE IF LESS THAN C ADD X TO Y Abbreviation 2: Identical subjects and relational operators are omitted in a consecutive sequence of relation conditions. IF A = BORA = C can be abbreviated to IF A =B IF A = B ADD X TO Y ELSE IF A = C AND A = D MOVE M TO N OR C and can be abbreviated to IF A = B ADD X TO Y ELSE IF C AND D MOVE M TO N 4-8 60229400 Abbreviation 3: Identical subjects and objects are omitted in a consecutive sequence of relation conditions. IF A EQUAL TO B OR A IS GREATER THAN B MOVE C TO A IF A IS GREATER THAN B ADD B TO A can be abbreviated to IF A EQUAL TO B OR IS GREATER MOVE C TO A IF GREATER ADD B TO A 4.3.2 COMPARISON OF NUMERIC OPERANDS A comparison of numeric operands results in the determination that the algebraic value of one is less than, equal to, or greater than the other. The length of the operands, in terms of number of digits, is not significant. Zero is considered a unique value regardless of the sign. these operands is permitted regardless of their usage. 4.3.3 COMPARISONS OF NONNUMERIC OPERANDS Comparison of A comparison between nonnumeric operands, or one numeric and one nonnumeric operand, results in the determination that one is less than, equal to, or greater than the other with respect to a specified collating sequence of characters. The size of an operand is the total number of characters in the operand. Numeric and nonnumeric operands may be compared only when their usage is the same, implicitly or explicitly. Operands of Equal Size Characters in corresponding positions of the two operands are compared from the high-order end through the low-order end. If all pairs of characters compare equally, the operands are considered equal. The first pair of unequal characters to be encountered is compared to determine their relative position in the collating sequence. The operand that contains the higher character in the collating sequence is considered to be the greater. 60229400 4-9 Operands of Unegual Size The comparison of characters proceeds from high-order characters to low-order characters until a pair of unequal characters is encountered or until the characters in one of the operands are exhausted. If remaining characters in the longer operand consist entirely of spaces, the two operands are considered equal, otherwise the longer operand is cons ide red greater. 4.3.4 COMPARISONS INVOLVING INDEX NAMES AND/OR Comparison of two index names is the same as if the corresponding occurrence INDEX DATA ITEMS numbers are compared. Conversion from character address bias is performed automatically. In the comparison of an index name with a literal or data item (other than an index data item), the occurrence number is compared to the actual value of the data item or literal. Conversion of the character address bias in the index name occurs prior to the comparison. In the comparison of an index data item with an index name or another index data item, the actual values are compared without conversion. The result of any other comparison involving an index data item is unpredictable. 4.3.5 SIGN CONDITION This condition determines whether or not the algebraic value of a numeric operand is less than, greater than, or equal to zero. identifier 1 arithmetic -expression i IS {NOT] 1::~:;E i ZERO An operand is positive if its value is greater than zero, negative if its value is less than zero, and zero if its value is equal to zero. 4-10 60229400 4.3.6 CLASS CONDITION This condition determines whether the operand is numeric, that is, consists entirely of the characters 0, 1, 2, 3, ... , 9, with or without an operational sign, or whether it is alphabetic, that is, consists entirely of the characters A, B, C, , .. , Z, space. . . . {NUMERIC} IdentifIer IS (NOT] ALPHABETIC The operand being tested must be described, implicitly or explicitly, as USAGE DISPLAY. The NUMERIC test cannot be used with an item described as alphabetic. The record description of the item being tested is determined to be numeric only if the contents are numeric. The ALPHABETIC test cannot be used with an item described as numeric. The item being tested is determined to be alphabetic only if the contents consists of any combination of alphabetic characters and the space. If the low-order character position of an otherwise numeric field contains a digit with a sign overpunch, the field is determined to be totally numeric. For a one-character alphanumeric field, that contains a numeric digit with a sign overpunch, both the NUMERIC and ALPHABETIC tests are considered true, and the results of the NOT option of the tests are false. An example of the latter case follows: 02 IF IF IF IF FLD-A PIC X, VALUE 'A' FLD-A F LD-A F LD-A FLD-A NUMERIC GO TO FLD-NUM ALPHABETIC GO TO F LD-ALPHA NOT NUMERIC GO TO FLD-ALPHA NOT ALPHABETIC GO TO FLD-NUM The first two tests will take the true path; the last two tests will take the false path. Since 'A' in internal octal form is 21, it can be interpreted as either an alpha A or a numeric +1. 60229400 4-11 4.3.7 CONDITION-NAME CONDITION A conditional variable is tested to determine whether or not its value is equal to one of the values associated with a condition name. [NOT) condition-name If the condition name is associated with a range or ranges of values, the conditional variable is tested to determine whether or not its value falls in this range, including the end values. The rules for comparing a conditional variable with a condition name are the same as those specified for relation conditions. The result of the test is true if one of the values corresponding to the condition name equals the value of its associated conditional variable. 4.3.8 EVALUATION RULES Evaluation rules for conditions are analogous to those given for arithmetic expressions except that the following hierarchy applies: arithmetic expression all relational operators NOT AND OR 4-12 60229400 4.4 COMMON OPTIONS IN STATEMENTS Three options appear frequently in the statement descriptions that follow: ROUNDED, SIZE ERROR, and CORRESPONDING 4.4.1 ROUNDED OPTION Truncation occurs after decimal point alignment if the number of fractional places in the result of an arithmetic operation is greater than the number of fractional places provided for the result in the receiving item. Excess digits are truncated according to the format of the item containing the result, (result identifier). When rounding is requested, the absolute value of the result is increased by 1 when the most significant digit of the excess is greater than or equal to 5. When the low-order integer positions in a result identifier are represented in a PICTURE by the character P, rounding or truncation occurs relative to the rightmost integer position for which storage is allocated. 4.4.2 SIZE ERROR OPTION A size error condition exists if the value of a result exceeds the largest value that can be contained in the associated result identifier after decimal point alignment. The size error condition applies only to final results, except in MULTIPLY and DNIDE statements where size error applies to the intermediate results as well. Division by zero always causes a size error condition. If ROUNDED is specified, rounding takes place before checking for size error. When a size error condition occurs, subsequent action depends on whether or not the SIZE ERROR option is specified. If SIZE ERROR is not specified and a size error condition occurs, the value of the result identifier is unpredictable. If SIZE ERROR is specified and a size error condition occurs, the previous value of the result identifier is not altered. After the operation is completed, the imperative statement in the SIZE ERROR option is executed. For CORRESPONDING arithmetic operations, the imperative statement in the SIZE ERROR clause is not executed until all individual additions or subtractions are completed. Invalid non-numeric data contained within a numerically defined field does not constitute an ON SIZE error condition during arithmetic operations. 60229400 4-13 4.4.3 CORRESPONDING OPTION For this discussion, d 1 and d 2 are each identifiers that refer to group items, A pair of data items, one from d and one from d correspond if the following 1 2 conditions exist: A data item in d and a data item in d 2 have the same name and the 1 same qualifications up to, but not including, d and d , 1 2 At least one of the data items is an elementary data item in the case of a MOVE statement, and both of the data items are elementary numeric data items in the case of ADD or SUBTRACT. Neither d nor d are data items with level number 66, 77, or 88, 1 2 When the CORRESPONDING option is specified, only the pairs of corresponding items as defined above are moved, added, or subtracted, When the groups identified by d 1 or d 2 contain items described with RENAMES, REDEFINES, or OCCURS clauses, those items are ignored; however, the groups themselves may be described with REDEFINES or OCCURS or be subordinate to items with these clauses, 4-14 60229400 4.5 TABLE HANDLING The table handling functions provide a method for accessing tables of repetitive contiguous data items. Tables described with the OCCURS clause in the Data Division are scanned with the SEARCH statement in the Procedure Division. Items in tables also may be referenced by subscripting (up to three levels) or by indexing. 4.5.1 SUBSCRIPTS Subscripts are used only when reference is made to an individual element in a list or table of like elements that have not been assigned individual data names. The subscript is a numeric literal integer, the special register TALLY, or a data name. The data name must identify a numeric elementary item that represents an integer. The data name used as a subscript m~y be qualified but not subscripted. The subscript may contain a sign, but the lowest permissible subscript value is 1. The highest permissible subscript value, in any particular case, is the maximum occurrences of the item as specified in the OCCURS clause. The subscript, or set of subscripts, that identifies the table element is enclosed in parentheses immediately following the terminal space of the table element data name. The table element data name appended with a subscript is called a subscripted data name or an identifier. When more than one subscript appears within a pair of parentheses, the subscripts must be separated by commas. A space must follow each comma, but no space may appear between the left parenthesis and the leftmost subscript or between the right parenthesis and the rightmost subscript. data-name [l :! data-narne-l]- .. (subscript [, subscript] ... ) 4.5.2 INDEXING Indexing is used to reference individual elements within a table of like elements. An index name is assigned to the level of the table in which it appears with the INDEXED BY option of the OCCURS clause when the table is described in the Data Division. The index name is initialized by a SET statement before it is used as a table reference. Direct indexing is specified by using an index name as a subscript. Relative indexing is specified when the index name is followed by the operator + or followed by an unsigned integral numeric literal all enclosed in the parentheses immediately following the terminal space of the data name. 60229400 4-15 Composite format: data-name [ 1~t [ , index -name data-name-l}indeX-name [l ~ t integer] J.. .) [l: ~ integer] 4.5.3 SEARCH FUNCTION The search function operates in the linear mode (SEARCH) or the binary bisecting mode (SEARCH ALL). Both types of search terminate when a stated condition is met when table element equals search argument. All tables to be searched must have at least one element described as an index name with the INDEXED BY option of the OCCURS clause. The index name is incremented during search operations by the element character offset, and the index name always contains the character address bias of the table entry currently being compared. See paragraph 4.3.4 for rules governing the comparison of index names and index data items. The element character offset is the number of character positions in a table element. The character address bias is the value added to the base character address of the table to give the character address of a particular element in the table. 4.5.4 RESTRICTIONS ON INDEXING, SUBSCRIPTING AND QUALIFICATION Tables may have one, two, or three dimensions; therefore, references to an element in a table may require up to three subscripts or indexes. A data name may not be subscripted nor indexed when the data name is used as an index, subscript, or qualifier. When a data item requires qualification, subscripting or indexing, the indexes or subscripts are stated following all necessary qualification. Subscripting and indexing must not be used together in a single reference. Where subscripting is not permitted, indexing is also not permitted. An index can be modified only by the SET, SEARCH, and PERFORM statements. Index data items are described by USAGE IS INDEX. the values of index names as data with conversion. They permit storage of The commas shown in the formats for indexes and subscripts are required. 4-16 60229400 4.6 DEBUGGING AID 4.7 PROCEDURE DIVISION STATEMENTS The TRACE statement is a source language debugging aid. It is used to display the contents of data items and literals during job execution. The user can include any number of TRACE statements and he can specify the frequency and point of execution. The following pages contain the Procedure Division statements in alphabetical order. 4.7.1 ACCEPT The ACCEPT statement causes low volume data to be read from the system input file (INP) or the console. ACCEPT identifier [FROM mnemonic-name] The file or device must be associated with the mnemonic name in the SPECIAL-NAMES paragraph of the Environment Division. ACCEPT causes the next set of data available at the file or device to replace the contents of the data item named by the identifier. If the size of the data item is less than the fixed input unit (80 characters for system input, 127 characters for the console), the data appears as the first set of characters within the minimum unit. When data is input from INP, if the size of the data item is greater than 80 characters, multiples of 80 characters are read until the storage area allocated to the data item is filled. If the data item is greater than the fixed unit but is not an exact multiple, the remainder of the last fixed unit is not accessible. If the FROM option is not given, data is accepted from the console. 60229400 4-17 4.7.2 ADD The ADD statement causes two or more numeric operands to be summed and the result to be stored. Format 1: 1 ADD identifier-It - - literal-I ~ identifier-2l] ,~ ['literal-2 1 . . . ... ldentifler-n [ROUNDED] [; ON SIZE ERROR imperative-statement] Values of operands are added together and the sum is stored in the location of the last operand specified. This operand may not be a literal. Format 2: 1 ADD identifier-It - - literal-I ~ identifier-2l] [ 'literal-2 1 TO identifier-m [ROUNDED] ~ [, identifier-n [ROUNDED]] ... [; ON SIZE ERROR imperative-statement] Values of operands preceding the word TO are added together, then the sum is added to the current value in each identifier-m, identifier-n, ... , and the result is stored in each identifier-m, identifier-n, ... , respectively. Format 3: 1 ADD identifier-It - - literal-I ~' 1identifier-2 { literal-2 ~ l r 1 l] identifier":'3 'literal-3 ~ . .. GIVING ~-=-=;..;.;::;,. identifier-m [ROUNDED] [identifier-n [ROUNDED]] [; ON SIZE ERROR imperative-statement] Values of operands preceding the word GIVING are added together, then the sum is stored as the new value of identifier-m, identifier-n, ... Format 4: 1 ADD CORRESPONDINGI - - CORR identifier-I TO identifier-2 [ROUNDED] [; ON SIZE ERROR imperative-statement] Data items in identifier-I are added to and stored in corresponding data items in identifier-2. In Formats 1, 2, and 3 each identifier refers to an elementary numeric item; identifiers to the right of GIVING may refer to data items containing editing symbols. Each literal must be a numeric literal. 4-18 60229400 The composite of operands must not contain more than 18 digits. The composite is the data item resulting from superimposing all operands, aligned by decimal points. The data items that follow GNING are not included in the composite. The compiler insures that enough places are carried to avoid loss of significant digits during execution. If one or more of the additions results in a size error, the procedure RATE- OVERFLOW - PROC is performed after completion of the whole ADD statement. Each receiving item that has a size error retains its current value instead of the computed result. Control returns to the statement following ADD statement. Examples: ADD MONTHLY-EARNINGS OVERTIME-EARNINGS GROSS-YEARTO-DATE ADD MONTHLY-EARNINGS OVERTIME-EARNINGS GNING MONTHLYGROSS-PAY WORK-MONTHLY-GROSS-PAY ADD HOS-INSURANCE LIFE-INSURANCE STATE-UNEMPLOYMENT UNITED MISCELLANEOUS GNING TOTAL-DEDUCTIONS ADD CORRESPONDING UPDATE-RATE-TABLE TO RATE-TABLE ON SIZE ERROR PERFORM RATE-OVERFLOW-PROC UPDATE-RATE-TABLE and RATE-TABLE are described as follows: 01 UPDATE-RATE-TABLE 03 EASTERN-REG 05 NEW-YORK 07 RATE 05 BOSTON 07 RATE 03 WESTERN-REG 05 LOS-ANGELES 07 RATE 01 RATE-TABLE 03 EASTERN-REG 05 NEW-YORK 07 RATE 05 BOSTON 07 RATE 05 PHILADELPHIA 07 RATE 03 WESTERN-REG 05 LOS-ANGELES 07 RATE 05 SAN-FRANCISCO 07 RATE 03 MIDWEST-REG The rates for New York, Boston, and Los Angeles in the UPDATE-RATETABLE are added to the rates for these three cities in the RATE-TABLE, and the results are the new rates. No other alteration occurs in the RATE-TABLE. 60229400 4-19 4.7.3 ALTER The ALTER statement modifies a predetermined sequence of operations. ALTER procedure-name-l TO [PROCEED TO] procedure-name-2 [, procedure-name-3 TO [PROCEED TO) procedure-name-4] ... Each procedure-name-l, procedure-name-3, ... is the name of a paragraph that contains only one sentence consisting of a GO TO statement without the DEPENDING option. Each procedure-name-2, procedure-name-4, ... is the name of a paragraph or section in the Procedure Division. During execution of the object program, the ALTER statement modifies the GO TO statement in the paragraph named procedure-name-l, procedurename-3, ... replacing the object of the GO TO by procedure-name-2, procedure-name-4, ... , respectively. Example: CCO. CC1. CC2. CC5. ALTER CCl TO PROCEED TO CC5; CC5 TO PROCEED TO FINAL-RESULT. ADD 001 TO COUNTR. IF COUNTR IS LESS THAN OVFLW GO TO CC2. GO TO. MOVE CORRESPONDING INPUT-TABLE TO WORK-AREA. ADD INPI OF WORK-AREA TO I-TOTAL. ADD INP2 OF WORK-AREA TO P-TOTAL. GO TO CCO. GO TO CCIO. When the ALTER statement is executed, the paragraph name CC5 is inserted as the object of the GO TO in paragraph CCl; and the paragraph name FINAL-RESULT is inserted in place of CClO as the object of the GO TO in paragraph CC5. FINAL-RESULT and CCIO must be procedure names in the COBOL program. 4-20 60229400 4.7.4 CLOSE The CLOSE statement terminates the processing of input and output reels, units, and files with optional rewind and/or lock where applicable. CLOSE file-name-l [l~~~TL! ] [WITH 1~~C~WIND! ] [, file-name-2 [1 ~~~L i] [WITH 1~~C~EWIND iJ ]... Each file name is the name of a file upon which the CLOSE statement operates; it must not be the name of a sort file. The REE L, LOCK, and NO REWIND options are applicable only to tape files. The UNIT option is applicable only to mass storage files in the sequential access mode. UNIT, throughout this specification means the storage device rather than the driver or power unit. Its use in the CLOSE statement is documentary and has the same effect as CLOSE file-name. It is illegal to specify CLOSE UNIT with the LOCK or NO REWIND options. To explain CLOSE options for the various storage devices, all files are classified as follows: Non-reel A file on an input or output device for which concepts of rewinding and reels have no meaning (disk file, disk pack, drum, reader, printer, punch, TTY, CRT) Single-reel A file entirely contained on one reel of tape; the reel may contain more than one file Multi-reel A file contained on more than one reel of tape A CLOSE statement with no options performs the following standard close operations on non-reel, single-reel, or multi-reel files: Input files: If the file is positioned at its end and there is an ending label record, the ending label record is checked and the data area is released. If the file is positioned at its end and there is no ending label record, or if the file is not positioned at its end, the data area is released but no ending label checking takes place. An input file is positioned at its end when the AT END imperative statement has been executed but no CLOSE statement has yet been executed. Output files: If an ending label record has been described for the file, it is constructed and written on the output device and the data area is released. Inputoutput files: 60229400 Regardless of the position of the file, the data area is released. 4-21 Single or multi -reel files are rewound; the file is positioned at its beginning on the last (or only) used reel. The previous reels are not affected. If a mass storage file is described with a FILE LIMITS clause, the inputoutput control system automatically releases the unused portion of the area allocated to the file when the file is closed. For a mass storage file CLOSE UNIT has the same effect as CLOSE FILE. CLOSE WITH LOCK applies only to tape files. It performs the standard close operations for single-reel and multi-reel files, rewinds the file, and unloads it. The file is no longer available for processing. CLOSE WITH NO REWIND applies only to tape files. The file is closed with the standard close procedures but the current reel remains in its current position. When multi-reel files are closed, previous reels are not affected unless controlled by a prior CLOSE REEL. If the current reel is not the last in an input file, succeeding reels are not processed in any way. CLOSE REEL applies only to multi-reel tape files. The following operations are performed in a standard close reel: Input files: Reel swap and standard beginning reel label and user's beginning reel label procedures (if specified by USE). Order of execution is specified in USE statement. Makes available the next data record on the new reel. Output files: Standard ending reel label and user's ending reel procedure (if specified by USE). Order of execution is specified in USE statement. Reel swap and standard beginning reel label procedure and user's beginning reel label procedure if specified by USE. The file is rewound, positioned at its beginning on the last used reel. CLOSE REEL WITH LOCK causes the standard close reel operations to be performed on the current reel of a multi-reel tape file. In addition, the reel is rewound and unloaded. The reel cannot be processed again as a part of the file. CLOSE REEL WITH NO REWIND causes the standard close reel operations to be performed on the current reel of a multi-reel tape file but the reel is left in its current position. 4-22 60229400 4.7.5 COMPUTE The COMPUTE statement assigns to data items the value of a numeric data item, literal, or arithmetic expression. COMPUTE identifier-l [ROUNDED], [identifier-2 ROUNDED]] ... FROM { t ~QUALS ) identifier-n ~ literal-l { arithmetic-expression [; ON SIZE ERROR imperative-statement] The COMPUTE statement allows the user to combine arithmetic operations without the restrictions on the composite of operands and/or receiving data items imposed by the arithmetic statements ADD, SUBTRACT, MULTIPLY, and DIVIDE. Each identifier must refer to an elementary numeric item, except that identifiers to the left of the equals sign may describe data items containing editing symbols. Literal-l must be a numeric literal. The arithmetic expression option permits the use of any meaningful combination of identifiers, numeric literals, and arithmetic operators, parenthesized as required. The words FROM and EQUALS are equivalent to the equals sign (=). The maximum size of each operand is 18 decimal digits. The identifier-n and literal-l options provide a method for setting the values of identifier-I, equal to the value of identifier-n or literal-I. Examples: COMPUTE COST-PRICE = (HOURS (1 + PROFIT-FACTOR). COMPUTE DATA-I 60229400 = * RATE + PARTS-COST) * 100. 4-23 4.7.6 DISPLAY The DISPLAY statement causes low volume data to be written on the system output file (OUT), the system punch file (PUN), or the console. DISPLAY literal-l j °d tOfO 1( 1 en 1 ler-} 1 [, literal-2 ] °d entOfO 2 ... [UPON 1 ler- - - mnemonIc-name] 0 ,1 The mnemonic name is associated with a system file or the console in the SPECIAL-NAMES paragraph in the Environment Division. Each literal may be any figurative constant except ALL. DISPLA Y causes the contents of each operand to be written on the system file or the console in the order listed. If a figurative constant is specified as one of the operands, only a single occurrence of the figurative constant is displayed. When a DISPLAY statement contains more than one operand, the data comprising the first operand is stored as the first set of characters, the data comprising the second operand as the second set of characters, and so on, until the maximum output file and 127 characters for the console) is filled. This operation continues until all information is displayed. Data comprising an operand may extend into subsequent units. If the UPON option is not used, the data is displayed on the console. COMP-2 items are converted to a standard 18-character format: -t- 9(11) E-t-999 before being displayed. 0 COMP-l items are converted to a standard 8-character format: +9(7) before being displayed. All other items are displayed without conversion. 4-24 602294250 + False Execute CALCULATION i "'"--- I I l J Augment AMNT BY DIFF Set AMNT = , ORIG Augment CNT by 1 + At termination of the PERFORM statement, AMNT contains its initial value. CNT has a value that exceeds the last used setting by an increment or decrement, unless condition-1 was true when the PERFORM statement was entered, in which case CNT and AMNT contain their initial values. For three identifiers, the mechanism is the same as for two identifiers except that identifier-7 goes through a complete cycle each time that identifier-4 is augmented by identifier-6 or literal-6, which in turn goes through acorn plete cycle each time identifier-1 is varied. Exampl~ of PERFORM varying three identifiers: PERFORM PROC-1 THRU PROC-2 VARYING ID-1 FROM ID-2 BY ID-3 UNTIL ill-I EQUAL TO TERM-1 AFTER ID-4 FROM ID-5 BY ID-6 UNTIL ID-4 GREATER LIMIT-2 AFTER ID-7 FROM ID-8 BY 1 UNTIL ID-7 = 5. 60229400 4-49 Entrance (from statement previously executed) Set ID-I Set ID-4 Set ID-7 = = = ID-2 ID-5 ID-8 , J ~ ID-I = TERM-I ,J False [ID-4 > LIMIT-2 ~. False I ID-7 = 5 I False Execute PROC-I through PROC-2 I True I True I True To statement following PERFORM statement I I I ~ Set ID-7 = ID-8 Set ID-4 i --- Augment ID-7 by I = ID-5 l Augment ID-4 by value of ID-6 , Augment ID-I by value of ID-3 Upon completion of the PERFORM, ID-4 and ID-7 contain their initial values, ID-I has a value exceeding its last used setting by one increment or decrement. If ID-I equals TERM-I (condition-I is true) when the PERFORM statement is entered, ID-I, ID-4, and ID-7 all contain their initial values. 4-50 60229400 4.7.18 READ The READ statement makes the next logical record available from an input file and allows performance of a specified imperative statement when end of file is detected. Format 1: (for sequential files from any device) READ file-name RECORD [INTO identifier-I] ; AT END imperative-statement Format 2: (for random access mass storage files only) READ file-name RECORD [INTO identifier-I] ; INVALID KEY imperative-statement An OPEN statement must be executed for a file prior to execution of the first READ statement for that file. If INTO is specified, the data is read into both the record area and the area specified by identifier-I. Format 1: If the logical end of the file is reached during execution of a READ, and an attempt is made to read that file, the AT END imperative statement is executed. Files assigned to TTY and CRT have no end-of-file condition, so the AT END phrase is never executed. Following execution of the AT END imperative statement, a READ statement for that file must not be given unless a prior CLOSE and OPEN for the file have been executed. When a file consists of more than one type of logical record, these records automatically share the same storage area; this is equivalent to an implicit redefinition of the area. Only the information present in the current record is accessible. If a file described with the OPTIONAL clause is not present, the imperative statement in the AT END phrase is executed on the first READ and standard end-of-file procedures are not performed. If the end of a tape reel is recognized during execution of a READ statement on a multi-reel/unit file, the following operations are carried out: 60229400 4-51 • Standard ending reel label procedure and user's ending reel label procedure, if specified, by the USE statement. The order of execution is specified by the USE statement. • Tape swap. • Standard beginning reel label procedure and user's beginning reel label procedure, if specified. The order of execution is specified by the USE statement. • First data record on the new reel is made available. Format 2: The READ statement implicitly performs the functions of a SEEK statement for a specific mass storage file, unless a SEEK statement for the file is executed prior to the READ. Records in the file are read in accordance with the contents of the ACTUAL KEY data item. The user is responsible for setting the contents of this data item prior to execution of the READ statement (ACTUAL KEY, chapter 2). If an attempt is made to read a mass storage record and contents of the associated ACTUAL KEY data item are outside the allocated file area, the INVALID KEY phrase is executed. The allocated area of a file is the number of blocks assigned to it by the ALLOCATE request of the MASTER *DEF function (section 7. 3. 3) . Regardless of the method used to overlap access time with processing time, the concept of the READ statement is unchanged in that a record is available prior to the execution of any statement following the READ statement. Examples: READ MASTER-FILE AT END MOVE 1 TO MASTER-ENDED-IND GO TO END-MASTER. READ DETAIL-FILE AT END GO TO END-DETAIL. READ INVENT-FILE AT END ADD 1 TO INVENT-IND GO TO ENDINVENT. READ DATA-FILE INTO ITEM-l INVALID KEY DISPLAY "END DATA". 4-52 60229400 4.7.19 RELEASE The RELEASE statement transfers records to the initial phase of a SORT operation. It is equivalent to a WRITE statement applied to a sort file. RELEASE record-name [FROM identifier] A RELEASE statement is used only within the range of an input procedure associated with a SORT statement for a sort file the description of which includes a DATA RECORDS clause containing record name. RELEASE causes the record named by record name to be released to the initial phase of a sort. RELEASE must be part of an input procedure in the SORT statement. When control passes from the input procedure, the sort file consists of all records placed in it by execution of RE LEASE statements. Following execution of the RELEASE statement, the contents of the record area named by record name are no longer available. If the FROM option is included, the contents of the identifier data area are moved to record name before being released to the sort file. The move is made in accordance with the rules governing a simple MOVE without the CORRESPONDING option. The information in the data area associated with identifier remains available even though the information in the record name area is no longer available. 60229400 4-53 4.7.20 RETURN The RETURN statement obtains sorted records from the final phase of a sort operation. It is equivalent to a READ statement applied to a sorted file. RETURN file-name RECORD [INTO identifier] ; AT END imperative-statement. A RETURN statement is used only within the range of an output procedure associated with a SORT statement for the specified file name. File-name is a sort file with a Sort File Description entry in the Data Division. The INTO option is used only when the input file contains just one type of record. The identifier is the name of a working storage area or output record area. When INTO is specified, the data is available in both the input record area and the data area associated with identifier. When a file consists of more than one type of record, records share the storage area automatically. This is equivalent to implicit redefinition of the area, and only the information that is present in the current record is accessible. Execution of RETURN causes the next record, in the order specified by the keys listed in the SORT statement, to be made available for processing in the record area associated with the sort file. Moving is performed according to the rules specified for the MOVE statement without the CORRESPONDING option. After execution of the imperative statement in the AT END phrase, no more RETURN statements can be executed within the current output procedure. 4-54 60229400 4.7.21 The SEARCH statement is used to search a table for an element that satisfies the specified condition and to adjust the associated index name or index data item to point to that table element. (See Table Handling, section 4.5, also OCCURS, section 3.5.6, and SET, section 4.7,2.3.) SEARCH Format I (linear search): . . . [ {indeX-name-I}] SEARCH Identifler-I VARYING identifier-2 [; AT END imperative-statement-I] . . {im p erative-statement-2 } ; WHEN condltlOn-l NEXT SENTENCE . . { imperative-statement-3 }] [ ; WHEN condltlOn-2 NEXT SENTENCE Format 2 (bisecting search): fI"\ t> Q;~ .r )¥ SEARCH ALL identifier-I [; AT END imperative-statement-I] }V' ; WHEN conditIon-1 .. {___ imperative-statement-2 "} NEXT SENTENCE ~ ( Y~J. ty\ ~ '10 ..:;:;.=-=-~:;.;:;..;...= Identifier-I cannot be subscripted or indexed. Its description must contain an OCCURS clause with the INDEXED BY option. In format 2, identifier-I must also contain the KEY IS option in its OCCURS clause. When format I is used, condition-I, condition-2, etc, are any conditions defined in section 4.3. In format 2, condition-I is limited to a relation condition using the relational operator EQUAL TO (=), a condition-name condition, or a compound condition formed by joining the first two conditions with an AND. If index-name-I is specified in the VARYING option, it must appear in the INDEXED BY option of an OCCURS clause describing either the table associated with identifier-lor another table. If index-name-l is in the INDEXED BY option of another table, the first (or only) index-name given in the INDEXED BY option for identifier-I is used and index-name-I is simultaneously incremented by the element character offset of the other table. If identifier-2 is specified in the VARYING option, it must be either an index data item described with a USAGE IS INDEX clause or an elementary numeric item with no positions to the right of the assumed decimal point. 60229400 4-55 Format 1: A simple SEARCH statement defines a linear search (a serial type of search operation) . The search starts by checking the character address bias of the first (or only) index name listed in the INDEXED BY option for this table. The character address bias is the value which, when added to the base address of a table, gives the character address of a particular element in the table. If this value is greater initially than the highest permissible location value for identifier-I, the search terminates. If the AT END clause is specified, the imperative statement associated with AT END is executed; otherwise, control passes to the next sentence. If the character address bias is not greater than the highest permissible location value for identifier-I, the conditions specified in the SEARCH statement are evaluated in the order they are written. If no condition is satisfied, the index name is incremented by the element character offset to reference the next table element. The element character offset is the number of character positions in a table element. This process is repeated until one of the conditions is satisfied or the character address bias of the index name exceeds the table limit by one or more entries. If a condition is satisfied, the imperative statement associated with the condition is executed. The index name remains set at the character address bias of the entry which satisfied the condition. If the table limit is exceeded before a condition is satisfied, the AT END imperative statement is executed; otherwise, control passes to the next sentence. If the SEARCH statement references an identifier-l in a group or hierarchy of groups described with an OCCURS clause, each group must have an associated index name. Index name settings are used throughout the SEARCH to refer to identifier-lor items within it. Only the index name associated with identifier-l is incremented by the SEARCH; the items identifier-2 or index-name-l are also incremented if they are specified in the VARYING option. The VARYING option permits the location of entries in an associated table simultaneously with location of entries in the primary table (identified by identifier-I). If index-name-l appears in the INDEXED BY clause describing identifier-I, that index name is used for the search, otherwise the first (or only) index name given in the INDEXED BY clause of identifier-l is used. However, if index-name-l appears in the INDEXED BY clause of another table, index-name-l is incremented by the character address bias of the other table. 4-56 60229400 The starting point of a linear search may be established by using the SET statement to preset values of the index names associated with the table. SET need not be used with all SEARCH statements since the starting point of a linear search depends on the current value of the index name associated with the table or the index name specified in the VARYING option of the SEARCH statement. Thus, one SET ... SEARCH combination can establish a position within the table and subsequent SEARCH statements will begin with the last setting of the table's index name. The SET statement does not apply to a bisecting search since the initial setting of the index name is ignored in that type of search. Format 2: The SEARCH ALL statement provides a bisecting nonserial type of search operation. The initial setting of the index name for identifier-l is ignored and the index name setting is varied as the bisecting search takes place. The setting value will not exceed the location value of the last element in the table, nor be less than the location value of the first element in the table. If condition-l is satisfied, the index points to the table entry that satisfied the condition and the associated imperative statement is executed. If this im- perative statement does not terminate with a GO TO, control passes to the next sentence. If condition-l is not satisfied for any setting of the index within the range per- mitted for the table, the imperative statement associated with the AT END option is executed. If no AT END is specified, control passes to the next sentence. When condition-l cannot be satisfied, the final setting of the index is unpredictable. Any or all data names in the KEY clause of identifier-l may appear as subjects or objects of a test, or they may be conditional variables with which the tested condition name is associated. All preceding data names in the KEY clause hierarchy must also be tested within condition-I. No other tests may appear in condition-I. Examples: 1. The following example shows a nons erial search of a one-dimensional table: DATA DIVISION. 01 TABLE-I. 03 ID-l PIC X(4) OCCURS 250 TIM:ES INDEXED BY INDX-l ASCENDING KEY IS ill-I. PROCEDURE DIVISION. 60229400 4-57 SEARCH ALL ID-I AT END GO TO END-SEARCH WHEN ID-I (INDX-I) = "AIOO" GO TO EMPL-A. The bisecting search proceeds until an ID-I is found with a value of "AIOO". If none is found, control passes to the procedure, END-SEARCH. The search operation is illustrated below. Start t Set low lim it to beginning of table Set high limit to end of table Set INDX-l to midpoint between low lim it and high lim it Yes Yes Put INDX-I into high limit 4-58 No Yes ENDSEARCH EMPL-A Put INDX-I into low limit 60229400 2. The following example and flow chart illustrate a linear search with two WHEN conditional phrases: DA TA DIVISION. 01 TABLE-I. 03 ill-I PIC x(#.Q OCCURS 150 TThlES INDEXED BY INDX-l. 01 TABLE-2. 03 ill-2 PIC X(12) OCCURS 200 TThlES INDEXED BY INDX-2. PROCEDURE DIVISION. SEARCH ill-I VARYING INDX-2 AT END GO TO NOT-FOUND WHEN ill-I (INDx-1).= "A 1234567890" GO TO A-FILE WHEN ID-2 (LNDX-2) = "A X_XX_XX_XXX_XX" GO TO B-FILE. INDX-l and INDX-2 are each incremented until one or the other of the two conditions is satisfied or until the character address bias of INDX-l exceeds the table limit of TABLE-I. If neither condition is satisfied, control passes to the procedure NOT-FOUND. 60229400 4-59 INDX-1 and INDX-2 are each incremented until one or the other of the two conditions is satisfied or until the character address bias of INDX-1 exceeds the table limit of TABLE-I. If neither condition is satisfied, control passes to the procedure NOT-FOUND. Start GO TO NOT-FOUND GO TO A-FILE es GO TO B-FILE no increment INDX-1 and INDX-2 by 12 characters 4-60 60229400 4.7.22 SEEK The SEEK statement initiates access to a mass storage data record for subsequent reading or writing. SEEK file-name RE CORD A SEEK statement pertains only to mass storage files in the random access mode and, when specified, is executed before each READ and WRITE statement. SEEK finds the location of the record to be accessed from the contents of the ACTUAL KEY identifier. The user is responsible for setting the contents of this identifier prior to execution of the SEEK statement (see ACTUAL KEY, section 2.3.1). Validity of the contents of the ACTUAL KEY identifier for the particular mass storage file is determined at the time of execution. If the key is invalid, the imperative statement in the INVALID KEY clause of the next READ or 'WRITE statement for the associated file is executed. Two SEEK statements for the same mass storage file may logically follow each other. Any validity check associated with the first SEEK statement is negated by execution of a second SEEK statement. CAUTION: The intent of the SEEK statement is to provide an overlap of actual processing while the read/write heads on a mass storage device are being positioned to the next data block that will be referenced by a subsequent READ or WRITE request. The advantage gained in the SEEK statement may be lost if other programs within the MASTER multiprogramming environment are accessing the same mass storage device. Therefore, the SEEK statement should be used only on random files that do not share mass storage devices with other files. 60229400 4-·{)1 4.7.23 SET The SET statement sets values for index names associated with elements in tables so that these table elements can be referenced by indexing. Format 1: "dex-name- 2 ] { index-name-3 } , In "" " SET {index-name-1} IdentIfIer-3 [ { , I"dentif"Ier -2 } " .. TO literal-1 - - identifier-1 Format 2: SET index-name-4 [, index-name-5] ... {~~.:: BY } identifier-4} { literal-2 The identifiers are index data items or numeric elementary items described without any .IX>sitions to the right of the assumed decimal .IX>int. However, identifier-4 in format 2 may not be an index data item. A literal must be a .IX>sitive integer. The index naJ;nes must be defined in the INDEXED BY option of the OCCURS clause for a given table. When SET is used to preset the contents of any index names in a table, all the index names which are to be set must be specified in the SET statement. No implicit setting is performed. Format 1: If index-name-1 is specified, it is set to the character address bias which corres.IX>nds to the occurrence number referred to by or contained in indexname-3, identifier-3 or literal-I. If identifier-3 is an index data item, or if index-name-3 is related to the same table as index-name-1, no conversion is made from occurrence number to character address bias. If identifier-1 is specified, the particular action depends on whether it is an index data item or a data name containing a numeric elementary item. If it is an index data item, it is set equal to the contents of index-name-3 or identifier-3 which is also an index data item. Literal-1 cannot be used when identifier-1 is an index data item. If identifier-1 is a data name, it is set to the occurrence number that corre- s.IX>nds to the character address bias in index-name-3. Neither identifier-3 nor literal-1 can be used in this case. In the above discussion, all references to index-name-1 and identifier-1 apply to index-name-2 and identifier-2, respectively. 4-62 60229400 Format 2: The contents of index-name-4 (and index-name-5, if specified) are incremented (UP BY) or decremented (DOWN BY) a value that corresponds to the number of occurrences represented by the value of literal-2 or identifier-4. Identifier-4 must be a data name identifying a numeric elementary item with no positions to the right of the assumed decimal point. Example: DA TA DIVISION. 77 B-1 PIC 99 USAGE IS INDEX. 77 D-l PIC 9 USAGE IS INDEX. 01 ABLE. 02 BAKER OCCURS 20 TIMES INDEXED BY INDX-B. 03 C!LARLIE PIC 9 (3) . 03 DOG PIC X(3) OCCURS 5 TIMES INDEXED BY INDX-D. PROCEDURE DIVISION. M-l. SET B-1 TO INDX-B. M-2. SET D-l TO INDX-D. IF CHARLIE (B-1) LESS THAN 100, MOVE DOG (B-1, D-l) TO TABLE-D. IF INDX - B GREATER THAN 20; GO TO OUT. IF INDX-D LESS THAN 6; SET INDX-D UP BY 1; GO TO M-2; ELSE SET INDX-D DOWN BY 5, GO TO M-l. OUT. 60229400 4-63 4.7.24 SORT The SORT statement creates a sort file by executing input procedures or by transferring records from another file. Records in the sort file are sorted on a set of specified keys. In the final phase of the sort operation, each record from the sort file is made available, in sorted order, to some output procedures or to an output file. . SORT flle-name-I ON 1ASCENDING DESCENDING l , [; ON 1~~~~!:'~G! KEY 5 l KEY 1identifier-I, 1identifier-2! ... ] ... INPUT PROCEDURE IS section-name-I [THRU section-name-2] } { USING file-name-2 OUTPUT PROCEDURE IS section-name-3 [THRU section-name-4] } { GIVING file-name-3 A program may contain more than one SORT statement in the Procedure Division. No SORT statement may !lppear in the Declaratives Section or in the input and output procedures associated with a SORT statement. File-name-l is a sort file described in an SD entry in the Data Division. Each identifier must represent data items described in records associated with file-name-I. Section-name-I is the name of an input procedure; sectionname-3 names an output procedure. File-name-2 and file-name-3 are described in FD entries in the Data Division. They are not sort files, and must not be described in an SD entry. The FILE-CONTROL paragraph of the Environment Division must specify only the SELECT and ASSIGN clauses for a sort file (file-name-I). FILE-CONTROL for file-name-2 and filename-3 may include MULTIPLE and RESERVE as well as SELECT and ASSIGN. ASCENDING specifies a sorting sequence from the lowest to the highest value of KEY; DESCENDING specifies a highest to lowest sequence. The order of values is in accordance with the ordered character set given in appendix D. The record description of every record listed in the DATA RECORDS clause of the sort file must contain the KEY item s identifier-I, identifier-2, etc. When KEY items appear in more than one record, data descriptions must be equivalent and starting positions must be the same character positions relative to the beginning of each record. They may not contain or be subordinate to entries that contain an OCCURS clause. The KEY identifiers are listed from left to right in the SORT statement in order of decreasing significance without regard to how they are divided into KEY clauses. 4-64 60229400 INPUT PROCEDURE consists of one or more sections written consecutively which must not be a part of any output procedure. An input procedure can include any procedures needed to select, create, or modify records, and at least one RELEASE statement to transfer a record to the sort file. Control may be passed to an input procedure only when a related SORT statement is being executed. If INPUT PROCEDURE is specified, control is passed to the input procedure before file-name-l is sequenced by the SORT statement. The compiler inserts a return mechanism at the end of the last section; and when the last statement in the input procedure has been executed, the records that have been released to the sort file are sorted. OUTPUT PROCEDURE consists of one or more sections written consecutively which must not be a part of any input procedure. An output procedure may consist of any procedures required to select, modify, or copy the records that are returned one at a time 1.'1 sorted order from the sort file. At least one RETURN statement must be included in an output procedure to make the sorted records available for processing. Control must not be passed to an output procedure unless a related SORT statement is being executed. Control passes to the output procedure after file-name-l has been sequenced by the SORT statement. The compiler inserts a return mechanism at the end of the last section. When the last statement has been executed, this mechanism terminates the sort and transfers control to the statement following the SORT statement. The procedural statements in an INPUT PROCEDURE or an OUTPUT PROCEDURE are subject to the following restrictions: • The procedure must not contain any SORT statements. • The procedure must not transfer control to points outside the procedure. • The remainder of the Procedure Division must not contain any transfers of control to points inside an input or output procedure. If USING is specified, the SORT statement automatically performs the functions of the OPEN, READ, USE, and CLOSE statements for file-name-2. All the records in file-name-2 are transferred automatically to file-name-l for sorting. File-name-2 must not be open at the time of execution of the SORT statement. If GIVING is specified, all the sorted records in file-name-l are transferred automatically to file-name-3. File-name-3 must not be open when the SORT statement is executed. Execution of the SORT statement automatically opens file-name-3 before the records are transferred and closes it after the last record in the sort file is returned. 60229400 4-65 Examples: 1. DATA DIVISION. FILE SECTION. FD GEN-FILE BLOCK CONTAINS 10 RECORDS LABEL RECORD IS OMITTED DATA RECORD IS GEN-REC. 01 GEN-REC. 02 IDENT-A PIC 9(8). 02 IDENT-B. 03 ID-B PIC 99. 02 IDENT-C PIC X(20). SD SORT-FILE. DATA RECORD IS SORT-REC. 01 SORT-REC. 02 IDENT-l PIC 9(8). 02 IDENT-2. 03 ID-2A PIC 99. 02 IDENT-3 PIC X(20). PROCEDURE DIVISION. A-SORT SECTION. ST-1. SORT SORT-FILE ON ASCENDING KEY IDENT-l ON DESCENDING KEY ID-2A, IDENT-3 INPUT PROCEDURE IS INP-l OUTPUT PROCEDURE IS OUT-I. GO TO REST-OF-PROGRAM. INP-l SECTION. OPEN INPUT GEN-FILE. I-I. READ GEN-FILE AT END GO TO 1-2. MOVE GEN-REC TO SORT-REC. RELEASE SORT-REC. GO TO I-I. 1-2. CLOSE GEN-FILE. OUT-l SECTION._ OPEN OUTPUT GEN-FILE. 0-1. RETURN SORT-FILE RECORD AT END GO TO 0-2. MOVE SORT-REC TO GEN-REC. WRITE GEN-REC. GO TO 0-1. 0-2. CLOSE GEN-FILE. REST-OF-PROGRAM SECTION. 4-66 60229400 2. Given two files, FILE-I and FILE-2, with data records identical to GEN-REC in example 1, and a sort file identical to SORT-FILE in example 1, the following SORT statement can be specified: SORT SORT-FILE ON ASCENDING KEY IDENT-I, IDENT-3 ON DESCENDING KEY ID-2A USING FILE-l GIVING FILE-2. 4.7.25 STOP The STOP statement halts the object program permanently or temporarily. i srnr. ..... 'literal ( ~JRUN {-J The literal may be numeric, non -numeric, or any figurative constant, except ALL. If the RUN option is used, the program is terminated and control is returned to its caller. If the literal option is used, the literal is displayed on the console. The program is temporarily suspended until the operator responds. A response of any combination of characters other than NO, causes the object program to continue with the execution of the next sequential statement. The response NO is reserved for the option of terminating program execution. If a STOP statement with the RUN option appears in an imperative sentence, it must appear as the only or last statement in a sequence of imperative statements. 60229400 4-67 4.7.26 SUBTRACT The SUBTRACT statement is used to subtract one, or the sum of two or more, numeric data items from one or more items equal to the results. Format 1: }] SUBTRA CT {literal-1 } [ { literal-2 identifier-2 . .. FROM identifier-m identifier-1 ' [ROUNDED] , identifier-n [ROUNDED] ... [; ON SIZE ERROR imperative-statement1 All literals or identifiers preceding the word FROM are added together and this total is subtracted from identifier-m, identifer-n, ... The differences are stored in the respective identifiers. Format 2: SUBTRACT {literal-1 } [ {literal-2 }] FROM {literal-m } identifier-1 ' identifier-2 . .. - - - identifier-m GWING identifier-n [ROUNDED] [, identifier-o [ROUNDED)] ... [; ON SIZE ERROR imperative-statement 1 All literals or identifiers preceding the word FROM are added together, subtracted from literal-m or identifier-m, and the result stored as the new value of identifier-n, identifier-o, ... . Format 3: SUBTRACT ._ . _. . ______ . _ i(CORRESPONDING CORR fI identliler-l It'HUM . __ . _ Ident111er-~ [ROUNDED1 [; ON SIZE ERROR imperative-statement1 Data items in identifier-1 are subtracted from and stored into corresponding data items in identifier-2. Each identifier must refer to a numeric elementary item except in format 2, where an identifier which appears to the right of the word GWING may refer to a data item that contains editing symbols. Each literal must be a numeric literal. 4-68 60229400 The maximum size of each operand is 18 decimal digits; and the composite of operands, must not contain more than 18 digits. The composite of operands is the data item resulting from superimposing all operands aligned by decimal point, excluding the data items that follow the word GNING. The compiler insures that enough places are carried to avoid loss of significant digits during execution. Examples: SUBTRACT SOC-SEC FEDERAL-TAX TOTAL-DEDUCTIONS FROM MONTHLY-GROSS GNING MONTHLY-NET. SUBTRACT CORRESPONDING UPDATE-RATE-TABLE FROM RATE-TABLE. SUBTRACT DAY OF CURRENT-DATE FROM 30 GNING DAYS-LEFT ON SIZE ERROR ADD 1 TO ERROR-COUNTER. 6022940Q 4-69 4.7.27 TRACE The TRACE statement is a source language debugging tool which enables the user to display literals and the contents of data names on the job standard output file during execution of the object program. TRACE [WHEN integer-I] [EVERY integer-2] [UNTIL integer-3] literal-l } [{literal-2 }] { data-name-l 'data-name-2 .... Any number of TRACE statements may be inserted in the Procedure Division of a COBOL source program. Compilation of TRACE statements is controlled by the TRACE parameter on the UCBL control card for the program. When the T parameter is specified, all TRACE statements are compiled into the object program at the points of occurrence. During program execution, as each compiled TRACE request is encountered, each specified literal value is displayed as given. The contents of data names are displayed in edited form according to the edit picture assigned to each data name. The data name followed by a space, an equal sign and another space are presented preceding the value. All literals and values are displayed in a linear fashion across the print line. WHEN integer-l indicates the first execution of the TRACE statement. Each time the program enters a TRACE request, a counter initially set to one is incremented by one and a comparison is made with the value given as integer-I. When the counter equals integer-I, the literals and values for the request are displayed for that cycle and all successive integer-2 cycles, until integer-3 has been reached. If WHEN integer-l is omitted, the TRACE begins at the first cycle. EVERY integer-2 indicates the timing between each display. If this option is omitted, a display is generated during each cycle of the TRACE request. UNTIL integer-3 indicates the maximum number of TRACE cycles to be processed before the request becomes inoperative. If the option is omitted, the TRACE request is processed until program execution is ended. A TRACE statement may be continued on succeeding source lines, it may begin on or after column 12. 4-70 60229400 Example: READ FILE-A AT END GO TO FINISH. TRACE WHEN 50 EVERY 10 UNTIL 5000 "FILE-A" REC-COUNT, REC-ill, "THE FOLLOWING" REC-SIZE. The result of the TRA CE statement is: FILE-A REC-COUNT = 1,500 REC-ill = INV-MAST THE FOLLOWING REC-SIZE = 150 60229400 4-71 4.7.28 USE The USE statement introduces user-defined input-output label and error handling procedures. Format 1: USE AFTER STANDARD ERROR PROCEDURE ON file-name-1 [file-name-2] INPUT OUTPUT 1-0 ! 0 0 'j . INPUT-OUTPUT Format 2: USE BEFORE - - AFTER 1 i STANDARD [1 LABEL PROCEDURE ON Format 3: BEGINNING ENDING !J [{ R~E~LE~L}J file-name-1 [file-name-2] INPUT OUTPUT 1-0 INPUT-OUTPUT ! 0 • '! 0 USE BEFORE REPORTING identifier-1 [,identifier-2 0 • 0] A USE statement immediately follows a section header in the Declaratives portion of the Procedure Division. It must be followed by a period and a space. The remainder of the section consists of one or more procedural paragraphs defining the procedures to be used. The USE statement itself is never executed, rather it defines the conditions calling for execution of the USE procedures. A USE procedure must not contain any reference to non-declarative procedures. Conversely, the non-declarative portion must not contain references to procedure names that appear in the declarative portion; except that a PERFORM statement may refer to a USE declarative or to the procedures associated with a USE declarative. The only 1-0 statements allowed within a USE procedure are ACCEPT, DISPLA Y, and CLOSE. A file name must not be referred to explicitly or implicitly in more than one USE statement. No file name referred to in a USE procedure can represent a sort file. 4-72 60229400 The USE procedures in format I . are executed by the input-output control system after completion of the standard input-output error routine. If a bad block is read, the error declarative is executed for each READ statement that causes retrieval of a logical record from the bad block. On entry to the declarative, the record requested will have been moved to the record area. Upon exiting the declarative, the input-output control system ignores the error, accepts the bad record, and resumes normal processing. If a WRITE error occurs, the declarative is executed only once for the error. In format 2 for an input file, the procedures are executed before and/or after execution of a beginning or ending input label check procedure. For an output file, the USE procedures are executed either before a beginning or ending output label is created, or after a beginning or ending output label is created but before it is written on tape. The following rules govern format 2 USE procedures: If file-name-I, file-name-2, etc. is specified, the associated File Description entry for the file must not specify LABEL RECORDS ARE OMITTED. If the words BEGINNING or ENDING are not included, the designated procedures are executed for both beginning and ending labels. If neither REEL nor FILE is included, the designated procedures are executed for both REEL and FILE labels. The REEL option is not applicable to mass storage files. The USE label procedures are not applicable to scratch files. The USE label procedure statement may be used for mass storage files even though mass storage file labels are maintained by MASTER and are not available to the user. Only the BEFORE or AFTER BEGINNING FILE or UNIT options of format 2 are valid. The UNIT and FILE options are synonymous. The input-outplt control system passes control to the BEFORE BEGINNING procedure just before the user's label identification data is moved to a MASTER OPEN request skeleton. The MASTER OPEN request makes the file available for processing, and then control passes to the AFTER BEGINNING label procedure. USE BEFORE REPORTING (format 3) is used only in conjunction with the Report Writer. It is described in section 5.4.4 with the Report Writer statements. 60229400 4-73 4.7.29 WRITE The WRITE statement releases a logical record from the output record area to the input-output control system which writes the record on an external device as part of an output file. Format 1: WRITE record-name [FROM identifier-I] [l identifier-2 LINES}] BEFORE/ ADVANCING integer ~INES { AFTER mnemonlC-name Format 2: WRITE record-name [FROM identifier-I] ; INVALID KEY imperative-statement Format 1 is used to process non -mass storage files. The ADVANCING option allows the user to specify vertical position of the printer. Format 2 is used to process mass storage files . INVALID KEY specifies an imperative statement to be executed if an attempt is made to write outside the allocated file area. An OPEN statement must be executed for a file before a WRITE statement for that file can be executed. Record name is the name of a logical record in the File Section of the Data Division; it must not name a sort file. After the WRITE is executed, record name is no longer available. The FROM option is used to move a record from the area in memory specified by identifier-I to the output record area and simultaneously release this record to the input-output control system. The record is moved in accordance with the rules for a simple MOVE. Record name may not be the same as identifier-I. Format 1: When WRITE is specified for a multi -reel tape file, the following operations are performed after an end-of-reel condition is recognized: 4-74 60229400 Standard ending reel label procedure and user's ending reel label procedure (if specified by a USE statement) in the order specified by the USE statement. Reel swap. Standard beginning reel label procedure and user's beginning reel label procedure (if specified by a USE statement) in the order specified by the USE statement. When records are written for a teletypewriter or 211 display unit, the user is responsible for determining the positioning of the data. The input-output control system interprets the first. character of the file's record area before the write operation is initiated. If the first character is the internal octal code 36, the following action will take place before the record is displayed on the device: Action TTY Carriage return to the lefthand margin of the page. first character of the record is not printed. The CRT Clear the screen and position the entry marker to the upper lefthand corner of the screen. The first character of the record is converted to a blank character and is displayed as such. When the first character of the record is other than internal code 36, the record is displayed immediately following the last character written by a previous WRITE request. In this case, the first character is always displayed as presented by the WRITE request. The ADVANCING option allows control of the vertical positioning of each record on the printed page. The ADVANCING option overrides automatic advancing. Identifier-2 must be the name of a numeric elementary item described without any positions to the right of the assumed decimal point. The mnemonic name is defined in the Special-Names paragraph of the Environment Division; it is identified with a printer carriage control character. • If identifier-2 is specified, the printer page is advanced the number of lines contained in identifier-2. • If integer is specified, the printer page is advanced the number of lines equal to the value of integer. • If mnemonic-name is specified, the printer page is advanced according to printer carriage control rules below: 60229400 4-75 Control Character A B C D E F G H 1 2 3 4 5 6 7 8 o (zero) + (blank) Q R Action Before Print Action After Print Space 1 Space 1 Space 1 Space 1 Space 1 Space 1 Space 1 Space 1 Page Eject Skip to Last Line Skip to Level 6 Skip to Level 5 Skip to Level 4 Skip to Level 3 Skip to Level 2 Skip to Level 1 Space 2 No Space Space 3 Space 1 Clear Auto Page Eject Select Auto Page Eject Page Eject Skip to Last Line Skip to Level 6 Skip to Level 5 Skip to Level 4 Skip to Level 3 Skip to Level 2 Skip to Level 1 No Space No Print No Print When a file is assigned to PRIN"TER or SYSTEM-OUTPUT the first character (carriage control character) of the record is suppressed when the record is printed. Format 2: When WRITE is specified for mass storage files in the sequential access mode, the imperative statement in the INVALID KEY clause is executed when the end of the last allocated segment of the file is reached; and an attempt is made to execute a WRITE statement for that file. If the THRU integer-4 option of the FILE-LIMITS clause is specified, the file will be expanded by ten percent of the originally allocated area and the INVALID KEY imperative statement is not executed. However, if an attempt to expand the file results in the maximum limit (integer-4) being reached or all scheduled mass storage being used, the IN"VALID KEY imperative statement is executed. When WRITE is specified for a mass storage file in random access mode, records are written on the file in accordance with the contents of the ACTUAL KEY data item. The user is responsible for setting the contents of this data item prior to execution of the WRITE statement (A CTUA L KEY, chapter 2). The imperative statement in the INVALID KEY phrase is executed when the contents of the ACTUAL KEY data item are out of range. 4-76 60229400 When an INVALID KEY condition exists, no writing takes place and the information in the record area remains available. The WRITE statement performs the function of the SEEK statement unless a SEEK statement for the specified record is executed prior to the WRITE. Examples: WRITE MASTER-REC. WRITE DETAIL OF MASTER-OUT FROM DETAIL OF WORK-AREA. WRITE PRINT-LINE AFTER ADVANCING 2 LINES. WRITE HEADER-LINE BEFORE ADVANCING LINE-NO LINES. WRITE ERROR-REC INVALID KEY ADD 1 TO ERR-COUNT GO TO ERROR-PROC. 60229400 4-77 REPORT WRITER 5 The Report Writer enables the user to specify the format of printed reports to be output from the COBOL program. Each report is defined in the Report Section of the Data Division. Once defined, the Report Writer statements in the Procedure Division place the report in the specified format on a user speCified device. More than one report can be generated from a single source program. When the Report Writer is used, the Report Section must be included as the last section of the Data Division, and File Description entries {FD) in the File Section must contain the names of the reports to be output. 5.1 GENERAL DESCRIPTION A report is a pictorial presentation of data. In preparing a report, the format id differentiated from the content. The format must be planned in terms of page width and length, organization of report items on the page, and the hardware device on which the report is to be written. Two types of entries are required for each report: the report description entry (RD level) which describes the physical aspects of the report format and the report group description entry (01 level) which describes the characteristics of the iten;ls included in the report and their relation to the report format. The Report Description (RD level) specifies the overall format: characteristics of the page are outlined; limits are prescribed for the page and for footings, headings, and detail information. This entry also specifies data items that act as print control factors. Each report associated with an output file must be defined in an RD entry. Each report must contain at least one report group. A report group is a set of one or more data items which is always presented as a single unit regardless of format. It may consist of one or more report lines. The report group always has an 01 level number; but it may contain lower level group and/or elementary items with level numbers from 2-49. Each report group at the 01 level must have a TYPE clause which specifies the type of the report group: heading, footing, or detail. A data name identifying the report group is optional. However, it must be specified for any report group referenced by GENERATE or USE statements in the Procedure Division. The placement of an item in relation to the report group and of the report 60229400 5-1 group in relation to the entire report, the format description of all items, and any control factors 'associated with the report group are defined by this entry. 5.1.1 CONTROL GROUPS / CONTROL BREAKS Summary information can be presented within the body of a report. The concept of a control hierarchy makes it possible to automatically produce required summary information together with any heading, detail, and footing'information in a control group. Control items are specified in the report description entry in the same order as the control hierarchy. Any change in the contents of a control item produces a control break. Changes are recognized between executions of GENERATE statements and they set in motion the automatic production of control footing and heading report groups associated with the item. A control group is the set of control heading, control footing, and detail report groups associated with a given control data name. Within the control hierarchy, lower level heading and/or footing report groups are included in the higher level control group. 5.1.2 PAGE BREAK A page break occurs whenever the LINE-COUNTER is changed, by a LINE NUMBER clause or a NEXT GROUP clause, to a line number that is not currently available to the user. A line number may not be available to the user under the following two conditions: • Relative spacing exceeds the PAGE LIMIT clause specification • Absolute spacing references a number that is equal to or less than the current line number If the above page break conditions are detected at object time, PAGE HEADING and PAGE FOOTING report groups are produced if appropriate. The page counter associated with the fixed data name PAGE-COUNTER is incremented by one each time a page break occurs. It is incremented after the page footing is produced and before the page heading on the next page. 5-2 60229400 5.1.3 LINE-COUNTER The fixed data name, LINE-COUNTER is generated automatically by the Report Writer for each report. LINE-COUNTER determines when a page heading and/or footing report group is to be presented and controls vertical spacing of information on the page. It is a numeric item; and its size is based on the number of lines per page specified in the PAGE LIMIT clause. Initially, the line counter is set to zero by the Report Writer. It is automatically tested and incremented during execution according to the PAGE LIMIT clause and the values specified by the LINE NUMBER and NEXT GROUP clauses in a report group description. The value of liNE-COUNTER may be incremented with relative spacing, or it may be replaced with absolute spacing. If relative spacing advances the line counter beyond the limits defined in the PAGE liMIT clause, PAGE FOOTING is presented if appropriate and the line counter is reset to zero (top-of-form). No additional setting is made to the line COll..'1ter based on the relative line specification. If absolute spacing causes the line counter to be less than or equal to the current line number, the line counter is set to the requested absolute line number following the generation of PAGE-FOOTING and PAGE-HEADING groups. liNE-COUNTER may be referred to by Procedure Division statements; however, if it is changed by a Procedure Division statement, page format control may be unpredictable. If more than one line counter exists because more than one Report Description entry is specified, LINE-COUNTER must be qualified by a report name when it is referenced by a Procedure Division statement. The value of liNE-COUNTER during execution represents: 60229400 • Last line number of previous report group • Last line number skipped by a previous NEXT GROUP specification • Zero, if at top of page 5-3 5.1.4 PAGE-COUNTER PAGE-COUNTER is a fixed data name automatically generated by the Report Writer as a data item to number the pages within a report. One numeric page counter is supplied for each report. The size of the counter is specified by the PICTURE clause associated with the first elementary data item that uses PAGE-COUNTER as a source. If PAGE-COUNTER is given as a source in more than one item, each PICTURE clause must specify the identical number of numeric characters. The size must be sufficient to prevent overflow. PAGE-COUNTER may be referenced from the Procedure Division. If more than one Report Description entry exists, PAGE-COUNTER must be qualified by the report name when referenced. It must not be qualified when used as a source in the Data Division. The page counter is automatically preset to one by the Report Writer. If a starting value greater than one is desired, the contents of the page counter can be changed with a Procedure Division statement following the INITIATE statement. The page counter is automatically incremented by one each time a page break occurs. It is incremented after page footing and before a page heading is generated. 5.2 DATA DIVISION ENTRY FORMATS 5-4 Format specifications used in the Report Writer are defined in this section. Each report must be named in the File Section and described in the Report Section of the Data Division. Statements which generate a report are specified in the Procedure Division. 60229400 5.2.1 FiLE DESCRIPTION ENTRY The File Description furnishes information concerning the physical structure, identification, and record names of a given file. FD file-name [; BLOCK CONTAINS [integer-l TO] integer-2l~:~~ERS! ] [; RECORD CONTAINS [integer-3 TO] integer-4 CHARACTERS [ DEPENDING ON 1!~~~~~~RK !J ] 'RECORD IS ) ; LABEL RECORDS ARE 1 [; VALUE OF (STANDARD) OMITTED > f <( data-name-2 ) {~:~:~~~:~=n IS L~::~~~e-4} data-name-5} IS {data-name-6}] ] [ ' { label-field-2 literal-2 ... RECORD IS I [; DATA 1RECORDS ARE data-name-7 [, data-name-S] ... J REPORT IS I report-name-l [, report-name-2] ... . ; REPORTS ARE 1 The level indicator FD identifies the file description entry; it must precede the file name. All semicolons are optional, but the entry must be terminated by a period. Clauses which follow the file name are optional in many cases, and their order of appearance is immaterial. See section 3 for a discussion of the BLOCK, RECORD, LABEL, VALUE OF, and DATA clauses. If the RECORD CONTAINS or DATA RECORD clauses are not specified, a record area 136 characters long is automatically assigned to the file. 60229400 5-5 The REPORT clause cross references the report description entries with associated file description entries: l REPORT IS REPORTS ARE, report-name-l [, report-name-2] ... 1 The REPORT clause is required in the file description entry if the file is an output report or if it is to contain output report records. Each report name listed in the FD entry must be the subject of a report description (RD) entry in the Report Section. The presence of more than one report name indicates that the file contains more than one report. These reports need not have the same description and the order in which they are listed is not significant. 5.2.2 REPORT DESCRIPTION ENTRY The Report Description defines the physical structure and identification of a named report. Format 1: RD report-name-1 [WITH CODE mnemonic-name] COpy library-name. This format is used only when the complete RD entry is contained in the COBOL library. Format 2: RD report-name-2 [WITH CODE mnemonic-name-2] r ~\CONTRO CONTROL IS S • R""~ LI j I; I ; PAGE [ { FINAL identifier-l [identifier-2] FINAL identifier-l [identifier-2] T L 1\.r..) II ... )J l].mteger-l 1LINES, LINE l LIMIT IS ARE, [1 LiMITs [HEADING integer-2] ] [FIRST DETAIL integer-3] [LAST DETAIL integer-4] [FOOTING integer-5] The level indicator RD which identifies the Report Description must precede the report name. The report name must appear in a REPORT clause of an FD entry. All semicolons are optional in the Report Description. but the entry must be terminated by a period. 5-6 60229400 Clauses which follow the report name are optional in many cases. Except in format 1, the order of their appearance is immaterial. The fixed data names, LINE-COUNTER, and PAGE-COUNTER are automatically generated by the Report ·Writer based on the presence of specific entries; they are not data clauses. 5.2.3 REPORT GROUP DESCRIPTION ENTRY The report group description entry specifies the characteristics of a particular report group and of the individual items within a report group. All semicolons are optional in the report group description but the entry must be terminated by a period. A report group must have a data-name if it is referred to by a Procedure Division statement. Format 1: 01 [data-name-1] [ ; LINE NUMBER IS integer-1 }] PLUS integer-2 { NEXT PAGE ---- ; NEXT GROUP IS integer-3 }] PLUS integer-4 NEXT PAGE ---- [ { {:PORT HEADING} {~~GE HEADING} CONTROL HEADING} {identifier-1} { CH FINAL ; TYPE IS {:TAIL} CONTRO L FOOTING} {identifier-2} { CF FINAL (PAGE FOOTING} (PF {:'PORT FOOTING} ) [; USAGE IS DISPLAY] . 60229400 5-7 Format 1 indicates a report group; the report group extends from this entry to the next report group (level 01) entry. The TYPE clause is required for every report group to indicate whether the group is a heading, detail, or footing group. If a control heading or control footing group is specified, TYPE also indicates the control item which will cause these groups to be generated. Format 2: nn [data-name-1] [; COLUMN NUMBER IS integer-1] [; GROUP INDICATE] ~ 1~IFIED ! RIGHT ] [ ; LINE NUMBER IS integer-2 }] PLUS integer-3 { NEXT PAGE ~ lWcTURE !IS character-string] . RESET ON [' 1identifier-I! ] FINAL --- [; BLANK WHEN ZERO] ; SOURCE IS identifier-2 ; SUM identifier-3 [, identifier-41 .•• [UPON data-name-2] { ; VALUE IS literal-l 1 [; USAGE IS DISPLAY] . Format 2 indicates an elementary item or group item within a report group. If a report group consists of only one elementary entry, format 2 may include TYPE and NEXT GROUP clauses to specify the report group and elementary item in the same entry. In this case, the level number must be 01. Otherwise, the level numbers in format 2 are in the range 02 to 49. Elementary item descriptions are written (left to right) in the order in which they will appear on the printed page. The position of a report group within a report is determined by the TYPE clause. 5-8 60229400 5.3 DATA DIVISION CLAUSES See section 3 for a discussion of the JUSTIFIED, PICTURE, BLANK WHEN ZERO, and USAGE clauses. The remaining clauses in the report description entry and the report group description entry are described in the following pages; they appear in alphabetic order. 5.3.1 CODE The CODE clause defines a unique character to be affixed to each report line produced in this report. WITH CODE mnemonic-name-l The CODE clause, when used in formal 1 of the RD entry, must follow immediately after the report name. CODE mnemonic-name-l indicates a unique character which is automatically prefixed to and identifies each report line produced. Multiple reports may then be produced simultaneously onto one output device for later individual report selection. The mnemonic name must appear in the Special-Names Paragraph of the Environment Division. 60229400 5-9 5.3.2 COLUMN NUMBER This clause indicates the absolute column number on the printed page of the high -order (leftmost) character of the elementary item. Integer-l must be positive. COLUMN NUMBER IS integer-l The COLUMN NUMBER clause can be given only at the elementary level within a report group. For a particular line, COLUMN NUMBER entries are presented in the order, from left to right, in which the items will appear on the page. The COLUMN NUMBER clause must be specified if this elementary item is to be presented. If the column number is not indicated, the elementary item, though included in the description of the report group, is suppressed when the report group is produced. When COLUMN NUMBER is specified, the PICTURE clause and one of the clauses, SOURCE, SUM, or VALUE must be included in the item description. Example: 01 5-10 DETAIL-LINE TYPE DETAIL LINE PLUS 03 COLUMN 02 PICTURE 03 COLUMN 13 PICTURE 03 COLUMN 20 PICTURE 03 COLUMN 27 PICTURE 03 COLUMN 34 PICTURE 03 COLUMN 42 PICTURE 01. X(10) SOURCE IS PROG-NAME. ZZZZ9 SOURCE IS COBOL-LINES. ZZZZ9 SOURCE IS GMAP-LINES. Z9. 99 SOURCE IS G-RATIO. Z(5)9 SOURCE IS O-LINES. ZZZ9. 99 SOURCE IS O-RATIO. 60229400 5.3.3 CONTROL The CONTROL clause specifies the identifiers which provide control breaks for this report. Whenever the value contained in these identifiers changes, a control break occurs. The control hierarchy is defined by the order of the control breaks. This clause is included in the report description (RD) entry for an entire report. CONTROL IS ~ CONTROLS ARE~ FiliAL } identifier-l [, identifier-2] ... { FiliAL, identifier-l (, identifier-2] ... The CONTROL clause is required when control heading or control footing report groups are specified. The identifiers are listed in order from major to minor; FINAL is the highest control, identifier-l is the major control, identifier-2 is the intermediate control, etc. The last identifier specified is the minor control. The idenfifiers must be defined in the File, Common-Storage or Working-storage Section of the Data Division. The identifiers specified in the CONTROL clause are the only identifiers referred to by the RESET and TYPE clauses in a report group description entry for this report. This clause is optional, but must be included when the TYPE clause specifies control headings or footings or when RESET is specified. Control headings and footings are printed automatically whenever the value of an identifier specified in this clause changes. The final control heading is printed before any other control headings when the first GENERATE is executed, and final control footing is printed when the TERMINATE statement is executed. Example: RD REPORT-A CONTROLS ARE FINAL, DEPT-NO, SECT-NO During the generation of REPORT-A, the control headings and footings associated with SECT-NO are produced when the contents of the data item called SECT-NO changes. The control headings and footings associated with DEPT-NO are produced in addition to those associated with SECT-NO when the contents of DEPT-NO changes. The final control heading, in addition to all lower level control headings, is produced when the first GENERATE statement is executed for this report, the final footing follows all other control footings when the TERMINATE statement is executed. 60229400 5-11 5.3.4 GROUP INDICATE This clause specifies that its associated elementary item is to be presented only once on the first occurrence of the item following a control break or at the beginning of a new page. GROUP INDICATE GROUP INDICATE must be given only at the elementary item level within a TYPE DETAIL report group. An elementary item is group indicated in the first DETAIL report group containing the item after a control break. It is also group indicated in the first DETAIL report group containing the item on a new page, even if a control break did not occur. Example: 01 DETAIL-ITEM TYPE DETAIL LINE PLUS 1. 02 DEPT PICTURE X COLUMN 20 SOURCE DEPT-NO GROUP INDICATE. 02 SECT PICTURE X(3) COLUMN 30 SOURCE SECT-NO GROUP INDICATE. 02 GRP-NO PICTURE X(3) COLUMN 40 SOURCE GROUP-NO. 02 AMOUNT PICTURE 9(5) COLUMN 45 SOURCE AMNT-NO. In the above detail report group, the items called DEPT and SECT will be printed only the first time the detail group appears on a page or when a control break occurs. The other items in the group will be printed each time the detail group is printed. 5-12 60229400 5.3.5 LINE NUMBER This clause indicates the absolute or relative line number of the entry in reference to the page or the previous entry. / integer-l ' LINE NUMBER IS ~ PLUS integer-2 ~ ~ NEXT PAGE ) Integer-1 and integer-2 are positive integers. Integer-1 must be within the range specified by the PAGE LIlVIITS clause in the report description entry. The LINE NUMBER clause must be given for each report line of a report group. For the first line of a report group it is given at the report group level; it may also be given before or at the first elementary item in the line. For report lines other than the first in a report group, it must be given before or at the first elementary item in the line. If the LINE NUMBER clause is specified at the report group level, entries for the first report line within the report group are presented on the specified line number. If LINE NUMBER is specified for an entry at a subordinate level, all succeeding printable items are presented on that print line, until another LINE NUMBER clause is declared or the report group ends. Printable items are those elementary items which have descriptions containing the COLUMN NUMBER clause. A line number for the first subordinate level may not contradict the line number of its group level. Integer-1 indicates an absolute line number. The line counter is set to this value in this and following entries within the report group until a different value for LINE NUMBER is specified. PLUS integer-2 indicates a relative line number which increments the line counter in this and following entries within the report group until a different value for LINE NUMBER is specified. Within a report group, absolute LINE NUMBER entries must be indicated in ascending order, and an absolute LINE NUMBER cannot be preceded by a relative LINE NUMBER. 60229400 5-13 The NEXT PAGE phrase indicates an automatic skip to the next page before presenting the first line of the current report group. Appropriate page footings and page headings will be produced as specified. NEXT PAGE may not be specified for page heading or page footing report groups. Examples: 1. 01 GROUP-A TYPE DETAIL LINE IS NEXT PAGE. 03 PART-1 LINE 01 ... 03 PART-2 LINE PLUS 01 ... Each detail report group starts on a new page; the first entry in the group is on the first line, the second on the next line. 2. 01 01 01 TYPE RH LINE IS 1 ... NEXT GROUP IS PLUS 2. TYPE DE LINE PLUS 1 ... TYPE CF DATA-LIST LINE PLUS 2 ... The report heading group is printed on line 1; 3 lines are skipped before the first detail group is printed, each subsequent detail line is printed on the next line; 2 lines are skipped before the control footing group is printed. 5-14 60229400 5.3.6 NEXT GROUP The NEXT GROUP clause specifies the spacing between the last line of the report group and the next report group to be generated. NEXT GROUP IS integer-1 } PLUS integer-2 { NEXT PAGE ---- The NEXT GROUP clause must appear only at the 01 level which defines the report group. Integer-1 and integer-2 are positive, and integer-1 cannot exceed the maximum number of lines specified per report page. Integer-1 indicates an absolute line number which sets the line counter to this value after producing the last line of the current report group. PLUS integer-2 specifies a relative line number which increments the line counter by the integer-2 value. Integer-2 represents the number of lines skipped following the last line of the current report group. Further spacing is specified by the LINE NUIVIBER clause of the next report group produced. The NEXT PAGE phrase indicates an automatic skip to the next page following the last line of the current report group. Page heading and page footing report groups are produced as specified. When specified for a control footing or heading report group, NEXT GROUP results in automatic line spacing only when a control break occurs on the level for which the control footing or heading is specified. NEXT PAGE is illegal in page heading and page footing report groups. Example: 01 DETAIL-LINE TYPE DETAIL LINE PLUS 01. .. NEXT GROUP PLUS 3. DET AIL- LINE is printed on the line following the preceding group; and DET AIL-LINE will be followed by three blank lines before the next group is printed. 60229400 5-15 5.3.7 PAGE LIMIT This clause indicates the specific line control to be maintained within the logical presentation of a page. PAGE LIMIT is required when page format is to be controlled by the Report Writer; it may be omitted when no association is necessary between report groups and the physical format of the report page. If PAGE LIMIT is omitted, absolute LINE NUMBER and absolute NEXT GROUP clauses must also be omitted. Only one PAGE LI:MIT clause can be specified for each RD entry. PAGE LIMIT IS lJ mteger-l . 1LINES LINE l \ [1 LiMITs ARE~ [, FIRST DETAIL integer-3] . [, HEADING mteger-2] L LAST DETAIL integer-4] [, FOOTING integer-5] Integer-l through integer-5 must be positive. Integer-2 through integer-5 each must be less than or equal to integer-I. Integer-1 is required to specify the depth of the report page; it need not be equal to the physical perforated continuous form often associated in a report with the page length. t The size of the fixed data name, LINE-COUNTER, is based on the integer-1 LINES specification. It is the maximum numeric size required to prevent overflow. If absolute line spacing is indicated for all report groups, integer-1 must be specified, and none of the integer-2 through integer-5 controls need be specified. If relative spacing is indicated for individual type detail report group entries, the following must be specified: Integer-3 if a page heading is present Integer-4 if a control heading is present Integer-5 if a page footing is present HEADING integer-2: First line number of first heading report group. report group will start before integer-2. No FIRST DETAIL integer-3: First line number of first normal (detail or control) report group. No detail or control report group will start before integer-3. t The only carriage control tape requirement is that the TOP-OF-FORM punch must be equal to LINE 0 of the report. 5-16 60229400 LAST DETAIL integer-4: Last line number of last normal (detail or control) report group. No detail or control heading report group will extend beyond integer-4. FOOTING integer-5: Last line number of last control footing report group. No control footing report group will start before integer-3 nor extend beyond integer-5. Page footing report groups follow integer-5. \Vhen relative line numbers are specified for report groups, PAGE LIMITS integer-l is specified and some or all of HEADING, FIRST DETAIL, LAST DETAIL, and FOOTING, clauses are omitted, the following implicit control is assumed for the omitted specifications: If HEADING integer-2 is omitted, integer-2 is considered equivalent to the value 1, that is, LINE NUMBER one. If FIRST DETAIL integer-3 is omitted, integer-3 is considered equivalent to the value of integer-2. If LAST DETAIL integer-4 is omitted, integer-4 is considered equivalent to the value of integer-5. If FOOTING integer-5 is omitted, integer-5 is considered to be equivalent to the value of integer-4. If both LAST DETAIL integer-4 and FOOTING integer-5 are omitted, both are considered to be equivalent to the value of integer-I. The following chart represents the limits of page format when all options of the PAGE LIMIT clause are specified: Report Heading/ Footing Page Heading Detail & Control Heading Control Footing . Page Footing integer-2 integer-3 integer-4 integer-5 integer-l 60229400 i I I 5-17 Absolute LINE NUMBER or absolute NEXT GROUP spacing must be consistent with controls specified in the PAGE LIMIT clause. Examples: 1. REPORT SECTION. RD RA TIO-REPORT PAGE LIMIT IS 55 LINES. In this example, an absolute page limit is indicated. 2. REPORT SECTION. RD REPORT-A CONTROLS ARE FINAL, DEPT-NO, SECT-NO PAGE LIMIT IS 60 LINES HEADING 1 FIRST DETAIL 10 LAST DETAIL 55 FOOTING 60. In this example, automatic line control of heading, footing, and detail groups within the report page are indicated. 5-18 60229400 5.3.8 RESET The RESET clause is used in an elementary item description in a control footing report group to override the automatic resetting of the sum counter following the associated control break. RESET ON ~ identifier-1 FINAL i i RESET can be used only at the elementary level in conjunction with the SUM clause (see SUM clause description). Identifier-1 must be one of the identifiers specified in the CONTROL clause of the RD entry for the report. It must be a higher level identifier than the control identifier associated with the control footing or detail report group containing the RESET clause. When RESET is not specified, the sum counters associated with the report group by the SUM clause are automatically reset to zero after the control footing or the detail report group is presented. RESET prevents the automatic resetting of the sum counters until the control footing or detail report group associated with identifier-1 has been presented. This clause, therefore, permits progressive totaling of data while presenting subtotals at lower levels of control. RESET FINAL indicates that the counter is not to be reset until the final control footing or detail report group has been generated. With this option cumulative totals are presented throughout the report. Example: RD REPORT-A CONTROLS ARE FINAL, DEPT, SECT, GROUP, MAN. 01 GROUP-TOTALS TYPE IS CONTROL FOOTING GROUP LINE NUMBER IS PLUS 2. 03 COLUMN 30 PICTURE 9 (10) SUM GRP-HRS RESET ON SECT. GRP-HRS are summed for this control footing group and the subtotal is incremented and presented with each group total until there is a control break at the SECT level of the control hierarchy. The subtotal is added to the sum at the SECT level and then reset to zero before the SECT control footing report group is presented. 60229400 5-19 5.3.9 SOURCE - SUM - VALUE The SOURCE, SUM, or VALUE clauses define the purpose of an elementary item within the report group; only one clause is included in the description of anyone item, and it must only appear at the elementary level. ; SOURCE IS identifier-1 } ; SUM identifier-2 [, identifier-3] ... [UPON data-name-1] { ; VALUE IS literal-1 The identifiers must identify an item in the File, Working-storage, or Common -storage Sections; a sum counter in the Report Section; or one of the special registers: SYSTEM-DATE, or SYSTEM-TIME. The literal in the VALUE clause may be numeric, non-numeric, or a figurative constant. Data-name-1 is the name of a detail report group; it may be qualified by report name if the name is used in more than one report description. SOURCE and SUM are described below; VALUE is described in chapter 3. The SOURCE clause indicates a data item used as a source for the report item. PICTURE must also be specified in the entry for the report item. The value of identifier-1 at object time is effectively moved to the report item and presented according to the PICTURE speCified in the report item description. The fixed data items LINE-COUNTER or PAGE-COUNTER may be specified as identifier-I; in this case the current value of the line counter or the page counter is the source. Examples: 1. 01 DETAIL-ITEM TYPE DETAIL LINE PLUS 1. 02 DEPT PIC X COLUMN 70 SOURCE IS DEPT-NO. In this example, DEPT-NO is the name of a data item in the File, \Vorkingstorage, or Common-storage Section. 2. 5-20 01 TYPE IS PAGE HEADING LINE PLUS 02. 02 COLUMN 110 PIC X(4) VALUE IS "PAGE". 02 COLUMN 115 PIC 999 SOURCE IS PAGE-COUNTER. 60229400 The SUM clause indicates values to be accumulated when a control break occurs at object time. It may appear only in a control footing or a detail report group at the elementary level. Any item containing a SUM clause generates a numeric counter used for summing the operands specified by the identifiers following the word SUM. This summation counter can be referenced by specifying the data name of the item containing the SUM clause. If a summation counter is never referenced, a data name need not be included in the entry containing SUM. A PICTURE clause must always be included in an entry containing a SUM clause. Editing characters or editing clauses may be included but editing occurs only upon presentation of the summation counter in the report. At all other times the summation counter is treated as anumeric data item. The PICTURE must specify a size large enough to accommodate the summed quantity without truncation of integral digits. Each item being summed (identifier-3, identifier-4, etc.) must appear as the object of a SOURCE clause in a detail report group, name an entry containing a SUM clause in a control footing report group at an equal or lower position in the control hierarchy, or name an entry containing a SUM clause in a detail report group of the lowest level of the control hierarchy. The items being summed must be explicitly included in a detail report group, but they may be suppressed at presentation time. The summation of data items defined as summation counters in control footing or detail report groups is accomplished explicitly or implicitly by the Report Writer. A summation counter is algebraically incremented just before the detail report group which contains the data items being summed is presented. The items being summed (identifier-3, identifier-4, etc.) are added to the summation counter at each execution of a GENERATE statement. This statement generates a detail report group that contains the SUM operands at the elementary level. Summing is done according to the rules for ADD in the Procedure Division (section 4.7.2) . 60229400 5-21 If the sum of a data item is to be presented at a higher level of the control hierarchy, the lower level SUM specification may be omitted. If higher level report groups are indicated in the control heirarchy, counter updating procedures take place prior to the reset operation. Unless RESET is specified, each summation counter at the level just produced is reset to zero. The UPON data-name-1 option provides selective summation when a particular data item is named in the SOURCE clause of two or more detail report groups. Identifier-3, identifier-4, etc., must be named in a SOURCE clause in the detail report group identified by data-name-2. Example: 01 TYPE IS CONTROL FOOTING SECT-NO LINE PLUS 2. 02 COLUMN 20 PICTURE X(lO) VALUE IS "SEC TOTAL". 02 COLUMN 30 PICTURE ZZZ, ZZZ. 99 SUM AMNT-NO. If AMNT-NO is the object of a SOURCE clause in a detail report group, each time the detail group is presented the contents of AMNT-NO will be added to the summation counter associated with AMNT-NO. The contents of this counter will be presented when the control footing report group is presented. 5-22 60229400 5.3.10 TYPE This clause specifies the particular type of report group that is described by this entry and indicates the time at which the report group is to be generated. It must appear in an 01 level entry. I {REPORT HEADING t RH J \ {:~GE HEADING} CONTROL HEADING} {identifier-n} { CH FINAL TYPE IS {:TAIL} { CONTROL FOOTING ~ {identifier-n ~ \. CF J \ FINAL J {;~GE FOOTING} \ t:PORT FOOTING} / The level number 01 identifies the particular report group to be generated as output. The TYPE clause indicates the time for generating this report group. A report group described as other than DETAIL is automatically generated by the Report Writer. If the report group is described as DETAIL, the Procedure Division statement, GENERATE identifier, directs the Report Writer to produce the named report group. The RE PORT HEADING or RH entry indicates a report group that is produced only once at the beginning of a report during execution of the first GENERATE statement. Only one report group of this type can appear in a report. Nothing may precede a RE PORT HEADING entry in a report. SOURCE clauses used in TYPE RH report groups refer to the values of data items at the time the first GENERATE statement is executed. The PAGE HEADING or PH entry indicates a report group produced at the beginning of each page according to page condition rules. Only one report group of this type can appear in a report. The CONTROL HEADING or CH entry indicates a report group produced at the beginning of a control group for a designated identifier. CH FINAL indicates a report group produced once before the first control group at the initiation of a report during execution of the first GENERATE statement. Only one report group of this type can appear for each identifier and for the FINAL specified in a report. To produce CONTROL HEADING report groups, a control break must occur (see section 5. 1. 1). SOURCE clauses used in TYPE CONTROL HEADING FINAL report groups refer to the values of the items at the time the first GENERATE statement is executed. 60229400 5-23 The DETAIL or DE entry indicates a report group produced for each GENERATE statement in the Procedure Division. Each DETAIL report group must have a unique data name at the 01 level in a report. The CONTROL FOOTING or CF entry indicates a report group produced at the end of a control group for a designated identifier or produced once at the termination of a report ending a FINAL control group. Only one report group of this type can appear for each identifier and for the FINAL specified in a report. To produce any CONTROL FOOTING report groups, a control break must occur. SOURCE clauses in TYPE CONTROL FOOTING FINAL report groups refer to the values of the items at the time the TERMINATE statement is executed. The PAGE FOOTING or PF entry indicates a report group produced at the bottom of each page. Only one report group of this type can appear in a report. The REPORT FOOTING or RF entry indicates a report group produced only once at the termination of a report. Only one report group of this type can be used in a report. Nothing may follow a RE PORT FOOTING entry in a report. SOURCE clauses in REPORT FOOTING report groups refer to the value of items at the time the TERMINATE statement is executed. CONTROL HEADING report groups appear with the current values of any indicated SOURCE data items before the DETAIL report groups of the control group are produced. CONTROL FOOTING report groups appear with the previous values of any indicated SOURCE data items just after the DETAIL report groups of that control group have been produced. These report groups appear when a control break is noted. LINE NUMBER determines the absolute or relative position of the CONTROL report groups exclusive of the other HEADING and FOOTING report groups. Identifier-n, as well as FINAL, must be one of the identifiers described in the CONTROL clause of the RD entry. A FINAL control break may be designated only once for CONTROL HEADING or CONTROL FOOTING entries within a report. 5-24 60229400 HEADING and FOOTING report groups occur in the following sequence if all exist for a given report: REPORT HEADING (one occurence only) PAGE HEADING CO~~ROL HEADING DETAIL CONTROL FOOTING PAG E FOOTING RE PORT FOOTING (one occurrence only) CONTROL HEADING report groups are presented in the followi!l-.g order: Final Control Heading Major Control Heading Minor Control Heading CONTROL FOOTING report groups are presented in the following order: Minor Control Footing Major Control Footing Final Control Footing 60229400 5-25 5.4 PROCEDURE DIVISION STATEMENTS 5.4.1 GENERATE The GENERATE statement links the Procedure Division to the Report Writer as described in the Report Section of the Data Division. GENERATE identifier Identifier represents a detail report group or an RD entry. If identifier is the name of a detail report group, the GENERATE statement produces all the automatic operations within a Report Writer and produces an output detail report group on the output device. This procedure is called detail reporting. If identifier is the name of an RD entry, the GENERATE statement produces all the automatic operations of the Report Writer and updates the footing report groups within a particular report description without actually producing a detail report group associated with the report. In this case, all summation counters associated with the report description are algebraically incremented. This procedure is called summary reporting. If more than one detail report group is specified in a report defined by the RD entry, all summation counters are algebraically incremented each time a GENERATE statement is executed. A GENERATE statement, implicitly in both detail and summary reporting, produces the following automatic operations: • Recognizes speCified control breaks to produce control footing and control heading report groups • Accumulates into the summation counters all specified identifiers • Executes speCified routines defined by a USE statement before generating associated report groups (See USE, section 5.4.4) • Steps and tests the line counter and page counter to produce page footing and page heading report groups • Creates and prints the print line image • Resets the summation counters unless suppressed by the RESET clause 60229400 During execution of the first GENERATE statement, report groups are produced in the following order: REPORT HEADING report group PAGE HEADING report group all CONTROL HEADING report groups in the order FINAL, major to minor DETAIL report group, if specified in the GENERATE statement If a control break is recognized when any GENERATE statement after the first is executed, all specified control footing report groups are produced from the minor report group up to and including the report group specified for the identifier which caused the control break. Then, all specified control heading report groups from the report group specified for the identifier that caused the control break down to the minor report group, are produced in that order. The detail report group specified in the generate statement is then produced. Data is moved to the data item in the report group description entry of the Report Section, and it is edited under control of the Report Writer aCfJording to the same rules for movement and editing as described for MOVE. 60229400 5-27 5.4.2 INITIATE INITIATE Report processing begins with the INITIATE statement. INITIATE report-name-l [, report-name-2] ... Each report name must be defined by a report description entry in the Report Section of the Data Division. The INITIATE statement resets all data name entries that contain SUM clauses associated with the report; and it sets up the Report Writer controls for all report groups associated with this report. If PAGE-COUNTER is specified, it is set to one before or during execution of the INITIATE statement. If the starting value is to be other than one, the user may reset this counter following the INITIATE statement. If LINE-COUNTER is specified, it is set to zero before or during the execution of INITIATE. The INITIATE statement performs Report Writer functions for individually described report programs analogous to the input-output functions that the OPEN statement performs for individually described files. A second INITIATE statement for a particular report name may not be executed unless an intervening TERMINATE statement has been executed for that report name. 5-28 60229400 5.4.3 TERMINATE Report processing is completed by the TERMINATE statement. TERMINATE report-name-l [, report-name-2] ... Each report name must be defined by an RD entry in the Data Division. The TERMINATE statement produces all control footings associated with this report as if a control break had just occurred at the highest level; and it completes the Report Writer functions for the named reports. TERMINATE also produces the last page and report footing report groups associated with this report. Page heading or page footing report groups are prepared in order for the report description. A second TERIVIINATE statement for a particular report may not be executed unless an intervening I:NiTIATE statement has been executed for the report name. The TERMINATE statement performs Report Writer functions for individually described report programs analogous to the input-output functions that the CLOSE statement performs for individually described files. TERMINATE does not close the file with which the report is associated; a CLOSE statement for the file must be given by the user. SOURCE clauses used in final control footing or report footing report groups refer to the values of the items during execution of the TERMINATE statement. 60229400 5-29 5.4.4 USE BEFORE REPORTING The USE statement specifies Procedure Division statements to be executed just before a report group is produced. USE BEFORE REPORTING identifier-l [, identifier-2] ... A USE statement is specified immediately after a section header in the Declarative portion of the Procedure Division; it must be followed by a space. The remainder of the section must consist of one or more procedural paragraphs that define the procedures to be used. Each identifier represents a report group named in the Report Section of the Data Division. An identifier must not appear in more than one USE statement. No Report Writer statement (GENERATE, INITIATE, or TERMINATE) may be written in a procedural paragraph following the USE sentence in the declara- tive portion. The USE statement itself is never executed, rather it defines the conditions calling for the execution of the USE procedures. The deSignated procedures are executed by the Report Writer just before the named report is produced, regardless of page or control break associations with report groups. If USE procedures are specified for a CONTROL FOOTING report group, they affect the previous value of items specified in the CONTROL clause or the current value of items specified in a SOURCE clause. A USE procedure must not contain any reference to non-declarative procedures. Conversely, the non-declarative portion must not contain reference to procedure-names that appear in the declarative portion, except that PERFORM statements may refer to a USE declarative or to the procedures associated with the USE declarative. 5-30 6&229400 NAME=VIANOS FtJ.lTIOf\J:uC DATE-IO/14/6B TIME-ON-13/16/57 TIME-OFF=lJ/17/34 TIME USED COMP·88/00/19,J~~ CHAN= IOO/oH'o 4 2 FACILITIES NuT U~tO cnRE=018 SCR .006 I.t NE=37 0 2 CA RO-499 JOB.NI.VK3LW1,VIANUS.6v'5000,500 SCHED'CORE.SO.SCH=lS,CLASS=1'A~ORT.1SOO UCBlCL,M,O,X) USASI CO~OL 00001 00002 00003 00004 00005 00006 00007 OOOOB 00009 00010 00011 00012 00013 1.U I MASTER 2.1 REPORT-WRITER-ExAMPLE IDENTIFICATION OIVlSION. PROGRAM-IO. REPORT.WRITER-EXA~PLE. AUTHOR. ANONY~OUS Q CITIZEN. WATE-WRITTEN. 02/09/68. UATE-COMPILED. 10/14/68 tNV!RONMENT DIVISION, CONFIGURATION ~ECTION. SOURCE-COMPUTER. 3300. OBJECT-COMPUTER, 3300. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-A ASSIGN TO SVSTEMwINPUT. SELECT FILE-B ASSIGN TO SYSTEM-OUTPUT. 10/14/68 USASI COdOl l.t I MAS1~~ 00014 00015 00016 000 1 7 00018 UA1A OO()20 00021 00022 [Juno 1,: 0002~ 0002h 00027 00028 01 uc-nO.l.1 J (Ph) .I. ,j u': 0 0.1. <+ ~o HEADIN(~ LAST 01 U1 00039 00040 01 00045 U1 0004~ 01 00051 00052 000 5 3 00054 00055 00056 A~E FI N4L. DEPT-NO. SECT-NO LIMIT 15 bO lINES 1 FIRST !)ETAIL 10 00031+ 00049 00050 HEPORT-A PA~E 00032 00033 000 4 0 00041 02 OEPT-NO PICfURE X(5). cONTkOLS 00031 000 4 1 00042 0001+3 00044 CA~O-IMAGE. CA~O-IMAGE- 02 SECT-NO PlcrURE ~(~). 02 GROUP-NO PIC xes). 02 AMNT-NO PIC 9(3}Vq(2). fo!) FILE-B LAd!L REtOHOS ~HE OMITTEo REPORT IS ~EPowT-A. HEtJu,·H SEC T I Of-J. 00029 000 3 0 00035 00036 00037 00038 ~ECO~OS A~~ O~ITTE0 OATA RFCORU IS DGOO.l.v 00024 DIVISION. tILE SECTIONrU FILE-A LA8EL OOOllj 00023 10/14/68 2.1 01 DFT~IL SO FOOTINc; 5STYPE IS HEPJHT HEAOl~G LINE n2. 02 COLu~N 02 ~IC xx VALUE IS ,RH_. 02 COLUMN 5~ tJIC ~(15) VALU~ 'EXPENSE ACCOUNT-. TytJE IS PAGE HEADING LINE PLuS 2. 02 COLUMN i PIC X~ JALUE _Pri_ 02 COLUMN 110 PIC X(4) VALUE -PAGE-. f)? COLUMN 11 5 PIC 9qq SOURCE IS PAGE-COUNTER. 02 LINE PLUS 1 COLUMN 90 PIC X(8) VALUE ~GROUP NO_. 02 COLUMN 100 PIC X(7) VALUE .EXPENSE~. TYPE IS CO!H~OL ~EAUING FINAL LINE PLUS 202 COLUMN 4 PIC XXX VALUE *CHF-. 02 COLUMN bO PIC X(}7) VALUE 'ITEMIZED BY GROUP,. TyPE IS CO~TROl ~EADING DEPT.NO LINE PLUS 2. 02 COLUMN 5 pIC X~X VALUE _~HA_. 02 COLUMN 70 tJIC X(7) VALUE ,DEPT.NO_. TYP~ IS CO~T~OL HEADING SECT_NO LINE PLUS 1 NEXT GROUP PLUS 2. 02 COLUMN 6 PIC XXX VALUE -CHS-. 02 COLUMN 80 PIC X(1) VALUE _SECTION_. DETAIL-ITEM TyPE DETAIL LINE PLUS 1. 02 COLUMN 7 PIC XX VhLUE -DE-. 02 nEPT PIC X(S) COLU~N 70 SOURCE DEPT-NO GROUP INDICATE. USASI CO~OL 0005'7 000S8 0005i.i 00060 00001 00062 00063 00064 00065 00060 00067 OOObH 00069 00070 00071 00012 0007.3 00074 0007S 00076 00071 00078 00079 00080 00081 00082 1.0 I MAST~4 2.1 10/14/68 SECT PIC xes) COLU~N aD SOURCE SECTwNO GROUP INDICATE. PIC xes) COLUMN gO SOURCE GROUP-NO. 02 AMOUNT PIC ZZZ.ZZ COLUMN 100 SOURCE AMNT-NO. 01 TYPE IS CO~TROL FOOTING SEcT-NO LINE PLUS 2. 02 COLUMN b PIC XXX VALUE -CFS-. 02 COLUMN b~ PIC ACIO) VALUE -SEC TOTAL_. 02 COLUMN 100 PIC llZZlZ~Zl SUM AMNT-NO. 01 TYPE IS CONTHOL FOOTING DEPT-NO LINE PLUS 2. 02 COLUMN 5 PIC XXX VALUE ~CFA-. 02 COLUMN 10 PIC A(ll) VALUE -OEPT. TOTAL-. 02 COLUMN 100 PIC ZlZlZZ~ZZ SUM AMNT.NO. 01 TYPE IS CO~TkOL FOOTING FINAL LINE PLUS 2. 02 cOLUMN 1+ PIC XXX VALUE -cFF-. 02 COLUMN bO PIC X(ll) VALUE -G~AND T8TAL-. 02 COLUMN 100 PIC llZZZZ~ZZ SUM AMNT.N • 01 TYPE IS PAG~ FOOTING LINE PLUS 2. 02 COLUMN 3 PIC xx VALUE _P~ •• 02 COLUMN 110 PIC X(4) VALUE ~PAGE-. 02 COLUMN 115 PIC 999 SOURCE IS PAGEwCOUNT[R. 01 TYPE IS REPORT FOOTING LINE PLUS 2. 02 COLUMN 2 PIC XX VALUE _RF_. 02 COLUMN 30 pIC X(41) VA~uE IS _THIS COMPLETES THE MONTHLY EXPENSE REPORT •• PROCEDURE DIVISION. 02 02 G~P-N START. OPEN INPUT FILE-A. OPEN OUTPUT FILE-8. INITIATE REPORT-A. 0008] 0001:34 00085 00086 OOOtH READ FILE-A AT ENO GO TO STOP-IT. GENERATE DETAIL-ITEM o 00088 GO 1'0 STEP-2. OOOd9 OUOC;;O STOP"'IT. 00U91 00092 CLOSE FILE-A. FILE-Bo STOP RUN. END PROGRAM, OO(i93 TERMINATE REPOAT-~, C11 I "" EXPENSE ACCOUNT RH fo!:>- PAGE 001 PH CHA CM8 DE A0010 SECTION AAool A0010 SECTION AA002 DE Of Df CFS CHB OE DE DE Ao010 SECTION AA050 AOOlO SECTION AA060 CFA DEPT. TOTAL CHA CHR DEPT-NO DE CFR fo!:>- 0 0 PF AAA30 SEC TOTAL CPR DE AAAOl SEC TOTAL CFR CHS DE AAAOl AAA02 AAA50 AAA60 SEC TOTAL CPR CHR t..:) t..:) 100.50 120.50 135.00 125.90 158.20 SEC TOTAL DE DE co AAAOl AAA02 AAA03 AAA04 AAA05 DE.PT-NO DE 0 EXPENSE ITE"11ZED RY GROUP CHF 0') GROUP NO A0020 SECTION AA003 640.10 2.50 28.50 356-00 505.00 892-00 600.00 600.00 785.00 785.00 2917.10 AAA06 AAA07 SEC TOTAL 500.50 655.00 1155.50 PAGE 001 en 0 ~ ~ (0 PAGE 002 PH ~ CHA DE 0 0 Ao020 SECTION AA004 CFA DEPT. TOTAL CHA OEPT""'NO CHe A0030 SECTION AAOOS CFA DEPT. TOTAL CHA CHe DE DEPT-NO AAOO6 A0040 5EC:T I UN AAOO7 425.00 1580.50 AAA17 525.25 525-25 525.25 AAA20 SEC TOTAL CHB AAA30 SEC TOTAL. CFA CFA DEPT. TOTAL CrtA CHB OE DEPT-NO AOOSO SECTION AA080 DEPT. TOTAL 682.00 682.,00 125.00 725.00 14 07,00 AAA40 SEC TOTAL. CFA CFA 425.00 SEC:TION AO()40 CF8 p, AAA16 SEC TOTAL CFR DE EXPENSe: SEC TOTAL. CFB DE GROUP NO 605.80 605.80 605.S0 PAGE 002 en I C-' '" PM eMA CH8 DE A0060 AA100 A0060 SECTION AAlSO CHA CH8 DEPT-NO A0070 AA250 A0070 SECTION AA2bO CFA DEPT. TOTAL CHA DEpT-NO A0080 SECTION AA300 ~ ~ c.o t+::- ~ 0 AAABO 688.85 DEPT. TOTAL 101.05 101.05 189.50 189.50 290.55 AAA90 ~EC. eFA 0 AAA70 SEC TOTAL. CH~ 0') 688.85 1413.85 SEC TOTAL CFA PF' 725.00 SECTION CFA CHS CFA AAA60 SEC TOTAL. DEPT. TOTAL DE 725.00 SEC TOTAL. CFA DE AAA50 PAGE 003 SECTION CFB DE EXPENSE DEPT-NO CFB CHe DE GROUP NO TOTAL 198.50 198.50 198.50 PAGE 003 PAGE 004 PH GROUP NO CHA OEPTwNQ CHe OE SECTION AOO90 AA,3S0 CFR OEPT. TOTAL CMA CHS DEPT-NO CFF .SO .50 .50 SECTION A0100 AA,380 CFB CFA AAA9S SEC TOTAL. CFA DE EXPENSE AAA99 SEC TOTAL. DEPT. TOTAL ORAND l()TAL. 995.00 995.00 9Q5.00 9934.05 PAGE 004 LIBRARY 6 The COBOL library contains text that is available to a source program at compile time. Compilation of library text is effectively the same as if the text were actually written as part of the source program. The COBOL library may contain text for the Environment Division, the Data Division, and the Procedure Division. Library text is made available through the COpy statement. 6.1 COpy STATEMENT COpy library-name } REPLACING {WOrd-1 identifier-1 [ [. {WOrd-3 } identifier-3 BY {WOrd-2 l )dentifier-2 j BY {word-4 }] t identifier-4 1 ... J A word is any COBOL word in a library routine that is not on the list of COBOL reserved words (appendix C). The COpy statement may appear: • In any Environment Division paragraphs • In any FD, SD, RD or 01 level entry in the Data Division • In a Procedure Division section or paragraph No other statement or clause may appear in the same entry as the COpy statement. The library text is copied from the library at compilation time. The result is the same as if the text were actually part of the source program. The COpy process is terminated by the end of the library text. 60229400 6-1 If the RE PLACING option is used, each word or identifier specified in the format is replaced by a corresponding word or identifier when COpy is executed. Replacement of one identifier by another includes all associated qualifiers, subscripts, and indexes. Use of the REPLACING option does not alter the text as it appears in the library. The library must not contain any COpy statements. The COpy statement may be written as follows: The COpy statement may be written as follows: ENVIRONMENT DIVISION. SOURCE_COMPUTER'l OBJECT-COMPUTER. SPECIAL-NAMES. FILE-CONTROL. I-O-CONTROL. COpy statement. 1 DA T A DIVISION FILE SECTION FD file-name } SD sort-file-name { 01 data-name COPY statement. WORKING-STORAGE SECTION 01 data-name COpy statement. REPORT SECTION. \ RD report-name 01 data-name I I ~ COPY staiemeni. PROCEDURE DIVISION procedure-name. COPY statement 6-2 60229400 6.2 SOURCE LIBRARY PREPARATION The information to be copied may appear on the system library file (*LIB) or on an auxiliary library file. These are mass storage files referenced through the system library directory (*DIR) or an auxiliary library directory. COBOL source library entries are placed on a library file using the MASTER library generation routine GLIB. GLIB is described in the MASTER Installation Manual. BCD COBOL source statements are written on the library in card image format and an entry is placed in the non -resident library subprogram directory using the $BCD card as follows: $BCD, library-name COBOL source statements Each Environment or Procedure Division paragraph, file description, record description; or report description entry must be placed on the library as a separate $BeD entry. Library names may not exceed eight characters. Examples: $BCD,SCOMP SOURCE-COMPUTER, 3300. $BCD, PAY -FILE FD PAY-FILE LABEL RECORD OMITTED DATA RECORD IS PAY-CARD. $BCD, PAY -CARD 01 PAY-CARD 02 NAME PIC X(30). 02 PAY-RATE PIC 9(5). $BCD, SECT-1 MASTER-UPDATE SECTION. PARAGRAPH-1. OPEN INPUT •••• $BCD,PAR-2 PARAGRAPH-2. CLOSE •.•. The $BCD card always begins in card column 1; the COBOL source statements follow the COBOL coding sheet format (chapter 8) . 60229400 6-3 SOURCE PROGRAM PREPARATION, COMPILATION, EXECUTION 7 7.1 REFERENCE FORMAT The reference format is the standard method for describing COBOL source programs. It is described in terms of character positions in 80-character source records read from the standard input file (INP) or from the dsi supplied by the user in the UCBL control card parameter, I = dsi. The rules for spacing given in the discussion of the reference format take precedence over all other rules for spacing. Each division must be written according to the reference format rules; and the divisions must be ordered as follows: Identification Division Environment Division Data Division Procedure Division Each source record is equivalent to one line of the COBOL coding sheet. This source line is divided into five areas as follows: Character Position 60229400 Area 1-6 Sequence Number 7 Continuation 8-11 Area A 12-72 Area B 73-8Q Identificati on 7-1 7.1.1 COBOL CODING SHEET Specifications for the source program are written on COBOL coding sheets according to the formats contained in this manual. All division names, section names, and paragraph names start in area A of the coding sheet. Division names are followed by a period and the rest of the line must be blank. Section names are followed by the word SECTION and a period. The remainder of the line is blank, except if the section is a DECLARATIVE, it may be followed by a USE or COpy sentence. Paragraph names are followed by a period and at least one space. The text may follow or may start in area B of the next line. The level indicators: FD, SD, RD, the level numbers: 01 and 77 begin in area A. They are followed by one or more spaces and the associated entry. All other level numbers begin in area B followed by a space and associated entry. Sequence numbers, if specified, are in the sequence number area. Program identification is placed in the identification code area. Lines may be broken at any convenient point, spaces may remain at the end of the line. When a word or a numeric literal is split between two lines, a hyphen must be specified in column 7 of the second line, (continuation area). If a non-numeric literal is split between t\vo lines, a quotation mark must be specified in area B of the second line in addition to a continuation hyphen in column 7 of the second line. In this case only, the blanks at the end of the first line are conSidered part of the literal. 7-2 60229400 COBOL Coding Sheet Rules Element Type Division Reference Area Remarks rn"ision -name ALL Area A Name must be followed by a period; remainder of the line must be blank. Section-name ENVIRONMENT DATA PROCEDURE Area A Name must be followed by a space, the word SECTION, priority if specified, and a period; remainder of the line must be blank, or contain a USE sentence. Area A Name must be followed by a period and at least one space. Text may follow on same line or at column 12 on next line. Name I I Paragraphname I I I IDENTIFICATION ENVIRONMENT PROCEDURE I File Description Sort Description Report Description DATA Area A DescriptIons begin with level indicator, FD, SD, or RD, two or more spaces separate it from data name. Clauses are separated by one or more spaces. Record Description Report Element Description DATA Area A or Area B Same as file description entry. Level number 01-49, 66, 77 and 88. Only 01, 77 entries may begin in Area A. First sentence of a paragraph or section IDENTIFICATION ENVIRONMENT PROCEDURE Following period and 1 space after paragraph or section name, or on next line in Area B. All other sentences IDENTIFICATION ENVIRONMENT PROCEDURE Following period and 1 space after the previous sentence. Sentences may be written in columns 12 through 72 only. Data description entry DATA Area B Sentence IDENTIFICATION ENVIRONMENT PROCEDURE Area B Line breaks may occur at any convenient point, with spaces at end of line if desired. If a word or literal is split between two lines, a hyphen must be specified in column 7 of the second line. Sequence Number ALL Sequence Area Sequence number does not affect the object program; processor does check for correct sequencing. Program Identification ALL Identification Area Identification information does not affect object program. Data Description Entry Sentence Continued Elements Non-Program Entry 60229400 I 7-3 7.2 COBOL CONTROL CARDS 7.2.1 UCBl CARD This card, which signals MASTER to call the COBOL compiler, is placed directly before the Identification Division of the source deck. It may contain up to nine parameters which specify input/output options provided by the compiler. Parameters are free field, separated by commas; they have the general form: option = dsi The option must begin with a character I, P, X, L, M, C, 0, or T. Additional characters preceding the equal sign are ignored; for example, L and LIST are the same parameter. If only the option is stated, COBOL will make a standard assignment for the option. The user is responsible for opening the file and giving it the proper dsi before calling COBOL. INPUT PUNCH = = XECUTE 7-4 dsi Source input file; if the parameter or file equation is omitted, the standard input file, INP, is assumed. dsi Punch; dsi represents a data set identifier assigned to an output file or device. If the parameter is absent, no punch output is produced. If only P appears, binary output is produced on the standard punch file, PUN. = dsi Binary output for load-and-go; dsi represents a data set identifier assigned to a read/write file. If the parameter is absent, no load-and-go file will be written. If only X appears, binary output will be produced on the standard load-and-go file, LGO. LIST = dsi Source code list; dsi represents a data set identifier assigned to an output file or device. If the parameter is absent, no listing will be produced. If only L appears, the listing will be produced on the standard output file, OUT. MAP Supplies a memory map in the Data Division only if L is also specified; the map is produced on the same dsi as the list. 60229400 Provides a listing of the object code generated for the program. A mnemonic operation code and data reference symbols as well as an octal representation are produced for each instruction. This option may be specified only when LIST is specified. The object is produced on the same dsi as the list. OBJECT COpy = TRACE fdsi/ddsi Identifies library files; fdsi is the data set identifier of the file from which source COBOL statements are copied when COpy is specified in the source program. ddsi is the data set identifier of the directory used to locate the source statement entries on the library file. If C appears alone or is omitted, *LIB/*DIR is used when a COpy statement is encountered. Indicates embedded TRACE statements are to be compiled; if omitted, all TRACE statements within the source program are ignored during compilation. 7.2.2 END PROGRAM CARD This card indicates the end of the source program to the COBOL compiler. It contains the specification END PROGRAM beginning in column 8, and should follow the last card in the Procedure Division of the source deck. 7.2.3 FINIS CARD The FINIS card Signals the end of compilation and returns control to MASTER. It consists of the word FINIS starting in or to the right of column 8. If only one COBOL program is submitted for compilation, the FINIS card is placed behind the END PROGRAM card. If more than one COBOL program is submitted for compilation, the END PROGRAM card for the first program is followed by the Identification Division for the second program, and so on. The FINIS card is placed after the last END PROGRAM card. FINIS is correctly recognized only after an END PROGRAM card. 7.2.4 ENDATA CARD 60229400 The ENDATA card signals that the end of data has been reached on the system input file (INP) or the input file on the card reader. It consists of the word ENDATA beginning in column 1. The ENDATA card should be inserted directly behind the user's data deck. If the deck has MASTER control cards between the end of the data deck and the standard MASTER end-of-file card, the ENDATA card preceds the MASTER control cards. 7-5 7.3 MASTER CONTROL CARDS MASTER control cards contain a $ punch in column one, followed by the statement name and parameters, separated by commas. Only cards required for a compile-only and a compile-and-execute run are described in this manual. A complete discussion of the options available under MASTER is found in the MASTER Reference Manual, Publication number 60213600. The UCBL card is a MASTER control card. 7.3.1 JOB CARD All jobs submitted for processing under MASTER require a JOB card. It supplies information to the installation accounting routine, identifies the programmer, and sets a job processing time limit. ( $JOB,e ,i, t,le ,pc c Account number, 0 -8 characters Programmer identification, 0-8 characters t Job time limit in minutes for entire job maximum 1440 minutes; if blank, job time depends on the installation accounting routine lc line count, specifies size of standard output file pc punch count, specifies size of standard punch file The c and i fields are mandatory. If one of the fields is blank, the job is terminated. The JOB card is written on OUT. 7.3.2 SCHEDULE CARD ($SCHED, SCR=x, CORE=x, ••• Under MASTER $SCHED cards are optional; but at least one is required for COBOL users. Card format is free field and the entires may occur in any order. Blanks or commas may be used as separators, but are not required. The fields required by COBOL follow: SCR=x 1-3 decimal digits describing number of segments of system scratch required to hold the intermediate output of the COBOL compiler and the uSer's scratch files during execution. SCR=8 60229400 7-6 CORE=x 1-3 decimal digits describing the number of 512 word quarter pages required for the run. If object program is larger than the compiler, the user must reserve additional memory. CORE=35 is suggested as a minimum for normal compilation. Optional fields that may be required by the object program follow: CLASS= peq= E Emergency B Background I Input/Output (usual class for COBOL jobs) C Compute peq is a hardware type number, decimal digits to the right of = indicate the quantity of equipment of this type required to handle user files. Drives must be reserved for all Class B files. Unlt record devices must also be reserved. 7.3.3 *DEF CARD ( $*DEF(P1 ,P2' •.. ) These cards are used to allocate, open, or close user files. Complete descriptions appear in the MASTER Reference Manual. *DEF cards are not required for COBOL compilation or execution except: User must OPEN a nonstandard file for INPUT, LIST, PUNCH, XECUTE, or COPY, and he must specify the dsi for the file on the $UCBL card. User must allocate all permanent online mass storage files which are not in existence when execution starts. Other mass storage files are allocated internally during program execution when the programmer includes the FILE LIMITS clause in the source program. OPEN source statements in the user program open all allocated files except a rerun dump file on mass storage, this must be opened with a *DEF card prior to object time. If the file to be allocated is blocked, the user must add eight characters to the block size for an I/O control system mass storage block header. 60229400 7-7 7.3.4 TASK NAME CARDS This MASTER control card is read by the job monitor, an operating system task. The file specified by dsi is positioned at its beginning and the first task is loaded. However, if the dsi is *LIB, the library directory is searched and the named task is located before it is loaded. On a compile and execute run, this card follows the FINIS card. Since only the name is checked for library tasks, the task name card will usually appear as follows: ($name, LGO. 7.4 OUTPUTS FROM COMPILATION 7.4.1 SOURCE PROGRAM LISTING The COBOL compiler provides a printer listing of the source program. The lines are exact images of the cards in the source program deck. New line numbers are generated corresponding to the card image on the listing. The sequence numbers from the input cards are also printed. 7.4.2 ERROR DIAGNOSTICS Compiler diagnostics follow the source program listing and object code listing. Line numbers adjacent to the diagnostics serve as cross reference to the original source line. Data names appear in coded form in the diagnostiCS. The user can refer to the Data Division portion of the source listing where a code was generated for the data name of first encounter. The only errors recognized by the compiler are those in which the user has broken rules of the COBOL language; it does not recognize faulty programming logic, unless this also produces a language error . . l~...ll 7-8 compiler diagnostics are listed in Appendix I, 60229400 7.4.3 SYMBOLIC LISTING OF OBJECT PROGRAM When 0 is specified on the $UCBL card, an object program listing is printed following the source program listing. For each instruction generated, a mnemonic operation code and data reference codes are presented. An octal representation of each instruction is also printed. 7.4.4 OBJECT PROGRAM When X or P is specified on the COBOL control card, the object program is written on load-and-go or standard punch files. The decks produced may be executed in the usual manner. 7.4.5 DATA MAP When l\II is specified in combination with L on the COBOL control card, a data map of the information described in the Data Division of the source program is printed following the source program listing. 7.S RERUN/RESTART PROCEDURES 7.S.1 RERUN When the RERUN option of the I -O-CONTROL paragraph is specified in the source program, special control cards are required to create a rerun dump file and to produce absolute task dumps which may later be used to restart the job. Required control cards are listed below. Cards to allocate objecttime mass storage space for user files are not shown: $JOB, ... $SCHED, .. . $*DEF(A, ... ) Allocate the rerun dump file (mass storage only) ; block size must be at least 256 characters $*DEF(~, W, rdsi, ... ) Open the rerun dump file $xxxx,idsi Call task xxxx from idsi (INP, LGO, etc.) If the rerun dump file is on tape, the allocate card is not required and the open card will contain U as the first parameter. Only one rerun dump file may be opened for a given job. 60229400 7-9 7.5.2 RESTART To restart a program from one of the dumps on the rerun dump file, the following cards are required: $JOB, ... $SCHED, ... Must have same parameters as original $*DEF(~, W, rdsi, ... ) Open the rerun dump file $xxxx, idsi(rdsi, n) Task name card xxxx Task name idsi dsi of input file (INP, etc.) (rdsi, Restart from rdsi; parameter passed to COBOL restart routine n) Number of rerun dump to be used for restart; n = 1-9999. If n is omitted, the last dump on the file will be loaded. The comma must be present. Mass storage ALLOCATE cards should not be included in a restart run of the program. The restart routine re-positions all files to their locations at the time rerun dump was taken. The rerun dump file is poritioned so that the next dump follows the one used to restart the program. If input data came from system input (INP) the entire data deck must be reloaded into the card reader. 7-10 60229400 7.6 SAMPLE COBOL DECKS 7.6.1 COMPilE ONLY COMPILE ONLY With LIST and TRACE Options 77 88 FINIS '----I COBOL Source Deck $SCHED, CORE=35, SCR=lO r. • $JOB, 723-IVl, JHL, 10,100 60229400 7-11 7.6.2 COBOL SOURCE DECK COBOL SOURCE DECK / END PROGRAM ~. " /, PROCEDURE DIVISION J f DATA DIVISION / f F I ~ (ENVIRONMENT DIVISION ~ / f I l- IDENTIFICATION DIVISION I- I- ~1- 7-12 60229400 7.6.3 COMPILE AND EXECUTE COMPILE and EXECUTE With LIST and Disk Object Time CLASS A Storage '77 88 I $*DEF(R, W, MFG, INVENTORY, 1,XYZ, ZYX, UNUSED) I / ENDATA f ~ I I (, ~ II [(( futa cards • ( $X,LGO r , I I f r / COBOL Source Deck ~ I $UCBL(L, X) I $5000,671231, S, S, 853) ~ I I $*DEF(A, W, MFG, INVENTORY, 1, XYZ, ZYX, 50 I / $_SCHED, CORE=40, SCR=10 / $JOB, 6181, ecc, 15, 1000 I i..-- '---- 60229400 7-13 7.6.4 RESTART RESTART Rerun DUMPFILE on Disk, RESTART at Dump 5 I 177 88 It.t I Data cards ~ Program binary deck I ( $X, INP(RRUN, 5) ($*DEF(O, W, RRUN,JWR, RRDUMP, 1,ABC,O) ($*DEF(O, W, PROG, JWR, PRG, 1,XYZ, 1) {$SCHED, CORE=35, SCR=10, CLASS=I, 853=2 $JOB, 7818, DWR, 20, 2000 - - - 7-14 60229400 7.6.5 COMPILE AND EXECUTE COMPILE AND EXECUTE With LIST, Memory Map, and Tape Object-Time Storage /77 88 ~ I;/, I I ~ rl Data cards I j I ($X,LGO I I ; L L f f (COBOL Source Deck ( $UCBL(L, M, Xli I- ($SCHED, CORE=35, SCR=10, CLASS=I, 604=4 ---- $JOB, 4112,JRH, 15,2000 r- ---- 60229400 7-15 7.6.6 EXECUTE EXECUTE With Object-Time Mass storage and RERUN on Mass storage (77 88 , , , I I I--- I Data cards r- ~ lEND - ""I J I •I I :Binary Deck /$X,INP I ($*DEF(O, W, RRUN, JWR, RRDUM P", 0, S, 1) ......... {'$2048,1000",,853) ($*DEF(A, W,JWR, RRDUMP"" ~ 1 ($1000,8000,671115,S,S,853) _____ ($*DEF(A,W,MFG,SPARE PARTS,Ol,MFX,XYZ, - I ($SCHED, CORE=30, SCR=10, CLASS=I,853=2 ~ r----- I" $JOB , 7192, JWR, 20,2000 I--- ~ 7-16 60229400 APPENDIX SECTION A SAMPLE PROGRAMS The sample program (PSR-UPDT) listed on the following pages is a Program Summary Report (PSR) update program. Its principal functions are to: 60229400 • Maintain the PSR master file as a random access mass storage file." • Periodically update the master file. • Extract information from the file. • Produce reports showing, by product set, the number and status of current PSRs. A-I :> PSR-UPOT I ~ 00001 00002 00003 00004 OOOOS 00006 00007 00008 IDENTIFICATIo~ DIvISION. pROC;RAM- I O. PSR-UPOT. AUTHOR. DAS-DOJ. REMARKC;. ENVIRONMENT DIVISLON. CONF'YGIIRATICN SECTION. SOURCE-COMPUTER. 3300. CHJECT-COMPUTER. 3300. SPt::CIAL-NAMEs. ~VC;TEM-OUTPUT IS OUT. tNPUT-CUTPUT SECTION. FILE-CeNTROL. SELECT OIlT-FILE ASC;IGN TO SYsTEM-OUTPuT. C;ELECT INFILE-CARO ASSrGN TO SYSTEM-INPUT. C;ELECT PRIM-StC-LIST ASSt~N TO DISK LIST ACCEsS MODE IS RANDOM ACTUAL KEY IS PRIM-KEV. C;F.LECT PSR-FT~E ASSIGN To DISK PSR ACCEsS ~C0E IS RANDOM ACTUAL KF.V IS PSR-KEV. C;EI.. ECT NUM8ER-FILE ASSIGN TO DISK PNUM ACCESS MouE IS RANDOM ACTUAL KEf IS NUM-KEy. 5ELECT SORT-FILE ASSTGN TO SCRATCH SCR. c;ELECT SORT-CUT ASSIGN To TAPE 05. ~F.LECT P.S-LIST ASSyGN TO DISK LST ACCE5S M~OE IS RANDOM ACTuAL K~Y IS P-KEY. ~ELECT N-FILE ASSIGN TO DISK PNM ACCEsS MCGE IS SEQUENTIAL ACTUAL KFY IS N-KEY. OATt\ DtVISION. FILE: S~CTICI\J. FO ~IJT-FILE LAREL HECCRf)C:; ARF. Otv1rTTEn QEPCRTS ARE ntLETF-RF~ORT-l. LIST-PS~-NUM-~EPCRT. 00009 00010 00011 fJ(1012 anOl3 00014 oralS 00016 00017 00018 00019 0<.:020 00021 00022 00023 00024 00025 00026 00027 on028 0) 0 ~ ~ c.o ~ 0 0 O(J029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 00041 00042 00043 FO TNI=' I LE-CAH!) ClrOO12 LAREL RECO~0 IS OMITT~D nATA RECo~o TS !NR~C. INQEC. o~ CAHU-TYP~ PIC x. 000014 02 1100011 or.oo 13 01 88 LE:t;AL -CODE VA'-IJE~ ~A;h Ptc X(79). FILLER ~C~, ¢o~. ~L~, ;6$~. ;tR;e. ~ 0 I:..:l I:..:l c.o H:o0 0 00044 00045 00046 00047 00048 00049 00050 FD 00051 >I ~ 00052 00053 00054 00055 00056 00057 00058 00059 00060 00061 00062 00063 00064 00065 00066 O(]067 0006A 00069 On070 0()071 00072 00073 00074 00075 00076 00077 00078 00079 00080 00081 00082 00083 00084 00085 00086 00087 00088 pRIM-SEC.LIST ALOCK CONTAINS 24 RECORDS RECORD CONTA T.'''S 82 CHARACTE:RS LA~EL RECORD IS STANDARD VA,LUE OF IO IS tLIST-FILEst OWNER IS tPSR~ ACCESS-PRIVACY IS ?!APSFI~ MODIFICATION-PRIVACY 1(' ~1v1PSR~ F.OtTION-NLJM8ER IS 01 DATA RECORDS ARE HEADER-RECORD, PR {r-1ARY··RF.CORn, SECCN~~RY-RECn~O, r:~~PT Y-RECORD. HEl\DER-RECOR!). PIC 9 (12) • 02 FORwARj)-Llf\fK 02 BACKWAI·H)-L I NK ~IC 9 (12). 02 HEAUE~-L r i\iK pIC q ( 2 ) . O? HEAOE~-L~V-NAMF. pTe 'l( • 03 SUP~-Lt:VF.L 03 HEAf)E'~-NAMF. PIC X «~ 1 , • (')2 HEAOEK-SAK pte 9 (12) • pR I MARY -RE C~)i~tJ. FILLER pIC X U~4, • 02 02 PROOUCf-NAME PIC x(lO). 02 MASTER-SAl<. pTC 9(12). pIC 9 (12) • 02 MSOS.SAK PIC 9(12). 02 RTS-SAK 0'2 FILLER pIC x(l2). ~) 0660]6 060017 01 DCOOIA 0110019 DOO020 000021 DnOO?2 060023 DOOOi?4 000025 01 DnOO26 DOOO?7 00.0028 0(:0029 DC!OO30 000031 000032 000033 060034 000035 DOO036 000037 01 62 pIC PSR-NUMSE~ 02 PROU-NA,Jlt: n? FILLER o? Op-S YS·''IlAtvit. 02 LIST-LIT 02 FILLER 01 X (24) • PIC q (S). pIC 9<12,. 02 PSR-SAr< 0OOO3A 000039 [)OOO40 D00041 000042 S~~ONDA~Y-RECGRD. 02 FILLER pIC x I ~ 00089 00090 00091 00092 00093 00094 00095 00096 00097 00098 00099 00100 00101 00102 00103 Of1104 00105 00106 00107 00108 CCI09 OOi10 00111 00112 00113 00114 00115 00116 00117 00118 00119 00120 00121 00122 00123 00124 00125 00126 0') 0 ~ I.\:) c:tl ~ 0 0 00127 00128 00129 00130 00131 00132 00133 000C44 1)00045 0(:0046 000047 OC6C4A Dr6649 01 01 MODIFICATION-PRIVACY IS ~MPSR~ F:.O I T I ON-NUIv1dE..( IS 02 nATA RECOR0 TS PSR-FILE-HEADER. PSR-FILE-REC. PSP-FILE-Ht:AOt::R. oi? NEXT .... EMPTy PIC 9 (12) • 02 FILLER PIC X(SOO). P5~-FILE-RF.:C. 02 D60050 oAC051 DOO052 oi)OO53 000054 oooosc; 060056 0(;0057 000058 000059 000060 D66061 000062 02 OCOO63 1')00064 D~606S D(l0066 000067 D600flA D66069 DOOC70 000071 DOOO72 n~on73 DOOO74 D600 7 c; D0007f, 000077 nC,0078 D0,o079 DOO080 I"lFOO81 000082 1)00083 0(.0084 DOCORS 02 O? PSR-F I U-:I-MOVE. 03 PSR-NO PrC 9 (5) • 03 DATE .. IN PIC X (A) • pre X(lO). 03 P~:iJ-NM 03 VERSION-NC pIC 9V9. 03 PKCD-I..JC PIC X (4) • 03 CP-SY::;-l PTe x. pIC QV9. 03 VER-l 03 CP-SYS-2 Pre x. pIC 9V9. 03 VER-2 03 CP-SYS-3 PtC x. 03 VF.:Q-3 pIC 9V9. 03 REPORT-ORG PIC X (14) • 03 F.QUAL.-PSR PIC X (5) • PSR-F I L~_2-i"'OVF.. 03 OUT-nTD PIC x (8) • 03 SCrlEf)-lMPL. 04 SYS-A pIC 9V9. 04 VER-A pIC 9V9. 04 SYS-8 pIC 9V9. 04 VF.:R-8 PIC 9V9. 04 SYS-C pIC 9V9. 04 VF:t-<-C pIC 9V9. 03 TESTE'IJ PIC X. 03 SUH-I\lO PIC 999. DESCRIPTION. 03 nEse PIC X(73) OCCURS 5 TIMES. PSR-FILF.1-MOVE. 03 ABS-oT PIC q (4) • 03 PSR-AK-FORW PIC 9(12). 03 PSR-Ar(-t3ACK "'IC 9(12). 03 OP-KEYI. 04 MASTER-LtST-AK PIC 9(12). 04 M~OS-LIST-AK PIC 9(12). 04 RTS-LIST_AK PIC 9(12) • 03 OP-KEY2 REDEFINES OP.KEYI. 04 ~P-K;EY PIC 9 (12) OCCURS 3 TIMES. 03 FILLER PtC xx. (j') 0 t.:) t.:) (.C ~ 0 0 00134 00135 00136 00137 00138 00139 00140 00141 00142 00143 00144 00145 00146 00147 00148 00149 00150 00151 00152 00153 00154 00155 00156 00151 00158 00159 00160 00161 00162 00163 00164 00165 00166 00161 00168 00169 00170 00171 00172 OO~13 >I c.n 00114 00115 00116 00177 00118 FD D 0087 0 COAA 0 0089 01 FO 000091 0OO09? 0(10093 Dn0094 000095 060096 D60097 060098 OCOO99 000100 066101 000102 D66103 000104 D00105 01 C;C~T-OUT LAREL RECOPl.) IS Ol"lITrED nATA RECCi~OS ARE REC-A, RFC-C, REc-D, REC-L, REC:-U, REC-R. REC-A. 02 CODE-ALPHA PIC x. COUE.,\jUIVl PTe 9. Of? o~ REC-A-r"1C\jt~ 1. PS~-NlJM PIC X (5) • FILLf:H PIC X (52) • /')2 Pyc X(21). FILLER RF.:C-C. 02 FILLER PrC x(7) • 02 LCi.:iGFO-ClJT PIC X. (8) • 02 SCHEOUL£D-IMPL. 03 CP-SySTEM-l pIC 99. pIC q9. 03 VERS-l 03 OP-SYSTEtv1-2 PIC 99. 03 VEKS-~ pIC 99,. 03 OP-SYSTEM-3 PIC 99. 03 VERS-3 pIC q9. pIC x. 02 TEST pIC 999. 02 SUM-NUrvl 02 PSR-EIJ pIC X(1"'5,. pIC X (I!to) • 02 FILLER REC-D. 02 FILLER pIC xx. 02 DELETE-FIELD OCCURS 5 TIMES. 03 DELETE-PSR-NG PIc 9 (5) • 03 OELETE-REASON PIc ,x I ~ 0') <:> l'o:) l'o:) ;€ 0 0 00179 00180 00181 00182 00183 00184 00185 00186 00187 0018A 00189 00190 00191 00192 00193 00194 00195 00196 00197 00}98 00199 00200 00201 00202 00203 00204 00205 00206 00207 00208 00209 00210 00211 00212 00213 00214 00215 00216 00217 00218 00219 00220 00221 00222 00223 000119 000120 000121 066122 D00123 000124 ,OQQ125 000126 006127 000128 060129 000130 000131 00Q132 000133 000134 000135 000136 000137 OQ9 138 000139 OQQ1 4 O Do0141 01 01 01 SO 01](1143 000]44 01 nOO145 000146 060147 FD REt:-L. 02 FILLE~ PIC XX. 02 pRClJueT-LEVEL PIC X(lO) • 62 CP-SYS-LF.VEL PIC X(6) • PIC x. 02 SUPPCRT-LI:.VEL PIC X(fll). 02 FILLER REC-U. 02 FILLER PIC X. 02 U-F"IELO PIC X<1S). t)~ U-tHAS PIC 9 (~) • 02 F ILLEi~ PIC X(S9). REC-R. 02 FILLF.R f-iIC X. 02 CS-fIELO. 03 OS-FtELOI. 04 8S-FIEL02 PIC X(4) • 04 GS-FIELD3 PIC x. 03 OS-FtE.LD4 PIC x. 02 PROD-FIELD PIC X(13). 02 WHICH-FIELD PIC X(10) • 02 AGE-FIELD PIC X (5) • 02 QUANTITY-fIELD PIC X(7) • 02 FILLE~ PtC X(48) • C;OQT-FILE RECORD CeNT ~ I f-JS AO CHARACTERS Dt\TI.\ RECORD IS SCRT-FILF.-QEC. <;CqT-FILE-HI::r:. 02 so~r-CCDE-l PIc x. 02 SCRT-COOE-2 PIC x. 02 SCRT-CCOF-3 PIC X (r;) • 02 FILLER PIc X (73). N-FILE RLeCK CONTAINS 42 REcORDS REcORD CONTAINS 12 CHM=1 J\C TER5 LAAEL HECCHDS ARE STANDARD VALUE OF 10 Is tTEMPCRY-PSR-LTST~ OWNER I~ ;tPSR;! ACCESS-PRIVACY IS ~GnIFICATION-PRIVACY oe0149 01 FO ;iAPSR;i IS ;iMPSR;t EDrTION-NUtvlI:jEI-< IS 04 nATA RECORD 15 T-RF.C-1. T-~EC-1 PIC 9 (12). P-C;-LIST RLnCK CONTAIN!.) 24 RECORDS REcORD CONT AI I'JS 82 CHARACTERS 00224 00225 0()226 00227 00228 00229 00230 00231 00232 D06151 00233 00234 00235 00236 00237 00238 D00153 00239 D00159 00240 00241 00242 00243 00244 00245 00246 00247 00248 00249 00250 00251 00252 00253 00254 00255 000154 000155 D06156 000157 00015A 000160 D00161 000162 000163 000164 D00165 D00166 000167 00256 00257 00258 00259 00260 00261 00262 00263 00264 00265 00266 00267 00268 000168 000169 D00170 000171 066172 . D00173 000174 066175 000176 LAqEL R~COROS ARE STANDARD VALUE OF 10 IS ¢TEMPORY-LIST-FILE* OWNER IS ~PSRt ACCESS-PR!VACY IS ~APSRt MODIFICATiON-PRIVACY IS tMPSRt EOJTICN-NUMdEK IS 05 DATA RECORD IS T-REC-2. 01 T-~EC-2 PIC X(82,. wORKIN~-STORAuE SECTION. 77 REL-FILES PIC XX. 77 CTQ PIC 99. 77 OP-CTR PICTURE IS 9. 71 IOE~T-CTH PICTURE IS 99. 77 CHECKED-OUT PICTURE IS X(19). 77 STARS PIC X(6) VALUE ~ ~*** ~. 77 OIAGNOSTIC-U PIC X(44) VALUE tILLEGAL UTILITY FUNCTIONt_ 71 OIAGNOSTIC-C PIC X(44) VALUE tILLEGAL CARD CaDEt. 77 OIAGNOSTIC-P PIC X(44) vALUf tNEW PROOUCT NAME -- NOT ALLOWEDt. 17 nTAGNOSTIC-Ll PIC X(44, VALUE tlEVEL CHANGE - NON-EXISTENT OPERATING SYSTEMt. 71 OIAGNOSTIC-L2 PIC X(44) VALUE tLEVEL CHA~GE -- NON-EXISTENT PRODuCT NAMEt. 77 nIAGNOSTIC-PI PIC X(44) VALUE ~PSR NU~RER -- LESS THAN RIASt. 77 DtAGNOSTYC-P2 PIC X(44) VALUE tPSR NUMBER -- NON-EXISTENT FOR OELETE~. 77 nIAGNOSTIC-P3 PIC X(44) VALUE tPSR NUMBER -. EXISTING FOR AQDt. 77 nIAGNOSfIC-S PIC X(44) VALUE tILLEGAL SEQUENCE NUMRER~. 77 OIAGNCSTIC-O PIC X(44) VALUE tNO OPERATING SYSTEMt. 71 ntAGNOSTIC-El PIC X(44) VALUE ~EQUATEI} PSR NUMBER -. NOT IN FILE, IGNCREOt*. 77 nIAGNOSTIC-P4 PIC X(44) vALUE tPSR NUMBEK -. NON-EXISTENT FOR CHANGEt. 11 8Kl-CHO PIC 9(}2) VALUE 100000. 71 HOLD-PSR PJC q(S)u 77 p~q PIC 9(5)0 77 ALPHA-SAVE PIC x. 77 REAOy-PSR PIC 9(\2). 17 ~EADY-LLST PIC 9(12). > I 00 0') 0 t\:) t\:) CD ~ g 00269 00270 00271 00272 00273 00274 00275 00276 00277 00278 00279 00280 00281 00282 00283 00284 00285 00286 00287 00288 00289 00290 00291 00292 00293 00294 00295 00296 00297 00298 00299 00300 00301 00302 00303 00304 00305 00306 00307 00308 00309 00310 00311 00312 00313 000177 OQ017B 000179 DQ<)180 000181 000]82 DOO183 nOO184 000]85 060186 DOO181 D0.0188 D00189 DOo190 D00191 nOO192 DO('193 000194 D(10195 D00196 D;;0197 D(jOI9~ 0OO19Q 000200 066201 DI1 0202 n(io203 000204 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 77 11 77 01 01 01 01 nOO?05 000?06 on0207 000208 000?O9 01 000210 GO-KEY SA\lE-SAK nELETE-SU8 BACK-SAVE RACK-SAVE PIC PIC PIC PIC I PIC PIC rEM-KEY-1 pre TE~-1-KEY-2 PIC PIC PIC TEf\1-KEY-3 rr:~-1-KE Y-4 TEM-KEY-c; TE~-1-KEY-6 PI~ PIc 9. 9(12). 9. 9(12). q (12) • 9. 9 (12). 9(l?). 9(12). 9 (12) • 9(12). 9(12). 9(12). TE~~-Kt:: Y-7 PIC TEM-KEY-8 PIC 9 (7) • Rr.PT-HEADI"JG PIC X(l7). CC; .. NUMBER PIc 9. T~nAYS-DATE pIC 9 (4). ntF="F-DATE PIC 9 (4) • nE~C-CTR PIC 9. X (R2) • TE"-1-HOLD-l PIC TI"'1E-STORt:: PIC X (8) • nATF.-STORE PIC x un • P-KEV PIC 9(12). N-KEv PIC 9 (1 ~) • '- I <;T -M~EA-F I ELO. 02 LIST-AREA OCCURS 6 TIMES PICTURE IS 9 (6) • FIQST-DATE. pIC 99. 02 MM FILLER pIC x. o~ p{C Q9. 02 DO I')~ FILLF::R piC X. pIC Q9. 02 YY M"1TAB. pIC X(36) VALUE IS FILI..ER O~ ¢OOO0310~90901201S1181212243273304334¢. 006211 000212 060213 OQQ214 D(l0215 OQQ216 000217 000218 066219 000220 01 01 01 01 01 TAR REUt::FINES MMTAH. pIC 999 OCCuRS 12 TIMEs. 02 MTAti UP-KEY1. PIC 9 (7) • 02 U-tiLK u-Cri f)2 PIC 9 (5) • IJP-KEY REDEFINES UP-KEYl PIC 9 (12) • R-C PIC Q(7)V999. R-cl REOEFtNES d-C. PIC 9 (7) • 02 aLI<. 02 CHAR PIC 999. ~ 0 N N (,C) foi::o.. 0 0 00314 00315 00316 00311 00318 00319 00320 00321 00322 00323 00324 00325 00326 00327 00326 00329 00330 00331 00332 00333 00334 >I CoO 00335 00336 00337 00338 00339 00340 00341 00342 00343 00344 00345 00346 00347 00348 00349 00350 00351 00352 00353 00354 00355 00356 00357 00358 D00221 000222 000223 DOO224 000225 060226 000221 066228 006229 D00230 000231 000232 060233 006234 000235 006236 000231 060 238 000239 000240 000241 000242 066243 000244 000245 OQQ246 OQQ247 000248 066250 060251 000252 D00253 D00254 060255 060256 000257 000258 000259 000260 000261 000262 OQQ263 000264 006265 01 01 01 01 01 01 01 01 01 01 01 01 01 PRIM-KEYl. 02 PRIM.KEY-l PIC 9(1). 02 PRIM-KEY-2 PIC q(5). PRIM-KEY REDEFINES PRIM-KEYI PIC 9(12). PSR-KEY1. PIC 9(1). 02 PSR-KEY-l PIC 9(5). 02 PSR-KEY-2 PSR-KEY REDEFINES PSR-KEYl PIC 9 (12). NU~-KEY1. PIC 9(7). 02 NUM-KEY-l f)2 NUM-KEY-2 PIC 9(5). NUM-KEY REDEFINES NUM-KEY1 PIC 9(12). HEAOER-HECORO-STORAGE. EMPTY-HEAIJ-REC PIC 9(12). o~ pIC 9 (12) • 02 PLH-SAK pIC 9(12). 02 PRltv1-EXPA"'O pIC X(34,). 02 H-H-S pIC 9(12) • 02 H-R-S-SAK PSR-FILE.HEADER-STCRAGE. 02 EMPTY-PSR-FILE PIC 9(12). pIC 9(12). 02 FIHST-PSR-ENT pIC 9(12). 02 PSR-EXPANIJ pIC X(476). 02 P-f'"-H-S-H NUMBER-FILE-STORAGE. pIC 9 (7) • 02 NUM-EXPANIJ pIC 9 (5) • 02 BIAS PSR-EQT. 02 EQUAL-PSRS PIC 9(5) OCCURS 9 TIMES INDEXED RY PSR-INOEX. HEADER-RECCROT. pIC 9(12, • 02 FORWARD-LINKT 02 BACKWAHO-LINKT pIC 9 (12) • pIC 9(12). 02 HEADEH-LINKT 02 SUPP-LEvELT PIC x. pIC X(33) VALUE ;i LIST HEADER;i. 02 HEAOER-NAf"lET pIC 9 <12', • 02 HEADER-SAKT PRIMARY-RECCROT. pIC 9(12) • 02 FCR-LINKT pIC 9(12) • 02 BAK-LINKT pIC X(10) • 02 PROI)UCT-NAMET pIC 9(12). 02 MASTER-SAKT pIC 9(12). 02 MSOS.SAKT pIC 9(12). 02 RTS-SAKT pIC X(l2~. 02 HEAO.SAKT RPRIMARY.RECCRDT REDEFINES PRIMARY-RECOROT. >I ~ 0 00359 00360 00161 OQ362 00363 00364 00365 00366 00367 00368 00369 00370 00371 00372 00373 00374 00375 00376 00377 00378 00379 00380 00381 en 0 t-:> t-:> co ~ 0 0 00382 00383 00384 00385 00386 00387 00388 00389 00390 00391 00392 00393 00394 00395 00396 00397 00398 00399 00400 00401 00402 00403 000266 000267 Dn026R 000269 000270 0;;0271 000272 066273 006274 0002715 060276 OQQ277 000278 060279 D00280 OQ0281 OQQ282 000283 000284 000285 000286 OQ0287 000288 060289 000290 060291 D60292 000293 000294 000295 060296 006297 060298 060299 066300 000301 000302 000303 000304 060305 000306 000307 D00308 000309 000310 02 02 02 01 SE~ONOARY-RECCRDT. FORWARO-LKT pIC 9(12). BACKWARO-LKT pIC 9(12). PSH-NUMRERT PIC XeS). 02 PSR-SAKT PIC 9(12). 02 PRCD.NAMET PIC X(10) • pIC XX. 02 FILLER PIC X(6) • 02 OP-SYS-NAMET pIC XX. 02 FILLER PIC X(9) VALUE - PSR-LINK;6. 02 LIST-LITERALT pIC 9(12). 02 HEADER-ST PSR-FILE-RECT. 02 PSR-FILEI-MOVET. pIC 9 (5) • 03 PSR-NCT 03 DATE-INT pIC X(8). 03 PROO.NMT pIC X(10). 03 vERSION-NCT pIC 9V9. 03 PROO-NCT pIC X(4). 03 CP-svS-IT pIC x. 03 VER-IT pIC 9V9. 03 OP-svS-2T pIC x. 03 VER-2T pIC 9V9. 03 OP-SvS-3T pIC x. 03 VER-3T pIC 9V9. 03 REPORT-CRGT pIC X(14). 03 EQUAL-PSRT pIC 9 (S) • 02 PSR-FILE2-MOVET. 03 OUT-DTOT pIC X(8) • 03 SCHED-IMPLT. 04 syS-AT pIC 9V9. 04 VEI'<-AT PIC 9V9. 04 SVS-BT PIC 9V9. 04 VER-BT pIC 9V9. 04 SyS-CT pIC 9V9. 04 VEH-CT pIC 9V9. 03 TESTED-T PIC X. 03 SUM-NCT pIC 999. 02 OESCRIPTICNT. 03 OESCT pIC X(73) OCCURS 5 TIMES. 02 PSR-FIL3-MCVET. 03 AS-OTT pIC 9 (4) • 03 PSR-AK-FORWT pIC 9(12). 02 02 02 01 FILLER PIC X(34). R-SAKT PIC 9(12) OCCURS 3 TIMES. FILLER PIC X(12). >I .... .... 00404 00405 00406 00401 00408 00409 00410 00411 00412 00413 00414 00415 00416 00411 00418 00419 00420 00421 00422 00423 00424 00425 00426 00421 00428 00429 00430 00431 00432 00433 00434 00435 00436 00431 00438 00439 00440 00441 00442 00443 00444 00445 00446 00441 00448 D00311 D00312 000313 D60314 00031'5 060'316 OQQ311 000318 060319 D00320 OQ9 321 n00323 060324 000325 066326 000327 03 03 03 03 03 PSR-A~-8ACKT MASTER-LIST-AKT MSOS-LIST-AKT RTS-LIST-AKT FILLER pIC pIC pIC pIC pIC 9(12). 9(12). 9(12). 9(12). XX. 01 SVs-cp-1. 02 SVS-CP PICTURE IS X(6) OCcURS 3 TIMES. 01 NO-VER-1. 02 NO-VER PICTURE IS 9Vq OCCURS 3 TIMES. 01 IOENT-PS~-STCR. 62 STOR-IOENT OCCURS 10 TIMES INDEXED BY INDX-STOR. 03 STOR-IOENT-l pIC X. 03 FILLF.H PIC X. 03 STOH-IOENT-2 pIC 9(5). 01 PRnn-VER-l. 02 PRCU.VER PICTURE IS qV9 OCCURS 3 TIMES. REPORT SECTION. RD DELETE-REPORT-l PA~E LIM.JT IS nO LINES HEADING }O FIRST DETAIL 12. 01 LINE NUMAER IS 10 TYPE IS PAGE HEADING COLUMN NUMBER JS 37 PICTURE IS X(17) SOURCE IS REPT-HEADING. 01 REPORTEU.DELETE n? 02 02 o? 02 TYPE IS nf.TAIL. LINE NUMBER IS 12 COLUMN NUMBER IS 73 PICTURE IS X(R) SOURCE IS SYSTEM-OATF.. LINE NUMR~R IS 15 COLUMN NU~BEH IS 10 PICTURE IS X(lO) VALuE Is COLUMN NUMBER IS 22 PICTURE IS 9(5) SOURCE IS PSR-NCr. LINE NUMRER IS 17 COLUMN NUMBER IS 10 PICTURE IS X(7) VALUE IS COLUMN NUMBER IS ~2 ~PSR NUMBER_. ~PRCDUCT~. PICTURE IS X(10) 02 SOURCE IS PRCD-NMT. COLUMN NU~BER IS 35 PICTURE IS X(14) VALUE Is ~VERSION NUMBER~. )I I-' t..:;) 0) 0 t..:;) t..:;) (0 ~ 0 0 00449 0045.0 00451 00452 00453 00454 00455 00456 00451 00458 00459 00460 00461 00462 00463 00464 00465 00466 00461 00468 0046Q 00410 00471 00412 00473 00414 00415 00476 00417 00418 00479 00480 00481 00482 00483 00484 00485 00486 00487 00488 00489 00490 00491 00492 00493 COLUMN NIJ''''BE~ IS 51 pICTURE IS 9.9 SOURCE IS VERStCN-f\JOT. 02 COLUMN "~UMBER 15 S7 PICTURE. IS X(14) VAlliE IS ~PRODUCT NUM8ER~. 02 COLUMN Nt J:>1BEi~ 15 73 PICTURE 1$ X(4) SOURCE IS p~On-I\JOT. CP.SYS-RPT TYPE IS DETAIL. 02 LINE NUMH.t:::.~ IS PV J'; '2 COLUMN NUr.'ld£~ 35 PICTURE J~ X(16) VALliE IS ~OPERATING SYSTEM~. 02 COLUMN tIU""BER IS 53 pICTURE IS X(6) SOURCE IS SYS-CP (~p-cn~) • COLUMN NU:'IBER IS 61 O~ PICTURE IS X (14) V4LUE IS ~VERSION NUM8ER~. 02 COLUMN NUI"lHER IS '77 PICTURE 15 9.9 SOU~CE lS I\JO-VFR (cp-Cn~, • PPT-ORG TYPE IS DE.TAIL. 02 LINE NUMRt:R IS PLUS ? COLUMN NUi-18ER IS ~~5 PICrURE IS X(22) VALUE IS ~REPORTING ORGANIZATION~. 02 COLUMN NU:-1HER 15 f)0 PICTURE IS X(14) SOURCE IS REPORT-C~GT. 02 LINE NUMRE.r< IS PLUS '2 COL.UMN Nt l"'1tiER IS 35 pIC X(13) VALUE. IS ~REPORTED DATE~. 02 COLUMN ~·lUlvI8ER 15 60 PICTURE IS X(8) SOURCE 1'5 DATE-INT. 02 LINE: NUMBI:.H IS PLUS 2 COLUMN f\IU001fjER IS 35 PICTURE lS X ( 11) VALUE IS ~PSR SUMMARY¢. 02 COLUMN NUlV1bER IS 60 PICTURE IS 999 SOURCE IS SUM-NCTNCT-ANS TYPE IS DETAIL. 02 LINE NUMBER IS PLUS 2 COLUMN NUIVlHER IS 10 Oi? 01 01 01 ~ 0 N> N> c.o H=:>- 0 0 >I I-' t.I:) 00494 00495 00496 00497 00498 00499 00500 00501 00502 00503 00504 00505 00506 00507 00508 00509 00510 00511 00512 00513 00514 00515 00516 00517 00518 001519 00520 00521 00522 00523 00524 ()O525 00526 00527 00528 00529 00530 00531 00532 00533 00534 00535 00536 00537 00538 01 01 PICTURE IS X(12) VALUE IS i!NCT ANSWERED;!. ANSWERED TyPE IS DETAIL. 02 LINE NUMRER IS PLUS 2 COLUMN NU""IBER IS 10 PICTURE IS X(20) VALUE IS ;tANS WE RED INF'ORMATION¢. 02 LINE i~UMRER IS PLUS 2 COLUMN NUiVlBER IS 10 PICTURE IS X(13) VALUE IS ;!DATE ANSWERED~. 02 COLUMi\J NUiVIEsER IS 2S PICTURE IS X(8) SOURCE IS OUT-DTDT. 02 COI..UMN NUivlBER IS 36 PICTURE IS X(19) SOURCE IS CHECKED-OUT. CPE"R-SYS.RPT TYPE IS DETAIL. 02 LINE NUMBER IS PLUS ? COLUMN NU:vIBE~ IS 30 PICTURE IS X (21) VALUE IS ~IMPL OPERATING SYST'EM¢ • 02 COLUMN NU,"1BER IS 53 pICTURE IS X(6) SOURCE IS SYS-CP (Op.erR). 02 COLUMN "llJ'II1BER IS 61 PICTURE IS X(14) VALUE IS ¢VERSION NUMBER;!. 02 COLUMN NlJ'vjl3ER IS 17 PICTU~E 01 r~ 9.9 SOURCE IS NO-VER (Op·eTR) • 02 LINE NUMJ:3ER IS PLUS 1 COLUMN NU,"ldER IS 30 PICTURE. IS X (12) VALUE IS ;!IMPL PRODUCT¢. 02 COLUMN N\.J,,'H3ER IS '+4 PICTURE IS X(10) SOUHCE IS PROO-NMT. 02 COLUMN NlJ:"1SE:R IS hI PICTURE IS X (14) VALUE: IS ;:VI::RSION NUM8ER¢. 02 COLUMN NlJ"'8E~ IS 77 PICTURE IS 9.9 SOURCE IS PRCO-VER (~P-CTR). REL-PSRS TYPE IS Ot:TAIL. 02 LINt: NUMRt:R IS PLUS 1 COLUMN NUMBER IS 10 PIcrURE IS X (12) VALUE: IS ;!RELATED PSRS~. 02 LINE ·\JUM8t:.R IS PLUS ? COLUMN NUMBER IS 10 PICTURE t::5 X(70) >I .... ~, Of)S39 00540 00541 00542 0('543 00544 00545 00546 00547 00548 00549 00550 00551 02 01 TYPE IS nt::TAtL. 01 00554 RO 2 SOURCE IS UESCT (OEse-CTR). OF:L-REASCN TYPE IS OC:TAIL. 02 LINE NUMBEH IS PLUS 3 COLUMN NIj'JiSER IS 10 PICTURE IS X(17) VALUE IS ;tREASON FOR OELETE;t. 02 LINE NUMR~R IS PLUS 2 COLUMN Nu~~ER IS 10 PICTURE IS X(9) SOURCE IS OELETE-~EA~ON (DELETE-SUB). LtC:;T-PSR-NUtvi-riEPCRT PA~E LI~IT IS 60 LINES HEADING 1') 00561 FIRST 01 00564 00565 OET~IL 18. LINE NUMRER IS 10 TYPE IS PAG~ HEADING NEXT GHOUP IS PLUS 3. O~ 00566 00567 00568 00569 00570 02 00571 O~ 00572 00573 02 OOS74 00575 00576 00577 COLUMN NU~'iBER I 5 ~6 PICTURE I':' X(6) SOURCE IS OP-SYS.NAMFT. COLUMN NU''18E~ IS 6:3 PICTURE IS X(13) SOURCE IS PROOUCT-NA~ET. COLUMN 1\j\J1'1~ER IS "77 PICTURE IS X(4) VALU~ IS LINE NU~8~R IS 13 COLlJMI\J IS 53 PICTURE I'j X (13) ,,2 00578 00579 00580 00581 00582 00583 LIN~ NU~q~R IS PLUS COLUMi~ "'UfVlbE~ lSI 0 PICTURE IS X(73) 01')552 00562 00563 ;tOESCRIPTION~. nF.:c:;CRIP-RPT 02 00553 00555 00556 00557 00558 00559 00560 SOURCE IS IOENT-PSR-STOR. LINE NUM8~R IS PLUS 3 COLUM~ NU~8ER IS 10 PICTURE IS X(}l) VALlJF. IS 01 SOURCE IS WHICH-FIELn. COLUMN Nl);,1bF.H J S 67 PICTURE Ij xes) SOURCE IS AGF-FIELD. 02 COLUMN NU·1Bt:R IS 73 PICTURE IS XUi) SOURCE IS SYSTEM.0ATE. LISTING-REPCRf ;tPSRS~. 00584 00'585 00586 00587 OOS88 00'589 00590 00591 0059~ OOS9~ 00594 00595 00596 00597 0059a 00599 00600 00601 00602 00603 00604 00605 00606 00607 0060E\ 00609 00610 00611 00612 00613 00614 00615 00616 00617 00618 00619 00620 00621 00622 0062:3 00624 006?5 00626' 00627 00628 at? TYPE IS ot:TAIL. LINE NUM8t:R IS PLlJS ? COLUMN NUMBER IS 10 PICTURE IS 9(6) SOURCE IS LIST-AREA (1). 02 COLUMN NUMBER IS 32 PICTURE r~ 9(6) SOURCE IS LIST-AREA (2). 02 COLUMN NUMBER IS 54 PICTURE IS 9(6) SOURCE Is LIST-AREA (3). 02 cOLUMr-J I\IU1'1BEP I S ~/6 PICTURE T~ 9(6) SOURCE IS LIST-AREA (4). n2 COLUMN NUi'It3ER IS 98 PICTU~E I~ 9(6) S8URCE IS LIST-AREA (5). 02 COLUMN "I\JH~ER IS 120 PICTURE IS 9(6) SOURCE Is LIST-AREA (6). PROCE'OliRE l.>IVISIo,"J. DECLARATIVt::S. PHIM-SFC SECTION. tlsr:: AFTER STAf.lOARO EPROR PROCEDURE ON PRIM-SEC-LIST. PARA-I. DISPLAY ~ ERR~H OCCURR~D ON IIC OF PRIM-SEC-LIST~ UPON CUT. PSR C;EcTICN. USE' AF'TER ST M'J[)A~D ERROR PROCEDURE CN PSR-FILE. PARA_? nISPLAY ~ ER~UR CCCURRED ON 1/0 CF PSR-FILE~ UPON OUT. f\ltJMBR sECT I ON. UC;E AFlER STAf\IDARD EPkCR PRCCEDURE ON NUMAER-FILE. PARA-3. DISPLAY ~ ERqCR CCCUPRED ON 1/0 OF NUMBER-FILE~ UPON CUT. saRTT SECTION. USF: AF"' ER STAj\JOA~D ERROR P~CCEUURE ON SORT-cUT. PARA_4. DTSPLAY ~ ERROR OCCURRED ON I/C CF SORT~OUT~ UPON OUT. END DfCLARATIVES. READ-CARD SECTION. sCRT.TNPuT. MovE SYSTEM-I")I~ TE Tc FIRST-DATE. CCMPUT~ TCDAvS-DATE = «yY - 66) ~ 365) + MTAS CMM) + DO. ePEN INPUT IN~ILE·CARO. sCQT SCRT-FILt CN ASCENDING KEY SORT-CODE-l SCRT-COOE-2 SCRT.CCDE-3 INPUT PROCEDURE IS INPUT-PROCEDURE GIVING seRT-CUT. CLOSE INFILE-CARO. READ-TAPE SECTIONTAPE·OPEN. CPFN INPUT SCHT-CUT. 00629 00630 00631 00632 00633 00634 00635 00636 00637 00638 00639 00640 00641 00642 00643 00644 00645 00646 00641 00648 00649 00650 00651 00652 00653 00654 READ SORT-OUT AT END G~ TO LAST-CARD. IF CODE-ALPHA = ~$~ GO TO UTILITY, MOvE CCUE-AlPHA TO ALPHA-SAVE. FILE-opEN, OPEN 1-0 PRIM-SEe-LIST. PSR-FILE. NUMBER-FILE. MOvE SKI-CHO 10 PRIM-KEY, NUM-KEY, PSR-KEY. READ PRIM-SEe-LIST INVALID KEY PERFORM PROGRAM-BUG. READ PSH-FILE INVALID KEy PERFORM PROGRAM-BUG. READ NU~8ER-FILE INVALID KEY PERFORM PROGRAM-BUG, MOVE HEADER-RtCOPD To HEAOEk.RECORD-STORAGE. ~OVE PSR-FILE-HEADER TO PSR-FILE-HEAOER-STORAGE. MOVE NUMBER-Rte TO NUMBER-FILE-STORAGE. GO TO TAPE-CHtCK. TAPE-I"IPUT. PFPFORM READ-kOUTINE. TAPE-CHECK. yF ceDE-ALPHA = ~A~ r,c T~ ADD-PROCESSOR. IF COOE-ALP~A = ~C~ GO To CHANGE-PROCESSOR, IF CODE-ALPHA = ~O~ G~ To DELETE-PROCESSOR. JF CODE-ALPHA = ~L~ ~c To LEvEL-PROCESSOR. IF CODE-ALPHA = tR~ GO Ta REpO~T-PROCESSOR. pERFORM PROGRAM-HUG. 006~5 WQITE PSR-FIL~-REC FRO~ PSR-FIlE-HEADER-STORAGE INVALID KEY PERFORM PbOGRAM-RUG. wRyTE rlEADER.~~~CCRD FR~M HEADER-RECORD INVALID KEY PERFORM P~CGRAM-RUG. CLOSE SORT-OUI, PPTM.SEC-LIST. PSR-FILE, NUMBER-FILE. ALTER-c;TOP. (;C TO STOP-PAf... sTOP,.PAR. ST~P RUN. ADDING SECTION. AOD-pRCCESSOR, 00656 006C;7 00658 00659 00660 00661 00662 00663 00664 00665 00666 00667 00668 00669 00670 00671 00672 00673 LAST-C~RD. MOVE ~Kl·CHO TO PHIM-KfY~ PSR-KEY, NUM-KEY. wRTTE NUM8ER-~EC FROM NUM~ER-FILE-STORAGE INVALID KEY PERFOR~ MovE 1 To P~OGRAM-RUG. GO.~EY. TF CODE-NUM =0 MCVE REC-A-MOVEI TO PsR-FILEI-MOVE. READ-ROUTINE ELSE DISPLAY STARS. DIAGNOSTlt-s, STAHS. ~EC-A UPON OUT GO TO CARD-SEQ-ERRCR. IF-CHECKER. IF PSR-NUM NOl EQUAL TO PSR-NO GO TO ADD-END. IF ,CODE-NUM = 1 OR 2 OR 3 OR 4 OR 5 GO TO ADD-PROC. DISPLAY STARS, DIAr,NOSTIC-S, STARS. REC-A UPON OUT. PS~-FILE]-~OVET PE~F~RM 00674 00675 00676 00677 00678 00679 00680 00681 0068? 00683 00684 00685 00686 00687 00688 00689 00690 00691 00692 00693 00694 00695 00696 00697 00698 00699 00700 00701 00702 00703 007 04 00705 00706 00707 00708 00709 00710 00711 00712 00713 00714 00715 00716 00717 00718 GG TO fAPE-l~I;';UT It AOD-pRGe. MovE HEe-A-MC~El TO DE5C (COnE-NUM), OESCTI I-' 00 00719 00720 00721 00722 00723 007?4 00725 00726 007'27 00728 00729 00730 00731 00732 00733 00134 00135 00736 00737 00138 00739 00740 O{l741 00142 00143 00144 00145 00746 00147 00148 00149 00150 00751 00752 00753 00754 00755 00756 00157 00758 00759 00160 00161 00762 0076'3 MOvE HEADER-SAK TO HEAO-SAKT, FOR-LINKT. MCvE PHOD-~MT TO PRODUCT.NAMET. MCVE READY-LIST TO FORWARQ-LINK. WRyTE PRIMARY-kECORD INV~LID KEY PERFORM PROGRAM-BUG. MOVE FC~-LINKT TO PRIM-KEY. RF.:AO Pk IM-SEC-L 1 ST I NV ,4L t I) KEY PERFORM PROGRAM-BUG. MCvE RtAOY-LISr TO BACKWA~D-LINK. \~RTT~ ~RIMARY-HECORD I~VALID KEY PERFORM PROGRAM-BUG, MOvE READY-LIST TO PRIM-~EY. MOvE PRIMARY.iECORnT 10 pRIMARY-RECORD. WRTTE ~RIMARY-HECORD I~VALID KEY PERFORM PROGRAM-BUG. FCUNn-pR('!D. PFQFQHM GET-EM~TY-PSR. McvE PSR-NCT TO PSR-NUMRERT. tv'OvE REAOY-PS~< TO I\!UMr~ER-qEC, PSR-SAKT. WRITE NUMBER-dEC HNAI.IO KEY PERFORM PROGRAM-BUG. MOVE PKIM-KEY TG TfM.KEY-l. MOllE PI'CCO-iJfv1T TO PPOn-r\iA~F'T. IF Op-SYSTEM-l = SPActS NEXT SENTENCE ELSE MOVE MASTER-SAK TO PRiM-KEY ~CVE _MASTER. TO OP-SVS-NAMET PERFORM SYS-FOUNO. TF OP-~VsTf.M-c = ~PACES NfXT SENTENCE ELSE MOVE MSOS-SAK TO pRiM-KEY MCVF _MS8St TO CP-SYS-NAMET PERFORM SYS-FOUND. IF ~P-SfSTEM-.i = SPACES N~XT SENTENCE ELSE MOVE RTS-SAK TO PR I !VI-Kt:YI~~VF.: tRT 5 l! T8 Op-S YS-NAMET PERFORM SVS-FOUNO. TF SPAC~S = CrJ-SYSTEM-l CP-SYSTEM-2 AND OP-SYSTEM-3 OISPLAY STA~5, UI~GNOSTIC-8~ STARS, REC-A UPON OUT, IF EQUAL-PSRT = SPACES N~XT SENTENCE ELSE PERFORM EQ-PSR-NIH. MOvE RtADY"PS'~ WRTTE PR~G'-IAr,1-RUG. GO T~ TG PSR-FIL~-REC FRO~ PS~~-KEY. PSR-FILE-RECT INVALID KEY PERFORM TO PRIM-KEY. ;-I:jVE TF.:M-KEv-l rAPE-cHtCK. F.Q-PS~-NUM. MO~E EWUAL-PS~r r.CI'.l1PUTE.. e-c = ( TO PSp. (P!;R - 8I~S) .. 12) + 504) / 504. DISPLAY STARS. DIAGNOSTIc-EI' STARS. _AO_. pSR-F I LE l-I"IOvET U~O'\l ~)lJT GO TO EQ.PSR-ENO. M~vE BLK TO ~JIJ:Ifi-KFY-l. MCVE CHAR TO :~'JM-KEY-2. PEAO NUMREH-FILE INVALID K~V MOVE ZERO TO NUMBER-REC. r~ NUMbER-REC = ZERO UISPLAY STARS, DIAGNOSTIC-El, STARS, tAOt, PS~-FILEI-MOVET UPON OUT GO TO EQ-PSR-ENO MOVE NUMBER-Rc, C TO PSH-AK-dACKT t PSR-KEY. pEAO PSR-FTLE INVALIn KEy PERFORM PROGRAM-BUG. IF PSR-AK-FOR~ = Z~RO ~OVE PSR-KEY TO PSR-AK-BACK, PSH-AK-F~"";-I/ • IF A-C IS NEG~fIVE 00764 00765 00766 00761 00768 00769 00710 00771 0017? 00773 00714 00775 00776 00777 00778 00779 00780 00781 00782 00783 00784 00785 00786 00787 00788 00789 00790 00791 00792 00793 00794 00795 00796 00797 00798 00799 00800 00801 0080~ 00803 00804 00805 00806 00R07 00808 00809 MOVE PSR-AK-FORW TO SAVE-SAK, PSR-AK-FORWT. MOvE READY-PSH TO PSR-AK-FCRW. WRITE P5R-FILE-REC INVALID KEY PERFORM PROGRAM-BUG o MOVE SAVE-SAK TO PSR.KEY. READ PSH-fILE INVALID KEY PERFORM PROGRAM-BUG. MOvE READY-PS~ TO PSR-AK-RACK. WRITE ~SR-FIL~-HEC INVALIIJ KEY PERFORM PROGRAM-BUGo tQ-PSR-ENO. EXIT. CHANGE-PROC ~ECTIUN. CHANGE-PROCESSOR. MOvE PSR-NUM 10 PSR. MOVE 2 TO GO-~EY. COMPUTE B-C = (( (PSR - BTAS) ~ 12) + 504) / 504. IF CODE-NUM NOT EQUAL TO ZERO DISPLAY STARS, DIAGNOSTIC-S. STARS, REC-A UPON OUT GO TO CARD-SEQ-ERROR. IF 8-C IS NEGATIVE DISPLAY STARS, DIAGNOSTIC-PI, STARS, REC-A UPON OUT GO TO CARD-SEQ-ERROR. MOvE BLK TO NUM-KEY-l. MOVE CHAR TO NUM-KEY-2. READ NUMBER-FILE INVALID KEY MOVE ZERO TO NUMBER-REC. IF NUMbER-REC = ZERO DISPLAY STARS, DIAGNOSTIC-P4, STARS, REC-A UPON OUT GO TO CARD-SEQ-ERROR MOvE NUMBER-REC TC PSR-KFY o MOVE PSR-EQ TO PSR-EQT. RfAD PSR-FILE INTO PSH-FIlE-RECT INVALID KEY PERFORM PROGRAM-BUG. IF LOGGED-CUT = SPACES NFXT SENTENCE ELSE MoVE LOGGED-OUT TO OUT-DTuT. IF OP-SYSTEM-l = SPACES NEXT SENTENCE ELSE MOVE OP-SYSTEM-l TO SYS-AT. IF VERS-l = S~ACES NEXT SENTENCE ELSE MOVE VERS-l TO VER-AT. IF OP-SYSTEM-~ = SPACES ~fXr SENTENCE ELSE MOVE OP-SYSTEM-2 TO SYS-HT. IF VEHS-2 = SPACES NEXT SENTENCE ELSE MOVE VERS-2 TO VER-BT. IF CP-SYSTEM-J = SPACES NEXT SENTENCE ELSE MOVE OP-SYSTEM-3 TO SYS-CT. IF VER-3 = SPMCES NEXT SE~TENCE ELSE MOVE VfR-3 TO VER-CT. IF TEST = SPAC~S NEXT SENTENCE ELSE MOVE TEST TO TESTED-T. IF 5UM-NUM = SPACES NEXT SENTENCE ELSE MOVE SUM-NUM TO SUM-NCT. ~OVE PSR-KEY TO TEM-KEY-3. CHANr,E-CHECKER. pEPFORM READ.ROUTINE. IF PSR-NUM Nor EQUAL TO PSR-NOT GO TO CHANGE-END. IF CODE-NUM = 1 2 3 4 OR ~ MOVE REC-A-MOVEl TO OEscr (CCDE-NUM) GO TO CHANGE-CHECKER. DISPLAY STARS~ OI~GNOSTIC-S, STARS, REC-C UPON OUT. :> I I:\:) o GO TO TAPE-INPUT. CHANGE-END. IF OP-SYSTEM-l ZEROES GO TO SECOND-CHECK. IF MASTER-LIST-AK = ZERO~S MOVE ~MASTER~ TO OP-SYS-NAMET 00810 00811 00812 00813 00814 OOAIS 00816 00811 OOBIA OOA19 00820 00821 00$322 00823 00824 00825 00826 00821 00828 00829 00A30 00831 00832 00833 00834 00835 00836 00831 00838 = PE~FORM \\jK. 008'39 00840 00A41 00842 00843 00844 00845 00846 00847 00848 00849 00850 00851 00852 00853 00854 NEED-S~CONDAPV-LJST, SECOND-CHECK. IF OP-SYSTEM-~ = ZEROES r,c TO THIRD-CHECK. IF MS05-LIST-A~ = ZEpOES MOVE ~MSOS~ TO OP-SVS-NAMET PEqFORM NEED-SECONDARV-LIST. THIRO-CHECK. IF OP-SYSTE~-J = ZEROES GO TO PSR-LINKAGE. IF RTS-LIST-AK = ZFRO£S ~CVE tPT5t TO OP-SYS-NAMET. pE~FCRM NEED-SfCCf\lDAPv-LTST. pSR-LINKAGE. MOVF PSw-KEv TO TEM-KEV-3. IF PSR-AK-FOR~T = ZEPCES A~O PSR-AK-8ACKT GO TO NO-PSR-L J IF PSR-AK-FORwT IS NOT EQUAL TO PSR-AK-BACKT GO TO BACK-eK. MOvE P~R-AK-F~RWT TO PSR-KEY. READ PSR-FILE INVALID KEy PERFORM PROGRAM-BUG. PEQFORM MOVE-UATA. W~JTE PSR-FILt-REC INVALIO KEY PERFORM PROGR~M-BUG. IF EQUAL-PSRS (1) = SPACES GO TO NO-CTHER-PSR. SEARCH EQUAL-?SRS AT END GO TO NO-PSR.LINK WHEN EQUAL-PSRS (PSR-INDEX) = PSR-NC ~CVE ZEROES TO EQUAL-PSRS (PSR-INDEX) GO TO NO-PSR-LINK. BACK.CK. MOvE PSH-AK-R~CKT TO PSR-KEY. READ PSR-FILE INVALID KEy PERFORM PROGRAM-BUG. pERFORM MOVE-LJATA. WRITE PSR-FILi-REC INVALrn KEY PERFORM PROGRAM-BUG. TF PSR-AK-BACK = TEM-KEV-3 GO TO BACK-CK-l. IF EQUAL-PSRS (1) = SPACES GO TO BACK.CK. SEARCH EQUAL·PSRS AT ENQ GO TO BACK-CK WHEN EQUAL-PSRS (PSR-INDEA) = PSR-NC MOVE ZEROES TO EQUAL-PSRS (PSR-INDEX) GO TO BACK·eK. SACI<:.CK-l. IF EQUAL-PSRS (1) = SPACES GO TO NO-OTHER-PSR. SEARCH EQUAL.P5RS AT END GO TO NO-PSR-LINK WHEN EQUAL-PSRS (PSR-INDEX) = PSR-NO :-10VE ZEROES TO EQUAL-PSRS (PSR-INDEX). NO·PSR-LINK. MOvE 1 TO DELETE-SUB. \ NO-~;'SR-LINK-l. 00855 00856 00857 00858 00859 00860 00861 00862 00863 OOA64 00865 00866 00867 00868 00869 00870 00871 00872 00873 00874 00875 00876 00877 0087~ 00879 00880 00881 00882 OOB83 00884 00885 00886 00887 008A8 00889 00890 00891 00892 00893 00894 00895 00A96 00897 00898 00899 IF DELETE-SUA GREATER THAN 9 GO TO NO.OTHER-PSR. MOVE EWUAL-PS~S (DELETE-SUB) TO PSR. COMPUTE B-C = «(PSR - HIAS) * 12) + 504) / 504. IF B-C IS NEGATIVE DISPLAY STARS. DIAGNOSTIC-EI, STARS. PROD.NOT. EQUAL-PSRS -IKT IS NCT E(~Ut'L TO ZERO MOVE MSOS-LIS1-AKT TO PRIM.KEY ~ERFCRM OEL~TE~LIST. IF RTS-LIST-A~T IS NCT EQUAL TO ZERO MOVE RTS-LIST-AKT TO PRIM.KEY PER~CPM UfLETE-LIST. PERFCRM DELET~-PARl-2. P~RFORM DELET~-REPaRT. ADn 1 TO DELfTf-SUB. IF DELETE-SUB IS GREAT~R THAN ~ GO TO TAPE-INPUT ELSE GO TO OEL~TE-PROC. DELETE-ALL-PRCC. ~CVE SPACES TO IDENT-PSR.STOR. DELETE .. ALL-1. PERFORM GET-AK. PERFORM GET-pSR. IF MASTER-LIS1-AKT IS NCT EQUAL TO ZERO MOVE MASTER-LIST-AKT TO PRIM-K~Y PERFCR~ DELETE-LIST~ IF MSOS-LlST-~KT IS NCT ~QUAL fO ZERO MOVE MSOS-LIST-AKT TO PRIM-~fY PERFoRM DELETE~LIST~ lF RTS-LIST-AKT IS NOT EQUAL TO ZERO MOVE ~TS-LIST-AKT TO PRIM-KEY ~ERFOR~ nELETE-LIST~ DELETE-PAR1-1. ~OVE PSR-AK-RACKT TO PSR-KEY. MOvE 1 TO eTR. nELETF-PART-2. READ PSR-FILE INVALID KEy PERFORM PROGRAM-BUG. MOVE PSR.NO TO STOR-IOENT-2 (eTR). MOvE TEM-KEY-2 TO TEM-KEy-5. WRITE PSR-FIL~-REC INVALIO KEY PERFORM PROGRAM-BUG. IF CTR = 10 GO TO OELETE-PART-3. ADO I TO CTR. IF PSR-AK-BAC~ = TEM-KEy-2 NEXT SENTENCE ELSE MOVE ~,~ TO STCR-!OENT-l (eTR) MOVE PSR.AK-8ACK TO PSR-KEY GO TO DELETE-PART-2~ DELETE'-PART-3. PfRFORM DELET~-RPT. DELETF.-PART-4. pERFORM DELETE-ALL-I. pFQFCRM DELETE-PART-l. StT INUX·STOR TO 1. SEARCH STOR-IOENT AT ENO GO TO OELETE-PART-5 WHEN STOR-IDENT-2 (INDX-STOR) D PSR-NOT MOVE PSR-AK-FORWT TO STOR-IuENT-2 (INOX-STcR). DELETF.-PART-S. PERFCRM DELET~-RPT. IF TEM-KEY-2 = TEM-KEY-5 NEXT SENTENCE ELSE GO TO OELETE-PAr ~ o 01260 01261 01262 01263 01264 01265 01266 011'.67 01?68 01269 01270 01271 01272 01273 01274 01275 01276 01277 01278 01279 012130 01281 01282 01283 012Q4 01285 01286 012A7 01288 01289 01290 01291 01292 01293 01294 01295 01291) 01297 01298 01299 01300 01301 ,01302 01303 01304 LIST .. P5R-NUM. PH T I A'I ELI S T-PS~-NUM"'REPC~T • MCvE PSR-NU~~~Hr TO LIST-AREA (DELETE-SUB). IF OELETE-SU~ ; 6 GENERAT~ LISTING-REPORT MOVE 1 TO DELt::TE-SU~. OELFj~-SUR. Aon 1 10 LlST.E:xIT. F:XTT. ALL-PR~n S~CTIC~. ALL-PR~O-"'ARA. J F ~Cf.<\4/AR0-L I ;',K TEM-t I . NEIN_TI-IE~t:. OS-NUMHE~ = 1 DrSPLay NONE THERE_ UPO~ aUl. IF OS-NUM8EP = 2 O!SPL~Y TF ~ MASTER ~ PRODUCT-NAME ~ M~OS PRODUCT-NAME ~ RTS ~ up~r,1 ~ ~ NONE THERE _ Gu T• TF OS-NUM~ER = 3 r)ISpLQY UP~\I BuT. AC TO "'RCU-CI-I~C~1. GET-FMPTY-L1ST SECTI~N. ~ PRODUCT-NAME ~ NONE THERE _ GET-LTST. MOvE PRIM-KEY 10 TEM.~~V-4. MCVE EMjoJTY-HE· ... I)·~ ..,C TO ~EL40'(-LIST" PRIM-KEY. HEAOER--(t~C8RI) TO TF.;..t-HCLD-l. READ ~HIM-SFL-LT5T tNVALID KEf PERFORM PROGRAM-BUG. t F FORv'JARD-L t ,,!K ZEPC PI>:HFCHf\1 EXPAND-L I ST-F ILE. 1-10\1£ MOVE MOVE = TO E~?T V-HEAO-kEC. TEM-KEY-4 TO PHIM-~EV. Mev!=.: TEM-HOLI'-l TO I-IEIlI)E~-"F.CCRO. ~ET-FMQTY-~SR SECTION. r,ET-PSQ-E. MOvE EMPTY-PSk-FILf TO REAOY-PSH, PSR-KEV. READ PS~.FILE INVALID K~Y PERFOH~ PROGRAM-BUG. FC~WARO-I_l i\ll'( >I ~ ..... 01305 01306 01301 01308 01309 01310 01311 01312 01313 01314 01315 01316 01317 01318 01319 01320 01321 01322 01323 01324 01325 01326 01327 01328 01329 01330 01331 01332 01333 013:14 01335 01336 01337 01338 01339 01340 01341 01342 01343 01344 01345 01346 01341 01348 01349 IF NEXT-EMPTY = ZERO P~RFORM EXPAND·P~R~FILE. MOVE NEXT-EMPTY TO EMPTY-PSR.FILEu EXPAND-LIST-FILE SECTION. EXP-LIST. CLOSE PRIM-SE~-LIST. MOVE ZERO TO 'rE~-KEY-8. ENTER COMPASS, EXPAND, PRIM-SEe-LIST, TEM-KEY-S. COMPUTE PRIM-EXPAND I: « TEIVI-KEY-a .. 100000) + PRIM.·EXPANO). OPEN 1-0 PRIM-SEC-LIST. PERFORM PRIM.KEY-UPDATE. MOvE UP-KEY TO PRIM-KEY, TEM.KEY·5. PERFORM LIST-~lLE-EMPTY. ~ovE TEM-KEY-5 TO FORWARD-LINK. EXPAND.PSR-FILE S~CTION. F.:XP-Lyc;T. C'-~SE PSR-F I Le.• MOvE ZERO TO TE~-KFy-e. FNTER COMPASS. EXPANO. PSR-FILE, T£M-KEy-e. COMPUTE PSR-EXPAND = «TE~-KEY·8 * 100000) + PSR-tXPANO). OPEN 1-0 PSR·fIlE. PERFORM PSR-KfY-UPDATE. MOVE UP-KEY TO PSR-KEY, TE~-KEY-5. PERFORM PSR-F!LE-F~PTY. MovE TEM-KEY·~ To NExT-EMPTY. EXPAND-NUM-FILE sECTION. F.:XP-NUM. CLOSE NUMBER-fILE. Et\JTER CCMPAS5, EXPAND' NUMHER-FILE, rEM-t 'L~TOR u~~p~ UPON OUT STep RUN. ESTARLISH SECTl~N. ESTAR-'. PEpFOkl·1 OPERA fOi~-C~ECK. ENTF4 COMPASS~ ~LF6SE' PRtM-sEC-LIST, PSR-FIL£, NUMBER-FILE. COMPASS, ALLOCATE. PRIM-SEC.LIST. +300. F~TER PSH-FILE .. +100. NUM~ER-FtLE. +100. OPEN oUTpUT P~IM-S~C-LIST. PSR-FILE, NUMBER-FILE. MovE SKI-CHO lO P~IM-KEY. PSR-KEY, NUM-KEY. MovE U-BIAS TO ~IAS. MovE 101 TO NU~-EXPANO. WRyTE NUM~Eq-REC FROM NUMBER~FILE-STORAGE INVALIO KEY PE~FOqM pROGRAM-BUG. PERFORM NUr.,-Kt: Y-UPDATE. 01530 01531 01532 01533 01534 01535 01536 01537 015314 01539 01540 01541 0154? 01';4'3 01';44 01545 01546 01547 01548 01549 01550 01!551 0155:'. 01553 01554 01555 01556 01557 01558 01559 01560 01561 01562 01563 01564 OPi65 01~66 01567 01568 01569 01570 01571 01572 01573 01574 PEQFORM NUM-FILE-ZERO. CLnSE NU~BER-FILE. MCvE ~ PSR F1LE HF.AOE~~ TO P-F-H-S-H. pEqF OR'-1 PSR-KE Y... UPOA TE. MovE U~-KEY TO EMPTy-PSR-FILE, FIRST-PSR-ENT. ~CvE 10100000 TO PSR-FXPAND. W~TTE PSR-FIL~-~EC FROM PSR-FILE-HEADER-STORAGE INVALID KtY cERFORM PROGRAM-BUG. MOvE SPACES fa PSR-FILE-HEADEH-STCRAGE. MOvE UP.KEY ro PSR-KEY. PEQFC~M PSR-~JLF-EMpry. CL!)SE PSR-F I V:. MOvE ~ LIST ~ILE HEADER~ TO H-R-S. MOvE P~IM-KEY TO H-P-S-SAK. PEPFORM P~(M ... KEY-UPOATE. ~CVE UP.Kt:Y IG PL4-SAK, P~IM-KEY. PFQFC~~ PRIM-~EY-UPDATE. UP.KEY 1'0 E'MPTY-HF.AO-REC. ~OvE 30100000 TO PPI~-~XPAND. MovE bKI-CHO 10 PRIM-MEY. WRtTE HEAO~R-~fCORn FROM HEQDER-RECORD-STORAGE INVALID K~Y PERFO~~ P~CGRA~-BUG. ~CvE ~LH-SAK TO PRIM-KEY, EM~TY-HEAO-REC~ H-R-S-5AK. ~cvE lERC T8 P~IM-ExPANn. ~ovE - PRIMA~Y PRonUcf LTsr- TO H-R-S. W~TTE HEAOER-~fCCRD FROM HEAnErl-R~CORn-STOQAGE TNVALIU Kty PERFO~~ p~CGRAM-~UG. ~O\lE SPACES T8 HI:ADEp-HEr:f:~n. PERFORM PRIM-KEY-UPOATE. ~OvE UP.KEY fO PPJM-KEY. ~O\lE 3010(,'000 TO PRrr-1-EX P ANn. PfPFORM LIST-~ILE-EMPTY. ~cvE ClaSE PRIM-S~C-LIST. (.;0 TO U.PROC-l. COLL.ECT SECTION. COLL.-RF="G1N. np~N 1-0 PR I "i-SF'C-L r:) T, PSR-F.I U-:, NUMI:1ER-F I LE. MOvE tiKI-CHO TO PRtM-K~Y~ p-~EY, NUM-KFV. RE~O P~lM-SEC-LIST INro ~EAOER·RECCRO-STORAGE I NVAL I D KI': Y PfRFORI-.J P~?CGRAf"'-RUG. READ NU~AER-FlLE INTO ~lJMBER-FILE-STCRAGE INVALID KEY PERFORM PRO GR1-\ til! - A~ J (.:i MovE P!"(lM-EXP~~NO To IJP-KFY. SIJRTRACT 1 FR;)M U-~LK. SUqTRACT L FR(;"'1 NUM-FX.I;)A~J(J GIVING BLK. 01575 01576 01;77 01578 01579 01580 01581 01582 015R3 01584 01585 01586 01587 01588 01589 01590 01591 01592 01593 01594 01595 01596 01597 01598 01599 01600 01601 01602 01603 01604 01605 01606 01607 01608 01609 01610 01611 01612 01613 01614 01615 01616 01617 01618 01619 ENTER COMPASS. ALLOCATE, P-S-LIST. U-BLK, N-FILE, ALK. OPEN 1-0 P-S-LIST. CP~N OUTPUT N-FILE. COLL-P~IMARY. MOVE PLH-SAK TO pqIM-KEY. PERFORM P-KEY-UPOATE. MOVE UP-KEY TO PLH-SAK. WRITE T-RtC-2 FROM HEADER.RECORD-STORAGE INVAL1U KEY PERFORM PROGRAM-BUG. R~AD PHIM-SEC-LIST INVALYO KEY PERFORM PROGRAM-BUG, IF FORWARU-LINK = AACK~ARO-LINK AND HEADER-SAK GO TO COLl,-I\JUivl-EN(). MOVE FORWARD-LINK TO ~RIM-KEY. MOVE BACKWARD-LINK TO TEM-KEY-l. MOVE UP-KEY TO P-KEV. HEADER-SAK. rEM.KEY-2 ~ERFORM P-KEY-UPOATE. MOVE UP-KEY TO FORWARU-LINK. tAJRt TE T-REC-2 FROM P;HMAKY ..Rr·CORD INVALIO KEY PEPFCR~ PROGRA~-HUG. COLl.PRIM-l. IF PRIM-KEY = TEM-KFY-1 ~O TO CCLl-PRI~-2. pEAO PRIM-SEC-LIST INVQLIO KEY PERFORM PROGRAM-BUG, MOVE FOHWARO-LINKTO PP.II'v1-KEY. MOVE P-KEY TO BACKWARD-LINK. MOVE TEM-KEY-~ TO HEAUEH-5AK. MOvE UP-KEY TO P-KEV. PERFORM P-KEY-UPOATE. MOVE UP-KEY TO FORWAPD-LTNK. WRITE T-REC-2 FqOM PRIMARY-RECORD INVALID KEY PERFORM PROGRAM-8UG. GO TO cell-PRIM-l. CCLL.PRIM-2. READ PRIM-SEC-LIST INVALID KEY PERFORM PRCGRAM.aUG. MOVE P-KEY TO HACKWARO-LINK. MOVE TEM-KEY-~ TO FORWARn-LINK, HEADER-SAK. MOVE UP-KEY TO p-KEY.rEM-KEY~7. WRITE T-REC-2 FROM P~IMARY-RECORD INVALID K~Y PERFO~M PROGRAM-BUG. MOVE TEM-KEY-2 TO P-KEv. READ P-S-LtST I~To pRIMARY-RECORD INVALID ~€Y PERFORM PRCGRA~-BUG. MOVE TEM-KEY·' TO 8ACKwAPO-LyNK. WRITE T-REC-2 FROM P~IMARY-RECCRD INVALID KEY g~RFC~M PROGRAM-BUG. >I c" 00 01620 01621 01622 01623 01624 01625 01626 01627 01628 01629 01630 01631 01632 01633 01634 01635 01636 01637 01638 01639 01640 01641 01642 01643 01644 01~45 01646 01647 01648 01649 01650 01651 01652 01653 01654 01655 01656 01657 01658 01659 01660 01661 01662 01663 01664 MOvE FORWARD-LINK TO ~~KEY' TE~-KEY-6. MOvE H£ADER-SAK TO TF.~-KF.Y-2. COl.l-SEC-!. IF P-KEy = TfM-KEY-? GO TO COll-SEC-DONE. READ P-S.LIST INTO pRIM4RY-RECORDT INVALID K€Y PF.PFOR~ PROGR4~-8UG. t F MASTER-SAKT = ZEPO GO TO CO~L-SEC·2. MOVE 1 TO I. MO"E TEM-KEY ... ' TO p-KEY. PERFORM P-KEY-UPDATE. MOvE MASTER-SAKT TO PRIM-KEY. MOVt UP-KEY T~ MASTER-SAKT. P~~FOHM LlST-~~LL~CT. CCl.l-SFC-2. yF MSCS.SAKT = ZERO 60 TO COlL-SEC-3. MOvE 2 TO I. MOVE TEM-KF.Y-I TO P-KtY. PE~FORM P-KEY-UPOATE. MOVE MSOS-SAKf TO PRIM-K~Y. ~OV~ UP-KEY T~ MSCS-~AKT. PFRFCRM LIST-COLLECT. cOL.l-SFC-3. TF RTS-SAKT = ZEHC GO TO COLl-SEC-4. MOVE 3 TO I. MOvE T~M-KEY-J TO P-K~Y. PFRFORM P-KEY-0POATE. MOVE RTS-SAKT TO PRIM-KEY. MOVE UP-KEY T~ RTS-SAKT. PFRFORM L!ST-~OlLECT. COL.l-S~C-4. ~OVE TEM.KEY·6 TC p-~fY. WRITF. T-R€C-2 F~C~ P~IMAQY-RECCRDT INVALID KtY PERFOR~ PROGRAM-AUG. MOVE FOR-LINKl TO p-~EY, TEM.KEY-6. ~c 10 COLL-SEC-l. COl.L-SFC-DONF.. MOVE TEM-~~Y-I TO P-KtY. P~RFORM P-KEY-UPOATE. MOVE UP-KEY TO EMPTY-HEAn-HEC. MOVE SKi-CHoro P~IM-~EY. WRITE HEAOE~-~~CCRn FROM HEAOER-RECORO-STORAGE INVALID K~Y P~RFCRM PROGRAM-BUG. ~CvE PlH-SAK lC p-KEY. COLl-SEC-DONE-l. IF P-KEy = ~MPTY-HEAD-REC ~O TO COLL-SEC-OCNE-2. 01665 01666 0166 ·7 01668 01669 01670 01671 01672 01673 01674 01675 01676 01677 01678 01679 01680 01681 01682 01683 01684 01685 01686 01687 01688 01689 01690 01691 01692 01693 01694 01695 01696 01697 01698 01699 01700 01701 01702 01703 01704 01705 01706 01707 01708 01709 01710 PE~FORM PRIM-KEY-UPDATE. MOvE UP-KEY TO PRIM-KEY. READ P-S-LIST INTO PRIMARY-RECORD INVALID K~Y PERFORM PROGRAM-AUG. PERFORM P-KEY-UPOATE. MOVE UP-KEY TO P-KEY. ~0 TO COLL-SEe-DONE-l. CCLL-SF.C-DCNE-2. MOVE SPAC~S TO HEADER-RECORD. PEpFORM LIST.FILE-EMPTY. CLOSE PRIM-SEe-LIST. P-S-LIST. IF u-BIAS NOT EQUAL Te SPACES GO TO CCLL-NU~~ENb. WRITE T-REG-l FROM ~UMRER-FILE-STORAGE INVALID KEY PERFoRM PROGRA~-BUG. cOLL-"HJI'v1-1. PE~FORM NUM-K~Y-UPDAT£. READ NUMBER-FilE INVALID KEY GO TO CCLL-NUM-!NO, JF NUMBER-REC NOT = lERO GO TO COLL-NUM~? Aon 1 TO dIAS. GO TO COlL-NUM-l. COLl-NUM-2. wRITE T-REC-' FROM NUMBER-REC INVALID K~Y PEPFO~M PROGRAM-sUG. !F NUM-KEY-1 = NUM-EXPANO Go TO CCLL-NUM-3. PF.RFORM NUM-KF::Y-l/PDATE. PEAD NUMBER-FILE INVALID KEy PERFORM PROGHAM.8UG~ ~O TO COLL-NUM-2. COLL-NljM-3. ~ovE ZEkC TO NUMBER-REe. WRlTE T-~EC-l FPOM NUM~ERuREC tNVALIU K~Y GO TO COLL-NUM-4~ r,~ TO CCLL-NU i -1-3. CCLl-NU·"1-4. rL~SE N-FILE. CP~N INPUT ~-~lLE. PE~D N-FILE AT END PERFoRM PRCGRAM-BU~, Ma\lE SKI-CriO ro NlJM-t<£Y. wRyTE NUMBER-REC FROM NU~BER-FILE-STORA~E INVALID K~Y P~QFOHM P~OGRAM·AUG. CCLl-NIIM-S. P~~FORM NUM-KtY-UPDATE. IF NUM-KEY = NUM~EXPAND GO TO COLL~NUM-ENO. READ N-FILE AT END PE~FO~M PROGRA~-~UG. GO TO COLL-NU M-5. COLL .. NIJM-ENO. . CLOSE NUMHER.FILE, N_FILE~ >I ~ o 01711 01712 01713 01714 01715 01716 01717 01718 01719 01720 01721 01722 01723 01724 01725 01726 01727 0172Q 01729 01730 01731 01732 01733 01734 01735 01736 01737 01738 01739 01740 01741 0]742 01743 01744 01745 01746 tJ1747 01148 01749 01750 01751 01752 01753 01754 01755 ENTER COMPASS. RLEASF. P-S-LIST, N-FILE. no TO U-PHCC.l. LIST-COLLECT SECTIUN. LC"']. READ PRIM-SEC-LIST INVALtO KEY PERFCRM PROGRAM-BUG. MOvE TEM.KEY-o TO HEADER-LINK. IF FORWARD-L. I t\lK = RACKWARD-L I NK AND HEAOER-SAK MOVE. UP-Kt:Y TO FORWARD-LINK, BACKwARD-LINK, HEAOER-SAK, P-KEY. TE~-KEY-1 GO TO LC-E. MOVE BACKWAHn-LINK TO TEM-KEy-S. ~CVE UP-KEY TG P-KFY, HEADER-SAK, TEM-KEY-4. PEPFCR~ P-~EY-UPD4TE. MovE FORWA~O-LINK TO PRt~-KEY. MOvE UP.~EY fa FC~WAKO-LtNK. wRITE T-REC-~ FRO~ SECONnA~Y-RECORD INVALID K~Y P~RFOqM PRCGRAM-6~G. LC-2. rF PRIM.KEY = TEM-KEY-5 GO TO LC-3. READ PRIM-SEe-LIST INVALID KEY PEHFCRM PROGRAM-BUG. MOVE FCRWARO.L!NK TO ~RrM-KEY. MovE P-KEY To &ACKWARO-LI~K. MOVE UP-KEY fO p-~EY. PEPFORM P-KEY-UpnATE. MOVE UP-Kt:. Y TO fOFhJAPU-L I NK. MOvE TEM-KEY_4 TO HEAOE~-SAK. WRTTE T-~EC-~ FROM SECONOARY-RECORD INVALID K~Y PfPFoHM PROGRAM-RUG. MOVE PSR.SAK iO PSR-KEY. READ pSR.FILE I~VALID KEy PERFORM PROGRAM-BUG.' ~ovE P-KEY TO OP-KEY (I). W~ITE PSR-FILf-HEC INVALID KEY PERFORM PROGRAM-BUG. GO TO LC.2. LC-3. READ PRIM-SEe-LIST INVALID KEY PERFORM PROAQAM~aUG. MovE T~M.KEY-~ TO FORWARD-LINK, HEADER-SAK. . MovE P-KEY TO 8ACKWAPU-LINK. MOVE UP-KEY TO P-KFY, TEM-KEY-7. W~ITE T.REC-~ FROM SECONDARY-RECORD INVALID KEY P~RFoRM PRCGRAM-~UG. ~CVE PSR-SAK TO P~R-KEY. REaD PSR-FILE INVALI0 KEY PERFORM PROGRAM-~UG. MOvE P-KE Y ro OP-KFY (I) • WRITE PSP-FILt-REC INVALID KEY PERFORM PROGRAM-BUG. MOvE TEM-KEY-4 TO P.KEY. READ P-S-LIS1' INTO SECONDARY-RECORD 01756 01757 01758 01759 0]760 01761 ~OVE INVALID K~Y PEPFcR~ PROG~A~.~UG. TEM·KEY.1 TO RAC~WARO~LIN~. LC-E. wRTTE T-REC-2 FROM SECONDARV-RECORD INVALIO KEY PERFORM PROGRAM-aUG, END PROGRAM. THE COBOL LANGUAGE B COBOL CHARACTER SET The characters recognized by COBOL include the letters of the alphabet, digits, and those characters, commonly called symbols, which are used in expressions, relations and editing. The complete computer character set consists of the 63 characters listed in the COBOL collating sequence (appendix D). Character Set for Words Letters A-Z, digits 0-9, and hyphen (-) Character Set for Punctuation comma semicolon period II quotation mark left parenthesis right parenthesis space Character Set for Arithmetic Operators + addition subtraction * multiplication / division ** exponentiation 60229400 B-1 Character Set for Relational Operators > greater than < less than equal to Character Set for Editing B space o zero + plus minus CR credit DB debit Z zero suppress * check protect $ currency sign comma (decimal point) period (decimal point) / slash WORDS A word is composed of a combination of not more than 30 characters chosen from the character set for words. The word cannot begin nor end with a hyphen. The space character is not allowed in a word; the space is a word separator. Wherever a space is used, more than one may be used. A word is ended by a space, or by a period, right parenthesis, comma, or semicolon followed by a space. A space must not immediately follow a left parenthesis or a beginning quotation mark. A space must not immediately precede a right parenthesis or an ending quotation mark except when the space is included in a literal. Words are specified by the user or they are COBOL reserved words. User-defined words include all names assigned by the user to elements in the program; they must never be from the set of COBOL reserved words. Ljterals are also considered user-defined words, but they are not restricted to the limits imposed on other words. B-2 60229400 Data Name A data name is a word containing at least one alphabetic character. It names a data item in the Data Division (file names, library names, mnemonic names, report names are all formed like data names; their functions are defined in context. ) Examples: QUANTITY -ON-HAND MESSAGE LAST-YEAR- PROFIT 100A ITEM-NUMBER FILE-1 Condition Name A condition name is assigned to a value, set of values or range of values, within the complete set of values that a.data item may assume. The condition name must contain at least one alphabetic character. Each condition name must be unique, or be made unique through qualification. The associated data item may be the qualifier for any of its condition names. If references to this data item require indexing, subscripting or qualification, references to any of its condition names require the same combination of indexing, subscripting or qualification. -A~"'£.-- lU ~.1 ., \J f).";t-A ,.;H~~ ,.... ~ .,,'" ._.3- --v Example: I 03 --" ~~ GRADE 88 88 """ GRADE-ONE VALUE IS 1. GRADE-TWO VALUE IS 2. 88 GRADE-SCHOOL VALUES ARE 1 THRU 6. 88 JUNIOR-HIGH VALUES ARE 7 THRU 9. 88 HIGH-SCHOOL VALUES ARE 10 THRU 12. 88 GRADE-ERROR VALUES ARE 13 THRU 99. A con ition name may be used in conditions as an abbreviation for the relation condition. For example: IF GRADE-ONE ... Procedure Name A procedure name identifies a paragraph or a section in the Procedure Division. A procedure name may be composed solely of numeric characters. Two numeric procedure names are equivalent only if they are composed of the same number of digits and have the same value; 0023 is not equivalent to 23. Examples: PROC-l. A-INPUT SECTION. 002. 100 SECTION. 60229400 B-3 Identifier An identifier is a data name followed, as required, by the syntactically correct combination of qualifiers, subscripts, or indexes necessary to make unique reference to a data item. Examples: DA Y OF MASTER-DATE FIRST IN GRADE-ONE MALE-FEMALE (2,5,1) Qualifier Every name in a source program must be unique, either because no other name has the identical spelling, or because the name exists within a hierarchy of names, such that it can be made unique by mentioning one or more of the higher levels of the hierarchy. The higher levels are called qualifiers when used in this way. The qualification process is performed by writing IN or OF after the name followed by a qualifier. The choice between IN or OF is based on readability; they are logically equivalent. Only sufficient qualification must be mentioned to make the name unique. Whenever the data item or paragraph is referenced, any necessary qualifIers must be written as part of the name. Literal A literal is a string of characters. Literals may be numeric or non-numeric. Non-Numeric Literal A non-numeric literal is a string of any characters allowable in the computer's character set (including reserved words but excluding the quotation mark) and bounded by quotation marks. The value of a non-numeric literal is the string of characters itself, exc1udiilg the quotation marks. Any spaces included between the quotation marks are part of the non-numeric literal and, therefore, are part of the value. All non-numeric literals are classed as alphanumeric. They may contain from 1 to 120 characters excluding the quotes. Examples of non-numeric literals: "LINE-COUNTER" "PAGE 144 IS MISSING" "A BCD E F" "-125.56" "PAGE NUMBER IS " The literal "-125.56" is not the same as the literal -125.56; the quotation marks make it a nonnumeric literal and prevent it from being used for computation. B-4 60229400 Numeric Literal A numeric literal is a string of characters chosen from digits 0 thru 9, the plus sign, the minus sign, and the decimal point. Its value is the algebraic quantity represented by the characters in the literal. Every numeric literal is in the numeric category. Rules for forming numeric literals: • It must contain at least one and not more than 18 digits. • It can contain only one sign character. • It can contain only one decimal point. The decimal point is treated as an assumed decimal point, and may appear anywhere in the literal except as the rightmost character. A literal without a decimal point is an integer. If a sign is used, it must appear as the leftmost character of the literal. An unsigned literal is positive. If a literal conforms to the rules for forming a numeric literal, but is enclosed in quotation marks, it is a non-numeric literal. Examples of numeric literals: 15067893251459 -12572.6 +25675 1435.89 Floating Point Literal A floating point literal is a numeric literal written in the following form. [ ± ] coefficient E I ±] exponent Rules for floating-point literals: The coefficient may have from one to eleven digits in the range of 0 ~ decimal point .. • The coefficient is followed immediately by the symbol E, followed by an optional plus or minus sign, followed by one to three numeric digits which indicate the power of the ex-: ponent. A zero exponent may be written as 0, 00, or 000. An unsigned exponent is assumed to be positive. The exponent is to the base 10 and may range from 0 through 308. • The plus and minus signs preceding the coefficient and exponent are optional. All other elements of the format are required. • A floating point literal must appear as a continuous string of characters with no intervening spaces. ~0229400 n~ 36 2 -1 and a • B-5 Examples 15.2E5 +2.725E-6 12.4EIO -4.0E+12 -.425EIOl -5.124E-20 +30E-IOl 405E+305 60.5EO .68719476735E308 Reserved Words Reserved words defined in appendix C are used for syntactical purposes and may not appear as user-defined words. Reserved words areused as key words, optional words, and connectives. KeyWord A word that is required when it appears in a source program format is called a key word. Within each format, key words are uppercase and underlined. All verbs, for example, are key words which must be included to designate the operation to be performed. Optional Words Uppercase words in a format that are not underlined are called optional words since they may appear or not as the user chooses. The presence or absence of each optional word within a format does not affect the compiler's translation. An optional word must not be misspelled or replaced by another word not explicitly stated to be its equivalent. Special Registers The word TALLY is the name of a special register implicitly described as a five-digit integer. TALLY is used primarily to hold information produced by the EXAMINE statement. TALLY may also be used as a data name wherever an elementary data item of integral value may appear. The special registers SYSTEM-DATE and SYSTEM-TIM.E are restricted for use as the subjects of MOVE statements in the Procedure Division and the objects of SOURCE clauses in the Report Section of the Data Division; they may not be used as literals. In a MOVE statement, the receiving field must have a PICTURE of X(8) . Likewise, in the Report Section, the elementary item description containing the SOURCE clause must have a PICTURE clause of X(8) . SYSTEM-DATE represents the current date in the form mm/dd/yy: mm = month, dd;::: day, yy = year. SYSTEM-TIM.E represents the time of day when the object program begins execution. Its format is hh/mm/ss: hh = hour, mm = minute, ss = second. B-6 60229400 Figurative Constants Certain constants, called figurative constants, have been assigned fixed data names. Figurative . constants must not be bounded by quotation marks, or they become non-numeric literals. The singular and plural forms of figurative consiants are equivalent and may be used interchangeably. Figurative Constant Meaning ZERO Represents the value 0, or one or more of the character 0, depending on context. ZEROS ZEROES SPACE Represents one or more blanks or spaces. SPACES HIGH-VALUE HIGH-VALUES LOW-VALUE LOW-VALUES QUOTE QUOTES ALL literal 60229400 Represents one or more of the character with the highest value in the COBOL collating sequence. Represents one or more of the character with the lowest value in the COBOL collating sequence. Represents one or more of the character II or the character substituted for it on computers that do not use a quotation mark. The word QUOTE cannot be used in place of a quotation mark in a source program to bound a non -numeric literal. Represents one or more of the string of characters comprising the literal. The literal must be either a non-numeric literal or a figurative constant other than ALL literal. When a figurative constant is used, the word ALL is redundant and may be used for readability only. B .... 7 When a figurative constant represents a string of one or more characters, the length of the string is set by the compiler according to the following rules: • When the figurative constant is moved to or compared with another data item, its character string is repeated character by character on the right until the size of the resultant string is equal to the size in characters of the associated data item. • When the figurative constant appears in a DISPLAY, EXAMINE or STOP statement, the length of the string is one character. ALL literal may not be used with DISPLAY, EXAMINE or STOP. A figurative constant can be used any place where a literal appears in the format. When the literal is restricted to numeric characters, ZERO (ZEROS) (ZEROES) is the only figurative constant permitted. Examples: MOVE QUOTES TO AREA-A Assuming AREA-A consists of five character positions, this statement moves the configuration """"" to AREA-A. DISPLAY QUOTE "NAME" QUOTE This statement results in "NAME" being displayed. MOVE SPACES TO TITLE The item named TITLE is set to all spaces (or blanks). MOVE ALL "4 f1 TO COUNT-FIELD Assuming COUNT-FIELD has a picture of X(4) , a 4 is placed in each position of the item named COUNTFIELD. IF ALL "4" IS EQUAL TO COUNT-FIELD... Assuming COUNT-FIELD has a picture of 9(4) or X(4) , this compares 4444 with the value of COUNTFIELD. MOVE ZEROS TO REGISTER This places 0 in each position of the item named REGISTER. MOVE ALL flNO-OP" to EMPTY Assuming EMPTY consists of 12 character positions, EMPTY is filled with repetitions of the characters of the non-numeric literal, NO-OPNO-OPNO. B-8 60229400 Connectives There are three types of connectives: • Qualifiers used to associate a data name or paragraph name with its qualifier: OF, IN. • A series connective that links two or more consecutive operands: ,(comma) or two or more consecutive clauses: ; (semicolon). • Logical connectives used in the formation of conditions: AND, OR, AND NOT, OR NOT. Examples: A IS GREATER THAN B A IS GREATER B A GREATER THAN B A GREATER B All these expl~essions are correct and have the same meaning whether the optional words IS and THAN are used or not. PUNCTUATION The punctuation symbols, period, comma, and semicolon, are shown within the formats. All division and section headers are followed by a period with the remainder of the line blank. Specific rules for each division follow: Identification Division: Commas and semicolons may be used for readability within comment paragraphs; they are not shown in the formats. Each paragraph and paragraph name must be terminated by a period followed by a space. Environment Division: Commas and semicolons shown in the formats are optional. Each paragraph and paragraph name must terminate with a period followed by a space. Data Division: Commas and semicolons shown in the formats are optional. Each file and data description entry must be terminated by a period. Procedure Division: Commas shown in the formats are optional. A semicolon may be used between statements in a sentence. In addition, the semicolon may appear in an IF statement immediately following the condition and also immediately preceding the keyword ELSE. Each sentence must be terminated by a period and a space. Procedure names are terminated by a period and one or more spaces. 60229400 B-9 When a period, semicolon, or comma is used, it immediately follows a word and must be immediately followed by a space. A beginning quotation mark is not followed by a space nor is an ending quotation mark preceded by a space unless the space is part of the nonnumeric literal. A left parenthesis is followed by a space only when followed by + - (; in these cases a space is required. A right parenthesis is preceded by a space only when it is preceded by a ). A right parenthesis is always followed by a space. Parentheses must be paired. B-IO 60229400 c COBOL RESERVED WORD LIST ACCEPT CF CURRENCY· EXAIVIINE ACCESS CH DATA EXIT ACCESS-PRNACY CHARACTERS DATE-COMPILED FD ACTUAL CLOSE DATE-WRITTEN FILE ADD COBOL DE FILE-CONTROL ADDRESS CODE DECIMAL FILE-LIMIT ADVANCING COLUMN DE CilVIA L- POL1\IT FILE-LIMJTS AFTER COMMA DECLARATNES FILLER ALL COMMON-STORAGE DENSITY FINAL ALPHABETIC COMP DEPENDING FINIS ALPHANUMERIC COMP-l DESCENDING FIRST ALTER COMP-2 DETAIL FOOTING ALTERNATE COMPASS DISK FOR AND COMPUTATIONAL DISPLAY FORTRAN ARE COMPUTATIONAL-l DNIDE FROM AREA COMPUTATIONAL-2 DNISION GENERATE AREAS COMPUTE DOWN GNING ASCENDING CONFIGURA TION EDITION-NUMBER GO ASSIGN CONSOLE ELSE GREATER AT CONTAINS END GROUP AUTHOR CONTIGUOUS ENDING HEADING BEFORE CONTROL ENTER HIGH BEGINNING CONTROLS ENVIRONMENT HIGH-VALUE BINARY COpy EQUAL HIGH-VALUES BLANK CORR EQUALS HOLD BLOCK CORRESPONDING ERROR HYPER BY CRT EVERY I-O 60229400 C-l I -O-CONTROL LOW-VALUES PIC REPORTS ID MEMORY PICTURE RERUN IDENTIFICA TION MODE PLUS RESERVE IF MODIFICATION - PRIVACY POSITION RESET IN MODULES POSITIVE RETENTION -CYCLE INDEX MOVE PRINTER RETURN INDEXED MULTIPLE PROCEDURE REVERSED INDICATE MULTIPLY PROCEED REWIND INITIATE NEGATIVE PROCESS RF INPUT NEXT PROCESSING RH INPUT-OUTPUT NO PROGRAM-ID RIGHT INSTALLA TION NOT PUNCH ROUNDED INTO NOTE QUOTE RUN INVALID NUMBER QUOTES SA IS NUMERIC RANDOM SAME JUST OBJECT-COMPUTEH RD SCRATCH JUSTIFIED OCCURS READ SD KEY OF READER SEARCH KEYS OFF RECORD SECTION LABEL OMITTED RECORDING SECTOR LAST ON RECORDS SECURITY LEADING OPEN RECORD-MAUK SEEK LEFT OPTIONAL REDEFL.~ES SEGMENT-LIMIT LESS OR REEL SEGMENTED LIMIT OUTPUT REEL-NUMBEH SELECT LIMITS OWNER RELEASE SENTENCE LINE OWNER-ID REMARKS SEQUENCED LINE-COUNTER PAGE RENAMES SEQUENTIAL LINES PAGE-COUNTER RENAMING SET LOCK PERFORM REPLACING SIGN LOW PF REPORT SIZE LOW-VALUE PH REPORTING SORT C-2 60229400 SOURCE UNIT SOURCE-COMPUTER UNTIL SPACE UP SPACES UPON SPECL.t\L'-'NAMES USAGE STANDARD USE STATUS USING STOP VALUE SUBTRACT VALUES SUM VARYING SYNC WHEN SYNCHRONIZED WITH SYSTEM-DATE WORDS SYSTEM - INPUT WORKING-STORAGE SYSTEM -OUTPUT WRITE SYSTEM - PUNCH ZERO SYSTEM-TIME ZEROES TALLY ZEROS TALLYING TAPE TERMINATE THAN THEN THROUGH} THRU equivalent TIMES TO TRACE TRACK TTY TYPE UNEQUAL 60229400 C-3 D COBOL COLLATING SEQUENCE The following table shows the relationship between characters of the COBOL set and their equivaient machine, printer, and punched card codes. They are listed according to ascending collating sequence. The COBOL quote (If) character is represented as a not-equal-to (f) sign on the printer. The 4-8 multiple punch must be used to represent the quote in a COBOL source card. Characters shown with an asterisk are not available in COBOL source language but would be treated in the sequence indicated if present in data. I I I I Cards Collating Sequence Internal Code External 00 60 20 blank 01 15 15 8,5 02 16 16 %* 8,6 03 17 17 [* 8,7 04 75 35 05 76 36 06 77 37 1\* 0,8,7 07 55 55 t* 11,8,5 08 56 56 09 57 57 10 35 75 12,8,5 11 36 76 12,8,6 12 33 73 12,8,3 13 34 74 12,8,4 14 37 77 12,8,7 15 20 60 + + 12 16 53 53 $ $ 11,8,3 17 54 54 * * 11,8,4 18 40 40 19 61 21 60229400 Code Printer Character -+- Character * Punch 0,8,5 0,8,6 11,8,6 11,8,7 > 11 / / 0,1 D-l Cards CoUating Sequence D-2 Internal Code External Code Printer Character Character Punch 20 73 33 , , 0,8,3 21 74 34 ( ( 0,8,4 22 13 13 = = 8,3 23 14 14 f- (da§.h) 24 32 72 < +0* 12,0 25 21 61 A A 12,1 26 22 62 B B 12,2 27 23 63 C C 12,3 28 24 64 D D 12,4 29 25 65 E E 12,5 30 26 66 F F 12,6 31 27 67 G G 12,7 32 30 70 H H 12,8 33 31 71 I I 12,9 34 52 52 v* -0* 11,0 35 41 41 J J 11,1 36 42 42 K K 11,2 37 43 43 L L 11,3 38 44 44 M M 11,4 39 45 45 N N 11,5 40 46 46 0 0 11,6 41 47 47 P P 11,7 42 50 50 Q Q 11,8 43 51 51 R R 11,9 44 72 32 ]* 45 62 22 S S 0,2 46 63 23 T T 0,3 47 64 24 U U 0,4 48 65 25 V V 0,5 I 8,4 I 0,8,2 60229400 Cards Collating Sequence Internal Code External Code 49 66 26 W W 0,6 50 67 27 X X 0,7 51 70 30 Y Y 0,8 52 71 31 Z Z 0,9 00 :* 00 12 0 0 0 L1 01 01 1 1 1 55 02 02 2 2 2 56 03 03 3 3 3 C:::17 LS LESS or < Elements Common to MS and USASI COBOL RESERVE 1~Oteger- 1 \~ In ALTERNATE AREA clause in FILE-CONTROL For M8 COBOL: For USASI COBOL: NO Produces no buffering NO 1 Produces single buffering 2 (or clause omitted) Produces no buffering for unblocked files 1 Produces single buffering for unblocked files and double buffering for blocked sequential files 2 Produces double buffering for blocked and unblocked sequential files Produces double buffering H-2 (or clause omitted) 60229400 The elements given below are available in USASI COBOL but not in IvIS COBOL. Except for abbreviations, which can be replaced by the complete word, these elements represent new features which have no equivalent in MS COBOL. ENVIRONMENT DIVISION: MODULES option of OBJECT-COMPUTER paragraph. (documentation only) Literal IS mnemonic-name clause of SPECIAL-NAMES paragraph CURRENCY SIGN IS literal clause of SPECIAL-NAMES paragraph DECIMAL-POINT IS COMMA clause of SPECIAL-NAMES paragraph RENAMING clause of FILE-CONTROL paragraph DAT A DIVISION: COlvnVION-STORAGE SECTION REPORT SECTION SD entry (sort file description) File Description: SECTOR/TRACK and SEGMENTED/CONTIGUOUS options of RECORDING MODE clause VALUE OF option of LABEL RECORD IS data-name clause REPORT clause Record Description: level-number 66 and RENAMES clause INDEX and COMPUTATIONAL-2 options of USAGE clause JUSTIFIED RIGHT clause ASCENDING/DESCENDING KEY and INDEXED BY options of OCCURS clause PIC abbreviation of PICTURE COMP abbreviation of COMPUTATIONAL COMP-l abbreviation of COMPUTATIONAL-l 60229400 H-3 PROCEDURE DIVISION: GIVING series in ADD, SUBTRACT, lVIUL TIPLY and DIVIDE TO series in ADD BY option in DIVIDE UNIT option in CLOSE language-name option of ENTER UNTIL and VARYING options of PERFORM REVERSED option of OPEN INPUT REPLACING and procedure-name options of COpy BEFORE/AFTER ADVANCING option of WRITE compound conditions joined with AND COMPUTE verb Sort Feature: RELEASE verb RETURN verb SORT verb Table Handling Feature: SEARCH verb SET verb Source Program D3bugging Feature: TRACE verb Report Writer Feature: BEFORE REPORTING option of USE statement GENERATE verb INITIATE verb TERMINATE verb H-4 60229400 DIAGNOSTICS DiAGNOSTICS Each diagnostic generated by the compiler has the following format: nnnnn c English text diagnostic word / D idn nnnnn Source program line number where error occurred. c Character code specifying severity of error: __ • _ _ ...1 WUl.U D idn S Severe error. No object code is generated for the statement; execution and binary deck generation suppressed. E Probable error, unpredictable. W Warning. A minor inconsistency encountered. Code generated for stateIr?ent; however, results during execution are Program expected to run correctly. Current source text element deemed erroneous. Internal name assigned to a data-name for PASS 2 diagnostics. In all cases, program compilation continues in order to diagnose additional errors. IDENTIFICATION! ENVIRONMENT DIVISION Type Message W *ACCESS MODE* CLAUSE IGNORED FOR NONMASS STORAGE FILE. W *ACCESS MODE* CLAUSE REQUIRED FOR MASS STORAGE--ASSUMED SEQUENTIAL. W *ACTUAL KEY* CLAUSE IGNORED FOR NONMASS STORAGE FILE. S *ACTUALKEY* MISSING FOR RANDOM FILE--SET TO SEQUENTIAL. S *ASSIGN* MISSING--FILE IGNORED (word) S COMPUTER NAME MUST BE *3300* OR *3500* (word) S *DATA DIVISION* HEADING MISSING--COMPILATION TERMINATED. S DATA-NAME VSED WITH ACTUAL KEY CLAUSE MAY NOT BE QUALIFIED. W DUPLICATE CLAUSE IN SELECT STATEMENT--IGNORED (word) S DUPLICATE *CURRENCY SIGN* CLAUSE--SECOND CLAUSE IGNORED. S DUPLICATE *DECIMAL POINT* CLAUSE--SECOND CLAUSE IGNORED. S DUPLICATE HEADER--FIRST DEFINITION ACCEPTED (word) S DUPLICATE SELECT STATEMENT FOR CURRENT FILE-NAME--2ND SELECT IGNORED. W *END REEL* IN *RERUN* CLAUSE NOT VALID FOR MASS STORAGE--ASSUMED *END UNIT*. W *END UNIT* IN *RERUN* CLAUSE NOT VALID FOR TAPE FILE--ASSUMED *END REEL*. 60229400 I-I Type Message W *END UNIT* INVALID IN *RERUK* CLAUSE FOR RA.NDOM ACCESS FILE. W *FILE-LIMITS* CLAUSE IGNORED FOR NON-MASS STORAGE FILE. S FILE NOT DEFINED VIA A *SELECT* STATEMENT (word) W HEADER OUT OF ORDER--IGNORED (word) S *IDENTIFICATION DIVISION* MISSING OR OUT OF ORDER. S ILLEGAL CLAUSE IN SPECIAL-NAMES SECTION (word) S ILLEGAL CLAUSE WITHIN SELECT STATEMENT (word) S ILLEGAL *DSI* IN HARDWARE ASSIGNMENT--IGNOHED (word) S ILLEGAL DSI IN *RERUN* CLAUSE (word) S ILLEGAL FILE-NAME IN *RENAMING* CLAUSE--CLAUSE IGNORED (word) S ILLEGAL FILE-NAME IN SELECT STATEMENT--FILE IGNORED (word) S ILLEGAL HARDWARE-NAME (word) S ILLEGAL HARDWARE TYPE IN *RERUN* CLAUSE (word) S ILLEGAL HEADER--IGNORED (word) S ILLEGAL LITERAL IN *CURRENCY IS* CLAUSE (word) S ILLEGAL *TUI* IN HARDWARE ASSIGNMENT--IGNORED (word) S ILLEGAL WORD IN *ACCESS-MODE* CLAUSE (word) S ILLEGAL WORD IN *ACTUAL KEY* CLAUSE (word) S ILLEGAL WORD IN *CURRENCY IS* CLAUSE (word) S ILLEGAL WORD IN *DECIMAL-POINT IS COMMA* CLAUSE (word) S ILLEGAL WORD IN *FILE-LIlVIITS* CLAUSE (word) S ILLEGAL WORD IN *L\lIPLEMENTATOR-NAME IS MNEMONIC-NAME* CLAUSE (word) S ILLEGAL WORD IN *LITERAL IS MNEMONIC-NAME* CLAUSE (word) S ILLEGAL WORD IN MEMORY SIZE CLAUSE (word) S ILLEGAL WORD IN *MULTIPLE REEL* CLAUSE (word) S ILLEGAL WORD IN *RESERVE AREA* CLAUSE--IGNORED (word) W INTEGER IN FILE-LIMITS CLAUSE TOO LARGE--VALUE NORMALIZED TO W INTEGER-2 OF *HESERVE* IS GHEATER THAN 2--SET TO 2. W INTEGER LITERAL MUST BE POSITIVE--MINUS SIGN IGNORED (word) S INTEGER MISSING FROM *POSITION* OPTION OF *MULTIPLE FILE* CLAUSE. S INVALID CLAUSE IN I-O-CONTROL PARAGHAPH (word) S INVALID INTEGER IN *RERUN* CLAUSE. S INVALID WORD IN *RERUN* CLAUSE (word) S LITERAL MUST BE 1 CHARACTER--LITEHAL IGNOHED (word) 1-2 ~ 8388607 60229400 Type Message S MNEMONIC-NAME PREVIOUSLY DEFINED (word) S MULTIPLE DEFINITION OF FILE-NAME IN *SAME AREA* OR *MULTIPLE FILE* CLAUSES (word) A file-name mentioned in a MULTIPLE FILE clause may not be mentioned in a SAME AREA clause since MULTIPLE FILE implies sharing same areas. Likewise, a file-name may not be mentioned more than once within either clause or in multiple like clauses. w *MULTIPLE REEL* CLAUSE IGNORED FOR-MASS STORAGE FILE. w *MULTIPLE REEL/UNIT* CLAUSE VALID ONLY FOR TAPE AND.MASS STORAGE FILES--CLAUSE IGNORED. w *MULTIPLE UNIT* CLAUSE IGNORED FOR TAPE FILE. S NO FILE-NAMES GIVEN IN *MULTIPLE FILE* CLAUSE (word) S NO FILE-NAMES GIVEN IN *SAME-AREA* CLAUSE (word) S W S S I *OPTIONAL* DISCREPANCY BETWEEN MASTER FILE AND CURRENT FILE (word) PARAGRAPH HEADER PRECEDING THE COPY STATEMENT IS EXPECTED AT THIS POINT (word) I *POSITION* INTEGER IN *MULTIPLE FILE* CLAUSE CANNOT BE ZERO. I POSITION NUMBER OF A FILE MAY NOT EXCEED 63. S PREVIOUS ERROR CAUSED CURRENT FILE TO BE UNDEFINED (word) S PROGRAM-ID NAME IS MISSING OR ILLEGAL (word) S RENAMED FILE PREVIOUSLY DEFINED AS A RENAMING FILE (word) S RENAMING F ILE WAS PREVIOUSLY RENAMED (word) S REQUIRED HEADER MISSING OR OUT OF ORDER (word) S REQUIRED WORD MISSING. S *SELECT* MISSING--FILE IGNORED (word) S *SECTION* MISSING FROM SECTION HEADER. S TEXT MUST NOT FOLLOW CURRENT HEADER (word) S THE WORD *DIVISION* IS MISSING. W *THRU* OPTION OF FILE-LIMITS CLAUSE ILLEGAL FOR RANDOM ACCESS FILE. S UNDEFINED FILE-NAME IN *RERUN* CLAUSE (word) S UNDEFINED FILE-NAME IN *SAME AREA* OR *MULTIPLE FILE* CLAUSE (word) 60229400 1-3 DATA DIVISION Type Message S A CONDITION NAME MAY NOT BE ASSOCIATED WITH A LEVEL 66 ITEM. S A CONDITION NAME MAY NOT BE ASSOCIATED WITH AN ITEM WHOSE USAGE IS INDEX. S A REDEFINED ITEM MAY NOT CONTAIN AN OCCURS CLAUSE NOR BE SUBORDINATE TO ITEM CONTAINING ONE. E ACCESS-PRIVACY VALUE EXCEEDS 4 CHARACTERS. S ACCUMULATED SIZE OF PRECEDING GROUP ITEM IS GREATER THAN 131,067 CHARACTERS. E ALL SUBORDINATE ITEMS WITHIN A COMPUTATIONAL-1 GROUP MUST BE COMPUTATIONAL-I. E ALL SUBORDINATE ITEMS WITHIN A COMPUTATIONAL-2 GROUP MUST BE COMPUTATIONAL-2. E ALL SUBORDINATE ITEMS WITHIN AN INDEX GROUP MUST BE INDEX. E AN ITEM MAY NOT CONTAIN VALUE CLAUSE IF IT IS SUBORDINATE TO AN ITEM WITH A VALUE CLAUSE. S AN ITEM SUBORDINATE TO AN OCCURRING ITEM MAY NOT HAVE A VALUE CLAUSE. S *ASCENDING/DESCENDING KEY* CLAUSE REQUIRES AN *OCCURS* CLAUSE. S *BINARY, DECIMAL, SECTOR, TRACK* EXPECTED--CURRENT WORD INVALID (word) E *BLANK WHEN ZERO* CLAUSE MAY NOT BE USED UNLESS ITEM IS NUMERIC EDITED. E BLOCK CONTAINS CLAUSE lNTEGER-2 MUST BE GREATER THAN INTEGER-I. E BLOCK CONTAINS CLAUSE MUST HAVE POSITIVE INTEGERS. S COMMON-STORAGE SECTION ENCOUNTERED TWICE. E COMMON-STORAGE SECTION MUST PRECEDE WORKING-STORAGE SECTION. S COMPUTATIONAL-1 LITERAL lV..AY NOT EXCEED + OR - 8338607. S COM PU TA TIONAL-2 LITERAL EXPONENT MAY NOT EXCEED + OR - 308. S COMPUTATIONAL-2 ITEM ASSIGNED ILLEGAL LITERAL. S CURRENT FILE-NAME CANNOT BE A SORT FILE. One or more of the following clauses in the ENVIRONMENT DIVISION were used to describe the ENVIRONMENT of the current file (RENAMING, ACTUAL KEY, FILE-LIMITS, ACCESS MODE, PROCESSING MODE, RERUN ON, MULTIPLE FILE, SAME AREA), thus, the file may not be a SORT file. W CURRENT VALUE CLAUSE CONSIDERED DOCUMENTARY. E CURRENT WORD IS INVALID IN *USAGE* CLAUSE (word) E CURRENT WORD SHOULD BEGIN IN *A* MARGIN OF SOURCE TEXT (word) S DATA DIVISION MUST BEGIN WITH A SECTION HEADER S DATA-NAME EXPECTED--CURRENT WORD INVALID (word) S DATA-NAME IS NOT DEFINED IN DATA DIVISION (word) A data-name mentioned within a DATA DIVISION qualification string has not been defined. S I DATA-NAME LEVEL NUMBERS MUST BE EQUAL IN REDEFINES CLAUSE. Q'DATA RECORDS' CLAUSE MlSSmG m FILE DESCRIPTION(FD). 1-4 60229400 Type Message E *DATA RECORDS* CLAUSE IN SORT-FILE DESCRIPTION(SD) E * DIVISION* EXPEC TED AT THIS POINT (word) E DUPLICATE CLAUSE IN ENTRY--CLAUSES OTHER THAN FIRST IGNORED. E EDITION-NUMBER VALUE EXCEEDS 2 CHARACTERS. S ELEMENT CLASS CONFLICT DETECTED. The compiler has detected either multiple PICTURE clauses for the data item or a VAL UE has been assigned which does not meet the class defined in the data item PICTURE. S EXPONENT OF COMPUTATIONAL-2 LITERAL MUST BE 1-3 DIGITS. S FD LEVEL ALLOWED ONLY IN FILE SECTION. f: FIELD NAMED IN *SEQUENCED ON* CLAUSE FOR THIS FILE IS OUTSIDE OF THE RECORD. S FIELD NAMED IN *SEQUENCED ON* CLAUSE FOR THIS FILE MAY NOT BE COMP-l OR COMP-2. S FILE-NAME NOT SELECTED IN ENVIRONMENT DIVISION (word) S FILE NAME NOT UNIQUE WITHIN DATA DIVISION (word) S FILE SECTION ENCOUNTERED TWICE. E FILE SECTION MUST PRECEDE OTHER DATA DIVISION SECTIONS. S *FILLER* OR DATA-NAME EXPECTED--CURRENT WORD INVALID (word) S HIGHEST DATA-NAME QUALIFIER IS NOT UNIQUE (word) The last data-name mentioned in a qua1ification string must be unique when qualifying the following data items: 1. Data-name-l of the OCCURS ... DEPENDING ON clause 2. Data-name-3, data-name-4, etc. of the VALUE OF clause in a level record description. E ID VALUE EXCEEDS 14 CHARACTERS. E ID VALUE EXCEEDS 30 CHARACTERS-MASS 8TORAGE. S ILLEGAL PICTURE CLA USE (word) S ILLEGAL TO RENAME ITEMS WITH LEVELS 01, 66, 77, OR 88. S ILLEGAL TO SPECIFY VALUE CLAUSE WITH REDEFINES CLAUSE. E ILLEGAL TO 8YNCHRONIZE AN ITEM SUBORDINATE TO AN ITEM CONTAINING A VALUE CLAUSE. S IN RENAMES CLAUSE DATA-NAME-2 MUST PRECEDE DATA-NAME-3. S IN RENAMES CLAUSE DATA-NAME-3 MAY NOT BE S.uBORDINATE TO DATA-NAME-2. W INCORRECT STANDARD LABEL RECORD SPECIFIED. S INDEX-NAME NOT UNIQUE (word) S INDEXED BY CLAUSE MAY NOT BE USED WITHOUT AN OCCURS CLAUSE. S INSUFFICIENT BLOCK SIZE. S INTEGER NUMBER EXPECTED--C URRENT WORD INVALID (word) 60229400 1-5 Type S Message INVALID LEVEL NVlVIBER HIERARCHY WITHIN RECORD DESCRIPTION. Within a record description a level number has been encountered which is less than the previous level just processed, however, a prior item with an equal level number has not been defined. Example: 01 03 03 04 02 ALPHA .... BETA .... BETA-B .... DELTA .... ZETA .... ~UBORDINATE E ITEM MAY NOT HAVE USAGE OF COMP-l, COMP-2, OR INDEX IF DISPLA Y USAGE E ITEM MAY NOT HAVE USAGE OF COMP-I, COMP-2, OR INDEX IF SUBORDINATE TO ITEM VALUE CLAUSE E ITEM MAY NOT HAVE USAGE OF DISPLAY OR INDEX IF t'UBORDINATE TO ITEM YVITH COMPUTATIONAL USAGE. S ITEM MAY NOT HAVE VALUE CLAUSE IF 8UBORDINATE TO AN ITEM 'YITH A REDEFINES CLAUSE. E ITEM MUST BE NUMERIC IF fVBORDINATE TO AN ITEM ViTITH COMPUTATIONAL USAGE. S ITEM WITH OCCURS DEPENDING ON CLA USE ILLEGAL IN FILE WITH RECORD CONTAINS DEPENDING ON CLAUSE. E JUSTIFIED CLAVSE ILLEGAL AT GROUP LEVEL S TO ITEM WITH ~NITH A KEYFIELD FROM AN OCCURS DEPENDING ON CLAUSE IN FILE SECTION MUST BE A NUMERIC ITEM < 5 DIGITS ~OT S KEYFIELD FROM AN OCCUR8 DEPENDING ON CLAVSE J\lAY CONTAINING CLAUSE. S KEYFIELD FROM AN OCCL'RS DEPENDING ON CLAVSE l\IAY KOT BE WITHIN THE VARIABLE PART OF THE RECORD. S BE SL'BORDINATE TO ITEM KEYFIELD IN RECORD CONTAINS DEPENDING OK CLAUSE MUST BE COMP-l OR NUMERIC ITEM OF < 5 DIGITS. 1-6 S *LABEL RECORDS* CLAUSE MISSING IN FILE DESCRIPTION(FD). E *LEFT* OR *RIGHT* EXPECTED--CURRENT WORD INVALID (word) S LEVEL 77 ILLEGAL IN FILE SECTION. E LEVEL 77 ITEMS MUST BE DEFINED FIRST IN COMMON AND WORKING STORAGE. S LEVEL 77 MAY NOT HAVE SUBORDINATE LEVEL5. S LEVEL NUMBER FOLLOWING AN FD MUST BE 01. S LITERAL ASSOCIATED yqTH A NON-NUMERIC ITEM MUST BE A QCOTED LITERAL OR FIGURATIVE CONSTANT. S LITERA L OR FIG CRATIVE CONSTANT EXPECTED--C URRENT ,rORD INVALID (word) S LITERAL, FIGURATIVE CONSTANT OR DA TA-NAME EXPECTED--C l:RRENT WORD INVALID (word) S MASS STORAGE FILE l\lUST HAVE '~TANDARD LABELS. 60229400 Type Message E MODIFICATION-PRIVACY VALUE EXCEEDS 4 CHARACTERS. S MORE THAN 3 lEVELS OF NESTED OCCL'"RS CLAUSES ENCOUNTERED. S NO RECORD DEFINED FOR THE FILE. S NON-USASI ELEMENT;-CLAUSE IGNORED. S OF RENAMES CLAUSE MAY NOT BE OCCURRINGITEMS NOR BE SUBORDINATE TO AN I OBJECTS OCCURRING ITEM. E OCC URS C LA USE INTEGER-2 MUST BE GREATER THAN INTEGER-I. S *OCCURS* CLUASE ILLEGAL AT LEVEL 01 OR 77. ,E OCCURS CLAUSE MUST USE POSITIVE INTEGERS. S *OMITTED* OR *STANDARD VALUE OF* OR DATA-NAME EXPECTED--CURRENT WORD INVALID (word) E OWNER VALUE EXCEEDS 8 CHARACTERS. S PICTURE CLAUSE E PICTURE CLAUSE ILLEGAL AT GROUP LEVEL. W POINT ALIGNMENT OF LITERAL ASSIGNED TO DATA ITEM CAUSED LOSS OF NON-ZERO DIGITS ON LEFT. W POINT ALIGNMENT OF LITERAL ASSIGNED TO DATA ITEM CAUSED LOSS OF NON-ZERO DIGITS ON RIGHT. S PRECEDING DEFINITION DEFINED A STORAGE AREA OF DIFFERENT SIZE THAN THE ORIGINAL ITEM. W QUOTED LITERAL IS TOO LARGE FOR ITEM--RIGHT TRUNCATION OCCURRED. E RECORD CONTAINS CLAUSE INTEGER-2 MUST BE GREATER THAN INTEGER-I. E RECORD CONTAINS CLAUSE MUST HAVE POSITIVE INTEGERS. E RECORD CONTAINS CLA USE NECESSARY IF USING LEVEL 01 WITH REPORTS ARE CLA USE. S *RECORD-MARK* OR DATA-NAME EXPECTED--CURRENT WORD INVALID (word) S *RECORD* OR *RECORDS* EXPECTED--C URRENT WORD INVALID (word) S RECORD SIZE HAS BEEN DESCRIBED BY TWO OCCURS DEPENDING ON CLAUSES --SECOND CLAUSE IGNORED. E REDEFINES CLAUSE ILLEGAL AT LEVEL 66 AND 88. S *REDEFINES* CLAUSE MAY NOT BE SPECIFIED FOR AN OCCURRING ITEM. E REDEFINES CLAUSE MAY NOT BE USED AT LEVEL 01 ENTRIES IN FILE SECTION. W *REDEFINES* MUST IMMEDIATELY FOLLOW DATA-NAME-I. S REDEFINITION MUST IMMEDIATELY FOLLOW THE ENTRIES DESCRIBING THE AREA BEING REDEFINED. E REEL-NUMBER VALUE EXCEEDS 2 DIGITS. S *RENAMES* EXPECTED--C URRENT WORD INVALID (word) S RENAMES CLA USE RESULTS IN ITEM SIZE GREATER THAN 32K WORDS. 60229400 CO~rFLICTS WITH CLASS OF ITE1VI. 1-7 IType I Message E RETENTION-CYCLE VALUE EXCEEDS :3 DIGITS. E *RIGHT* EXPECTED--CURRENT WOlm I:t'>.rvALID (word) S SD LEVEL ALLOWED ONLY IN FILE SECTION. S SEARCH KEY IS OUTSIDE LIMITS OF TABLE AREA. S SEARCH KEY MAY NOT HAVE AN OCCURS CLAUSE. S *SECTION* EXPECTED--CURRENT WORD INVALID (word) E SYNCHRONIZED CLAUSE ILLEGAL AT GROUP LEVEL. STABLE OVERFLOW--CANNOT EXPAND. The user should re-compile with more core scheduled for the job. S THE KEYFIELD FROM AN ACTUAL KEY CLAUSE MUST HAVE A LENGTH OF 12 CHARACTERS. S THIS FILE MAY NOT APPEAR IN A FD SINCE ITS SELECT STATEMENT CONTAINS A RENAMING CLAUSE. W TERMINAL PERIOD MISSING. S UNDEFINED DATA-NAME USED IN REDEFINES CLAUSE (word) S UNDEFINED DATA-NAME USED IN RENAMES CLAUSE (word) S VALUE ASSIGNED TO COMPUTATIONAL ITEM MUST BE NUMERIC LITERAL. S VALUE ASSIGNED TO COMPUTATIONAL-l ITEM MUST BE NUMERIC INTEGER LITERAL. E VALUE CLAUSE ILLEGAL IN AN ENTRY USING OCCURS CLAUSE. S *VALUE OF* EXPECTED--CURRENT WORD INVALID (word) S *VALUE* OR *VALUES* EXPECTED--CURRENT WORD INVALID (word) S WORD OUT OF CONTEXT--SCANNING RESUMED AT NEXT KEYWORD (word) S WORKING-STORAGE SECTION ENCOUNTERED TWICE. E *ZERO* EXPECTED--CURRENT WORD INVALID (word) 1-8 60229400 REPORT WRITER Type Message S ABSOLUTE LINE NUMBER SPECIFICATION MAY NOT FOLLOW RELATIVE LINE SPECIFICATION. S ABSOLUTE LINE NUMBER SPECIFIED IS NOT GREATER THAN PRECEDING LINE. S/W S CLAUSE APPEARS MORE THAN ONCE IN SAME REPORT GROUP/ITEM DESCRIPTION. *CODE* EXPECTED TO FOLLOW *WITH* (word) The word CODE must follow the word WITH in the WITH CODE mnemonic-name clause. S *COLUMN NUMBER* CLAUSE REQUIRED WHEN REPORT GROUP IS TO BE PRESENTED. The COLUMN NUMBER clause is required when one of the following clauses is given in the elementary item description: GROUP INDICATE, JUSTIFIED, VALUE, or BLANK WHEN ZERO. S CURRENT CLAUSE IS USED AT AN INVALID LEVEL NUMBER. It is illegal to use the following clauses at the RD level: LINE NUMBER, NEXT GROUP, TYPE, USAGE, COLUMN NUMBER, GROUP INDICATE, JUSTIFIED RIGHT, PICTURE, RESET, BLANK WHEN ZERO, SOURCE, SUM, and VALUE. It is illegal to give an RD level clause at the group or element level. S CURRENT ELEMENT IS NOT RECOGNIZABLE (word) S CURRENT OPERAND EXPECTED TO BE AN INTEGER (word) S CURRENT OPERAND EXPECTED TO BE A PROGRAMMER ASSIGNED NAME (word) S DATA-NAME EXPECTED TO FOLLO","' *SUM----UPON* CLAUSE (word) S DATA-NAME IS IMPROPERLY QUALIFIED OR UNDEFINED (word) W *DISPLAY* MUST FOLLOW *USAGE* (word) If the USAGE clause is specified, it should be USAGE IS DISPLAY. A report writer element is always assumed to have display usage. S GROUP CONTROL IDENTIFIER NOT DEFINED IN CONTROL CLAUSE. W *GROUP INDICATE* CLAUSE MAY BE SPECIFIED ONLY FOR TYPE DETAIL ELEMENTARY ITEMS. S ILLEGAL GROUP NAME. The data -name following the level number of a report group must be unique within a report and cannot reflect qualification, subscripting, or indexing. S ILLEGAL GROUP TYPE CLAUSE (word) S ILLEGAL *LINE IS NEXT PAGE* CLAUSE. The NEXT PAGE option of the LINE clause is illegal in TYPE PAGE HEADING and TYPE PAGE FOOTING report groups. S ILLEGAL NAME IN SOURCE, SUM OR RESET CLAUSE. S ILLEGAL *NEXT GROUP* CLAUSE. S ILLEGAL QUALIFICATION OR SUBSCRIPTING OF ASSIGNED WORD (word) The current word may not be qualified or subscripted in the current context of the source code. 60229400 1-9 Type S Message ILLEGAL REPORT GROUP LINE ~UMBER SPECIFICATION. The first subordinate report item description which follows a report group description cannot contain a line number specification when the group description specifies a line number clause. S ILLEGAL REPORT-NAME (word) S ILLEGAL SUMMARY REPORTING-:...NO SUM COUNTERS DEFINED. S ILLEGAL VALUE SPECIFIED (word) S ILLEGAL *WITH CODE MNEMONIC-NAME* CLAUSE (word) S ILLEGAL VALUE IN REPORT LINE NUMBER CLAUSE (word) S INTEGER-l REQUIRED IN PAGE CLAUSE WHEN ABSOLUTE SPACING USED. S INTEGER-3 REQUIRED IN PAGE CLAUSE WHEN PAGE HEADING DEFINED AND DETAILS USE RELATNE SPACING. S INTEGER-4 REQUIRED IN PAGE CLAUSE WHEN PAGE FOOTING DEFL"l"ED AND DETAILS USE RELATNE SPACING. S INVALID *COLUMN NUMBER* CLAUSE. S INVALID CONTROL GROUP-CONTROL IDENTIFIER PREVIOUSLY USED. S I!\TVALID CONTROL GROUP-NO CONTROL CLAUSE DEFINED AT RD LEVEL. S INVALID DATA-NAME IN RESET CLAUSE (word) Data-name-l in the RESET clause must be specified in the CONTROL clause in the report description. It must be of a higher level in the CONTROL hierarchy than the data-name associated with the report group in \vhich the RESET clause appears. S INVALID *FIRST DETAIL* INTEGER (word) S INVALID *LAST DETAIL* INTEGER (word) S INVALID *NEXT GROUP* CLAUSE SPECIFICATION. The NEXT GROUP clause may not be used in a TYPE PAGE HEADING or TYPE PAGE report group. S INVALID PAGE *FOOTING* INTEGER (word) S INVALID PAGE *HEADING* INTEGER (word) S INVALID *PAGE LIMIT* INTEGER (word) S INVALID PICTURE CLAUSE. S INVALID RESET CLAUSE--CONTROL HIERARCHY RULES VIOLATED. S INVALID *SUM* CLAUSE SPECIFICA TION. FOOTL~G The SUM clause may appear only in a TYPE CONTROL FOOTING or TYPE DETAIL report group. S INVALID SUM COUNTER USAGE--CONTROL HIERARCHY RULES VIOLATED. S LEVEL NUMBER ERROR-Ol IS MISSING. S LINE CLAUSE ABSOLUTE VALUE EXCEEDS PAGE CLAUSE LIMITS. S LINE CLAUSE CONFLICTS WITH PAGE CLAUSE SPECIFICATIONS. S *LINE NUMBER* CLAUSE IS REQUIRED FOR REPORT LINE. 1-10 60229400 I Type I Message S MNEMONIC-NAME IN *WITH CODE* CLAUSE IS UNDEFINED OR INVALID (word) Either the name is not defined or the wrong mnemonic-name in the SPECIAL-NAMES SECTION has been referenced. S NEXT GROUP CLAUSE ABSOLUTE VALUE EXCEEDS PAGE CLAUSE LIMITS. S NO LEVEL NUMBER FOLLOWING AN RD-NO REPORT GROUPS. S *PICTURE* CLAUSE IS REQUIRED FOR ELEMENTARY ITEM. S RD LEVEL INDICATOR MISSING (word) The compiler continues searching through the SOURCE RECORDS until a level RD is found. S REPORT GROUP *TYPE* CLAUSE IS REQUIRED. S RESET CONTROL IDENTIFIER NOT DEFINED IN CONTROL CLAUSE. S *SOURCE, SUM OR VALUE* CLAUSE IS REQUlRED FOR ELEMENTARY ITEM. S SUM CLAUSE OPERAND NOT DEFINED IN SOURCE CLAUSE OF DETAIL REPORT GROUP. S UNDEFINED NAME IN THE *CONTROLS ARE* CLAUSE (word) W UNUSED IDENTIFIER IN CONTROL CLAUSE. S *WITH CODE MNEMONIC-NAME* CLAUSE MUST PRECEDE *COPy* STATEMENT. S *ZERO* EXPECTED TO FOLLOW *BLANK WHEN* (word) 60229400 1-11 PROCEDURE DIVISION Type Message S A FILE NAME MUST NOT BE REFERENCED IN MORE THAN ONE USE STATEMENT (word) S A RECORD NAME WAS NOT FOUND FOR THE FILE-NAME (word) S A SECTION-NAME MUST FOLLOW THE DEC LARA TIVES HEADER. S ADD OR SUBTRACT OPERANDS EXCEED 18 DIGITS WHEN SUPERIMPOSED ON DECIMAL POINTS. S *AFTER* MAY ONLY FOLLOW A CONDITION WITHIN A PERFORM STATEMENT (word) S ARE MORE LEFT PARENTHESES THAN RIGHT PARENTHESES IN COMPUTE STATEMENT. S ARE MORE RIGHT PARENTHESES THAN LEFT PARENTHESES IN COMPUTE STATEMENT. S *ASCENDL~G/DESCENDL~G* MUST BE SPECIFIED L~ SORT STATEMENT (word) Either ASCENDING or DESCENDING must be specified at least once. must immediately follow. If ON is specified, either word S *AT END* OPTION OF READ STATEMENT VALID ONLY FOR SEQUENTIAL ACCESS FILES (word) S *AT END* OR *INVALID KEY* REQUIRED IN READ STATEMENT (word) Either AT END or INVALID KEY is required in the READ statement. given also. S If AT is specified, END must be *AT END* REQUIRED IN RETURN STATEMENT (word) If AT is specified, then END must be given also. S ATTEMPTED ARITHMETIC OPERATION ON NON-NUMERIC ITEM. S *BEFORE/AFTER ADVANCING* OPTION IS VALID ONLY FOR NON-MASS STORAGE (word) S *BEFORE* OR *AFTER* EXPECTED IN CURRENT WRITE STATEMENT (word) The current word is not recognizable. or the next verb. The compiler is looking for BEFORE, AFTER, INVALID, S *BEFORE* OR *AFTER* l\1UST FOLLOW *USE* (word) S *BY* EXPECTED AT s *BY* IS MISSING IN EXAMINE STATEMENT (word) I THI~ POINT IN *COPY REPLACING* (word) The word BY is required in the REPLACING BY option of the EXAMINE TALLYING statement and is required by itself in the EXAMINE REPLACING statement. S *BY* MUST FOLLOW FIRST OPERAND OF MULTIPLY STATEMENT (word) S *BY* MUST FOLLOW *UP* OR *DOWN* IN A SET STATEMENT (word) S CANNOT MIX INDEXING AND SUBSCRIPTING IN ONE REFERENCE (word) S COMP-l OR COMP-2 FIELDS CAN BE COMPARED TO NUMERIC FIELD ONLY. S COMPILER DOES NOT ALLOW MORE THAN 63 LEFT PARENTHESES WITHOUT ANY INTERVENING RIGHT PAREN. S *CORRESPONDING* OPERATIONS ILLEGAL FOR ITEMS WITH LEVEL GREATER THAN 49. S *CORRESPONDING* OPERATIONS ILLEGAL FOR ELEMENTARY ITEMS. S CURRENT IDENTIFIER DOES NOT BELONG TO FILE SPECIFIED BY *SQRT* STATEMENT (word) S CURRENT IDENTIFIER MUST NOT BE USED IN MORE THAN ONE STATEMENT (word) 1-12 60229400 I Type I Message 1- -- S CURRENT OPERAND OF ENTER STATEMENT MUST BE AN IDENTIFIER, FILE, PROCEDURE NAME, OR LITERAL (word) S CURRENT OPERAND OF ENTER STATEMENT MUST BE A ROUTINE-NAME (word) S CURRENT WORD HAS OCCURRED OUT OF CONTEXT--COMPILER IGNORES AND CONTINUES AT NEXT VERB (word) The word DECLARATIVES, USE, EXIT, ELSE, or END has been used outof context. ignored and the compiler looks for the next key word. S The word is CURRENT WORD IN PERFORM STATEMENT SHOULD BE *TIMES* (word) The second element, exclusive of the THRU option, is an assigned word or numeric literal and thus implies the TIMES option is being used. The current word should be TIMES. S CURRENT WORD IN PERFORM STATEMENT SHOULD BE *UNTIL* OR *VARYING* (word) The second element, exclusive of the THRU option, is not an assigned word or numeric literal, thus UNTIL or VARYING IS EXPECTED. S DATA-NAME CANNOT OCCUR PRIOR TO *UP/DOWN BY* IN *SET* (word) S DATA-NAME HAS MORE THAN 49 LEVELS OF QUALIFICATION (word) S DATA-NAME IS NOT UNIQUE AND NOT QUALIFIED. S DATA-NAME IS NOT UNIQUE WITHIN RANGE OF PREVIOUS QUALIFIER (word) S DATA-NAME USED WHERE A FILE-NAME WAS EXPECTED (word) S DEPENDING ON OPTION OF GO TO MISSING (word) S The DEPENDING ON option must be used when more than one procedure-name is specified in a GO TO statement. DIVIDE, MULTIPLY, SUBTRACT, PERFORM OPERAND MUST BE IDENTIFIER OR NUMERIC LITERAL (word) The operand (word) does not meet the requirements of a programmer-assigned word. S *DIVISION* MUST FOLLOW *PROCEDURE* (word) The compiler assumes that DIVISION has been omitted and continues compilation. S EACH IDENTIFIER USED IN PERFORM MUST BE A NUMERIC ELEMENTARY ITEM (word) SEITHER *OUTPUT* OR *GIVING* OPTION REQUIRED IN SORT STATEMENT (word) S *ELSE* ENCOUNTERED AND CURRENT VERB IS NOT *IF* (word) S *ELSE* OR TERMINAL PERIOD MUST FOLLOW *NEXT SENTENCE* EXCEPT IN SEARCH (word) Within a conditional statement, the word ELSE or a terminal period must follow NEXT SENTENCE. If none of these were found a test is made for a key word or A -margin element. This diagnostic is produced after these tests fail to find the necessary element. S *END DECLARA TIVES* DETECTED OUTSIDE OF DECLARATIVES SECTION (word) S *END DECLARA TIVES* MUST BE FOLLOWED BY A PROCEDURE-NAME (word) S *END* DETECTED IN A-MARGIN--NEXT WORD NOT *PROGRAM* NOR *DECLARATIVES* (word) S *END* ;DETECTED WHILE PROCESSING DECLARA TIVES--ASSUMED *END DECLARA TIVES* (word) If the word END is encountered while processing a DECLARATIVES procedure and the word following is not DECLARATIVES or PROGRAM, the compiler assumes it to be END DECLARATIVES. 60229400 1-13 Type S Message *END PROGRAM* DETECTED WITHIN DECLARATIVES SECTION (word) The END DECLARA TIVES statement was not found while processing the DECLARA TIVES section; however, END PROGRAM was encountered. Thus, the entire PROCEDURE division was probably processed as being contained within the DECLARA TNE section. S *ENTER* ROUTINE-NAMES CANNOT BE QUALIFIED (word) S *ERROR* REQUIRED IN ON SIZE ERROR OPTION (word) W EXAMINE IDENTIFIER IS ALPHABETIC AND AT LEAST ONE LITERAL IS NOT ALPHABETIC. S EXAMINE IDENTIFIER IS NOT USAGE DISPLAY (word) W EXAMINE IDENTIFIER IS NUMERIC AND AT LEAST ONE LITERAL IS NOT NUMERIC. S EXIT VERB MUST COMPRISE A PARAGRAPH BY ITSELF. S FILE-NAME CANNOT REDEFINE ANOTHER DATA-NAME. S FILE-NAME IS NOT UNIQUE (word) S FILE-NAME IS UNDEFINED (word) S FILE-NAME MAY NOT BE AN OCCURRING ITEM. W *FINIS* DETECTED BEFORE *END PROGRAM*--ASSUMED END PROGRAM (word) W *FINIS* OR *IDENTIFICATION* DO NOT FOLLOW *END PROGRAM*--ASSUME STACKED JOB (word) The compiler assumes the job does not contain stacked compilations. S FIRST ELEMENT IS INVALID IN THE MOVE STATEMENT (word) The first element must be a data-name, literal, SYSTEM-DATE, SYSTEM-TIME, CORR, or CORRESPONDING. It does not meet the specifications of a programmer-assigned word. S FIRST ITEM COPIED WAS NOT A PROCEDURE NAME. S FIRST OPERAND IN THE C01'.!"DITIONAL STATEMENT IS INVALID (word) The first operand does not meet the speCification of a programmer-assigned word. data-name, literal, NOT, unary minus, or a left parenthesis. s *FROM, BY OR UNTIL* EXPECTED IN PERFORM VARYING STATEMENT (word) The PERFORM VARYING option syntax must be exact. been found. S It must be a FROM, BY, or UNTIL is expected and has not *FROM* IS MISSING IN SUBTRACT CORRESPONDING STATEMENT (word) The reserved word FROM is required at this point in the CORRESPONDING option of the SUBTRACT statement. S *GNING* OPTION REQUIRED WITH *BY* AND *INTO FOLLOWED-BY-LITERAL* OPTIONS OF DNIDE (word) If BY is used, or INTO with a non data-name operand is used, the GNING option is required in the DNIDE statement. S HIGHEST LEVEL QUALIFIER IS NOT UNIQUE (word) S IDENTIFIER DESCRIBING THE TABLE IN SEARCH STATEMENT MUST CONTAIN AN OCCURS C LA USE (D idn) 1-14 60229400 Type Message S IDENTIFIER DESCRIBING THE TABLE IN SEARCH STATEMENT MUST CONTAIN INDEXED BY C LA USE (D idn) S IDENTIFIER ENCOUNTERED NOT FOUND IN REPORT SECTION/DATA DIVISION OR WAS NOT PROPER TYPE (word) S IDENTIFIER MUST REPRESENT A REPORT GROUP NAMED IN THE REPORT SECTION (word) S IDENTIFIER SPECIFIED IN TIMES OPTION IS NOT NUMERIC (word) S IF ONE PARAGRAPH-NAME APPEARS IN A SECTION, ALL PARAGRAPH-NAMES MUST APPEAR IN SECTIONS (word) S IF *GO TO-PERIOD-* IS SPECIFIED IT MUST APPEAR IN SENTENCE BY ITSELF (word) S IF *WITH* IS SPECIFIED IN OPEN STATEMENT, *NO REWIND* MUST FOLLOW (word) S ILLEGAL ATTEMPT TO PERFORM A SECTION WITHIN A SORT PROCEDURE. The remainder of the PROCEDURE DIVISION must not contain any transfers of control to points inside the SORT input and output procedures. S ILLEGAL CHARACTER IN ARITHMETIC OPERA TOR (word) S ILLEGAL DATA-NAME (word) The current operand (word) does not meet the requirements of a programmer-assigned word; it should be a data-name. S ILLEGAL FILE-NAME (word) The current operand (word) does not meet the specifications of a programmer-assigned word; it should be a file-name. S ILLEGAL FIRST ELEMENT OF ADD/SUBTRACT STATEMENT (word) The first element must be a data-name, floating-point literal, numeric literal, integer literal, CORR, or CORRESPONDING. S ILLEGAL MNEMONIC-NAME (word) The current operand (word) does not meet the requirements of a programmer-assigned word; it should be a mnemonic-name. S ILLEGAL OPERAND FOR INITIATE, GENERATE, TERMINATE STATEMENT (word) The current operand (word) does not meet the speCifications of a programmer-assigned word. For a GENERA TE statement it should name a TYPE DETAIL report group or an RD entry. For either of the other two, it should be the name of an RD entry. S ILLEGAL PROCEDURE-NAME (word) The current operand (word) does not meet the specifications of a programmer-assigned word; it should be a procedure-name. S ILLEGAL QUALIFICATION LEVEL FOUND WHILE PROCESSING *CORRESPONDING* ITEMS. S ILLEGAL SORT NON-SORT PROCEDURE REFERENCE. S ILLEGAL TO MOVE A NON-INTEGER OR FLOATING POINT NUMERIC ITEM TO A-N OR A-N EDITED (D idn) 60229400 1-15 Type S Message ILLEGAL TO MOVE EDITED OR ALPHABETIC ITEM TO A NUMERIC OR NUMERIC EDITED ITEM (D idn) A numeric edited, alphanumeric edited, alphabetic, or floating-point edited data item may not be moved to a numeric edited, floating-point edited, numeric (non-integer), integer, COMPUTATIONAL-I, or floating-point item. S ILLEGAL TO MOVE NUMERIC OR NUMERIC EDITED ITEM TO AN ALPHABETIC FIELD (D idn) A numeric edited, floating-point edited, numeric (non-integer), integer, COM PUTATIONA L-I ) or floating-point field may not be moved to an alphabetic field. S ILLEGAL USE OF ARITHMETIC-EXPRESSION IN CONDITIONAL STATEMENT (word) An arithmetic-expression can appear only as a subject and/or object in the relational option or as a subject in the sign option of a conditional statement. S ILLEGAL USE OF LITERAL IN CONDITIONAL STATEMENT (word) A nonnumeric literal can appear as the subject or object only in the relational option of a conditional statement. S IMPERATIVE STATEMENT MUST FOLLOW *ON SIZE ERROR, AT END, INVALID KEY* (word) Either the imperative statement is missing or an IF statement has been used; conditional statements are not legal following these options. S IMPROPER USE OF COBOL KEYWORD (word) S IN NESTED IF STATEMENT *IF* WILL NOT BE EXECUTED WHEN FOLLOWS *NEXT SENTENCE* OR *GO TO* S IN NESTED IF STATEMENT MORE *ELSE* STATEMENTS THAN *IF* STATEMENTS WERE ENCOUNTERED. S IN SEARCH ALL, AND IS THE ONLY ALLOWABLE LOGICAL CONNECTOR. S INCOMPLETE RELATIONAL OPTION OF A CONDITIONAL STATEMENT (word) In the relational option, the first relation must be complete. identify an object. The compiler has not been able to S INCORRECT FORMAT IN IMPLIED OPERATOR AND CONNECTOR OPTION OF RELATIONAL CONDITION (word) S INDEX-DATA-ITEM ALLOWED ONLY IN SEARCH, SET, AND RELATION CONDITIONS (word) S INDEX-NAME ALLOWED ONLY IN PERFORM, SEARCH, SET, AND RELATION CONDITIONS (word) S INDEX-NAMES CANNOT BE QUALIFIED (word) S INITIATE, TERMINATE, AND GENERATE NOT ALLOWED IN DECLARATIVES. S INP MAY NOT BE USED AS MNEMONIC-NAME IN *DISPLA Y*. S INPUT, OUTPUT, 1-0, OR INPUT-OUTPUT MUST FOLLOW OPEN VERB (word) One of these reserved words is expected following the OPEN verb. current word. The compiler cannot identify the S *INPUT-OUTPUT* OPTION APPLICABLE ONLY FOR MASS STORAGE (word) S INSUFFICIENT PROCEDURE-NAMES IN GO TO DEPENDING ON STATEMENT (word) At least two procedure-names must precede the S DEPENDL.~G INTEGER IN TIMES OPTION IS NOT POSITIVE (word) ON option of a GO TO statement. I ~_ _- L_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ~ 1-16 60229400 Type Message S *INTO* OR *BY* MUST FOLLOW FIRST OPERAND OF DIVIDE STATEMENT. S INVALID ADD/SUBTRACT STATEMENT (word) A data-name, numeric literal, or one of the reserved words TO, GIVING, or FROM is expected at this point in the source statement. If the word is a reserved word other than TO, GIVING, or FROM, the compiler considers itself lost and proceeds to the next keyword. S INVALID ALTER STATEMENT (word) The first TO of the TO PROCEED TO phrase is required; if PROCEED is specified, the second TO must follow. S INVALID ARITHMETIC EXPRESSION (word) An arithmetic operator and the left parenthesis must be followed by a variable, a unary minus, or a left parenthesis. A unary minus must be followed by a variable or a left parenthesis. S INVALID *AT END* OF SEARCH STATEMENT (word) The AT END directive is optional, but if AT is specified, END must be present. S INVALID CLOSE STATEMENT (word) When the word WITH is specified, the NO REWIND or LOCK words must be given. s~cified, the \vord RE\llll--lD must follo\v. S If the word NO is INVALID COMPUTE STATEMENT (word) The expression following the equal sign must be a numeric data-item, literal, or arithmetic expression. The current operand (word) is not a unary minus, left parenthesis, or a programmer-assigned word. S INVALID ELEMENT WITHIN DISPLA Y STATEMENT (word) Data-names, literals, or figurative constants other than ALL are expected. meet the specifications of a programmer-assigned word. The current word does not S *INVALID KEY* OPTION OF READ STATEMENT VALID ONLY FOR RANDOM ACCESS MASS STORAGE FILES (word) S *INVALID KEY* OF *WRITE* AND *1/0* OF *OPEN* OPTIONS APPLICABLE ONLY FOR MASS STORAGE (word) S INVALID OPERAND IN SORT STATEMENT (word) The current word is not identifiable. The compiler was looking for another data -name or one of the following reserved words: ON, ASCENDING, DESCENDING, INPUT, or USING. S INVALID USE OF FIGURATIVE CONSTANT *ALL* (word) The literal following all must be either a nonnumeric literal or a figurative constant other than ALL. S INVALID WRITE ADVANCING STATEMENT (word) In the advancing option of the WRITE statement, only data-names, mnemonic-names, and integer literals are allowed. The current word does not meet the specifications of a programmer-assigned word. S LANGUAGE-NAME OF ENTER STATEMENT MUST BE COMPASS, FORTRAN, OR COBOL (word) S LITERAL OTHER THAN FIG CON *ALL* EXPECTED (word) S MASS STORAGE WRITE STATEMENT MUST SPECIFY INVALID KEY (word) S MAXIMUM OF 48 LEVELS OF KEY DATA-NAMES MAY BE TESTED IN THE SEARCH ALL CONDITION (D Idn) 60229400 1-17 Type Message S MINIMUM OF TWO OPERANDS MUST PRECEDE GNING OPTION OF ADD. W MNEMONIC-NAME GNEN IS NOT UNIQUE--*CONSOLE* USED INSTEAD. S MNEMONIC-NAME NOT DEFINED AS I-CHAR LIT IN SPECIAL-NAMES (word) S MNEMONIC-NAME USED IS EQUATED TO AN ILLEGAL DEVICE FOR USE IN *ACCEPT* (OUT OR PUN) (word) S MULTIPLY **** BY NUMERIC LITERAL REQUIRES *GIVING* OPTION (word) W NAME USED IS NOT A MNEMONIC-NAME--*CONSOLE* USED INSTEAD. S *NEXT SENTENCE* OR A VERB EXPECTED Ll\I CONDITIONAL STATEMENT (word) The words NEXT SENTENCE or a verb is expected at this point in the conditional statement. S NO SUBJECT DATA-NAME WAS ENCOUNTERED IN *SET* STATEMENT-(D idn) S NON-EXECUTABLE STATEMENTS FOLLOW STOP RUN OR UNCONDITIONAL GO TO (word) The compiler has encountered statements following STOP RUN or an unconditional GO TO within the same paragraph. Those statements can never be executed. S NON-NUMERIC ITEM CANNOT BE USED IN *SET* STATEMENT-(D idn) S NON SORT FILE ENCOUNTERED WHERE SORT FILE REQUIRED (word) S NON-UNIQUE MNEMONIC-NAME USED IN *WRITE---ADVANCING* (word) S NON-UNIQUE PROCEDURE-NAME REFERENCED S NON-UNIQUE SUBSCRIPT IS NOT QUALIFIED (word) S *NOT* OPTION CANNOT APPEAR WITHIN CONDITION PART OF A *NOT CONDITION*. W *NOTE* STATEMENT }<'OLLOWING A PARAGRAPH-NAME IS TERMINATED BY NEXT PARAGRAPHNAME (word) When the NOTE statement appears as the first sentence of a paragraph, the entire paragraph is considered to be part of the NOTE character string. The compiler assumes the current element in the A-margin to be a procedure-name. When a NOTE sentence appears as other than the first sentence of a paragraph, the commentary ends with the first instance of a period foilowed by a space. S NUMERIC ITEM IN *SET* STATEMENT MUST BE LESS THAN 18 NUMERIC DIGITS-(D idn) S NUMERIC OPERAND IS GREATER THAN 18 DECIMAL DIGITS-(D idn) An attempt has been made to use the identifier (D idn) as an operand in an arithmetic statement. The size of such operands may not exceed 18 digits. The word indicated in the message is the internal name assigned by the compiler to the item. Reference the DATA DNISION source listing to determine the actual name of the item involved. S 1-18 OBJECT OF A SET VERB MUST NOT BE A LITERAL. 60229400 I Type I Message S ONE CHARACTER LITERAL OR FIGURATIVE CONSTANT-EXCEPT ALL--EXPECTED AT THIS POINT IN EXAMINE (word) S ONLY INTEGERS ARE ALLOWED WITH TRACE CONTROL OPTIONS (word) S ONLY ONE *WHEN* OPTION ALLOWED IN SEARCH ALL (word) S OPEN, READ, SEEK, AND WRITE ARE NOT ALLOWED IN DECLARATIVES SECTION. S ONLY USE BEFORE/AFTER BEGINNING ARE VALID LABEL PROCEDURES ON :MASS STORAGE ('.\lord) S OPERAND FOLLOWING *BEFORE/AFTER* OR *BEFORE/AFTER STANDARD* IS NOT IDENTIFIABLE. W OPERAND OF PREVIOUS DIAGNOSTIC ASSUMED CORRECT IN ORDER TO CONTINUE SYNTAX CHECK (word) The compiler assumes the operand to be as stated in the previous diagnostic in order to enable continuation of syntax checking within the current statement. This message dOeS not clear the previous error; it indicates that the remainder of the statement is checked for additional syntax errors. W PARAGRAPH HEADER PRECEDING THE COpy STATEMENT IS EXPECTED AT THIS POINT (word) S PAB_AGRAPH-NAME AND PROCEDURAL PARAGRAPH MUST FOLLOW USE STATEMENT (word) S PARAGRAPH-:NAME ASSIGNED TO A *NOTE* STATEMENT MAY NOT BE REFERENCED (word) When the NOTE verb immediately follows a paragraph-name, the name is a component of the NOTE statement and thus cannot be referenced by any procedural statements. S PARAGRAPH-NAME EXPECTED TO FOLLOW SECTION-NAME (word) S PARAGRAPH-NAME NOT UNIQUE WITHIN ITS SECTION (word) S PARAGRAPH'-NAME PREVIOUSLY USED AS A SECTION NAME (word) W PREVIOUS DIAGNOSTIC SUSPENDED SYNTAX CHECK--RESUMED AT THIS POINT (word) S PROCEDURAL SEQUENCE CONTROL IDENTIFIER MAY NOT BE FLOATING POINT-(D idn) The control identifier for GO TO DEPENDING ON, PERFORM, and WRITE statements may not be floating-point items. S PROCEDURAL SEQUENCE CONTROL IDENTIFIER MUST BE AN INTEGER-(D idn) The procedural sequence controlling identifier-(D idn) for GO TO DEPENDING ON, PERFORM, and WRITE statements must be defined as having no positions to the right of its assumed decimal point. This numeric item is not an integer. S PROCEDURAL SEQUENCE CONTROL IDENTIFIER MUST BE NUMERIC ITEM -(D idn) The procedural sequence controlling identifier (D idn) for GO TO DEPENDING ON, PERFORM, and WRITE statements must be defined as a numeric elementary item with no positions to the right of its assumed decimal point. The identifier (D idn) is not numeric. 60229400 1-19 Type S Message PROCEDURAL STATEMENT EXPECTED TO FOLLOW A PARAGRAPH-NAME (word) A procedure statement verb was not detected following a paragraph-name. S PROCEDURAL VERB EXPECTED BUT WAS NOT FOUND (word) S PROCEDURE DIVISION HEADING MISSING OR ILLEGAL. S *PROCEDURE* MUST FOLLOW *ERROR* OR *LABEL* IN DECLARATIVES (word) S *PROCEDURE* MUST FOLLOW *INPUT* AND *OUTPUT* OF SORT ETATEMENT (word) W PROCEDURE-NAME EXPECTED IN *A* MARGIN (word) The current word does not meet the specifications of a programmer-assigned word; a procedure-name was expected. S PROCEDURE-NAME COPIED IS NOT EQUAL TO THE PROCEDURE NAME ON THE SOURCE STATEMENT. S PROCEDURE-NAME OR DECLARATIVES HEADER EXPECTED (word) A procedure-name or the DECLARATIVES header must follow the PROCEDURE DIVISION header. must start in the A -margin of the source card. W PROCEDURE-NAMES AND PARAGRAPHS MUST HAVE TERM-INAL PERIOD. S QUALIFICATION OF PROCEDURE NAMES NOT ALLOWED IN A SORT STATEMENT. S RECORD-NAME MUST FOLLOW RELEASE VERB (word) They The current operand does not meet the specifications of a programmer-assigned word. It should be a record -name. S *RECORD* REQUIRED AT THIS POINT IN SYNTAX. W *REEL* AND *LOCK* OPTIONS APPLICABLE ONLY FOR MAGNETIC TAPE (word) S REEL OPTION NOT APPLICABLE TO MASS STORAGE FILES (word) S *RELEASE* FROM IDENTIFIER MUST BE IN INPUT RECORD AREA OR WORKING STORAGE SECTION (word S *RELEASE* RECORD-NAME AND IDENTIFIER CAN NOT BE SAME DATA ITEM (word) S *RELEASE* RECORD-NAME MUST BE ASSOCIATED WITH A SORT FILE (word) S RELEASE STATEMENT APPEARS OUTSIDE A SORT INPUT PROCEDURE--NOTHING GENERATED. S *REPLACING/TALLYING* MUST FOLLOW EXAMINE DATA-NAME AND PRECEDE *UNTIL/FIRST/ALL/ LEADING*. Either REPLACING or TALLYING must be specified following the data-name. The next element specified must either be UNTIL FIRST (UNTIL is optional if following REPLACING), ALL, or LEADING. S REPORT-NAME USED WHERE A FILE-NAME WAS EXPECTED. W RESERVED WORD ENCOUNTERED OUT OF CONTEXT (word) S *RETURN* INTO IDENTIFIER MUST BE IN OUTPUT RECORD AREA OR WORKING-STORAGE SECTION (word) S RETURN STATEMENT APPEARS OUTSIDE A SORT OUTPUT PROCEDURE--NOTHING GENERATED. 1-20 60229490 Type Message S *REVERSED* AND *REWIND* OPTIONS APPLICABLE ONLY FOR MAGNETIC TAPE (word) W *REVERSED* OPTION LEGAL ONLY FOR SINGLE REEL FILE (word) S *RUN* OR A LITERAL OTHER THAN *ALL* MUST FOLLOW THE STOP VERB (word) S SEARCH ALL CONDITIONS MUST BE RELATION WITH EQUAL OPTIONS OR CONDITION NAME. S SEARCH ALL KEY DATA-NAMES MUST BE TESTED INCLUSIVELY- HIGHEST TESTED THROUGH LOWEST. S SEARCH VARYING IDENTIFIERS DESCRIPTION MUST IMPLY INTEGER OR CONTAIN USAGE IS INDEX (D idn) S ,SECTION-NAME NOT UNIQUE (word) S *SEEK*, *INVALID KEY* OF READ, VALID ONLY FOR RANDOM ACCESS MASS STORAGE FILES (word) S *SENTENCE* MUST FOLLOW *NEXT* IN A CONDITIONAL STATEMENT--ASSUMED *SENTENCE* (word) II S S S The compiler assumes NEXT SENTENCE in order to continue syntax checking. SIGN IS ILLEGAL WITH AN INTEGER SUBSCRIPT. I SIZE OF ENTER ROUTINE NAMES CANNOT EXCEED 8 CHARACTERS (word) I SORT-FILE-NAME USED WHERE A FILE-NAME WAS EXPECTED. S SORT INPUT PROCEDURE DOES NOT CONTAIN A RELEASE STATEMENT. S SORT INPUT PROCEDURE IS NOT A SECTION NAME. S SORT OUTPUT PROCEDURE DOES NOT CONTAIN A RETURN STATEMENT S SORT OUTPUT PROCEDURE IS NOT A SECTION NAME. S SORT PROCEDURES OVERLAP SORT input and output procedures must consist of one or more sections that are written consecutively and do not form a part of one another. S SORT STATEMENT IS ILLEGAL IN DECLARATIVES OR SORT PROCEDURE. W STATEMENT WHICH CAUSED PREVIOUS DIAGNOSTIC APPEARS INCOMPLETE (word) According to the status of the compiler when the previous diagnostic was generated, the statement in error appeared to be incomplete in addition to containing the error condition stated in the diagnostic. S SUBJECT AND OBJECT OF RELATIONAL CONDITION ARE BOTH LITERALS. S SUBJECT OF A CLASS TEST MUST BE USAGE DISPLAY--IMPLICITLY OR EXPLICITLY--(word) S SUBJECT OF A CONDITION-NAME CONDITION MUST BE A CONDITION-NAME (word) S SUBJECT OF A NUMERIC CLASS TEST CANNOT BE ALPHABETIC (word) S SUBJECT OF A *SIGN* CONDITION MUST BE NUMERIC (word) S SUBJECT OF AN ALPHABETIC CLASS TEST CANNOT BE NUMERIC (word) S SUBJECT OF EACH CONDITION MUST BE IN KEY IS CLAUSE OF SEARCH ALL IDENTIFIER (D idn) S SUBJECT OF *SET* VERB IS ILLEGAL ACCORDING TO THE OBJECT(S) ENCOUNTERED-(D idn) S SUBSCRIPT CANNOT BE AN OCCURRING ITEM (word) 60229400 1-21 I I Type Message S SUBTRACT ****FROM *LITERAL* REQUIRES GIVING OPTION (word) W TERMINAL PERIOD NOT FOUND WHERE EXPECTED IN PROCEDURAL STATEMENT (word) S THE CURRENT NAME MUST BE A RECORD DESCRIPTION ENTRY (word) S THE FIGURATIVE CONSTANT *ALL* IS NOT ALLOWED IN TRACE (word) S THE SEARCH IDENTIFIER MUST NOT BE SUBSCRIPTED OR INDEXED (word) S *TO* MISSING IN A GO TO STATEMENT (word) The word TO may not be omitted. continue syntax checking. The compiler assumes (word) is a procedure-name in order to S *TO* MUST FOLLOW *EQUAL* IN RELATIONAL CONDITIONAL (word) S *TO* MUST FOLLOW FIRST OPERAND OF MOVE STATEMENT (word) S *TO* REQUffiED IN ADD CORRESPONDING (word) S UNARY MINUS MUST BE FOLLOWED BY A LEFT PARENTHESIS, IDENTIFIER OR NUMERIC LITERAL (word) S UNBALANCED PARENTHESES ENCOUNTERED IN A CONDITION. s UNDEFINED DATA-NAME (word) W UNDEFINED MNEMONIC-NAME--*CONSOLE* USED INSTEAD. S UNDEFINED NAME USED AFTER *WRITE--ADVANCING* (word) S UNDEFINED SUBSCRIPT (word) S UNIDENTIFIABLE WORD FOLLOWING CONDITION PART OF *PERFORM* (word) W *UNIT* OPTION APPLICABLE ONLY FOR SEQUENTIAL MASS ~TORAGE (word) S UNRECOGNIZABLE OPERAND IN A CONDITIONAL STATEMENT (word) A variable (i. e., data-name or literal) has been encountered or is assumed if a severe diagnostic appears above but the next operand cannot be identified. The operand must be an arithmetic operator, condition-name, NOT, relational operator, NU1\lERIC, ALPHABETIC, POSITIVE, NEGATIVE, ZERO, or right parenthesis. *UNTIL* OPTION :MAY APPEAR ONLY 3 TIlVIES IN PERFORrvl STATEMENT (word) S USE LABEL PROCEDURES ARE NOT APPLICABLE TO SCRATCH FILES (word) S *USE* STATEMENT MUST FOLLOW EACH SECTION-NAME IN DECLARATIVE SECTION (word) S WHEN A DATA-NAME IS INDEXED THE OPERATOR -+ OR - MUST BE FOLLOWED BY INTEGER. S *WHEN CONDITION-l* REQUIRED IN SEARCH STATEMENT (word) S *WHEN* IS VALID ONLY WITHIN A SEARC H STATEMENT. S WORD INAPPROPRIATE IN *COPY REPLACING* STATEMENT (word) 1-22 60229400 GENERATOR Message w A/N EDIT OF ITEM GREATER THAN 4095 CHAR--EXCESS CHAR TRUNCATED ON RIGHT. W BCD TOO LARGE FOR BINARY FIELD--ZERO IS MOVED. S DUPLICATE PROCEDURE-NAME WITHIN A SECTION. W FLOATING POINT-BCD NUMERIC COMPARISON MAY FAIL. W FRACTIONAL PORTION TRUNCATION OCCURS ON BCD-BINARY CONVERSION. S IDENTIFIER IN SET UP BY OR DOWN BY MAY NOT BE A FLOATING POINT ITEM. S IDENTIFIER IN SET UP BY OR DOWN BY MAY NOT BE AN INDEX DATA ITEM. S ILLEGAL DE CLARA TIVES PROCEDURE REFERENCE. S ILLEGAL TO PERFORM PROCEDURE IN DECLARA TIVES THRU PROCEDURE IN NON-DE CLARA TIVES. S INVALID PERFORM--PROCEDURE-NAME-2 OCCURS BEFORE PROCEDURE-NAME-l. S LEFT TRUNCATION MAY OCCUR ON BCD-BINARY CONVERSION. W LOSS OF SIGNIFICANCE MAY OCCUR ON NUMERIC EDIT. s NUMBER OF SUBSCRIPTS GIVEN DOES NOT EQUAL NUMBER REQUIRED. S PROCEDURE-NAME UNDEFINED WITHIN SECTION QUALIFIER. W TALLY IS 5 DIGITS AND MAY OVERFLOW ON EXAMINE. S UNDEFINED PROCEDURE NAME (word) GENERAL COBOL RULE VIOLATION DIAGNOSTICS Type Message W CHARACTER IN CONTINUATION FIELD NOT A HYPHEN--ACCEPTED AS HYPHEN. S COMPILER CANNOT READ THE LIBRARY DIRE CTORY FOR COPY. S COMPILER CANNOT READ THE LIBRARY FOR COPY. S COpy IS NOT ALLOWED WITHIN A RENAMED FILE OR WITHIN TEXT COPIED FROM THE LIBRARY. E FIRST NON-BLANK CHARACTER IN CONTINUED NON-NUMERIC LITERAL NOT A QUOTE--ACCEPTED AS QUOTE. S LIBRARY-NAME IN COpy STATEMENT CANNOT BE FOUND IN LIBRARY DIRECTORY. E ITEM USES MORE THAN 3 SUBSCRIPTS E ITEM USES MORE THAN 49 LEVELS OF QUALIFICATION S LIBRARY-NAME IN COpy STATEMENT MAY NOT BE COBOL RESERVED WORD AND MUST BE 8 CHARS OR LESS. S NON-COBOL CHARACTER IN SOURCE TEXT--THE FOLLOWING CHARACTER IS ILLEGAL (word) E NON-NUMERIC LITERAL EXCEEDS 120 S NON-USASI ELEMENT-CLAUSE IGNORED. CHA~CTERS--FIRST 120 ACCEPTED. This diagnostic is produced only when an assembly option is exercised by the installation. is always classed as severe. This error TERMINAL PERIOD MISSING (word) E WORD EXCEEDS 30 CHARACTERS--FIRST 30 ACCEPTED. 60229400 1-23 FATAL ERROR CONDITIONS A system error which prohibits compilation from continuing causes a message of the following format to be written on the job standard out file. Message Significance *UCBL x=n function REJECT ON DSl dsi. Action phrase. x 1-24 x or y returned by blocker/deblocker x for LOCATE or SEXPAND MASTER REFERENCE MANUAL n Corresponding reject code. Function Anyone of the following: PACK, PACKC, PACKR, PICK, PICKC, PICKD, LOCATE, SEXPAND, ASSIGNM, 3ALOCATE Action phrase Optional description applicable to error message. 60229400 OBJECT-TIME DIAGNOSTICS REPORT WRITER During program execution the routines generated to produce a report test for four invalid conditions. The following corresponding messages are written on the job standard OUT file. The job is then terminated with UCBL ABNORMAL TERMINATION written on the standard OUT file. report-name INITIATE ON INITIATED REPORT report-name TERMINATE ON UN-INITIATED REPORT report-name GENERATE ON UN-INITIATED REPORT report-name REACHED END OF ALLOCATED FILE USASI COBOL/SORT At the completion of a USASI COBOL/SORT operation, the following informative message is written on the standard OUT file. UCBL SORT RECORDS IN xxxxxxxx RECORDS OUT yyyyyyyy At the beghllling of the sort operation, if insufficient core is scheduled to allow sorting to beginj the following voluntary abort message is generated for the job. UCBL SORT INSUFFICIENT CORE SCHEDULED The user should schedule more core before attempting to run the job again. At the end of a SORT operation, if the record counts do not agree the following message is displayed to the operator. UCBL SORT RECORD COUNTS DO NOT AGREE ACCEPT ABANDON Operator action is as follows: 1. 2. 3. 4. Press MANUAL INTERRUPT Type response code Rr, Type either ACCEPT or ABANDON Press FINISH RERUN/RESTART MESSAGES Message Significance RERUN DUMP number of dump just written Written on job standard OUT file as each rerun dump is taken during program execution. RERUN FILE FULL. LAST DUMP # IS number of last complete dump written Subsequent dump requests are ignored. Dump file may become full if allocated area for mass storage file is exceeded, or magnetic tape file end-of-reel is reached. Either expand mass storage dump file or mount new output tape reel. Restart from any dump up to and including last complete dump. 60229400 1-25 SYSTEM REJECT CONDITIONS A job may abort because of conditions detected by the MASTER BLOCKER/DEBLOCKER. MIOCS, *DEF, or system OCARE processors. The format of such diagnostics is as follows: Message UCBL I/O ERR s mmcc DSI dsi Significance s Code indicating the object-time processor rejected by MASTER. o C R W M H S D E U Open request processor Close request processor Read request processor Write request processor Move processor Hardware failure processor Seek request processor Rerun/restart processor Multifile processor Unknown reject processor mm 2-digit code indicating which MASTER routine caused reject. cc 2-digit error code returned by MASTER routine on rejection. Routine 01 02 03 04 1-26 BLOCKER/DEBLOCKER MIOCS *DEF System OCARE 60229400 TERMINATIVE DIAGNOSTICS When the object-time I/o system encounters a trouble area for which no correction can be made, the system generates an abortive diagnostic on the standard OUT file for the job. The format of the message is indicated below; the error code depends on the source code for interpretation. UCBL I/O ERROR s nnnn DSI dsi s Code indicating which I/O routine generates the diagnostic. nnnn Numeric code for the error encountered. s nnnn Significance C 0001 Attempt to CLOSE an unopened file. D 0001 Abnormal termination of a read/write operation in the rerun dump routine. H 0001 Hardware device is inaccessible; processing cannot continue. 0 0001 Attempt to OPEN WITH NO REWIND on a file not previously CLOSED WITH NO REWIND. R 10001 S 0001 W 0001 C 0002 Attempt to CLOSE REEL on a mass storage file. D 0002 Rerun file dsi error in the restart control card; control card contains more than four characters. H 0002 Operator decided to abandon the job after encountering an irrecoverable I/O transmission error where the user provided no AFTER STANDARD ERROR RECOVERY declarative procedure. M 0002 Logical record size error. A logical record exceeds the maximum size defined for the file. a 0002 Attempt to OPEN WITH NO REWIND a mass storage file. R 0002 A~tempt S 0002 User attempted a SEEK on a sequential access file. W 0002 Attempt to WRITE on an unopened file. D 0003 Abnormal termination of a LOCATE, PICK, or READ request in the restart routine. M 0003 Variable portion of a logical record exceeds the maximum variable portion size defined for the file. 0 0003 Attempt to OPEN a file which is already open. R 0003 Attempt to READ a file which has reached EOF but has not been closed. W 0003 Attempt to WRITE on a magnetic tape file which has been CLOSED WITH NO REWIND or CLOSED WITH REWIND but has not been subsequently opened again. a 0004 Attempt to open a file that shares areas with or is on the same multifile reel as another file which is currently open. W 0004 Attempt to WRITE on a mass storage file following a previous WRITE which was rejected; control had been passed to the user's INVALID KEY procedure. 0 0005 Abnormal termination of a forward I/O search o"ll a multifile reel. 60229400 Attempt to READ a file which was not opened for INPUT or INPUT-OUTPUT. IUser requested a SEEK on an unopened file. IAttempt to WRITE on a file declared to be INPUT only. to READ an unopened file. 1-27 s i nnnn I Significance o 0006 Abnormal termination of a tape rewind. W 0006 User program attempted two successive WRITE requests without an intervening READ request on an INPUT-OUTPUT file. o 0007 Attempt to OPEN INPUT REVERSED a file with variable length blocked records. E OOyy End-of-reel condition exists on an OUTPUT multifile reel. being created at the time the error occurred. R 0106 A PICK request was rejected when the blocker/deblocker routine tried unsuccessfully to mount a new segment on the file. R 0107 Defined block area out of bounds to read routine. U 02xx Abnormal status reject on an MIOCS function request; xx is the error code returned by MIOCS (section 2.1, MASTER Diagnostic Handbook, Pub. No. 60206800. L 010x Reject on a BLOCKER/DEBLOCKER request when attempting to PICK a STANDARD label card from a file on SYSTEM-INPUT when file is declared to contain labels. x is error code returned by blocker/deblocker (section 2.3, MASTER Diagnostic Handbook, Pub. No. 60206800. 1-28 yy is the position number of the file 60229400 OPERATOR MESSAGES MESSAGE TO OPERATOR Type Job Task Rr JOB i UCBL nnn Optional Message Significance Action I/O IRR ERR ON DSI dsi ACCEPT BYPASS RETRY ABANDON Irrecoverable error on I/O. User program did not specify AFTER STANDARD ERROR RECOVERY DECLARATIVE. Operator must make appropriate decision. 1. Press MANUAL INTERRUPT 2. Type MASTER generated response code and one action word: I I I I Action word ACCEPT Ignore error condition and proceed. I BYPASS Skip erroneous record and proceed. RETRY Repeat recovery procedures. I ABANDON Terminate job. 3. Press FINISH Rr JOB i UCBL LBL ERROR DSI dsi REEL nn ht CcEeUuuu Rr JOB i UCBL MNT Header label does not agree with information furnished by user. ~~T DSI dsi 1. After mounting correct reel, type Rr, OK 2. To ignore incompatibility, type Rr,NO 3. Press FINISH 1. Mount reel n on· tape unit uu 2. Type response: REEL nn ON ht CeEe Uuuu RSVP Rr,OK Reel mounted Rr, NO Request cannot be honored 3. Press FINISH A JOB i UCBL MNT ~:T DSI dsi REEL nn ON ht CcEe Uuuu A JOBi UCBL MNT ~~T DSI dsi REEL nn ON UNIT NEXT ASSIGNED TO THIS JOB 60229400 File is assigned to alternating units. Object-time I/O system automatically switches to alternate reel at reel end. Mount reel nn on unit uuu. No response required. Mount reel nn on 'unit assigned by the *DEF logging message immediately following this message. 1-29 I I ENTER V.ERB OBJECT CODE EXAMPLES J The ENTER verb object code varies when data-names are all alphanumeric, all nUiTJeric, or mixed. The following symbols are used in the VFD (variable field definition) in the examples: Characters preceding slash marks (mode indicators) o Octal A Word address arithmetic C Character address arithmetic The positive decimal integer following the mode indicator denotes the number of bit positions in the variable field. Characters following slash marks L location S length o zero P point location Characters in parentheses denote the data-name, file-name or procedure name associated with the indicator. For example, S{DN3) means the size of DN3. ENTER USASI COBOL Subprograms ENTER COBOL; XCBLSUB. Resulting object code: EXT XCBLSUB HIS RTJ XCBLSUB ROS Parameters may not be passed to a COBOL subprogram. Instead, the two programs communicate through the Common-Storage section of the DATA Division. 60229400 J-l ENTER COMPASS/MASTER Subprograms ENTER COMPASS; SUBR, DN1, DN2, DN3, FN1, PN1, C2DN, C1DN DN Data-name FN File-name PN Procedure-name C2DN COMP-2 data-name C1DN COMP-1 data-name Resulting object code: EXT SUBR RIS RTJ SUBR VFD 06/52,01/0, C17/L(DN1) VFD 07/0,017 /S(DN1) VFD 06/60,01/0, C17/L(DN2) VFD 06/P(DN3), 06/S(DN#), 06/P(DN2), 06/S(DN2) VFD 06/61,01/0, C17/L(DN3) VFD 06/40,03/0,A15/L(FN1) VFD 06/00,03/0, A15/L(PN1) VFD 06/71,03/0,A15/L(C2DN) VFD 06/70,03/0,A15/L(C1DN) ROS ENTER USASI FORTRAN Subprogram ENTER FORTRAN: SQRTFN; C2DN C2DN COMP-2 data-name Resulting object code: EXT SQRTFN RIS J-2 RTJ SQRTFN VFD 06/71,03/0, A15/L(C2DN) 60229400 INDEX ACCEPT statement 4-17 ACCESS MODE clause 2-9 ACCESS-PRNACY label field 3-17; 4-42 Access methods 2-9, 10 ACTUAL KEY clause 2-10 with READ 4-52 with SEEK 4-61 ADD statement 4-18 ADVANCING option WRITE statement 4-75 AFTER option PERFORM statement 4-44 ALL figurative constant B-7 ALLOCA TE request 4-52; 7-7 Allocation 2-8; 4-41 Alphabetic items JUSTIFIED 3-14 test at 4-11 move to 4-36 PICTURE 3-22, 26 Alphanumeric items edited 3-23 JUSTIFIED 3-14 move to 4-36 PICTURE 3-22, 26 ALTER statement 4-20 ALTERNATE AREA RESERVE clause 2-8 Arithmetic expressions 4-4 Arithmetic operators 4-4 Arithmetic statements 4-5 ASCENDING KEY option OCCURS clause 3-18 SORT statement 4-64 ASSIGN clause 2-6 with sort files 2-5; 4-64 A T END option READ statement 4-51 RETURN statement 4-54 SEARCH statement 4-55 AUTHOR paragraph 1-1 60229400 BEGINNING option, USE statement 4-72 Binary items (See COMPUTATIONAL-I, -2) BINARY option RECORDING MODE clause 3-34 BLANK WHEN ZERO clause 3-11 with PICTURE edit 3-31 Block 3-12 BLOCK CONTAINS clause 3-12 file blocking formats F-1 with OPEN 4-43 CF option, TYPE clause 5-23 CH option, TYPE clause 5-23 CHARA CTERS option BLOCK CONTAINS clause 3-12 MEMORY SIZE clause 2-2 Character address bias definition 4-16 with SEARCH 4-56 Character set B-1 Collating sequence D-l CLOSE statement 4-21 COBOL control cards 7-4 Reserved words vii, viii Reserved word list C-l, 2, 3 CODE clause, report writer 5-9 Codes, external, internal, machine, printer, punched cards D-l Coding areas 7 -1 Coding sheet rules 7-3 Coding sheet 7 -2, 3 Collating sequence D-l COLUMN NUMBER clause, report writer 5-10 Comment paragraph 1-1 Common storage section 3-2 CaMP, -1, -2 (See COMPUTATIONAL-I, -2) Comparison of numeric operands 4-9 Comparison of nonnumeric operands 4-9 Comparison with index names or items 4-10 Compilation output 7-8 Index-l Compiler directing statements 4-3 COMPUTATIONAL-I, -2 options USAGE clause 3-40, 41 with OCCURS 3-19 COMPUTATIONAL-n items in arithmetic statements 4-5 with DISPLAY statement 4-24 with SEQUENCED ON 3-37 COMPUTE statement 4-23 Conditional statements 4-3 Condition-name B-3 Condition-name condition 4-12 Condition-name entry 3-10 Conditions 4-6 Class 4-11 Comparison 4-9, 10 Condition-name 4-12 Evaluation rules 4-12 Relation 4-7 Sign 4-10 CONFIGURA TION SECTION 2-1 Connectives B-9 CONSOLE 2-3 Constants figurative 3-6; B-7 (See initial value) CONTIGUOUS option RECORDING MODE clause 3 -34 Control break, report writer 5-2 Control cards COBOL 7-4 MASTER 7-6 CONTROL FOOTING option TYPE clause 5-23 Control groups, report writer 5-2 CONTROL HEADING option TYPE clause 5-23 COpy statement 6-1 Data description entry 3-9, 10 FILE-CONTROL paragraph 2-5 File description entry 3-7 I-O-CONTROL paragraph 2-10 OBJECT-COMPUTER paragraph 2-2 Procedure division 4-2 Report description entry 5-6 SOURCE-COMPUTER paragraph 2-2 SPECIAL-NAMES paragraph 2-3 Index-2 CORR } to 4 14 { CORRESPONDING op Ion ADD statement 4-18, 19 MOVE statement 4-35, 37 Subtract 4-68 CRT 2-6 files assigned to 3 -33 labels 3-16 CURRENCY SIGN clause 2-4 Data division xiii; 3-1 clauses 3-12, report writer 5-9 entry formats, report writer 5-4 entry formats, report writer 5-4 Data division sections 3-1 Data map 7-9 Data-name 3-6; B-3 (See user defined words, words) DATA RECORDS clause 3-7, 13 DATE-COMPILED paragraph 1-1, 2 DATE-WRITTEN paragraph 1-1 DE option, TYPE clause 5-23 Debugging 4-17, 70 DECIMAL option RECORDING MODE clause 3-34 DECIMAL POINT is COMMA clause 2-4 Decimal point alignment 3-14, 25 assumed 3-24 PICTURE character 3-25, 28 Declaratives description 4-2 DECLARA TIVES specification 4-1 *DEF card 7-7 DENSITY option RECORDING MODE clause 3-34 DEPENDING ON option GO TO statement 4-31 OCCURS clause 3-18 RECORD CONTAINS clause 3-33 DESCENDING KEY option SORT statem ent 4-64 DETAIL option, TYPE clause 5-23, 24 DETAIL, FIRST/LAST option PAGE LIlVIITS clause 5-16 60229400 Diagnostics 1-1 Blocker/deblocker 1-27 COBOL rule violation 1-24 *DEF 1-27 Environment division 1-2 Fatal error 1-25 Generator 1-24 Identification division 1-2 1-0 object time 1-28 MIOCS 1-27 Object time 1-26 OCARE 1-27 Operator Messages I-I Procedure division 1-13 Report writer I-I0 object time I-26 Rerun-restart h26 Sort-object tiIne I-26 System reject conditions 1-27 Terminative 1-28 UCBL I-I, 25 USASI/COBOL SORT 1-26 DISK 2-6 DISPLAY option, USAGE clause 3-40 DISPLA Y statement 4-24 DIVIDE statement 4-25 Divisions xi dsi 2-6 Editing 3-22, 29 fixed insertion 3-29 floating insertion 3-30 rules 3-28 simple insertion 3-28 special insertion 3-28 zero suppression 3-31 EDITION-NUMBER label field 3-17; 4-42 Element character offset definition 4-16 with SEARCH 4-56 Elementary item 3-5 ELSE option, IF statement 4-32, 33 END DECLARATIVES 4-1, 2 END OF REEL/UNIT option RERUN clause 2-11 ENDING option, USE statement 4-72 ENTER statement 4-26 60229400 Entry xii; 3-4 Environment division xiii; 2-1 diagnostics 1-9 Error diagnostics 7-8; 1-1 ERROR PROCEDURE option USE statement 4-72 EXAMINE statement 4-29 EXIT statement 4-30 with PERFffi M 4-45 Expressions, arithmetic 4-4 FD entry Specification 3-7 Specification, report writer 5-5 with OPEN 4-41 with SORT 4-64 Figurative constant 3-6; B-7 File blocking formats F-l FILE CONTROL paragraph 2-5 with SORT 4-64 File description entry 3-7 report writer 5-5 FILE LIMIT clause 2-8 file-name 3-7, 8 (See user defined words, words) FILE option, USE statement 4-72 FILE SECTION 3-2 FILLER 3-6, 9, 38 FINAL control break 5 -23, 24 CONTROL FOOTING 5-24 CONTROL HEADING 5-23, 27 FINAL option CONTROL clause 5-11 RESET clause 5-19 TYPE clause 5-23 FIRST DETAIL option, PAGE LnvrIT clause 5-16 Floating point edit 3-23 items (See COMPUTATIONAL-2) literal B -4, 5 MOVE 4-35, 36 FOOTING option, PAGE LnvrIT clause 5-16, 17 FROM option COMPUTE statement 4-23 RELEASE statement 4-53 SUBTRACT statement 4-68 WRITE statement 4-74 Index-3 GENERATE statement, report writer 5-26, 27 GIVING option ADD statement 4-18 DIVIDE statement 4-25 MULTIPLY statement 4-39 SORT statement 4-64, 65 SUBTRACT statement 4-68 GO TO statement 4-31 with ALTER 4-20 with PERFORM 4-45 GROUP INDICATE clause, report writer 5-12 Group item 3-5 Hardware name 2-3, 5, 6, 11 HEADING option PAGE LIMITS clause 5-16, 17 TYPE clause 5-23 HIGH option, RECORDING MODE clause 3-34 HIGH-VALUE, figurative constant B-7 HYPER option RECORDING MODE clause 3-34 ID label field 3-17; 4-42 IDENTIFICA TION DIVISION xii; 1-1 diagnostics 1-2 Identification label field 3-17; 4-42 Identifier 4-4; B-4 IF statement 4-32 L""l1perative statements 4-3 Implementor name 2-3 Independent item 3 -5, 10 Index daia item 3-42; 4-55, 56, 62 Index-name 3-17; 4-15, 55, 56, 62 INDEX option, USAGE clause 3-40 INDEXED BY option, OCCURS clause 3-18 Indexing 4-15 Initial value 3 -6 INITIA TE statement, report writer 5-28 Input file labels 3 -16 Input files, CLOSE statement 4-21, 22 INPUT option, OPEN statement 4-41 INPUT-OUTPUT option OPEN statement 4-41 USE statement 4-72 INPUT-OUTPUT SECTION 2-4 Index-4 INPUT PROCEDURE SORT statement 4-64, 65 I-a-CONTROL 2-9 I-a option (See INPUT-OUTPUT option) I-a Summary of options G-l INSTALLATION paragraph 1-1 INTO option READ statement 4-51 RETURN statement 4-54 LWALID KEY option READ statement 4-51 WRITE statement 4-74 Item 3-4 JOB card 7-6 Justification, MOVE statement 4-36 JUSTIFIED clause 3-14 KEY IS option, OCCURS clause 3-18 with SEARCH statement 4-55, 57 Key words B-6 Label magnetic tape E-6 header E-6 ending E-7 mass storage E-l procedure 4-72 standard file E-l LABEL RECORDS clause 3-16 Language elements vii LangUage name 4-26 LAST DETAIL option PAGE LIMIT clause 5-16, 17 Level indicator 3-2; 5-1, 4 Level number ix; 3-5, 9 01 3-5, 9, 10; 5-1, 6 66 3-5, 9, 10, 35 77 3-5, 9, 10 88 3-5, 9, 10 Library 6-1 Source preparation 6-3 LINE COUNTER, report writer 5-3, 7 LINE NUMBER clause, report writer 5-13 60229400 Listings, source/symbolic 7-8 Literal ix; 3-6; B-4 Literal IS mnemonic-name option SPECIAL-NAMES clause 2-3 LOCK option, CLOSE statement 4-21 Logical record 3-12 LOW option, RECORDING MODE clause 3-34 LOW-VALUE figurative constant B-7 Mass storage-USASI differences H-l MASTER control cards 7-6 MEMORY SIZE, OBJECT COMPUTER paragraph 2-2 Messages (See diagnostics) Mnemonic names 2-3 MODE ACCESS 2-9 PROCESSING 2~9 RECORDING 3-34 MODIFICATION-PRIVACY label field 3-17; 4-42 MODULES option, MEMORY SIZE clause 2-2 MOVE statement 4-35 MULTIPLE FILE clause 2-12 MULTIPLE REEL/UNIT clause 2-8 with sort files 2 -5; 4-64 MULTIPLY statement 4-39 Name (See data-name; word; user defined word) NEGATIVE 4-10 NEXT GROUP clause, report writer 5-15 NEXT PAGE option LINE NUMBER clause 5-13 NEXT SENTENCE option IF statement 4-32 SEARCH statement 4-55 NO REWIND option CLOSE statement 4-21, 22 OPEN statement 4-41 Nonnumeric literal B-5 NOT 4-6, 12 Notations xiii, xiv NOTE statement 4-40 NUMERIC 4-11 Numeric edit 3-23 literal B-5 60229400 Numeric items with JUSTIFIED 3-14 with PICTURE 3-12, 26 in class condition 4-11 with MOVE 4-35, 36 OBJECT COMPUTER paragraph 2-2 Object program 7-9 OCCURS clause 3-18 with indexing 4-15 with REDEFINES 3-35 with SEARCH 4-55 with SET 4-62 OMITTED option, LABEL RECORDS clause 3-16 ON SIZE ERROR option 4-13 ADD statement 4-18 COMPUTE statement 4-23 DI\TIDE statement 4=25 MULTIPLY statement 4-39 SUBTRACT statement 4-69 OPEN statement 4-41 Operators arithmetic 4-4 logical 4-6 relational 4-7 OPTIONAL option, SELECT clause 2-5 Optional words B-6 Options in statements 4-14 OUTPUT option, OPEN statement 4-41 Output Compilation 7-8 file labels 3 -1 7 files, CLOSE statement 4-21, 22 Procedure 4-72 OWNER} . { OWNER-ID label fIeld 3-17; 4-42 Page break, report writer 5-2 PAGE COUNTER, report writer 5-4 PAGE FOOTING option, TYPE clause 5-23, 24 PAGE HEADING option, TYPE clause 5-23 PAGE LIMIT clause, report writer 5-15 Paragraphs xi Parameter string, ENTER statement 4-26 PERFORM statement 4-44 with USE procedures 4-72 PF option, TYPE clause 5-23, 24 Index-5 PH option, TYPE clause 5-23 Physical record (See Block) PIC } { PICTURE x; 3-22 Edit 3-28 Symbols x; 3-24 PLUS option LINE NUMBER clause 5-13 NEXT GROUP clause 5-15 POSITION option, MULTIPLE FILE clause 2-12 POSITIVE 4-10 PRINTER 2-6 PRIVACY label field 3-17; 4-42 Procedure division xiii; 4-1 Diagnostics 1-13 Report writer 5 -26 Statements 4-17 Procedure name 4-2; B-3 PROCEED TO option ALTER statement 4-20 Program contents xii PROORAM ID paragraph 1-2 Program structure xi PUNCH 2-6 Punctuation B-9 Qualifier B-4 connective B-9 Random access 2-9 READ statement 4-51 random access files 2-9 sequential access files 2-9 READER 2-6 Receiving item JUSTIFIED clause 3-14 MOVE statement 4-35 Record 3-5 01 level data description entry 3-9, 10 RECORD option READ statement 4-51 RETURN statement 4-54 SEEK statement 4-61 RE CORD (S) DATA clause 3-13 LABEL clause 3-16 Index-6 RECORD CONTAINS clause 3-33 file blocking formats F-l with OPEN 4-42, 43 with SEQUENCED ON 3-37 RECORD MARK option RECORD CONTAINS clause 3-33 RECORDING MODE clause 3-34 RECORDS option BLOCK CONTAINS clause 3-12 RERUN clause 2-11 REDEFINES clause 3-35 with COMPUTATIONAL-2 3-41 REEL option CLOSE statement 4-21 MULTIPLE clause 2-8 RERUN clause 2-11 USE statement 4-72, 73 REEL NUMBER label field 3-17 Reference format xiii; 7-1 Relation condition 4-7 RE LEASE statement 4-53 with SORT statement 4-64 REMARKS paragraph 1-1 RENAMES clause 3-9, 10, 36 RENAMING clause 2-6 REPLACING option COpy statement 6-1 EXAMINE statement 4-29, 30 Report 5-1 REPORT clause, report writer 5-6 Report description entry 5-6 Report group 5-1 REPORT FOOTING option, TYPE clause 5-23, 24 REPORT HEADING option, TYPE clause 5-23 Report group description entry 5-7 Report item 3-5; 5-1 Report-name 5-5, 6 Report section 3-1, 4; 5-1 Report writer 5-1 clauses 5-5, 8 diagnostics sample program 5-31 statements 5-26 RERUN clause 2-11 Rerun dump 7-9 Rerun/restart procedures 7-9 RESERVE ALTERNATE AREA 2-8 with sort files 2-5; 4-47 60229400 Reserved words vii, Vlll list of C -1, 2, 3 RESET clause, report writer 5-19 Restart 7-9 RETENTION CYCLE label field 3-17 RETURN statement 4-54 with SORT statement 4-65 REVERSED option, OPEN statement 4-41 REWIND option OPEN statement 4-41 RD entry 5-1, 6 RF option, TYPE clause 5-23, 24 RH option, TYPE clause 5-23 ROUNDED option 4-13 ADD statement 4-18 COMPUTE statement 4-23 DIVIDE statement 4-25 MULTIPLY statement 4-39 SUBTRA CT statement 4-68 Routine name, ENTER statement 4-26 RUN option, STOP statement 4-67 SAME AREA clause 2-12 Sam pIe program A-I COBOL decks 7-11 report writer 5-31 SCHEDULE card 7-6 SCRATCH 2-6 SD entry 3-8 Search function 4-16 SEARCH statement 4-55 Sections xi; 3-1 Common storage 3-2 File 3-2 Report 3-4; 5-1 Working storage 3-3 SE CTOR option RECORDING MODE clause 3-34 SECURITY paragraph 1-1 SEEK statement 4-61 with ACTUAL KEY 2-10 with READ 4-52 SEGMENTED option RECORDING MODE clause 3 -34 SELECT clause 2-6 with sort files 2-6; 4-64 Sentences 4-3 60229400 SEQUENCED ON clause 3-37 SEQUENTIAL ACCESS 2-9 PROCESSING 2-9 SET statement 4-62 with SEARCH 4-57 Sign condition 4-10 currency 2-4; 3-25 operational 3-22, 23, 24, 25 SIZE ERROR option 4-13 ADD statement 4-19 COMPUTE statement 4-23 DIVIDE statement 4-25 MULTIPLY statement 4-39 SUBTRACT statement 4-5 SORT statement 4-64 with RELEASE 4-53 with RETURN 4-54 with SAME SORT AREA 2-12 SOURCE clause, report writer 5-20 SOURCE COMPUTER paragraph 2-2 Source library preparation 6-3 Source program listing 7 -8 SPACE, figurative constant B-7 SPECIAL NAMES paragraph 2-3 with ACCEPT 4-17 with DISPLAY 4-24 Special registers B-6 Statem ents 4-3 Arithmetic 4-5 STOP statement 4-67 Subscripts 4-15 SUBTRACT statement 4-68 SUM clause, report writer 5-20, 21 Symbolic listing 7-9 Symbols x { ~~~HRONIZED } clause 3-38 SYSTEM - INPUT 2 -3, 6 SYSTEM-OUTPUT 2-3, 6 SYSTEM-PUNCH 2-3, 6 Tables 3-18, 19, 20; 4-55, 62 handling 4-16 TALLY, special register 4-29; B-6 as subscript 4-15 Index-7 TALLYING option, EXAMINE statement 4-29 TAPE 2-6 Task name cards 7-8 Terminal unit identifier 2-6 TERMINATE statement, report writer 5-29 THRU option2 RENAMES clause 3-36 TIMES option, PERFORM statement 4-46 TRACE statement 4-78 TRACK option, RECORDING MODE clause 3-34 TTY 2-6 files assigned to 3 -33 labels 3-16 tui 2-6 TYPE clause, report writer 5-23 WRITE statement 4-74 with ACTUAL KEY 2-9, 10 ZERO 4-16 figurative constant B-7 Zero suppression editing 3-31 UNIT option CLOSE statement 4-22 RERUN clause 2 -11 USE statement 4-72 UNTIL option, PERFORM statement 4-44, 47 UPON clause DISPLA Y statement 4-24 SUM clause 5-20, 21 USAGE clause 3-40 with SEQUENCED ON 3-37 USASI specifications, preface iii USASI vs. mass storage H-l USE BEFORE REPORTING 4-72; 5-30 USE statement 4-72 User defined words viii USING option, SORT statement 4-64 VALUE clause 3-44; 5-20 with COMPUTATIONAL-2 3-41 with OCCURS 3-20 VALUE OF option, LABEL RECORDS clause 3-17 VARYING option, PERFORM statement 4-44, 47 WHEN option, SEARCH statement 4-55 WITH CODE clause, report writer 5-9 Words viii; B-2 WORDS option, MEMORY SIZE clause 2-2 Working storage item 3-3 WRITE ADVANCING 4-74, 75 illdex-8 60229400 CONTROL DATA CORPORATION COMMENT AND EVALUATION SHEET 3300/3500 USASI COBOL/MASTER Reference Manual Pub. No. 60229400 February 1969 THIS FORM IS NOT INTENDED TO BE USED AS AN ORDER BLANK. YOUR EVALUATION OF THIS MANUAL WILL BE WELCOMED BY CONTROL DATA CORPORATION. ANY ERRORS, SUGGESTED ADDITIONS OR DELETIONS, OR GENERAL COMMENTS MAY BE MADE BELOW. PLEASE INCLUD E PAGE NUMBER REFERENCE. I I I I I 1 J t I 1&.11 ~I ~J ~I BI I I I 1 I I 1 F~~ NAMEI _______________________________________________________________ ADDRESS: BUSINESS ____________________________________________________________ NO POSTAGE STAMP NECESSARY IF MAILED IN U. S. A. FOLD ON DOTTED LINES AND STAPLE STAPLE STAPLE FOLD FOLD FIRST CLASS PERMIT NO. 8241 MINNEAPOLIS, MINN. BUSINESS REPLY MAIL NO POSTAGE STAMP NECESSARY w IF MAIL.EO IN U,S,A, Z ::::i C!) Z POSTAGE W ILL BE o-' PA 10 BY /?:::::::::::\\/»<>::::t\::::/\\:(::?::::::::::{:::.x... .: :.: ~ ~CUT OUT FOR USE AS LOOSE -LEAF BINDER TITLE TAB ~ (J) (J) o o .......... (J) 01 o o c m » m o o o r m " s: » en -I m :;u :;u m "TI m :;u rn 2 om ~ » 2 C »r CONTROL DATA CORPORATION CORPORATE HEADQUARTERS, 8100 34th AVE. SO .• MINNEAPOLIS. MINN. 55440 SALES OFFICES AND SERVICE CENTERS IN MAJOR CITIES THROUGHOUT THE WORLD Pub. No. 60229400 litho in U.S.A.
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19 Producer : Adobe Acrobat 9.0 Paper Capture Plug-in Modify Date : 2018:05:07 13:51:06-07:00 Create Date : 2018:05:07 13:51:06-07:00 Metadata Date : 2018:05:07 13:51:06-07:00 Format : application/pdf Document ID : uuid:f82309f5-78ea-214d-aa54-3b102f975f26 Instance ID : uuid:44116f2c-3a00-7d40-bfe9-a013fa794ff5 Page Layout : SinglePage Page Mode : UseOutlines Page Count : 329EXIF Metadata provided by EXIF.tools