by BillyBoyo » Fri Jun 19, 2015 12:20 pm
They are only applicable to a CALL statement. It is perfectly possible and common that a sub-program also uses CALL, and also possible that a "main" program doesn't use CALL.
Bear in mind that there is nothing "special" about a "main" program in COBOL. It can also run as a sub-program.
Make a very small program, with just ID DIVISION with PROGRAM-ID and PROCEDURE DIVISION.
In the PROCEDURE DIVISION CALL your "main" program and then GOBACK.
You "main" program will run as a sub-program, with no problems. It may not return to the CALLer (if STOP RUN has been used) but that does not make it "main", as STOP RUN can be used in a sub-program anyway.
We don't have "main" programs, just a program that happens to be the one on the EXEC statement on the step card in the JCL.