GOBACK Statement
GOBACK Statement
GOBACK statement specifies the logical end of a program and gives the control back from where it was received.
Syntax -
GOBACK.
Points to Note -
- It should be the last statement in PROCEDURE DIVISION.
- It can code in both the main program and sub-program.
- It works like the EXIT PROGRAM statement when coded in a subprogram
- It works like the STOP RUN statement when it is coded in a mainprogram.
Practical Example -
Scenario - Dynamic Call from MAINPROG to SUBPROG and receiving the result back from 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
05 WS-SUBPROG PIC X908) VALUE 'SUBPROG'.
...
PROCEDURE DIVISION.
* Calling subprogram staically with two inputs
* and receiving the result from SUBPROG
CALL WS-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----+
...
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.
GOBACK.
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