精通COBOL--11.3.1 主调用程序中参数的定义

2019-04-15 15:34发布

  当主调用程序进行子程序调用时,通常需要向子程序传递参数。主调用程序所传递的参数一般情况下,可以为在该程序内所定义的任何数据。通常,这些数据可以在主调用程序数据部的以下几个节中进行定义。 q      文件节:此时在FD语句下面进行定义,数据内容通过读取相关文件得到。 q      工作存储节:在该节内可直接进行定义,数据内容通过在程序的处理过程中得到。 q      连接节:在该节内的定义方式同在工作存储节类似,但数据内容通过其他程序所传递的参数得到。并且,这些数据将作为该主调用程序的参数再次传递给其所调用的程序。 下面首先来看一个主调用示例程序,重点看里面的参数定义,代码如下。 IDENTIFICATION   DIVISION. PROGRAM-ID      CALLING-PROG. AUTHER           XXX. * ENVIRONMENT   DIVISION. * DATA  DIVISION. WORKING STORAGE SECTION. 01   PARM-GROUP.      05   PARM1   PIC  X.      05   PARM2   PIC  X(7).      05   PARM3    PIC  99.  77   PARM-NUMBER   PIC 9(5). …… * PROCEDURE   DIVISION. …… STOP RUN. 可以看到,以上主调用程序CALLING-PROG中的参数数据都是在工作存储节内定义的。关于主调用程序中的参数,主要有以下几点需要注意。 q      用于传递的参数通常必须定义在01层或77层。例如,以上程序中的参数PARM-GROUP就定义在01层,而参数PARM-NUMBER则定义在77层。 q      在主程序中定义的参数与该参数所定义的位置和顺序是有关系的。例如,以上程序中参数PARM-GROUP是在参数PARM-NUMBER前面进行定义的。这种顺序通常不可更改。 q      参数是在主调用程序中被分配存储空间的,而并不在被调用程序中进行分配。例如,以上程序中共分配10个字节大小的存储空间给第一个参数。而第二个参数则被分配5个字节大小的存储空间。 q      在程序调用的参数传递过程中,缺省情况下所传递的是参数的地址,而并不是参数的内容。因此,可以通过被调用程序改变该参数的实际内容。 q      COBOL程序将自动把最后一个参数的高位置为1,作为参数传递的结束标志。以此,COBOL程序便可支持变长参数队列的传递。