あなたの主な関心事は、実行時にサイズが変更された場合、配列に割り当てる量をコンパイラがどのように知るかということです。
答えは、最大量のスペース (90 エントリに十分) を割り当てることです。これは作業用ストレージのスペース用であることに注意してください。レコードがファイルに書き込まれると、関連する部分のみが書き込まれます。
例:
01 TABLE-SIZE PIC 9
01 TABLE OCCURS 1 TO 9 TIMES DEPENDING ON TABLE-SIZE
03 FLD1 PIC X(4)
TABLE
これにより、作業用ストレージに 36 文字 (9 の 4 倍) が割り当てられます。TABLE-SIZE
レコードがファイルに書き込まれるときに が 2 に設定されている場合、 の8 文字だけTABLE
が書き込まれます (もちろん、 に書き込まれた文字の上にTABLE-SIZE
)。
したがって、たとえば、によって占有されたメモリがだった場合TABLE
、AaaaBbbbCcccDdddEeeeFfffGgggHhhhIiii
ファイルに書き込まれた日付は短縮された (サイズを含む): になる可能性があります2AaaaBbbb
。
同様に、レコードが読み込まれるTABLE-SIZE
と、 と関連するビットの両方TABLE
がファイルから取り込まれます (サイズと最初の 2 つの要素のみを設定します)。
TABLE
それが発生したときに、未使用のエントリが何かに初期化されるとは思いません。とにかくそうではないと仮定し、テーブルに別のアイテムを追加する必要がある場合は明示的に入力することをお勧めします。
効率のために、 を に設定することを検討しTABLE-SIZE
てUSAGE IS COMP
ください。