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
それは機能しますが、かなり不格好です。行の長さを取得するためだけに、行の周りにダミーのグループ レベルが必要です。これを行うより良い方法はありますか?