模块 4 · 第 2 课(共 2)课程中的8/10~15 min
模块课程(2/2)
表和 OCCURS 子句
在 COBOL 中,没有“数组”或“向量”关键字来定义同质数据列表。为此,您可以使用 OCCURS 子句,该子句指定变量或结构在内存中重复的次数。
使用 OCCURS 定义表
OCCURS 子句添加到组结构(级别 01)内的从属变量(例如,级别 05 或更高级别)的声明中:
COBOL
01 WS-SALES-DATA.
05 WS-MONTHLY-SALES PIC 9(4) OCCURS 12 TIMES.在此示例中,WS-MONTHLY-SALES 是一个由 12 个数字元素(每个元素为 4 位)组成的表。为该记录分配的内存正好是 12 * 4 = 48 个字符。
访问元素和索引
要访问表中的特定元素,请在字段名称后面的圆括号中指定索引。
[!重要] 与大多数使用基于 0 的索引的现代语言不同,COBOL 使用基于 1 的索引。第一个元素位于索引
1处,第二个元素位于索引2处,依此类推。
COBOL
MOVE 1500 TO WS-MONTHLY-SALES(1).
MOVE 2400 TO WS-MONTHLY-SALES(2).遍历表(迭代)
要循环遍历表的元素,您可以使用 PERFORM VARYING 语句或在 PERFORM UNTIL 循环中手动管理计数器:
COBOL
PERFORM UNTIL WS-INDEX > 12
DISPLAY "Sales: " WS-MONTHLY-SALES(WS-INDEX)
ADD 1 TO WS-INDEX
END-PERFORM.自己尝试一下
锻炼#cobol.m4.l2.e1
尝试:0加载中...
使用 OCCURS 子句在 WS-WEATHER-DATA 组结构下声明包含 5 位十进制温度(3 位整数和 1 位小数)的表。
正在加载编辑器...
显示提示
写入:05 WS-温度 PIC 9(3)V9 出现 5 次。
3 次尝试后可用的解决方案
锻炼#cobol.m4.l2.e2
尝试:0加载中...
使用 MOVE 语句分别使用值 1200、1500 和 1800 初始化 WS-MONTHLY-SALES 表的前三个元素。请记住,COBOL 索引从 1 开始。
正在加载编辑器...
显示提示
使用 MOVE 1200 至 WS-MONTHLY-SALES(1)。对于第一个元素,然后使用索引 (2) 和 (3) 对第二个和第三个元素重复。
3 次尝试后可用的解决方案