For OSVS, VSC2 and MF only: The Listing Control Statements [ Micro Focus COBOL Language Reference ] MPE/iX 5.0 Documentation
Micro Focus COBOL Language Reference
For OSVS, VSC2 and MF only: The Listing Control Statements
The listing control statements provide a control for producing output
file listings during the compile process.
Three statements are associated with the listing control statements:
1. EJECT
2. SKIP1, SKIP2 AND SKIP3
3. For VSC2 and MF only: TITLE
For OSVS and VSC2 only: The BASIS Statement
Function.
The BASIS statement identifies that the program (the edit control file
and the COBOL source file) is to be submitted to your COBOL system under
the BASIS mechanism rules.
General Format.
Syntax Rules.
1. The BASIS statement must be the first line of the edit control
file.
2. The BASIS reserved word can commence anywhere between columns 1
and 66 of the statement line.
3. Sequence numbers can be included anywhere in columns 1 through 6
of the statement and must be followed by a space.
4. Text-name defines a unique external file-name which conforms to
the rules for user defined words (note lower case is translated
into upper case). External-file-name-literal is an alphanumeric
literal enclosed in quotation marks, which conforms to the
operating system rules for file-names.
General Rules.
1. Text-name or external-file-name-literal determines the COBOL
source file to be edited by the control file.
2. The editing of the COBOL source file is determined by the INSERT
and DELETE statements in the edit control file.
General Notes on Basis Mechanism Statements
1. DELETE statements wholly within area B of the source-program
line, not followed by a valid subject-sequence or
subject-sequence-range, will be treated as a COBOL DELETE
statement by your COBOL system.
2. Within the Basis mechanism DELETE statement, all subject-sequence
and subject-sequence-range numbers must be in ascending numeric
order.
3. Within the edit control file, all subject-sequence and
subject-sequence-range numbers must be in ascending numeric order.
The COPY Statement
Function.
The COPY statement incorporates text into a COBOL source program.
Examples:.
1. An example of using the OLDCOPY directive to achieve ANSI'68 or
LANGLVL(1) behavior is provided in the Examples chapter in your
Language Reference - Additional Topics.
2. An example of using the COPY statement with partial word
replacement supported by ANSI'88 rules is provided in the Examples
chapter in your Language Reference - Additional Topics.
General Format.
Directives.
1. In addition to system directives which provide flagging and modify
the reserved word list, the following directives may impact either
the syntax or semantics described in this section. See your COBOL
System Reference for details.
* COPYEXT - specifies the filename extension to be used for
locating copy files.
* COPYLBR - specifies that library-names are equivalent to
.lbr files.
* COPYLIST - causes the result of a copy statement to be
included in the listing file.
* FOLD-COPY-NAME - allows the compile system to find a copy
library member when the library name on disk and the
text-name in the COPY statement do not use the same
upper-case and lower-case letters for the library member
name.
* OLDCOPY - changes the handling of COPY statements to match
the ANS'68 and OS/VS COBOL LANGLVL(1) rules.
Syntax Rules.
1. If more than one COBOL library is available while the source is
passed through the COBOL system, text-name must be qualified by
the library-name identifying the COBOL library in which the text
associated with text-name resides. See your COBOL System
Reference for details of libraries.
For OSVS, VSC2 and MF only: This restriction is removed.
2. The COPY statement must be preceded by a space and terminated by
the separator period.
3. Pseudo-text-1 must not be null, nor can it consist solely of
either the character space(s) or comment lines.
4. Pseudo-text-2 can be null.
5. Character-strings within pseudo-text-1 and pseudo-text-2 can be
continued. However, both characters of a pseudo-text delimiter
must be on the same line. (See the section Continuation of Lines
in the chapter Concepts of a COBOL Program.)
6. Word-1 or word-2 can be any single COBOL word.
7. A COPY statement can occur in the source program anywhere a
character-string or a separator can occur except that a COPY
statement must not occur within another COPY statement.
8. Text-name defines a unique external file-name which conforms to
the rules for user defined words.
For MF only: External file-name-literal is an alphanumeric
literal that conforms to the operating system rules for
file-names. It can be specified with or without enclosing
quotation marks.
Text-names and unquoted external-file-name-literals are always
converted to uppercase.
9. For MF only: Library-name-literal is an alphanumeric literal
that conforms either to the operating system rules for file-names
or to the operating system rules for device identifiers. It can
be specified with or without enclosing quotation marks.
Unquoted library-name-literals are always converted to uppercase.
10. For OSVS, VSC2 and MF only: The SUPPRESS phrase is used to
suppress printing the contents of the copy member on the source
listing.
11. For ANS85 only: If the word COPY appears in a comment-entry or in
the place where a comment entry can appear, it is considered part
of the comment-entry.
For OSVS only: A COPY statement that appears in a comment-entry
is processed.
12. For OSVS and MF only: External-file-name-leteral and
library-name-literal, when enclosed in quotation marks, amy
contain the $, #, and @ characters.
General Rules.
1. The compilation of a source program containing COPY statements is
logically equivalent to processing all COPY statements prior to
the processing of the resulting source program.
2. The effect of processing a COPY statement is that the library text
associated with text-name is copied into the source program,
logically replacing the entire COPY statement, beginning with the
reserved word COPY and ending with the punctuation character
period, inclusive.
3. If the REPLACING phrase is not specified, the library text is
copied unchanged.
If the REPLACING phrase is specified, the library text is copied
and each properly matched occurrence of pseudo-text-1,
identifier-1, literal-1 and word-1 in the library text is replaced
by the corresponding pseudo-text-2, identifier-2, literal-2 or
word-2.
4. For purposes of matching, identifier-1, literal-1 and word-1 are
treated as pseudo-text containing only identifier-1, literal-1 or
word-1, respectively.
5. The comparison operation to determine text replacement occurs in
the following manner:
a. The leftmost library text word which is not a separator
comma or a separator semicolon is the first text word used
for comparison. Any text word or space preceding this text
word is copied into the source program. Starting with the
first text word for comparison and first pseudo-text-1,
identifier-1, word-1, or literal-1 that was specified in
the REPLACING phrase, the entire REPLACING phrase operand
that precedes the reserved word BY is compared to an
equivalent number of contiguous library text words.
b. Pseudo-text-1, identifier-1, word-1, or literal-1 match the
library text if, and only if, the ordered sequence of text
words that forms pseudo text-1, identifier-1, word-1, or
literal-1 is equal, character for character, to the ordered
sequence of library text words. For purposes of matching,
each occurrence of a separator comma, semicolon, or space
in pseudo-text-1 or in the library text is considered to be
a single space. Each sequence of one or more space
separators is considered to be a single space.
For ANS85 only: Each lowercase letter is equivalent to the
corresponding uppercase letter as specified for the COBOL
character set.
c. If no match occurs, the comparison is repeated with each
next successive pseudo-text-1, identifier-1, word-1, or
literal-1, if any, in the REPLACING phrase until either a
match is found or there is no next successive REPLACING
operand.
d. When all the REPLACING phrase operands have been compared
and no match has occurred, the leftmost library text word
is copied into the source program. The next successive
library text word is then considered as the leftmost
library text word, and the comparison cycle starts again
with the first pseudo-text-1, identifier-1, word-1, or
literal-1 specified in the REPLACING phrase.
e. Whenever a match occurs between pseudo-text-1,
identifier-1, word-1, or literal-1 and the library text,
the corresponding pseudo-text-2, identifier-2, word-2, or
literal-2 is placed into the source program. The library
text word immediately following the rightmost text word
that participated in the match is then considered as the
leftmost text word. The comparison cycle starts again with
the first pseudo-text-1, identifier-1, word-1, or literal-1
specified in the REPLACING phrase.
f. The comparison operation continues until the rightmost text
word in the library text has either participated in a match
or been considered as a leftmost library text word and
participated in a complete comparison cycle.
6. A comment line occurring in either the library text or
pseudo-text-1 is interpreted, for purposes of matching, as a
single space. Comment lines appearing in either pseudo-text-2 or
library text are copied into the source program unchanged.
7. Debugging lines are permitted within library text and
pseudo-text-2. Debugging lines are not permitted within
pseudo-text-1; text-words within a debugging line participate in
the matching rules as if the "D" did not appear in the indicator
area.
For ANS85 only: A debugging line is specified within pseudo-text
if the debugging line begins in the source program after the
opening pseudo-text delimiter but before the matching closing
pseudo-text delimiter.
8. The text produced as a result of the complete processing of a COPY
statement must not contain a COPY statement.
For VSC2 only: This text can contain a COPY statement provided
neither this contained COPY nor the already expanded COPY includes
the REPLACING phrase. However, recursive COPY statement (where a
libarary-text is referred to by a COPY statment within it) are not
allowed.
For MF only: COPY statements may be nested in this way to any
level. Any one of the COPY statements in this structure may
include the REPLACING phrase, and the replacements specified will
be in effect for all subsidiary COPYs.
9. The syntactic correctness of the library text cannot be
independently determined.
Except for COPY statements (ANS85), the syntactic correctness of
the entire COBOL source program cannot be determined until all
COPY statements have been completely processed.
10. Each text word copied from the library but not replaced is copied
so as to start in the same area of the line in the resultant
program as it begins in the line within the library. However, if
a text word copied from the library begins in area A but follows
another text word, which also begins in area A of the same line,
and if replacement of a preceding text word in the line by
replacement text of greater length occurs, the following text word
begins in area B if it cannot begin in area A. Each text word in
pseudo-text-2 that is to be placed into the resultant program
begins in the same area of the resultant program as it appears in
pseudo-text-2. Each identifier-2, literal-2, and word-2 that is
to be placed into the resultant program begins in the same area of
the resultant program as the leftmost library text word that
participated in the match would appear if it had not been
replaced.
Library text must conform to the rules for COBOL reference format.
If additional lines are introduced into the source program as a
result of a COPY statement, each text word introduced appears on a
debugging line if the copy statement begins on a debugging line,
or if the text word being introduced appears on a debugging line
in library text. When a text word specified in the BY phrase is
introduced, it appears on a debugging line if the first library
text word being replaced is specified on a debugging line. Except
in the preceding cases, only those text words that are specified
on debugging lines where the debugging line is within
pseudo-text-2 appear on debugging lines in the resultant program.
If any literal specified as literal-2 or within pseudo-text-2 or
library text is of too great a length to be accommodated on a
single line without continuation to another line in the resultant
program and the literal is not being placed on a debugging line,
additional continuation lines are introduced which contain the
remainder of the literal. If replacement requires that the
continued literal be continued on a debugging line, the program is
in error.
11. For purposes of compilation, text-words after replacement are
placed in the source program according to the rules for reference
format as described in the chapter Concepts of a COBOL Program.
12. If the unit identifier is not explicitly specified, the default
drive will be used. The default is operating system-dependent and
is described in your COBOL System Reference.
13. For OSVS only: The COBOL system directive OLDCOPY (see your COBOL
System Reference) can be set and this causes the entire entry to
be replaced by the information identified by text-name, except
that the data-name preceding the COPY statement replaces the
corresponding data-name in the text-name.
14. For ANS85 only: If certain conventions are followed in library
text, parts of names, for example the prefix portion of
data-names, can be changed with the REPLACING phrase. For
example, the prefix (TAG) will be replaced in the following
example.
To use this type of "partial word replacement" the portion of the
words to be modified must be enclosed in pairs of left and right
parentheses or they must be enclosed within colons. For example,
(ABC) and :XYZ: are both valid candidates for partial word
replacement.
For OSVS and VSC2 only: The DELETE Statement - Basis Control
Function.
The DELETE statement (under the Basis mechanism) identifies lines of
the COBOL source file to be ignored by your COBOL system. Any
COBOL statements that follow the DELETE statement (up to the next
Basis-mechanism INSERT or DELETE statement in the edit control file) are
included.
General Format.
Syntax Rules.
1. The DELETE reserved word can commence anywhere between columns 1
and 66 of the statement line.
2. Sequence numbers can be included anywhere in columns 1 through 6
of the statement and must be followed by a space.
3. Subject-sequence-1, subject-sequence-2, and so on, must be
unquoted 6-digit positive integers (following the rules for
integer numeric-literals).
4. Subject-sequence-range-1, subject-sequence-range-2, and so on,
must consist of two subject-sequence numbers (as above) separated
by a hyphen (-).
5. The comma between subject-sequences and/or subject-sequence ranges
is mandatory.
General Rules.
1. Subject-sequence-1, subject-sequence-2, and so on, refer to
sequence numbers of those statements within the COBOL source file
which are to be ignored by your COBOL system.
2. Subject-sequence-range-1, subject-sequence-range-2, and so on,
refer to inclusive ranges of statement sequence numbers within the
COBOL source file, all of which statements are to be ignored when
the intermediate code is produced.
3. Any COBOL statements following the DELETE statement in the edit
control file up to the next BASIS-mechanism DELETE or INSERT
statement will be included in the source submitted to your COBOL
system. These COBOL source statements are inserted in place of
the last statement omitted by this Basis-mechanism DELETE
statement.
For MF only: $DISPLAY Statement with Conditional Compilation
Function.
If a $DISPLAY statement is encountered while source lines are actively
being processed (not in source lines which are conditionally excluded),
the text-data will be displayed on the standard output device.
General Format.
General Rule.
The whole statement must appear on a single line.
For OSVS, VSC2 and MF only: The EJECT Statement
Function.
The EJECT statement tells your COBOL system to print the next line of
source code at the top of the next page.
General Format.
Syntax Rule.
EJECT may begin either in area A or in area B, must be the only statement
on the line and may optionally be followed by a period.
General Rule.
The EJECT statement itself is not printed.
For MF only: $ELSE Statement with Conditional Compilation
Function.
The most recent $IF condition is reversed. If the now active $IF
condition is true, the source lines following the $ELSE statement are
processed. If the $IF condition is false, COBOL source lines are ignored
until the next conditional compilation line is encountered.
General Format.
General Rule.
The whole statement must appear on a single line.
For MF only: $END Statement with Conditional Compilation
Function.
The innermost $IF condition is terminated. The now active $IF condition
is considered. If the active condition is true the source lines
following the $END are processed. If the condition is false, COBOL
source lines are ignored until the next conditional compilation line is
encountered.
General Format.
General Rule.
The whole statement must appear on a single line.
For MF only: $IF Statement with Conditional Compilation
Function.
A $IF statement evaluates as true if its referenced constant is described
as a 78 level item in the Working-Storage Section or by a previous
CONSTANT directive, regardless of its value.
Examples:.
1. An example of using conditional compilation is provided in the
Examples chapter in your Language Reference - Additional Topics.
General Formats.
Format 1.
Format 2.
Syntax Rules.
1. Constant-name-1 is defined by a level 78 entry or a CONSTANT.
2. If literal-1 is numeric, it must be zero or a positive integer.
3. The whole statement must appear on a single line.
4. $IF can be nested within another $IF.
General Rules.
1. Constant-name-2 is DEFINED if it is the subject of a level 78
entry or a CONSTANT directive, otherwise it is NOT DEFINED.
2. If the condition is evaluated true the source lines following the
$IF statement are processed. If the condition evaluates false,
COBOL source lines are ignored until the next conditional
compilation line is encountered.
3. A $IF can be nested within another $IF.
General Notes on all Conditional Compilation Statements.
1. Conditional compilation statements are indicated by a dollar ($)
in column 7 in fixed format source, or column 1 in free format
source of the COBOL source line followed by one of the key word
IF, ELSE, END.
2. Conditional compilation should not bused to split a COBOL
character string; that is , continuation lines should not be split
by conditional compilation controls.
For OSVS and VSC2 only: The -INC Statement
Function.
The -INC statement is used to include all of the data records of one
source file in another source file at compilation time.
General Format.
Directives and Run-time Switches.
1. In addition to flagging and reserved words directives, the
following directive may impact either the syntax or semantics
described in this section. See your COBOL System Reference for
details.
* LIBRARIAN - enables the use of -INC syntax.
2. The following run-time switches may impact either the syntax or
semantics described in this section. See your COBOL System
Reference for details.
* None
Syntax Rules.
1. -INC must begin in column 1 and be followed by one or more spaces.
2. Text-name defines a unique external file-name which conforms to
the rules for user defined words.
3. These special statements are not part of the COBOL language. They
must, in their entirety, be contained on a single line and must be
in upper case.
General Rules.
1. Text-name determines the COBOL source file to be included at this
specific place in the source code.
2. Any other text appearing on the line is treated as comment.
For OSVS and VSC2 only: The ++INCLUDE Statement
Function.
The ++INCLUDE statement is used to include all of the data records of one
source file in another source file at compilation time.
General Format.
Directives and Run-time Switches.
1. In addition to flagging and reserved words directives, the
following directive may impact either the syntax or semantics
described in this section. See your COBOL System Reference for
details.
* PANVALET - enables the use of ++INCLUDE syntax.
2. The following run-time switches may impact either the syntax or
semantics described in this section. See your COBOL System
Reference for details.
* None
Syntax Rules.
1. ++INCLUDE must begin in column 8, must be in uppercase and must be
followed by one or more spaces.
2. Text-name defines a unique external file-name which conforms to
the rules for user defined words.
3. These special statements are not part of the COBOL language. They
must, in their entirety, be contained on a single line and must be
in upper case
General Rules.
1. Text-name determines the COBOL source file to be included at this
place in the source code.
2. Any other text appearing on the line is treated as comment.
For OSVS and VSC2 only: The INSERT Statement - Basis Control
Function.
The INSERT statement (under the Basis mechanism) lists lines of COBOL
source to be included in the program submitted to your COBOL system.
General Format.
Syntax Rules.
1. The INSERT reserved word can commence anywhere between columns 1
and 66 of the statement line.
2. Subject-sequence must be an unquoted positive numeric integer
(following the rules for integer numeric literals).
General Rules.
1. Subject-sequence refers to that statement within the COBOL source
file after which the COBOL statement(s) is to be included.
2. All those COBOL statements following the INSERT statement in the
edit control file up to the next Basis-mechanism DELETE or INSERT
statement will be included in the source submitted to your COBOL
system. At least one COBOL statement must immediately follow the
Basis-mechanism INSERT statement.
For ANS85 only: The REPLACE Statement
Function.
The REPLACE statement is used to replace source program text.
General Formats.
Format 1.
Format 2.
Syntax Rules.
1. A REPLACE statement can occur wherever a character-string can
occur in the source program. It must be preceded by a separator
period except when it is the first statement in a separate
program.
2. A REPLACE statement must be terminated by a separator period.
3. Pseudo-text-1 must contain one or more text words.
4. Pseudo-text-2 can contain zero, one, or more text words.
5. Character-strings within pseudo-text-1 and pseudo-text-2 can be
continued.
6. A text word within pseudo-text must be between 1 and 322
characters long.
7. Pseudo-text-1 must not consist entirely of a separator comma or a
separator semicolon.
8. If the word REPLACE appears in a comment-entry or in the place
where a comment-entry can appear, it is considered part of the
comment-entry.
General Rules.
1. The Format 1 REPLACE statement specifies the text of the source
program to be replaced by the corresponding text. Each matched
occurrence of pseudo-text-1 in the source program is replaced by
the corresponding pseudo-text-2.
2. The Format 2 REPLACE statement specifies that any text replacement
currently in effect is discontinued.
3. A given occurrence of the REPLACE statement is in effect from the
point at which it is specified until the next occurrence of the
statement or the end of the separate program, respectively.
4. Where both REPLACE and COPY statements are contained in a source
program, any COPY statements are processed first.
5. The text produced as a result of the processing of a REPLACE
statement must contain neither a COPY statement nor a REPLACE
statement.
6. The comparison operation to determine text replacement occurs in
the following manner:
a. Starting with the leftmost source program text word and the
first pseudo-text-1, pseudo-text-1 is compared to an
equivalent number of contiguous source program text words.
b. Pseudo-text-1 matches the source program text if, and only
if, the order sequence of text words that forms
pseudo-text-1 is equal, character for character, to the
ordered sequence of source program text words. For
purposes of matching, each occurrence of a separator comma,
semicolon, or space in pseudo-text-1 or in the source
program text is considered to be a single space. Each
sequence of one or more space separators is considered to
be a single space.
Each lowercase letter is equivalent to the corresponding
uppercase letter as specified for the COBOL character set.
c. If no match occurs, the comparison is repeated with each
next successive occurrence of pseudo-text-1, until either a
match is found or there is no next successive occurrence of
pseudo-text-1.
d. Whenever a match occurs between pseudo-text-1 and the
source program text, the correponding pseudo-text-2
replaces the matched text in the source program. The
source program text word immediately following the
rightmost text word that participated in the match is then
considered as the leftmost source program text word. The
comparison cycle starts again with the first occurrence of
pseudo-text-1.
e. The comparison operation continues until the rightmost text
word in the source program text which is within the scope
of the REPLACE statement has either participated in a match
or been considered as a leftmost source program text word
and participated in a complete comparison cycle.
7. Comment lines or blank lines occurring in either the source
program text or pseudo-text-1 are ignored for purposes of
matching; and the sequence of text words in the source program
text and in pseudo-text-1 is determined by the rules for reference
format. See the section Reference Format Representation in the
chapter Concepts of a COBOL Program. Comment lines or blank lines
in pseudo-text-2 are placed into the resultant program unchanged
whenever pseudo-text-2 is placed into the source program as a
result of text replacement. A comment line or blank line in
source program text is not placed into the resultant program if
that comment line or blank line appears within the sequence of
text words that match pseudo-text-1.
8. Debugging lines are permitted in pseudo-text. Text words within a
debugging line participate in the matching rules as if the "D" did
not appear in the indicator area.
9. Only after all COPY and REPLACE statements have been completely
processed, can the syntactical correctness of the rest of the
source code be determined.
10. Text words inserted into the source program as a result of
processing a REPLACE statement are placed in the source program
according to the rules for reference format. See the section
Reference Format in the chapter Concepts of a COBOL Program. When
inserting text words of pseudo-text-2 into the source program,
additional spaces can be introduced only between text words where
a space (including the assumed space between source lines) already
exists.
11. If additional lines are introduced into the source program as a
result of the processing of REPLACE statements, the indicator area
of the introduced lines contains the same character as the line on
which the text being replaced begins, unless that line contains a
hyphen, in which case the introduced line contains a space.
If any literal within pseudo-text-2 is of a length too great to be
accommodated on a single line without continuation to another line
in the resultant program and the literal is not being placed on a
debugging line, additional continuation lines are introduced to
contain the remainder of the literal. If replacement requires the
continued literal to be continued on a debugging line, the program
is in error.
For OSVS, VSC2 and MF only: The SKIP1, SKIP2 and SKIP3 Statements
Function.
The SKIP1, SKIP2 and SKIP3 statements control the vertical spacing of the
source code listing produced by your COBOL system. They specify the
lines to be skipped in the source code listing.
General Format.
Syntax Rule.
These statements can begin either in area A or in area B, must be the
only statement on the line and can optionally be followed by a period (MF
and VSC2 only) .
General Rules.
1. SKIP1 tells your COBOL system to skip one line (double spacing).
SKIP2 tells your COBOL system to skip two lines (triple spacing).
SKIP3 tells your COBOL system to skip three lines (quadruple
spacing).
2. The SKIP statement itself is not printed.
For VSC2 and MF only: The TITLE Statement
Function.
The TITLE statement tells your COBOL system what title to print on the
first line of all subsequent pages of the program listing.
General Format.
Syntax Rules.
1. Literal-1 must be nonnumeric and can be followed by a period. It
cannot be a figurative constant.
2. The word TITLE can begin either in Area A or Area B and must be
the only statement on the line.
3. The TITLE statement can appear anywhere in the source program.
General Rules.
1. Literal-1 will be used as a title on all subsequent pages of the
program listing. The default title, which is used until a TITLE
directive is encountered, identifies your COBOL system and its
current release level.
2. The chosen or default title occupies the left-hand side of the
first line of each page. The remainder of the line gives the date
and time the intermediate code is produced and a page number.
3. A second title line is also output containing the name of the main
source file and of the current COPY-file.
4. The TITLE statement causes an immediate new page.
5. The TITLE statement itself is not printed.
MPE/iX 5.0 Documentation