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 PDF.
Page Count: 329

Download60229400_3300_COBOL_MASTER_Feb69 60229400 3300 COBOL MASTER Feb69
Open PDF In BrowserView 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

602294 250

+ 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 xI
~

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 ,xI
~

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), OESCT 
I
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                      : 329
EXIF Metadata provided by EXIF.tools

Navigation menu