When calling another ILE COBOL program that is not in the same module object as the calling program and the call is made through a CALL literal statement, you must specify whether the called program is an ILE program object or an ILE procedure.
You identify whether you are calling a program object or a procedure by specifying the linkage type of the call.
The LINKAGE type of call can be specified explicitly or it can be forced by specifying a phrase that is associated with a particular linkage. For example, the IN LIBRARY phrase forces a call to be a LINKAGE program. In the instances where there is not a phrase that forces a linkage, there are three ways to explicitly specify a linkage. They are listed in order of precedence:
PROCEDURE DIVISION.
·
·
·
CALL LINKAGE TYPE IS PROGRAM literal-1
·
·
·
CALL LINKAGE PROGRAM literal-2 IN LIBRARY literal-3
·
·
·
CANCEL LINKAGE PROGRAM literal-2 IN LIBRARY literal-3
·
·
·
CANCEL LINKAGE TYPE IS PROGRAM literal-1 PROCEDURE DIVISION.
·
·
·
CALL LINKAGE TYPE IS PROCEDURE literal-1
·
·
·
CANCEL LINKAGE TYPE IS PROCEDURE literal-1 ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
·
·
·
SPECIAL-NAMES.
LINKAGE TYPE IS PROGRAM FOR literal-1.
·
·
·
PROCEDURE DIVISION.
·
·
·
CALL literal-1.
·
·
·
CANCEL literal-1. ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
·
·
·
SPECIAL-NAMES.
LINKAGE TYPE IS PROCEDURE FOR literal-1.
·
·
·
PROCEDURE DIVISION.
·
·
·
CALL literal-1.
·
·
·
CANCEL literal-1. CRTCBLMOD MODULE(MYLIB/XMPLE1)
SRCFILE(MYLIB/QCBLLESRC) SRCMBR(XMPLE1)
LINKLIT(*PGM) CRTCBLMOD MODULE(MYLIB/XMPLE1)
SRCFILE(MYLIB/QCBLLESRC) SRCMBR(XMPLE1)
LINKLIT(*PRC) PROCEDURE DIVISION.
·
·
·
CALL literal-1.
·
·
·
CANCEL literal-1.(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.