The Identification Division identifies the program,
class, factory object,
object, method,
function or interface.
This entire division
(including the division header) is optional in a program definition.
Another way to identify the
first source element defined in a file is with the basename, which is derived
from the filename of the file containing the source element.
The Identification
Division consists of a number of paragraphs. The paragraph header
identifies the type of information contained in the paragraph.
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
begins the next
non-comment entry.
If the Compiler directive
SOURCEFORMAT is specified as FREE, the comment-entry cannot be continued; the
next line begins
the next non-comment entry.
The comment-entry can
contain the SKIP1, SKIP2, SKIP3, EJECT or TITLE statements anywhere on the
line. These statements are actioned if they are alone on a line
in the comment-entry, and do not terminate the comment-entry.
The comment-entry can
contain the SKIP1, SKIP2, SKIP3, or EJECT statements anywhere in the B margin.
These statements are actioned if they are alone on a line
in the comment-entry, and do 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
terminates 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 the 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. Lower-case 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 in the chapter Language Fundamentals.
-

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.
-
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 must be an alphanumeric literal and
must not be a
figurative constant.
- Class-name-2 must be the name of a class specified in
the Repository paragraph
or the Class-Control
paragraph
of this source element.
- Class-name-2 must not be the name of the class
declared by this class definition.
- Class-name-2 must not inherit from class-name-1
directly or indirectly. Class-name-2
must not be the
name of a parameterized class that expands class-name-1 directly or indirectly.
- Parameter-name-1 must 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
the section
Parameterized
Classes in the chapter Language Fundamentals for details of the
behavior of a parameterized class.
- Parameter-name-1 must 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
in 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 the
section
Conformance for Parameters
and Returning Items in
the chapter Procedure Division.
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 clause 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
as described in the
section
Interface
Inheritance in the chapter Language Fundamentals.
- 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
is also the value
used in the WHEN-COMPILED intrinsic function.
However, the format can differ.
Copyright © 2002 Micro Focus International Limited. All rights reserved.
This document and the proprietary marks and names
used herein are protected by international law.