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

  当主调用程序进行子程序调用时,通常需要向子程序传递参数。主调用程序所传递的参数一般情况下,可以为在该程序内所定义的任何数据。通常,这些数据可以在主调用程序数据部的以下几个节中进行定义。

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程序便可支持变长参数队列的传递。

你可能感兴趣的:(精通COBOL--11.3.1 主调用程序中参数的定义)