我想在 COBOL 中获取表的长度(我的意思是数组中元素的数量)。我看到的惯例通常是对其进行硬编码以匹配工作存储中的出现。但是我希望代码得到长度,这样如果工作存储发生变化,程序重新编译,那么过程划分语句就不需要更改。这既是为了减少维护工作,又是为了防止在 5000 行代码中“遗漏”一次使用,并且可能允许代码位于可在具有不同表长度的多个程序中使用的复制代码中。
所以这是我想出的唯一解决方案。
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTPROG.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 THIS-LENGTH PIC 9(04).
01 THIS-GROUP.
05 THIS-TABLE PIC X(20) OCCURS 15 TIMES.
PROCEDURE DIVISION.
COMPUTE THIS-LENGTH = LENGTH OF THIS-GROUP
/ LENGTH OF THIS-TABLE.
DISPLAY LENGTH OF THIS-GROUP ' / ' LENGTH OF THIS-TABLE
' = ' THIS-LENGTH.
EXIT-PROG.
STOP RUN.
这输出
000000300 / 000000020 = 0015
所以这行得通,但它很笨重。它需要围绕行的虚拟组级别,只是为了获得它们的长度。有一个更好的方法吗?