COBOL语言之数组
数组子句(OCCURS 子句)
OCCURS 子句指定数据项为固定项目数或可变项目数的数组。OCCURS 子句不能
用于01 和77 层的项目,但可以用于基本或组合数据项目。如:
01 TIME-WORKED.
03 WEEK PIC 9 OCCURS 7 (TIMES).
COBOL 允许在OCCURS 子句所在组的下属项目中使用OCCURS 子句,从而提供多
维数组。如:
01 TIME-WORKED.
03 MONTH OCCURS 12. (12 个月)
05 DAY OCCURS 31 TIMES. (31 天)
07 REGULAR PIC 99.
引用多个OCCURS 子句的数据项时,第一个下标是最外边的OCCURS,后续下标
一直继续到最里层。
循环语句——PERFORM
PERFORM 过程名1 (THRU 过程名2)
[VARYING 参数1 FROM 初值1 BY 步长1 UNTIL 条件1]
循环语句——PERFORM
例如:
PERFORM T1 VARYING X FROM A BY B UNTIL X > 5.
它的作用是:
(一)先把初值A赋给变量X。
(二)判断条件(X > 5)是否符合,如果不满足条件,执行完一遍T1到T2,然
后X + B => X。
(三)再判断条件是否符合,如不满足,再执行一遍T1到T2,然后X + B => X。
如此反复执行(二)(三),直到条件(X > 5)符合为止。
(四)然后返回执行PERFORM语句的下一条语句。
当然,条件不一定要出现循环变量X,如:
A. MOVE 0 TO N.
PERFORM A1 VARYING X FROM 1 BY 5
UNTIL N > 10.
A1. ADD 1 TO N.
循环语句——PERFORM
多重循环形式(从内层开始向外层实行)
PERFORM 过程名1 (THRU 过程名2)
[VARYING 参数1 FROM 初值1 BY 步长1 UNTIL 条件1]
[AFTER 参数2 FROM 初值2 BY 步长2 UNTIL 条件2]
[AFTER 参数3 FROM 初值3 BY 步长3 UNTIL 条件3]
COBOL 允许用到三重循环
例如:
PERFORM A VARYING I FROM 1 BY 1 UNTIL I > 10
AFTER J FROM 2 BY 2 UNTIL J > 10.
…
COMPUTE Z = I * J
DISPLAY Z.
执行过程:
(一)先使I取初值1,再判断条件I > 10是否满足,如不满足,进行内循环。
(二)给J取初值2。
(三)判断J>10?如不满足,则执行一次A段。
(四)然后J+2=>J。
(五)重复执行(三)(四),再判断J>10?未满足,则执行一次A段,直到J>10为止。
(六)满足J>10,就使I+1=>I。
(七)判断I>10?如仍未满足,就给J重新取初值2。然后重复(三)~(五)。直到I>10为止。
(八)满足I>10后,就转去执行PERFORM语句的下一条语句。
执行语句(PERFORM 语句)
在一个COBOL 程序中,往往有一部分语句是需要多次执行的。我们希望重复的部分只出现一次,即把重复的部分单独写成一段或一节。每次需要执行这部分语句时转去该段,执行完后转回来。这时需要用到执行语句(PERFORM 语句)。另外,当程序很长时,也可以分成若干个节,这些节的调用也是通过这时执行语句(PERFORM 语句)。
PERFORM 语句的一般形式:
PERFORM 过程名1 [THRU 过程名2]
出口语句(EXIT 语句)
EXIT 语句提供了一组过程的公共出口,或者说它指出了被调用过程的逻辑终
点。EXIT 语句不使计算机产生任何动作,它好比一个“桥梁”,能将被调用
过程和调用过程的后续过程连接起来。一般用来作PERFORM语句调用的语句序
列的出口,使程序返回到PERFORM语句的下一个语句上去。
注意EXIT 语句必须是本段中唯一的语句,即该段中不允许有其它语句。
EXIT 语句前必须有一段名。
(1) PERFORM A THRU B.
...
A. MOVE 1 TO X
ADD X TO Y.
B. EXIT.
(2) PERFORM A.
...
A. MOVE 1 TO X
ADD X TO Y.
复写语句(COPY 语句)
利用COPY 语句可以可以使某些记录描述和数据描述为不同的程序共用。为此
要建立一个源程序库,将上述这些共同使用的源程序中的某一部分事先存入库
中。编码人员用COPY 语句就可以将这些源程序体插入到自己的源程序中。
COPY 语句一般格式:
COPY 库名 REPLACING 标识符1 BY 标识符2
标识符的含义为不超过30 个字符组成的字符序列。
例如:
COPY IN-FILE REPLACING ==IN== BY ==A==.(用A 替换IN)
COPY 语句不仅可用于数据部,而且也可用于其它部分。使用COPY 语句可以减少写程序的工作量,便于程序的保存和修改。
计算语句(COMPUTE 语句)
COBOL 还提供了一种计算语句,可以进行比较复杂的四则运算。一般格式:
COMPUTE 标识符1 = 算术表达式
例如:COMPUTE Z = (B – A) * 2 + C * X – E / D.
说明:
所有运算符两侧均应留一空格。
括号的外侧应留空格,内侧可不要留空格。
COMPUTE 语句运算速度较单一的加减乘除慢。
数组子句(OCCURS 子句)
OCCURS 子句指定数据项为固定项目数或可变项目数的数组。OCCURS 子句不能
用于01 和77 层的项目,但可以用于基本或组合数据项目。如:
01 TIME-WORKED.
03 WEEK PIC 9 OCCURS 7 (TIMES).
COBOL 允许在OCCURS 子句所在组的下属项目中使用OCCURS 子句,从而提供多
维数组。如:
01 TIME-WORKED.
03 MONTH OCCURS 12. (12 个月)
05 DAY OCCURS 31 TIMES. (31 天)
07 REGULAR PIC 99.
引用多个OCCURS 子句的数据项时,第一个下标是最外边的OCCURS,后续下标
一直继续到最里层。
循环语句——PERFORM
PERFORM 过程名1 (THRU 过程名2)
[VARYING 参数1 FROM 初值1 BY 步长1 UNTIL 条件1]
循环语句——PERFORM
例如:
PERFORM T1 VARYING X FROM A BY B UNTIL X > 5.
它的作用是:
(一)先把初值A赋给变量X。
(二)判断条件(X > 5)是否符合,如果不满足条件,执行完一遍T1到T2,然
后X + B => X。
(三)再判断条件是否符合,如不满足,再执行一遍T1到T2,然后X + B => X。
如此反复执行(二)(三),直到条件(X > 5)符合为止。
(四)然后返回执行PERFORM语句的下一条语句。
当然,条件不一定要出现循环变量X,如:
A. MOVE 0 TO N.
PERFORM A1 VARYING X FROM 1 BY 5
UNTIL N > 10.
A1. ADD 1 TO N.
循环语句——PERFORM
多重循环形式(从内层开始向外层实行)
PERFORM 过程名1 (THRU 过程名2)
[VARYING 参数1 FROM 初值1 BY 步长1 UNTIL 条件1]
[AFTER 参数2 FROM 初值2 BY 步长2 UNTIL 条件2]
[AFTER 参数3 FROM 初值3 BY 步长3 UNTIL 条件3]
COBOL 允许用到三重循环
例如:
PERFORM A VARYING I FROM 1 BY 1 UNTIL I > 10
AFTER J FROM 2 BY 2 UNTIL J > 10.
…
COMPUTE Z = I * J
DISPLAY Z.
执行过程:
(一)先使I取初值1,再判断条件I > 10是否满足,如不满足,进行内循环。
(二)给J取初值2。
(三)判断J>10?如不满足,则执行一次A段。
(四)然后J+2=>J。
(五)重复执行(三)(四),再判断J>10?未满足,则执行一次A段,直到J>10为止。
(六)满足J>10,就使I+1=>I。
(七)判断I>10?如仍未满足,就给J重新取初值2。然后重复(三)~(五)。直到I>10为止。
(八)满足I>10后,就转去执行PERFORM语句的下一条语句。
执行语句(PERFORM 语句)
在一个COBOL 程序中,往往有一部分语句是需要多次执行的。我们希望重复的部分只出现一次,即把重复的部分单独写成一段或一节。每次需要执行这部分语句时转去该段,执行完后转回来。这时需要用到执行语句(PERFORM 语句)。另外,当程序很长时,也可以分成若干个节,这些节的调用也是通过这时执行语句(PERFORM 语句)。
PERFORM 语句的一般形式:
PERFORM 过程名1 [THRU 过程名2]
出口语句(EXIT 语句)
EXIT 语句提供了一组过程的公共出口,或者说它指出了被调用过程的逻辑终
点。EXIT 语句不使计算机产生任何动作,它好比一个“桥梁”,能将被调用
过程和调用过程的后续过程连接起来。一般用来作PERFORM语句调用的语句序
列的出口,使程序返回到PERFORM语句的下一个语句上去。
注意EXIT 语句必须是本段中唯一的语句,即该段中不允许有其它语句。
EXIT 语句前必须有一段名。
(1) PERFORM A THRU B.
...
A. MOVE 1 TO X
ADD X TO Y.
B. EXIT.
(2) PERFORM A.
...
A. MOVE 1 TO X
ADD X TO Y.
复写语句(COPY 语句)
利用COPY 语句可以可以使某些记录描述和数据描述为不同的程序共用。为此
要建立一个源程序库,将上述这些共同使用的源程序中的某一部分事先存入库
中。编码人员用COPY 语句就可以将这些源程序体插入到自己的源程序中。
COPY 语句一般格式:
COPY 库名 REPLACING 标识符1 BY 标识符2
标识符的含义为不超过30 个字符组成的字符序列。
例如:
COPY IN-FILE REPLACING ==IN== BY ==A==.(用A 替换IN)
COPY 语句不仅可用于数据部,而且也可用于其它部分。使用COPY 语句可以减少写程序的工作量,便于程序的保存和修改。
计算语句(COMPUTE 语句)
COBOL 还提供了一种计算语句,可以进行比较复杂的四则运算。一般格式:
COMPUTE 标识符1 = 算术表达式
例如:COMPUTE Z = (B – A) * 2 + C * X – E / D.
说明:
所有运算符两侧均应留一空格。
括号的外侧应留空格,内侧可不要留空格。
COMPUTE 语句运算速度较单一的加减乘除慢。