子程序的命名通常和普通程序的命名方式相同。但是需要注意的是,对于子程序而言,不可将其前缀命名为以下这几个名字。
AFB AFH CBC CEE EDC
IBM IFY IGY IGZ ILB
实际上,以上名字都属于IBM相关产品的名字。如果将子程序的前缀命名为以上名字,则在主程序中将不能对其进行调用。当在主程序中试图调用该子程序时,系统将会从IBM的库,或者编译器例程中寻求解决方案。
静态调用
下面通过具体的程序示例,以便更好地说明静态调用的特点及用法。首先,假设在静态调用中,某一主程序代码如下。
IDENTIFICATION DIVISION. PROGRAM-ID STATIC-MAIN. AUTHER XXX. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING STORAGE SECTION. 77 TEST-NUM PIC 99. * PROCEDURE DIVISION. PERFORM INIT-TEST-NUM. CALL ‘STATIC-SUB’ USING TEST-NUM. DISPLAY ‘TEST-NUM AFTER THE FIRST CALL: ’ TEST-NUM. PERFORM INIT-TEST-NUM. CALL ‘STATIC-ENTRY’ USING TEST-NUM. DISPLAY ‘TEST-NUM AFTER THE SECOND CALL: ’ TEST-NUM. STOP RUN. INIT-TEST-NUM. MOVE 10 TO TEST-NUM. 令该程序的子程序,即与之所对应的被调用程序STATIC-SUB的代码如下。 IDENTIFICATION DIVISION. PROGRAM-ID STATIC-SUB. AUTHER XXX. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING STORAGE SECTION. 01 PLUS-NUM PIC 99 VALUE 15. LINKAGE SECTION. 77 MAIN-NUM PIC 99. * PROCEDURE DIVISION USING MAIN-NUM. ADD MAIN-NUM TO PLUS-NUM. MOVE PLUS-NUM TO MAIN-NUM. GOBACK. ENTRY ‘STATIC-ENTRY’ USING MAIN-NUM. ADD MAIN-NUM TO PLUS-NUM. MOVE PLUS-NUM TO MAIN-NUM. GOBACK. 以上程序运行后,将有如下输出结果。 TEST-NUM AFTER THE FIRST CALL: 25 TEST-NUM AFTER THE SECOND CALL: 35