| Identification Division |
| Data Division | |
The Environment Division specifies a standard method of expressing those
aspects of a data processing problem that are dependent upon the physical
characteristics of a specific computer.
The Environment Division is
optional in a COBOL source program.
If the program includes an
Environment Division, the Environment Division header is optional only if it
is the first division in the program.
The Configuration Section is located in the Environment Division of a
source program. The Configuration Section deals with the characteristics of
the source computer and the object computer. This section also provides a
means for specifying the
currency sign, choosing the decimal point, relating implementor-names
to user-specified mnemonic-names, relating alphabet-names to character sets
or collating sequences, and relating class-names to sets of characters.
The Configuration Section is
optional in the Environment Division of a COBOL source program.
The CONFIGURATION SECTION header
is optional only if it is the first statement in the program.
The Configuration Section must
not be stated in a program which is directly or indirectly contained within
another program.
The entries explicitly or
implicitly stated in the Configuration Section of a program which contains
other programs apply to each contained program.
General Format
Function
The SOURCE-COMPUTER paragraph identifies the computer on which the program
is to be compiled.
General Format
General Rules
- The source-computer-name is documentary only.
- The WITH
DEBUGGING
MODE phrase is used to enable debugging code, in accordance with the
Standard ANSI COBOL Debug Module. (See the section Environment Division
in COBOL Debug in the chapter Debug Module in your Language
Reference - Additional Topics.)
Function
The OBJECT-COMPUTER paragraph identifies the computer on which the program
is to be executed.
It is optional.
The MEMORY SIZE clause and
SEGMENT-LIMIT clause are classed as an obsolete elements in the ANSI'85
standard and are scheduled to be deleted from the next full revision of the
ANSI Standard.
All dialects within this COBOL
implementation support the MEMORY SIZE clause and SEGMENT-LIMIT clause for
documentary purposes only. The FLAGSTD Compiler directive can be used to
detect occurrences of this syntax.
Although they are part of the
standard COBOL definition, the MEMORY SIZE clause and SEGMENT-LIMIT clause
are explicitly excluded from the X/Open COBOL language definitions and should
not be used in a conforming X/Open COBOL source program.
General Format
Syntax Rules
- Object-computer-name must be one COBOL word defined by the user.
-
The OBJECT-COMPUTER paragraph
can consist of only the OBJECT-COMPUTER header.
General Rules
- The computer-name provides a means for identifying equipment
configuration, in which case the computer-name and its implied
configurations are specified by the user. The configuration definition
contains specific information concerning the memory size. The computer-name
and the MEM
ORY SIZE clause are documentary only.
- If the PROGRAM
COLLATING SEQUENCE clause is not specified, the NATIVE collating
sequence is used. The appendix Character Sets and Collating Sequences
lists both the full ASCII and EBCDIC collating sequences. Either can be
chosen as the NATIVE collating-sequence by use of the
NATIVE Compiler
directive.
- If the
PROGRAM COLLATING SEQUENCE clause is specified, the program collating
sequence is the collating sequence associated with the alphabet-name
specified in that clause.
- The program collating sequence established in the OBJECT-COMPUTER
paragraph is used to determine the truth value of any nonnumeric
comparisons:
- explicitly specified in relation conditions (see the section Relation
Condition later in this chapter).
- explicitly specified in condition-name conditions; see the section
Condition-Name Condition (Conditional Variable) later in this
chapter.
- The PROGRAM COLLATING SEQUENCE clause is also applied to any nonnumeric
merge or sort keys unless the COLLATING SEQUENCE phrase of the respective
SORT or MERGE statement is specified.
- The PROGRAM COLLATING SEQUENCE clause has no effect on the ordering of
indexed files.
- The PROGRAM COLLATING SEQUENCE clause applies only to the program in
which it is specified
and programs nested within it
- The
SEGMENT-LIMIT clause is documentary only. (See the chapter
Segmentation in your Language Reference - Additional Topics.)
Function
The SPECIAL-NAMES paragraph provides a means for specifying the currency
sign, choosing the decimal point,
specifying symbolic-characters,
relating implementor-names to user-specified mnemonic-names, relating
alphabet-names to character sets or collating sequences, and relating
class-names to sets of characters.
You can select one of several
pre-defined parameter passing conventions. Enhancements to the
CALL statement and the PROCEDURE DIVISION header allow these parameter
passing conventions to be used in inter-program communication.
Examples:
- An example of using the CRT status key fields is provided in the Examples
chapter in your Additional Topics.
General Format
Directives
- In addition to Compiler directives which provide flagging and modify the
reserved word list, the following directives may impact either the syntax or
semantics described in this section.
- ALPHASTART - determines whether valid numeric literals used in the
ALPHABET clause can begin with 0 or with 1.
- CHARSET - impacts which alphabet is considered the native character
set. This directive is ignored in some environments.
- NATIVE - impacts which alphabet is considered the native character
set.
- SYMBSTART - determines whether valid numeric literals used in the
SYMBOLIC CHARACTERS clause can begin with 0 or with 1.
Syntax Rules
-
The clauses in the
SPECIAL-NAMES paragraph may appear in any order.
- Mnemonic-names can be any COBOL user-defined word. At least one
constituent character must be alphabetic.
- Function-name refers to a system device or function used by your COBOL
system.
Function-name refers to an
external
switch if its name is one of UPSI-0 through UPSI-7.
- If function-name references an
external
switch
or the SWITCH-n or
SWITCH option is used,
the associated mnemonic-name cannot be specified anywhere
except in the SET statement
. At least one condition-name should be associated with it.
No condition-name is required.
- If function-name does not reference an external switch, the associated
mnemonic-name can be specified only in the ACCEPT, DISPLAY, SEND or WRITE
statements. A condition-name cannot be associated with such an
implementor-name.
- The literals specified in the literal phrase of the alphabet- name-1
clause:
- if numeric, must be unsigned integers and must have a value within the
range of one (1) through the maximum number of characters in the native
character set.
The lowest valid values for numeric literals in the
ALPHABET clause are sensitive to the
ALPHASTART Compiler
directive.
- if nonnumeric and associated with a THROUGH or ALSO phrase, must each
be one character in length.
-
cannot be specified as
floating-point literals or DBCS literals.
- If the literal phrase of the alphabet-name-1 clause is specified, a
given character must not be specified more than once in an alphabet-name
clause.
- The words THRU and THROUGH are equivalent.
-
The words STANDARD-1 and ASCII
are equivalent.
-
The reserved word IS is never
required in the SPECIAL-NAMES paragraph.
-
The literals specified in the
literal-4 phrase:
- if numeric, must be unsigned integers and must have a value within the
range of one (1) through the maximum number of characters in the native
character set.
- if nonnumeric and associated with a THROUGH phrase, must each be one
character in length.
-
cannot be specified as
floating-point or DBCS literals.
-
Literal-1, ... literal-5 must
not specify a symbolic-character figurative constant.
-
The same symbolic-character-1
must appear only once in a
SYMBOLIC CHARACTERS clause.
-
The relationship between each
symbolic-character-1 and the corresponding integer-1 is by position in the
SYMBOLIC CHARACTERS clause. The first symbolic-character-1 is paired with
the first integer-1, the second symbolic- character-1 is paired with the
second integer-1; and so on throughout the SYMBOLIC CHARACTERS clause; the
division into IS or ARE phrases is documentary only.
The lowest valid value for integer-1 is sensitive to the
SYMBSTART Compiler
directive.
-
There must be a one-to-one
correspondence between occurrences of symbolic-character-1 and occurrences
of integer-1, both within each IS or ARE phrase and within the entire
SYMBOLIC CHARACTERS clause.
-
The ordinal position specified
by integer-1 must exist in the native character set. If the IN phrase is
specified, the ordinal position must exist in the character set named by
alphabet-name-2; alphabet-name-2 must be described in an ALPHABET clause.
- Literal-6 must not be a figurative constant.
-
Integer-2 must be an unsigned
integer in the range 0 to 65535.
-
Data-name-1 of the
CURSOR IS clause must be declared in the Working-Storage section of
the program.
-
The CRT STATUS clause
specifies a data item into which a status value is moved after each Format 4
or 5
ACCEPT statement. In some
environments, it can be defined only in the first 64K of Working-Storage.
-
Data-name-2 must be described
in the Working-Storage section and must be three bytes long.
-
The CURSOR IS clause specifies
the data item to contain the cursor address as used by the ACCEPT statement.
General Rules
-
External
switches are set at run time by the operator, and the setting can be
determined in the program by testing the associated condition-names.
- If mnemonic-name is associated with an external switch, the status of
that switch can be altered by execution of a Format 1 SET statement (see the
section The SET Statement in this chapter).
- The alphabet-name-1 clause provides a means for relating a name to a
specified character code set and/or collating sequence. When alphabet-name-1
is referenced in the PROGRAM COLLATING SEQUENCE clause (see the section The
OBJECT-COMPUTER Paragraph) or the COLLATING SEQUENCE phrase of a SORT or
MERGE statement (see the sections The SORT Statement or The
MERGE Statement), the alphabet-name-1 clause specifies a collating
sequence. When alphabet-name-1 is referenced in a CODE-SET clause in a file
description entry (see the section The File Description - The Complete
Entry Skeleton), the alphabet-name clause specifies a character code
set.
- If the STANDARD-1
or ASCII
phrase is specified, the character code set or collating sequence
identified is the American Standard Code for Information Interchange, as
defined in American National Standard X3.4-1968.
If the STANDARD-2 phrase is
specified, the character code set identified is the International
Reference Version of the ISO 7-bit code, as defined in International
Standard 646, 7-bit Coded Character Set for Information Processing
Interchange.
If the EBCDIC phrase is
specified, the character code set or collating sequence identified is
EBCDIC.
If the NATIVE phrase is specified, the native character code set or
native collating sequence is used. The native collating sequence is
either ASCII or EBCDIC, as specified by the
NATIVE Compiler
directive.)
See the appendix Character Sets and Collating Sequences for
details of the ASCII code-set and the ASCII and EBCDIC collating
sequences and their correspondence.
- If the literal phrase is specified, alphabet-name-1 cannot be
referenced in a CODE-SET clause (see the section The CODE-SET Clause).
The character code set and/or collating sequence identified is that
defined according to the following rules:
- The value of each literal specifies:
- The ordinal number of a character within the native character set,
if the literal is numeric. This value must not exceed the value which
represents the number of characters in the native character set.
- The actual character within the native character set, if the
literal is nonnumeric. If the value of the nonnumeric literal contains
multiple characters, each character in the literal, starting with the
leftmost character, is assigned successive ascending positions in the
collating sequence being specified.
- The order in which the literals appear in the
ALPHABET clause specifies, in ascending sequence, the ordinal
number of the character within the collating sequence being specified.
- Any characters within the native collating sequence which are not
explicitly specified in the literal phrase, assume a position, in the
collating sequence being specified, greater than any of the explicitly
specified characters. The relative order within the set of these
unspecified characters is unchanged from the native collating sequence.
- If a character code-set is being specified, for each character
within the native character set that is not specified by the literal-1
phrase, the implementor defines the ordinal number within the character
code-set being specified.
- If the THROUGH phrase is specified, the set of contiguous characters
in the native character set, beginning with the character specified by
the value of literal-1, and ending with the character specified by the
value of literal-2, is assigned a successive ascending position in the
collating sequence being specified. In addition, the set of contiguous
characters specified by a given THROUGH phrase can specify characters of
the native character set in either ascending or descending sequence.
- If the ALSO phrase is specified, the characters of the native
character set specified by the value of literal-1, and literal-3 are
assigned to the same position in the collating sequence being specified
, or in the character
code set that is used to represent the data
- The character that has the highest ordinal position in the program
collating sequence is associated with the figurative constant
HIGH-VALUE
except when this figurative
constant is specified as a literal in the SPECIAL-NAMES paragraph
If more than one character has the highest position in the program
collating sequence, the last character specified is associated with the
figurative constant HIGH-VALUE.
- The character that has the lowest ordinal position in the program
collating sequence is associated with the figurative constant
LOW-VALUE
except when this figurative
constant is specified as a literal in the SPECIAL-NAMES paragraph
If more than one character has the lowest position in the program
collating sequence, the first character specified is associated with the
figurative constant LOW-VALUE.
-
Floating-point literals
cannot be used in a user-specifiedcollating sequence.
-
When specified as literals in
the SPECIAL-NAMES paragraph, the figurative constants
HIGH-VALUE and
LOW-VALUE are associated with those characters having the highest and
lowest positions, respectively, in the native collating sequence.
-
The
SYMBOLIC CHARACTERS clause is used to define user-defined words that
can be used like figurative constants. If the IN phrase is not specified,
symbolic-character-1 represents the character whose ordinal position in the
native character set is specified by integer-1. If the IN phrase is
specified, integer-1 specifies the ordinal position of the character that is
represented in the character set named by alphabet-name-2.
-
The internal representation of
symbolic-character-1 is the internal representation of the character that is
represented in the native character set.
- Literal-6, which appears in the
CURRENCY SIGN IS literal clause, is used in the PICTURE clause to
represent the currency symbol. The literal is limited to a single character
and must not be one of the following characters:
- digits 0 thru 9;
- uppercase alphabetic characters A, B, C, D, L, P, R, S, V, X, Z, or
the space;
C and R are allowed,
L is allowed,
E cannot be used,
N cannot be used,
G cannot be used,
lowercase alphabetic
characters a through z,
(except e, f, g, h, i, j, k,
m, n, o, q, t, u, w, y);
- special characters *, +, -, ,, ., ;, (, ), ", / or, =.
If this clause is not present, only the currency sign defined in the
COBOL character set is used in the PICTURE clause. See the section Character
Set in the chapter Concepts of the COBOL Language.
- The DEC
IMAL-POINT IS COMMA clause means that the function of comma and period
are exchanged in the character-string of the PICTURE clause and in numeric
literals.
-
If the
NUMERIC SIGN clause is specified, the default forsigned numeric items
is for the sign to be stored as a trailing separate character.
-
Wherever a mnemonic-name is
allowed, you can use thefunction-name.
- If function-name does not reference an external switch, it can be
selected from the following list:
TAB |
Skip to Vertical Tabulation Position (inserts ASCII X"0B"
in the output record as appropriate) |
WRITE ADVANCING statement |
PRINTER |
Printer |
DISPLAY statement |
FORMFEED |
Skip to new page (inserts ASCII X"0C" in the
output record as appropriate) |
WRITE ADVANCING statement |
COMMAND-LINE |
Command transfer |
ACCEPT and DISPLAY statements |
ARGUMENT-NUMBER |
Command-Line argument number |
ACCEPT and DISPLAY statements |
ARGUMENT-VALUE |
Command-Line argument value |
ACCEPT statement |
ENVIRONMENT-NAME |
Environment-variable name |
DISPLAY statement |
ENVIRONMENT-VALUE |
Environment-variable value |
ACCEPT and DISPLAY statements |
SYSERR |
Standard error device |
DISPLAY statement |
The following table reflects
the support for function names offered by OS/VS COBOL, VS COBOL II and SAA
in this COBOL system.
Table 6-1: Function Names Support
|
OSVS |
VSC2 Rel (2) |
COBOL/370
or VSC2 Rel (3)/(4) |
SAA L1 |
SYSIN |
y |
y |
y |
y |
SYSIPT |
U |
U |
y |
|
SYSOUT |
y |
y |
y |
y |
SYSLIST |
|
|
y |
|
SYSLST |
U |
U |
y |
|
SYSPCH |
U |
U |
y |
|
SYSPUNCH |
U |
y |
y |
|
CONSOLE |
y |
y |
y |
y |
C01 |
y |
y |
y |
y |
C02 |
y |
y |
y |
|
C03 |
y |
y |
y |
|
C04 |
y |
y |
y |
|
C05 |
y |
y |
y |
|
C06 |
y |
y |
y |
|
C07 |
y |
y |
y |
|
C08 |
y |
y |
y |
|
C09 |
y |
y |
y |
|
C10 |
y |
y |
y |
|
C11 |
y |
y |
y |
|
C12 |
y |
y |
y |
|
S01 |
y |
y |
y |
|
S02 |
y |
y |
y |
|
S03 |
|
U |
y |
|
S04 |
|
U |
y |
|
S05 |
|
U |
y |
|
CSP |
y |
y |
y |
y |
1 char rw literal |
y |
|
|
|
AFP-5A |
|
|
y |
|
y |
Documented and accepted by mainframe compilers and the
COBOL system. |
U |
Undocumented but accepted by mainframe compiler. |
-
The
CLASS clause provides a means for relating a name to the specified set
of characters listed in that clause. Class-name-1 can be referenced only in
a class condition. The characters specified by the values of the literals in
this clause define the exclusive set of characters which constitute
class-name-1. The value of each literal specifies:
- the ordinal number of a character within the native characterset, if
the literal is numeric. This value must not exceed the value which
represents the number of characters in the native character set.
- the actual character within the native character set, if theliteral is
nonnumeric. If the value of the nonnumeric literal contains multiple
characters, each character in the literal is included in the set of
characters identified by class-name-1.
If the THROUGH phrase is
specified, the contiguous characters in the native character set beginning
with the character specified by the value of literal-4, and ending with the
character specified by the value of literal-5, are included in the set of
characters identified by class-name-1. Additionally, the contiguous
characters specified by a given THROUGH phrase can specify characters of
the native character set in ascending or descending sequence.
- All clauses specified in the SPECIAL-NAMES paragraph for a program also
apply to programs contained within that program. The condition-names
specified in the containing program's SPECIAL-NAMES paragraph can be
referenced from any contained program.
-
The CALL-CONVENTION clause
allows you to select one of several pre-defined parameter passing
conventions which allow you to CALL subprograms written in languages other
than COBOL, and which use different parameter passing conventions.
-
The
CONSOLE IS CRT clause causes any ACCEPT or DISPLAY statement whose
operand is not a screen-name, and that has no phrases specific to a
particular format, to be treated as Format 5. If the CONSOLE IS CRT clause
is not present, these statements are treated as the standard ANSI ACCEPT or
DISPLAY.
-
The CURSOR IS clause specifies
the data item to contain the cursor address used by the ACCEPT statement.
- At the start of an ACCEPT statement, if data-name-1 contains a value
that is a valid character position on the screen, that position is used as
the initial position for the cursor. Otherwise, data-name-1 is ignored,
and the initial position for the cursor is the start of the first input
field on the screen. At the end of an ACCEPT statement, if the position in
data-name-1 has been used in that statement, data-name-1 is updated to
show the position of the cursor at the termination of the ACCEPT
statement.
- CURSOR IS has no effect on the positioning of fields on the screen.
- Data-name-1 must be 4 or 6 characters in length. If data-name-1 is 4
characters in length, the first two characters are interpreted as line
number, and the second two as column number. If data-name-1 is 6
characters in length, the first three characters are interpreted as line
number, and the second three as column number.
- The clause has no effect if data-name-1 contains an illegal position
(for example, zeros, a nonnumeric value, or a value that is beyond the
bottom of the screen).
- If data-name-1 contains a valid position that does not correspond to
an input field being accepted by the current ACCEPT statement, the cursor
is positioned to the next such field or, if there is none, to the first
such field. The ordering of the fields is the order in which their
descriptions appear in the Data Division.
-
The CRT
STATUS clause specifies a 3-byte data item, into which a status value
is moved after each Format 4 or Format 5 ACCEPT statement.
If the CRT STATUS clause is
specified in the SPECIAL-NAMES paragraph, every Format 4 or 5 ACCEPT
statement (as described later in this chapter) places a value into
data-name-2 to indicate the outcome of the ACCEPT operation. Data-name-2
consists of sta
tus keys which are set to indicate possible conditions resulting from
the completion of the operation. They are described below.
CRT Status Keys
CRT Status Key 1: The first byte of data-name-1 is CRT Status
Key 1 and should be described as PICTURE 9 USAGE DISPLAY. It indicates the
condition that caused the termination of the ACCEPT operation. The possible
values are:
"0" |
indicates a terminator key or auto-skip out of the final field |
"1" |
indicates a user-defined function key |
"2" |
indicates a COBOL system-defined function key |
"9" |
indicates an error |
A
terminator key is a key whose purpose is terminating ACCEPT operations
(for example, Enter). A particular configuration option causes the field-tab
key, when used in the final field of an ACCEPT, to act as a terminator key.
Defining function keys is also a configuration option.
A termination that returns a value of "0" is called a normal
termination.
If the ACCEPT statement contains an ON EXCEPTION phrase, any value in CRT
Status Key 1, except " 0", will cause the execution of the
imperative-statement in that phrase.
CRT Stat us Key 2: The second byte of data-name-1 is CRT Status
Key 2 and contains a code giving further details of the condition that
terminated the ACCEPT operation. Its format and possible values depend on the
value in CRT Status Key 1, as shown in the following table.
Table 6-2: Valid Combinations of CRT Status Keys 1 and 2
Key 1 |
Key 2 |
Meaning |
Format |
Value |
0 |
PIC 9 DISPLAY |
0 |
The operator pressed a terminator key |
0 |
PIC 9 DISPLAY |
1 |
Auto-skip out of the last field |
1 |
PIC 99 COMP |
0-127 |
The function key number |
2 |
PIC 99 COMP |
0-26 |
The function key number |
9 |
PIC 99 COMP |
0 |
No items fall within the screen |
See your COBOL system documentation on screen handling and user interfaces
for an explanation of function key numbers.
CRT Status Key 3: The third byte of data-name-1 is CRT Status
Key 3 and should be described as PICTURE 99 COMP-X or as PICTURE 99 COMP
(with the
NOIBMCOMP directive specified). If CRT Status Key 1 and CRT Status Key
2 are zero, then CRT Status Key 3 contains the raw keyboard code for the key
that terminated the ACCEPT operation. Otherwise, the contents of CRT Status
Key 3 are undefined.
Where a sequence of keystrokes rather than a single key has been
configured to perform a single function, only the code for the first
keystroke is returned.
Function
The FILE-CONTROL paragraph names each file and allows specification of
other file-related information.
General Format
Function
The
FILE-CONTROL entry names a file and can specify other file-related
information.
Although they are a part of the
standard COBOL definition, the RECORD DELIMITER and RESERVE phrases and
ellipses in the ASSIGN clause are explicitly excluded from the X/Open COBOL
language definitions and should not be used in a conforming X/Open COBOL
source program.
General Formats
Format 1 (Record Sequential Files)
Format 2 (Line Sequential Files)
Format 3 (Relative Files)
Format 4 (Indexed Files)
Format 5 (Sort-Merge Files)
Directives
- In addition to Compiler directives which provide flagging and modify the
reserved word list, the following directives may impact either the syntax or
semantics described in this section.
- ASSIGN - determines how the literal, data-name, of
external-file-reference is evaluated.
- SEQUENTIAL - determines whether files defined as ORGANIZATION IS
SEQUENTIAL are considered LINE SEQUENTIAL or RECORD SEQUENTIAL.
Syntax Rules
All Formats (All Files)
- The
SELECT clause must be specified first in the file control entry. The
clauses which follow the SELECT clause can appear in any order.
- Each file described in the Data Division must be named once, and only
once, as file-name in the FILE-CONTROL paragraph. Each file specified in the
file control entry must have a file description entry in the Data Division.
- If the ACCESS MODE clause is not specified, the ACCESS MODE IS
SEQUENTIAL clause is implied.
-
Data-name-1 can be declared in
the Data Division as an alpha-numeric or group data item long enough to hold
the external name of the file. If it is not explicitly declared within the
program, your COBOL system will declare it implicitly as an alphanumeric
data item long enough to hold the maximum permissible size of program-name.
If data-name-1 occurs in the FROM option, the dataitem must be explicitly
declared in the Data Division.
-
The NOT OPTIONAL phrase has
effect only when the file is opened input-output.
-
External-file-reference,
data-name-1, or literal-1 specifies theexternal name of the file.
If the EXTERNAL or DYNAMIC
option is used, literal-1 must not be specified.
If the DYNAMIC option is used,
the word specified for the externalfile-name will be interpreted as
external-file-reference.
- Data-name-2 must be defined in the Data Division as a two-character,
alphanumeric data item
or a two-character numeric
data item with USAGE DISPLAY
and must not be defined in the File,
LOCAL-STORAGE
or Communication Sections of the Data Division.
-
Data-name-3 must be defined as
a group item of 6 bytes in the Working-Storage or Linkage Section of the
Data Division.
-
Data-name-4 must be defined in
the Working-Storage Section as an alphanumeric data item.
- All data-names can be qualified.
Format 1 (Record Sequential Files only)
-
Literal-2 must be a
one-character nonnumeric literal.
-
Data-name-5 can be qualified.
It must be defined in the Data Division as a one-character data item of
category alphanumeric. It cannot be defined in the Communication, File or
Report Sections of the Data Division.
-
Character-string must not be a
reserved word, a user-defined word that is defined elsewhere, or a literal.
Formats 1 and 2 (Record and Line Sequential Files)
- When the
ORGANIZATION clause is not specified, sequential organization is
assumed.
-
KEYBOARD means console input.
-
DISPLAY means console output.
-
PRINTER specifies the system's
main printer.
-
PRINTER-1 specifies the
system's second printer.
Format 3 (Relative Files)
- If a relative file is to be referenced by a START statement, the
RELATIVE KEY phrase must be specified for that file.
- Data-name-5 must not be defined in a record description entry associated
with that file-name.
- The data item referenced by data-name-5 must be defined as an unsigned
integer.
Format 4 (Indexed Files)
-
Split-key-name is a
concatenation of one or more data items within a record associated with that
file-name. It can be referencedonly in START and READ statements.
- The data items referenced by data-name-5 and data-name-8
and any data-names referenced
by split-key-name-1 and split-key-name-2
must be defined within a record description entry associated withthe
file-name.
Any of these data items can
be defined as any supported data category. However, the key is still
treated as an alphanumeric item for the input and output statements against
the file named > in the SELECT clause.
- Data-name-5 and data-name-8
and any data-names referenced
by split-key-name-1 and split-key-name-2
cannot describe an item whose size is variable. See the section The
OCCURS Clause in this chapter.
- Data-name-8 cannot reference an item whose leftmost character position
corresponds to the leftmost character position of the item referenced by
data-name-5 or by another data-name-8 specified for the same file.
-
If the
PASSWORD clause is specified, it must immediately follow its
associated RECORD KEY or
ALTERNATE RECORD KEY clause.
Format 5 (Sort-Merge Files)
- Each sort or merge file described in the Data Division must be named
once and once only as file-name in the FILE-CONTROL paragraph. Each sort or
merge file specified in the file control entry must have a sort-merge file
description entry in the Data Division.
- Since file-name represents a sort or merge file, only the
ASSIGN clause is permitted to follow file-name in the FILE-CONTROL
paragraph.
General Rules
All Formats (All Files)
- The ASSIGN clause specifies the association of the file referenced by
file-name-1 to a storage medium. The first assignment takes effect,
subsequent assignments
within any one ASSIGN clause are documentary only.
- The
RESERVE clause allows the user to specify the required number of
input-output areas.
The RESERVE clause is
documentary only, unless the COBOL system documentation specific to your
operating system indicates otherwise.
- The ORG
ANIZATION clause specifies the logical structure of a file. The file
organization is established at the time a file is created and cannot
subsequently be changed.
-
When the FIL
E STATUS clause is specified, a value will be moved by the Run-Time
System into the data item specified by data-name-2 after the execution of
every statement that references that file either explicitly or implicitly.
This value indicates the status of execution of the statement. (See the
section I/O Status later in this manual.)
Data-name-3, if specified, is
documentary only.
-
The
PASSWORD clause is documentary only.
-
Use of the reserved word
DYNAMIC in an ASSIGN clauseindicates that the value of literal-1 or
data-name-1 in that ASSIGN clause is the specified file's name in the
external file-storage environment.
-
Use of the reserved word
EXTERNAL in an ASSIGN clauseindicates that external-file-reference
identifies the specified file to the external environment for possible
further mapping to an external file-storage environment-name. (See your
COBOL system documentation on file handling for details on setting up
external-file-name for your particular operating environment.)
If external-file-reference
contains the character "", then only that part of the name
following the last "" is used to identify the file to the
external environment.
-
The DISK option without
external-file-reference, data-name-1 or literal-1 and without the FROM
option, specifies a disk file whose name will be given in a
VALUE OF FILE-ID clause in the file description for the file. If that
file description contains no VALUE OF FILE-ID clause, the name of the disk
file is assumed to be the same as file-name-1 (known as the internal
file-name).
-
If any of the keywords DISK,
KEYBOARD, DISPLAY, PRINTER orPRINTER-1 are followed by
external-file-reference, data-name-1 or literal-1, that keyword is ignored.
-
The DISK option with the FROM
option specifies a disk file whose name on the disk is the value of
data-name-1. However, if when an OPEN statement is executed for that file,
data-name-1 contains all spaces, the name of the disk file is assumed to be
the same as file-name-1 (known as the internal-file-name).
- The
OPTIONAL phrase applies only to files opened in the INPUT, I/O or
EXTEND mode. Its specification is required for files that are not
necessarily present each time the object program is executed.
Formats 1, 3 and 4 (Record Sequential, Relative and Indexed
files)
-
The
LOCK MODE clause is an optional clause in the file control entry and
is used to specify the locking technique used for the file.
If this clause is omitted,
opening the file causes it to become exclusive, with the exception of OPEN
INPUT.
When LOCK MODE IS EXCLUSIVE is
specified, the run unit acquires a lock on the whole file when it opens the
file.
When LOCK MODE IS AUTOMATIC or
LOCK MODE IS MANUAL is specified, the file that the run unit opens is
shareable. Files opened OUTPUT, and indexed and relative files opened
EXTEND are, however, always exclusive.
-
The
ROLLBACK clause requests transaction logging for a file under those
COBOL systems that support that feature. See your COBOL system documentation
on file handling for details of how it is implemented in your system.
If the ROLLBACK clause is
specified then WITH LOCK ON MULTIPLE RECORDS will automatically be in
effect.
-
The
WITH LOCK ON RECORD clause specifies single record locking for the
file.
The WITH LOCK ON MULTIPLE
RECORDS clause specifies multiple record locking for the file. This clause
must be present if multiple record locking is required.
-
If LOCK MODE IS AUTOMATIC WITH
LOCK ON RECORD is specified for a file, a record lock is acquired by the
execution of the READ statement and is released upon execution of a
subsequent I/O operation on this file, with the exception of a START
statement.
If LOCK MODE IS AUTOMATIC WITH
LOCK ON MULTIPLE RECORD is specified for a file, a record lock is acquired
by the execution of the READ statement and is not released until a CLOSE,
COMMIT, ROLLBACK or UNLOCK statement is executed, or until an individual
lock is released by a DELETE statement.
-
If LOCK MODE IS MANUAL WITH
LOCK ON RECORD is specified, a lock is acquired by a READ statement only if
it includes the WITH LOCK phrase, and is released upon execution of a
subsequent I/O operation on this file, with the exception of a START
statement.
If LOCK MODE IS MANUAL WITH
LOCK ON MULTIPLE RECORDS is specified, a record lock is acquired by the
READ WITH KEPT LOCK statement and is not released until a CLOSE, COMMIT,
ROLLBACK or UNLOCK statement is executed.
-
When the lock mode is MANUAL or
AUTOMATIC, single record locking is assumed unless the WITH LOCK ON MULTIPLE
RECORDS phrase is included.
-
If a file is defined as
EXTERNAL and the operating system file-name is assigned by means of a
file-name, for example, by use of either the
ASSIGN
directive or keyword, using data-name-1 in the SELECT/ ASSIGN
statement, or using Format 2 of the VALUE OF phrase of an FD, then the
following rules should be followed:
- an identifier with the same name should be used to contain the
physical file-name in all programs which reference the file.
- the definition of the identifier which contains the physical file-name
should also contain the EXTERNAL attribute.
No violation of these rules
will be detected at compile time, but, if any program in the run unit
violates these rules, the results at run time will be undefined.
For further details of the
effects of
record locking, see your COBOL system documentation on file handling.
Format 1 (Record Sequential Files)
- The MULTIPLE REEL or MULTIPLE UNIT phrase must be specified if it is
possible or intended that the file can be closed by use of the CLOSE REEL or
CLOSE UNIT statement.
- Records in the file are accessed in the sequence specified by
predecessor-successor record relationships which are established by the
execution of WRITE statements when the file is created or extended.
-
Using the LINE ADVANCING FILE
phrase causes a file suitable for a printer to be produced. This file will
have an initial carriage-return character, and each record is written with
AFTER ADVANCING 1 LINE as the default advancing phrase. See your COBOL
system documentation on file handling for further details of the format.
-
The
PADDING CHARACTER clause is documentary only.
If the associated file
connector is an external file connector, all PADDING CHARACTER clauses in a
run unit which are associated with that file connector must have the same
specification. If data-name-5 is external, it must reference an external
data item.
The
RECORD DELIMITER clause is documentary only.
Format 2 (Line Sequential Files)
-
When
LINE SEQUENTIAL ORGANIZATION is specified either implicitly or
explicitly, the file is treated as consisting of fixed length records, each
containing one line of data. The records are stored with trailing spaces
removed. The definition of a line of data varies among different operating
systems. Some terminate line "records" with one or both of the
Carriage Return and Line Feed characters, and some pad out as fixed length
records. Your COBOL system, therefore, always produces files which are
compatible in this respect with the editor software in any operating system.
-
The LOCK MODE IS clause is
documentary only.
Format 3 (Relative Files)
- When access mode is sequential, records in the file are accessed in
order of ascending relative record numbers of existing records in the file.
- When access mode is random, the value of the RELATIVE KEY data item
indicates the record to be accessed.
- All records stored in a relative file are uniquely identified by
relative record numbers, which also specify the record's logical ordinal
position in the file. The first logical record has a relative record number
of 1, and subsequent logical records have relative record numbers of 2, 3,
4, ... .
- The data item specified by data-name-5 is used to communicate a relative
record number between the user and the operating system.
Format 4 (Indexed Files)
- When access mode is sequential, records in the file are accessed in
order of ascending record key values within a given key of reference.
- When access mode is random, the value of the record key data item
indicates the record to be accessed.
- The
RECORD KEY clause specifies the record key that is the prime record
key for the file. The values of the prime record key must be unique among
records of the file. This prime record key provides an access path to
records in an indexed file.
- If the file has more than one record description entry, data-name-1 need
be described only in one of these record description entries. The identical
character positions referenced by data-name-1 in any one record description
entry are implicitly referenced as keys for all other record description
entries of that file.
-
If the associated file
connector is an external file connector, all file description entries in the
run unit which are associated with that file connector must specify the same
data description entry for data-name-1 with the same relative location in
the associated record.
- The
ALTERNATE RECORD KEY clause specifies a record key that is an
alternative record key for the file. This alternate record key provides an
alternative access path to records in an indexed file.
- The data description of data-name-5
or split-key-name-1
and data-name-8
or split-key-name-2,
as well as of relative locations within a record, must be the same as
that used when the file was created. The number of alternate keys for the
file must also be the same as that used when the file was created. This
checking is configurable (see your COBOL system documentation on file
handling for details).
- The
DUPLICATES phrase specifies that the value of the associated record
key can be duplicated within any of the records in the file. If the
DUPLICATES phrase is not specified, the value of the associated record key
must not be duplicated among any of the records in the file.
- For duplicate values, the correct duplicate entry must be located using
sequential reads from the first duplicate entry.
-
The SUPPRESS phrase requests
the use of a sparse key for an alternate index. Sparse keys are only
available through the Callable File Handler and are not available on all
systems (see your COBOL system documentation on file handling for details).
Format 5 (Sort-Merge Files)
- The file-control entry names a sort or merge file and specifies the
association of the file to a storage medium.
-
When the
SORT STATUS clause is specified, a value is placed into the
two-character data item specified by data-name-2 after the execution of each
sort operation. This value indicates the status at completion of the
operation.
The resulting status of the
sort operation is indicated by valid combinations of status keys 1 and 2.
For explanations of status keys 1 and 2 and definitions of status, see the
section I/O Status earlier in this chapter.
The following combinations of
status keys are possible. Status key 1=0 and status key 2=0 indicates
successful completion. Status key 1=3 and status key 2=0 indicates a
permanent error. If status key 1=9, status key 2 contains an operating
system error message number.
The
FILE STATUS clause can be used instead of a SORT STATUS clause, but
is treated as a synonym for it, when specified for a SORT or merge file.
- The ASSIGN clause is documentary only.
Function
The I-O-CONTROL paragraph specifies the points at which rerun is to be
established, the memory area which is to be shared by different files, and
for files with sequential organization the location of files on a multiple
file reel.
The RERUN and MULTIPLE FILE TAPE
clauses of the I-O-CONTROL paragraph are classed as obsolete elements in the
ANSI'85 standard and are scheduled to be deleted from the next full revision
of the ANSI Standard.
All dialects within this COBOL
implementation fully support this syntax. The FLAGSTD Compiler directive can
be used to detect all occurrences of this syntax.
Although they are a part of the
standard COBOL definition, the RERUN and MULTIPLE FILE TAPE clauses are
explicitly excluded from the X/Open COBOL language definitions and should not
be used in a conforming X/Open COBOL source program.
General Format
Syntax Rules
- The I-O-CONTROL paragraph is optional.
- When either the integer-1 RECORDS clause or the integer-2 CLOCK-UNITS
clause is specified, character-string must be given in the
RERUN clause.
- In the SAME AREA clause, SORT and SORT-MERGE are equivalent.
- If the SAME SORT AREA or SAME SORT-MERGE AREA clause is used, at least
one of the file-names must represent a sort or merge file. Files that do not
represent sort or merge files can also be named in the clause.
- The two forms of the
SAME clause (SAME AREA, SAME RECORD AREA) are considered separately in
the following:
More than one SAME clause can be included in a program, subject to the
following restrictions:
- A file-name must not appear in more than one
SAME AREA clause.
- A file-name must not appear in more than one
SAME RECORD AREA clause.
- If one or more file-names of a SAME AREA clause appear in a SAME
RECORD AREA clause, all of the file-names in that SAME AREA clause must
appear in the SAME RECORD AREA clause. However, additional file-names not
appearing in that
SAME AREA clause can also appear in that SAME RECORD AREA clause.
The rule that only one of the files mentioned in a SAME AREA clause can be
open at any one time takes precedence over the rule that all files
mentioned in a
SAME RECORD AREA clause can be open at any one time.
- A file-name that represents a SORT or MERGE file must not appear in a
SAME AREA clause.
- A file-name that represents a sort or merge file must not appear in
more than one SAME SORT AREA or SAME SORT-MERGE AREA clause.
- If a file-name that does not represent a sort or merge file appears in
a
SAME AREA clause and one or more SAME SORT AREA or SAME SORT-MERGE
AREA clauses, all of the files named in that SAME AREA clause must be
named in that SAME SORT AREA or SAME SORT-MERGE AREA clause(s).
- The files referenced in the
SAME AREA, SAME SORT AREA, SAME SORT-MERGE AREA, or SAME RECORD AREA
clause need not all have the same organization or access.
-
Character-string must not be a
reserved word, a literal or a user-name.
- The END OF REEL/UNIT clause can only be used if file-name-2 is a
sequential file.
- More than one RERUN clause can be specified for a given file-name-2,
subject to the following restrictions:
- When multiple integer-1 RECORD clauses are specified, no two of them
can specify the same file-name-2.
- When multiple END OF REEL or END OF UNIT clauses are specified, no two
of them can specify the same file-name-2.
- Only one RERUN clause containing the CLOCK-UNITS clause can be
specified.
-
Each clause in the
I-O-CONTROL paragraph may optionally be followed by a period.
General Rules
-
The RERUN clause is documentary
only.
- The SAME AREA clause specifies that two or more files that do not
represent sort or merge files are to use the same memory area during
processing. The area being shared includes all storage area assigned to the
files specified. It is not, therefore, valid to have more than one of the
files open at the same time. (See Syntax Rule 5c.)
- The SAME RECORD AREA clause specifies that two or more files are to use
the same memory area for processing the current logical record. All of the
files can be open at the same time. A logical record in the SAME RECORD AREA
is considered as a logical record of each opened output file whose file-name
appears in this SAME RECORD AREA clause and of the most recently read input
file whose file-name appears in this SAME RECORD AREA clause. This is
equivalent to an implicit redefinition of the area; that is, records are
aligned on the leftmost character position.
-
The
APPLY clause is documentary only.
-
The MULTIPLE FILE clause is
documentary only.
- If the SAME SORT AREA or SAME SORT-MERGE AREA clause is used, at least
one of the file-names must represent a sort or merge file. Files that do not
represent sort or merge files can also be named in the clause. This clause
specifies that storage is shared as follows:
- The SAME SORT AREA or SAME SORT-MERGE AREA clause specifies a memory
area which will be made available for use in sorting or merging each sort
or merge file named. Thus any memory area allocated for the sorting or
merging of a sort or merge file is available for reuse in sorting or
merging any of the other sort or merge files.
- In addition, storage areas assigned to files that do not represent
sort or merge files can be allocated as needed for sorting or merging the
sort or merge files named in the SAME SORT AREA or SAME SORT-MERGE AREA
clause.
- Files other than sort or merge files do not share a storage area. If
the user wishes these files to share a storage area, he must also include
in the program a SAME AREA or SAME RECORD AREA clause naming these files.
- During the execution of a
SORT or
MERGE statement that refers to a sort or merge file named in this
clause, any non-sort-merge files named in this clause must not be open.
Copyright © 1998 Micro Focus Limited. All rights reserved.
This document and the proprietary marks and names
used herein are protected by international law.
| Identification Division |
| Data Division | |