| Introduction to Compilation Group Definition |
|
Environment Division | |
The Identification Division identifies the program,
class,
factory object, object, method,
function or interface.
The basename, derived from the filename of the file containing the source
element, also identifies the first source element defined in that file.
The paragraph header identifies the type of information contained in the
paragraph.The user can include the date the program is written and such
other information as desired under the paragraphs shown in the General
Format.
This entire division
(including the division header) is optional in a program definition.
The AUTHOR, INSTALLATION,
DATE-WRITTEN , DATE-COMPILED, and SECURITY paragraphs are classed
as obsolete elements in the ANSI'85 standard and may be deleted from the
next full revision of the ANSI Standard.
All dialects in this COBOL
implementation except ISO2000 fully support these obsolete paragraphs. 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 obsolete paragraphs are explicitly
excluded from the X/Open COBOL language definitions and should not be used
in a conforming X/Open source program.
General Format
Syntax Rules
-
The paragraphs can appear
in any order.
-
The periods following the
paragraph-names in the Identification Division are optional as is the
period following the program-name.
- The
comment-entry can be any combination of the characters from the
computer's character set. The continuation of the comment-entry by the
use of a hyphen in the continuation area is not permitted. If the
Compiler directive SOURCEFORMAT is specified as or defaulted to FIXED,
the comment-entry can be contained on one or more lines but is
restricted to area B of those lines; the next line commencing in area A
will begin the next non-comment entry.
If the Compiler directive
SOURCEFORMAT is specified as FREE, the comment-entry cannot be
continued; the next line will begin the next non-comment entry.
The comment-entry can
contain the SKIP1, SKIP2, SKIP3, EJECT or TITLE statements anywhere on
the line. These statements will be actioned if they are alone on a
line in the comment-entry, and will not terminate the comment-entry.
The comment-entry can
contain the SKIP1, SKIP2, SKIP3, or EJECT statements anywhere in the B
margin. These statements will be actioned if they are alone on a line
in the comment-entry, and will not terminate the comment-entry.
The comment-entry can be
contained in either area A or area B of the comment-entry lines.
However, the next occurrence in area A of any one of the following
COBOL words or phrases will terminate the comment-entry and begin the
next paragraph or division:
PROGRAM-ID
AUTHOR
INSTALLATION
DATE-WRITTEN
DATE-COMPILED
SECURITY
ENVIRONMENT
DATA
PROCEDURE
The PROGRAM-ID paragraph gives the name by which a program is identified
and assigns selected program attributes to that program.
The PROGRAM-ID paragraph specifies the name by which a call prototype is
identified.
General Formats
Format 1
Format 2
Format 3
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.
- CASE - determines whether upper-case and lower-case letters are
considered equivalent.
- DEFAULT-BYTE - sets the value for data items defined in
Working-Storage Section without a VALUE clause.
- MAPNAME - impacts the handling of non-alphabetic characters in
the program-name.
- PROGID-COMMENT - causes Format 1 to be assumed rather than Format
2.
Syntax Rules
All Formats
-
Program-name-1 can be a
nonnumeric literal specified with or without enclosing quotation marks.
The content of the literal must follow the rules for formation of
program-names, but may also contain the characters @, #, and $.
- Program-name-1 must not be the same as another user-defined word.
Program-name-1 can be the
same as another user-defined word.
Formats 1 and 2
-
The first 8 characters of
program-name-1 of a program that is not contained in another program
should be unique in the system. The first character must be alphabetic;
otherwise it is converted as follows:
- 1 through 9 are changed to A through I respectively.
- Anything else is changed to J.
If a hyphen is used in
characters 2 through 8 of program-name-1 in a program that is not
contained in another program, it is changed to zero (0).
For programs that are
contained in another program, program-name-1 can be any valid
user-defined COBOL word, up to 30 characters long. The first eight
characters need not be unique, and they will not be converted as
described above. Lowercase letters are valid, but such program-names
will be handled in a case-insensitive manner.
The MAPNAME Compiler directive controls this behavior.
-
A program contained within
another program must not be assigned the same name as that of any other
program contained within the compilation unit that contains this
program.
Format 2
-
The optional COMMON clause
can be used only if the program is contained within another program.
-
If the IS PROGRAM phrase is
present, either COMMON, INITIAL or both must be specified. When both are
specified, the order is irrelevant.
-
Literal-1 must be an
alphanumeric literal and must not be a figurative constant.
-
Literal-1 must not be
specified in a program that is contained within another program.
General Rules
Formats 1 and 2
- Program-name-1 names the program declared by this program definition
and is associated with the object code file pertaining to this program.
Literal-1, if specified, is the name of the program that is externalized
to the operating environment.
Format 2
-
The
COMMON clause specifies that the program is common. A common
program is contained within another program but can be called from
programs other than that containing it.
-
The
INITIAL clause specifies that the program is initial. When an
initial program is called, it and any programs contained within it are
placed in their initial state. See the section Initial State Of A
Program earlier in this chapter.
Format 3
-
Program-name-1 names the
call prototype that will be used during syntax checking to determine the
validity and nature of CALL literal statements.
The CLASS-ID paragraph indicates that this identification division is
introducing a class definition and specifies the name that identifies the
class and assigns class attributes to the class.
General Format
CLASS-ID. [ AS literal-1 ]
[ INHERITS FROM class-name-2 ]
[ USING { parameter-name-1 } ... ] .
Syntax Rules
- Literal-1 shall be an alphanumeric literal and shall not be a
figurative constant.
- Class-name-2 shall be the name of a class specified in the REPOSITORY
paragraph
or the CLASS-CONTROL
paragraph
of this source element.
- Class-name-2 shall not be the name of the class declared by this
class definition.
- Class-name-2 shall not inherit from class-name-1 directly or
indirectly. Class-name-2 shall not be the name of a parameterized class
that expands class-name-1 directly or indirectly.
- Parameter-name-1 shall be a name specified in a class-specifier or an
interface-specifier in the REPOSITORY paragraph of this class
definition.
General Rules
- Class-name-1 names the class declared by this class definition.
However, literal-1, if specified, is the name of the class that is
externalized to the operating environment.
- The INHERITS clause specifies the name of the class that is inherited
by class-name-1 according to Class inheritance.
- The USING phrase specifies that this is a parameterized class.
Parameter-name-1 is the name given to the formal parameter. See Parameterized
classes for details of the behavior of a parameterized class.
- Parameter-name-1 shall be specified within this class definition only
where a class-name or an interface-name is permitted.
The FACTORY paragraph indicates that this identification division is
introducing a factory definition.
General Format
FACTORY.
The OBJECT paragraph indicates that this identification division is
introducing an object definition.
General Format
OBJECT.
The METHOD-ID paragraph indicates that this identification division is
introducing a method definition, specifies the name that identifies the
method and assigns method attributes to the method.
General Format
Syntax Rules
- Literal-1 must be an alphanumeric literal and must not be a
figurative constant.
- If property-name-1 is specified as a data-name in the
working-storage section of the containing object or factory definition,
the PROPERTY clause must not be specified in the data description entry
of that data-name.
- If the GET phrase is specified, then the method must have no USING
phrase parameters specified in the procedure division header and must
have a single RETURNING phrase.
- If the SET phrase is specified, then the method must have a single
USING parameter specified in the procedure division header and no
RETURNING phrase.
- If method-name-1 or literal-1 is the same as a method-name inherited
by the containing definition, the parameter declarations on the
procedure division header must obey the rules of conformance to ensure
that the definition that contains this method definition conforms to
every inherited definition according to Conformance for parameters
and returning items.
General Rules
- The name of the method declared by this method definition is
determined as follows:
- If the PROPERTY clause is specified, the name is formed as
follows:
- If the GET phrase is specified, the characters "GET"
are concatenated to property-name-1 folded to upper case.
- If the SET phrase is specified, the characters "SET"
are concatenated to property-name-1 folded to upper case.
- If the PROPERTY clasue is not specified, the name is
method-name-1. However, literal-1, if specified, is the name of the
method that is externalized to the operating environment.
- The name of this method can be referenced in the invocation of a
method for an object of the class in which this method is defined.
- If a given user-defined word is defined in the data division of this
method definition and in the data division of the containing factory
definition or object definition, the use of that word in this method
refers to the declaration in this method. The declaration in the
containing factory object or object definition is inaccessible to this
method.
- If the GET phrase is specified, this method is a get property method
for property-name-1.
- If the SET phrase is specified, this method is a set property method
for property-name-1.
The INTERFACE-ID paragraph indicates that this identification division
is introducing an interface definition, specifies the name that identifies
the interface and assigns interface attributes to the interface.
General Format
INTERFACE-ID. interface-name-1 [ AS literal-1 ]
[ INHERITS FROM interface-name-2 ]
[ USING { parameter-name-1 } ... ] .
Syntax Rules
- Literal-1 must be an alphanumeric literal and must not be a
figurative constant.
- Interface-name-2 must be the name of an interface specified in the
REPOSITORY paragraph of this source element.
- Interface-name-2 must not inherit directly or indirectly from
interface-name-1.
- Parameter-name-1 must be a name specified in a class-specifier or an
interface-specifier in the REPOSITORY paragraph of this interface
definition.
General Rules
- Interface-name-1 names the interface declared by this interface
definition. However, literal-1, if specified, is the name of the
interface that is externalized to the operating environment.
- The INHERITS phrase specifies the name of the interface that is
inherited by interface-name-1 according to Interface inheritance.
- The USING phrase specifies that this is a parameterized interface.
Parameter-name-1 is the name given to the formal parameter.
- Parameter-name-1 must be specified within this interface definition
only where a class-name or an interface-name is permitted.
The FUNCTION-ID paragraph specifies the name by which a function is
identified and assigns selected attributes to that function.
General Format
Format 1 (definition):
FUNCTION-ID. user-function-name-1 [ AS literal-1 ].
Format 2 (prototype):
FUNCTION-ID.
function-prototype-name-1 [ AS literal-1 ] IS PROTOTYPE.
Syntax Rules
- Literal-1 must be an alphanumeric literal and must not be a
figurative constant.
General Rules
Format 1
- User-function-name-1 names the function declared by this function
definition. However, literal-1, if specified, is the name of the
function that is externalized to the operating environment.
Format 2
- Function-prototype-name-1 names the function prototype declared by
this definition. However, literal-1, if specified, is the name of the
function prototype that is externalized to the operating environment.
Function
The DATE-COMPILED paragraph provides the date the intermediate code was
produced in the Identification Division source program listing.
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.
- DATE - impacts the format in which the date is printed in this
paragraph.
Syntax Rules
- The comment-entry can be any combination of the characters from the
computer's character set. The continuation of the comment entry by use
of the hyphen is not permitted; however, the comment entry can be
contained on one or more lines. The comment-entry lines must be
contained in area B. The next line commencing in area A will begin the
next non-comment paragraph.
General Rules
- The paragraph-name DATE-COMPILED causes your COBOL system to insert a
date comment-entry as the executable code is created. If a DATE-COMPILED
paragraph is present (with or without a comment-entry), the paragraph is
replaced in the program listing with one of the form:
DATE-COMPILED. current-date-and-time .
where the date and time format is DD-MMM-YY hh:mm
.
The
DATE Compiler directive can impact the comment-entry
replacement string for your COBOL implementation.
The value inserted in the
DATE-COMPILED paragraph will also be the value used in the
When-Compiled intrinsic function. However, the format can
differ.
Copyright © 2000 MERANT International Limited. All rights reserved.
This document and the proprietary marks and names
used herein are protected by international law.
| Introduction to Compilation Group Definition |
|
Environment Division | |