The CANCEL statement ensures that the next time the referenced program is
called it is in its initial state.
General Format

Syntax Rules
- Literal-1 must be a nonnumeric literal.
- Identifier-1 must reference an alphanumeric data item.
General Rules
- Literal-1 or the content of the data item referenced by identifier-1
identifies the name of the program to be canceled. The name must contain the
program-name contained in the Program-ID paragraph of the program to be
canceled (see the section
The Program-ID
Paragraph in the chapter Identification
Division, particularly in regard to case sensitivity). Alternatively,
the name may identify a file that contains executable program code for the
program to be canceled. The results of specifying different names that identify
the same file in a CANCEL statement are operating-system specific. See your
COBOL system documentation for details of how your system matches the given
name to previously called programs, program filenames or programs held in
library files.
If the name contains the entry-name contained in an ENTRY statement,
the results are undefined.
- Subsequent to the execution of an explicit or implicit CANCEL
statement, the program referred to therein ceases to have any logical
relationship to the run unit in which the CANCEL statement appears. If the
program referenced by a successfully executed explicit or implicit CANCEL
statement in a run unit is subsequently called in that run unit, that program
is in its initial state. See the topic
State of a Function, Method or
Program in the chapter Language
Fundamentals.
- A program named in a CANCEL statement in another program must be
callable by that other program. See the topic
Scope of
Names in the chapter Concepts of the COBOL
Language and the section
The CALL
Statement.
When an explicit or implicit CANCEL
statement is executed, all programs contained in the program referenced by the
CANCEL statement are also canceled. The result is the same as if a valid CANCEL
statement were executed for each contained program in the reverse order in
which the programs appear in the separate program.
- A program named in the CANCEL statement must not refer directly or
indirectly to any program that has been called and has not yet executed an EXIT
PROGRAM


or GOBACK
statement.
- A logical relationship to a canceled program is established only by
execution of a subsequent CALL statement naming that program.
- A called program is canceled either by being referred to as the operand
of a CANCEL statement, by the termination of the run unit of which the program
is a member,
or by execution of
an EXIT PROGRAM statement in a called program that possesses the initial
attribute.
- No action is taken when an explicit or implicit CANCEL statement is
executed naming a program that has not been called in this run unit, has been
called and is at present canceled or is a non-COBOL program. Control is
transferred to the next executable statement following the CANCEL statement.
The contents of data items in external
data records described by a program are not changed when that program is
canceled.
During execution of an explicit or
implicit CANCEL statement, an implicit CLOSE statement without any optional
phrases is executed for each file in the open mode that is associated with an
internal file connector in the program named in the CANCEL statement. Any USE
procedures associated with any of these files are not executed.
- The CANCEL statement determines whether or not a subprogram is
re-entered in initial or last-used state. It does not necessarily free any
memory used by the subprogram. However, in many operating systems, if the
subprogram has been dynamically loaded, this statement also frees the memory
originally used by the subprogram. EXTERNAL files and data areas of the
subprogram are never freed by a CANCEL statement.