One of our programs drops thru an Exit Program to the next paragraph. We are testing a new Cobol program and it is not honoring the Exit Program verb.
Sample code follows:
Identification Division. Program-Id. LORINCE. Data Division. Working-Storage Section. 1 A Pic 9. Procedure Division. P1. Move 0 to A Display ' A = ' A If A < 3 Perform Varying A From 1 by 1 Until A > 3 Display ' A < 3, A = ' A End-Perform End-If If A < 5 Perform Varying A From 1 by 2 Until A > 3 Display ' A < 5, A = ' A End-Perform End-If Exit Program. P2. Display 'Saved For Future Calculations'.
We get this output:
A = 0 A < 3, A = 1 A < 3, A = 2 A < 3, A = 3 A < 5, A = 1 A < 5, A = 3 Saved For Future Calculations
Why does this continue on after the end of paragraph P1?
The problem here was that the program being tested was not CALLed by a driver program. The Language Reference states that for a Format 4 EXIT statement:
If the EXIT PROGRAM statement is executed in a program which is not under the control of a calling runtime element, the EXIT PROGRAM statement causes execution of the program to continue with the next executable statement.
The answer is to code this at the end of the first paragraph: Exit Program Goback.