GOTO out-of-block and move resume cursor

When a GOTO out-of-block or a call to CEEMRCR causes a routine to be removed from the stack, a "non-return style" termination of the routine occurs. Multiple routines can be terminated by a non-return style termination independent of the number of ILC boundaries that are crossed. If one of the routines that is terminated by the non-return style is a COBOL program, the COBOL program can be reentered via another call path.

If the terminated program is one of the following, the program is not deactivated. If the COBOL program does not specify RECURSIVE in the PROGRAM-ID, a recursion error is raised if you attempt to enter the routine again.
  • A COBOL for OS/390 & VM, COBOL for MVS & VM, COBOL/370, or a VS COBOL II program compiled with the CMPR2 option
  • A VS COBOL II program that is compiled with the NOCMPR2 option and contains nested programs
  • A COBOL for OS/390 & VM, COBOL for MVS & VM, or COBOL/370 program that is compiled with the NOCMPR2 option and has the combination of the INITIAL attribute, nested programs, and file processing in the same compilation unit.
  • A Enterprise COBOL for z/OS program that does not use the combination of the INITIAL attribute, nested routines, and file processing in the same compilation unit.

In addition, if the program is a COBOL program with the INITIAL attribute and if it contains files, the files are closed. (COBOL supports VSAM and QSAM files, and these files are closed.)