键盘寻梦
IBM大型机应用开发==>ZHONCHEN'S BLOG
posts - 1,comments - 0,trackbacks - 0

内部子程序
    IDENTIFICATION DIVISION.
    PROGRAM-ID. PROC-A.
    ENVIRONMENT DIVISION.
    ...
    DATA DIVISION.
    ...
    PROCEDURE DIVISION.
    ...
       IDENTIFICATION DIVISION.
       PROGRAM-ID. PROC-B.
       ENVIRONMENT DIVISION.
       ...
       DATA DIVISION.
       ...
       PROCEDURE DIVISION.
       ...
       END PROGRAM PROC-B.
       IDENTIFICATION DIVISION.
       PROGRAM-ID. PROC-C.
       ENVIRONMENT DIVISION.
       ...
       DATA DIVISION.
       ...
       PROCEDURE DIVISION.
       ...
           IDENTIFICATION DIVISION.
           PROGRAM-ID. PROC-D.
           ENVIRONMENT DIVISION.
           ...
           DATA DIVISION.
           ...
           PROCEDURE DIVISION.
           ...
           END PROGRAM PROC-D.
       END PROGRAM PROC-C.
    END PROGRAM PROC-A.
    程序A包含B,C两个子程序,其中C又包含子程序D。
    A能调用B,C。C能调用D。B不能调用C,A不能调用D。
    如果C声明为公用的,则B可以调用C,语法为:
    PROGRAM-ID. PROC-C IS COMMON PROGRAM.

    当前函数中定义的变量都只是对当前函数有效。可以用GLOBAL声明为对所有函数有效。
    01 DATA-NAME IS GOLBAL ...
    文件也有此声明:FD FILE-NAME IS GOLBAL ...

    如果调用的不是本程序中的文件或变量,则可以用EXTERNAL声明。
    FD FILE-NAME IS EXTERNAL.../01 DATA-NAME IS EXTERNAL...

    CALL PROC VAR1 [ON EXCEPTION CODE1] [NOT ON EXCEPTION CODE2] END-CALL.
    如果找不到PROC程序名,执行CODE1(如果有此声明),找到将参数VAR1传递给PROC,并执行。PROC返回时执行CODE2(如果有此声明)。
    参数应该在文件,工作存储或连接节中定义,应为01层数据项,77层数据项或基本数据项。
    子程序要返回调用程序,执行EXIT PROGRAM

    传递参数有3步:
    首先在调用程序的CALL语句列出要传递的参数。
    CALL PROC VAR1 .
    然后在被调用程序的过程部标题,使用USING短语列出相应的参数。
    PROCEDURE DIVISION USING VAR1.
    最后在被调用程序的连接节(LINKAGE SECTION)提供参数的存储空间。
    LINKAGE SECTION.
    01 VAR1 PIC XX.

    参数传递有2中方式:
    BY CONTENT    传递的参数值只在被调用函数中被改变,调用函数中的值不变。
    BY REFERENCE. 传递的参数值在被调用函数中被改变,调用函数中的值也改变。
    CALL PROC VAR1 BY CONTENT/REFERENCE.

    再次调用子程序,子程序处于上次退出的状态(除了连接节中的数据),打开的文件依然打开。
    可以用INITIAL声明函数被调用时处于初始状态。
    PROGRAM-ID. PROC-C IS INITIAL PROGRAM.

    如果不想每次执行都初始化,只在需要的时候初始化,可以用CANCEL PROC.初始化PROC程序,但不执行PROC。

文章来源 :  http://szhfdy.bokee.com/

posted on 2006-06-13 13:23 IBM大型机应用开发 阅读(1427) 评论(0)  编辑  收藏 所属分类: COBOL