在嵌套子程序中,程序通常只能调用其直接包含的子程序。若要调用其他子程序,必须在该子程序的标志部定义的程序名后面加上COMMON选项。例如,下面为一段嵌套子程序的大体结构。为便于观察,其中只显示其程序名及结束标志。该结构如下。
PROGRAM-ID. P.
PROGRAM-ID. P1 IS COMMON.
END PROGRAM P1.
PROGRAM-ID. P2 IS COMMON.
END PROGRAM P2.
PROGRAM-ID. P3.
PROGRAM-ID. P31 IS COMMON.
END PROGRAM P31.
PROGRAM-ID. P32.
PROGRAM-ID. P321.
END PROGRAM P321.
END PROGRAM P32.
END PROGRAM P3.
END PROGRAM P.
以上各程序调用及被调用的权限分别如下。
q 程序P可以调用程序P1、P2、P3,但不能被任何程序所调用。
q 程序P1可以调用程序P2。并且,该程序能被程序P、P2、P3、P31、P32、P321所调用。
q 程序P2可以调用程序P1。并且,该程序能被程序P、P1、P3、P31、P32、P321所调用。
q 程序P3可以调用程序P1、P2、P31、P32。该程序只能被程序P所调用。
q 程序P31可以调用程序P1、P2。并且,该程序能被程序P3、P32、P321所调用。
q 程序P32可以调用程序P1、P2、P31、P321。该程序只能被程序P3所调用。
q 程序P321可以调用程序P1、P2、P31。该程序只能被程序P32所调用。
实际上,使用COMMON标注的程序是可以被同一嵌套层的其他程序所调用的。例如,P3可以调用P2,因为二者都被嵌套在程序P之后的同一层,并且P2被标注为COMMON。而P2则不可以反过来调用P3,因为P3并不被P2包含在内,并且P3也没标注为COMMON。