EXIT PROGRAM
EXIT PROGRAM
EXIT PROGRAM indicates the end of the subprogram (called program) processing and returns control to the main program (calling program). It is mainly used in COBOL subprograms.
Syntax -
EXIT PROGRAM.
Points to Note -
- EXIT PROGRAM statement should be the last in a sequence of statements.
- If no CALL is active, it means the program is not called from any program, and the EXIT PROGRAM is executed, the control returns to the OS.
- If the CALL is active and the EXIT PROGRAM is executed, the control returns to the calling program and the following statements after CALL after CALL starts executing.
Practical Example -
Scenario - Static Call from MAINPROG to SUBPROG and receiving the result back from SUBPROG. EXIT PROGRAM usage in SUBPROG.
MAINPROG -
----+----1----+----2----+----3----+----4----+----5----+
...
WORKING-STORAGE SECTION.
01 WS-VAR.
05 WS-INP1 PIC 9(02) VALUE 47. *> Input1
05 WS-INP2 PIC 9(02) VALUE 25. *> Input2
05 WS-RESULT PIC 9(04). *> Result Variable
...
PROCEDURE DIVISION.
* Calling subprogram staically with two inputs
* and receiving the result from SUBPROG
CALL "SUBPROG" USING WS-INP1, WS-INP2, WS-RESULT.
DISPLAY "INPUTS: " WS-INP1 ", " WS-INP2.
DISPLAY "RESULTS: " WS-RESULT.
STOP RUN
SUBPROG -
----+----1----+----2----+----3----+----4----+----5----+
...
DATA DIVISION.
LINKAGE SECTION.
01 LK-INP1 PIC 9(02). *> To receive input1 from MAINPROG
01 LK-INP2 PIC 9(02). *> To receive input2 from MAINPROG
01 LK-RESULT PIC 9(04). *> To send result to MAINPROG
...
*Receiving data from main program CALL statement
PROCEDURE DIVISION USING LK-INP1, LK-INP2, LK-RESULT.
COMPUTE LK-RESULT = LK-INP1 * LK-INP2.
EXIT PROGRAM.
JCL -
//MATEPKRJ JOB MSGLEVEL=(1,1),NOTIFY=&SYSUID //*********************************************** //* RUN A COBOL PROGRAM //*********************************************** //STEP01 EXEC PGM=MAINPROG //STEPLIB DD DSN=MATEPK.COBOL.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=*
Output -
INPUTS: 47, 25 RESULTS: 1175