3

こんにちは、みなさん。COBOL を使用して zOS 環境で取り組もうとしているコーディング プロジェクトで、少し問題が発生しています。ファイルを読み取り、それらをインデックス付きテーブルに配置する必要があります (レコードが 90 未満になることはわかっています)。

私を投げかけているのは、プロジェクトのパラメーターによって、「テーブルサイズ」と呼ばれる変数を使用するように拘束されていることです(宣言時にゼロに設定されています)。

それをすべて考えると、「テーブルサイズに応じて1〜90回発生します」のようなことをする必要がありますが、テーブルサイズが必要な場合(私が知る限り)、それがどのように機能するかわかりません。サイズは、テーブルにエントリが追加されるたびに増加します。誰でも私のためにこれを片付けてもらえますか?

ありがとう!

4

2 に答える 2

9

あなたの主な関心事は、実行時にサイズが変更された場合、配列に割り当てる量をコンパイラがどのように知るかということです。

答えは、最大量のスペース (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)。

したがって、たとえば、によって占有されたメモリがだった場合TABLEAaaaBbbbCcccDdddEeeeFfffGgggHhhhIiiiファイルに書き込まれた日付は短縮された (サイズを含む): になる可能性があります2AaaaBbbb

同様に、レコードが読み込まれるTABLE-SIZEと、 と関連するビットの両方TABLEがファイルから取り込まれます (サイズと最初の 2 つの要素のみを設定します)。

TABLEそれが発生したときに、未使用のエントリが何かに初期化されるとは思いません。とにかくそうではないと仮定し、テーブルに別のアイテムを追加する必要がある場合は明示的に入力することをお勧めします。

効率のために、 を に設定することを検討しTABLE-SIZEUSAGE IS COMPください。

于 2009-03-28T04:34:37.460 に答える
2

ここには十分な情報がありませんが、基本的なことは、DEPENDING ON 句で指定された変数には、グループの変数数のカウントが必要であるということです。だからあなたは次のようなものが必要です

01   TABLE-SIZE     PIC 99
01   TABLE OCCURS 1 TO 90 TIMES
       DEPENDING ON TABLE-SIZE
    03 FIELD-1
    03 FIELD-2

等々。

この記事またはPublib のこの記事を参照してください。

于 2009-03-28T04:16:14.477 に答える