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,
at least one of COMMON
or INITIAL
or RECURSIVE
must be specified.
-
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.
-

The RECURSIVE clause must not be specified if any
program that directly or indirectly contains this program is an initial
program.
-

The RECURSIVE clause must not be
specified in a program that is contained within another program.
-

The RECURSIVE clause must not be
specified in a program that contains 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.
-

The RECURSIVE clause specifies that the program
and any programs
contained within it
are recursive. The
program may be called while it is active and may call itself. The RECURSIVE
clause is also implied for a program in which the local-storage section is
specified.
-

If the RECURSIVE clause is not specified in a program or
implied for a program, the program must not be called while it is active.
-

Additional rules concerning common, initial and
recursive programs are given in
Common, initial and recursive
attributes.
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 © 2001 Micro Focus International Limited. All rights reserved.
This document and the proprietary marks and names
used herein are protected by international law.