ホスト変数グループとインジケータ配列

グループ項目内でホスト変数が宣言されている場合、これらの変数をそれぞれ参照する必要のある SQL 文は、代わりにグループ名を参照することで参照を短縮できます。インジケータ変数をこれらのホスト変数に関連付ける必要がある場合には、ホスト変数と同じ数のインスタンスを持つインジケータ変数のテーブルを定義して、このテーブルを参照してください (OCCURS 句を持つ項目です。その項目を含むグループ項目ではありません)。

例えば、次のようなホスト変数を定義したとします。

01  host-structure.
03 sumh           pic s9(9) comp-5.
03 avgh           pic s9(9) comp-5.
03 minh           pic s9(9) comp-5.
03 maxh           pic s9(9) comp-5.
03 varchar.
49 varchar-l   pic s9(4) comp.
49 varchar-d   pic x(1000).
01  indicator-table.
03 indic          pic s9(4) comp-5 occurs 4.
01  redefines indicator-table.
03 indic1         pic s9(4) comp-5.
03 indic2         pic s9(4) comp-5.
03 indic3         pic s9(4) comp-5.
03 indic4         pic s9(4) comp-5.

この例では、次の手続き文は、

exec sql fetch s3 into
:host-structure:indic
end-exec

次の文に相当します。

exec sql fetch s3 into
:sumh:indic1, :avgh:indic2, :minh:indic3,
:maxh:indic4, :varchar
end-exec

宣言された 4 つのインジケータ変数が、最初の 4 つのホスト変数に割り当てられます。5 つ以上宣言された場合は、5 つのホスト変数すべてが 1 つのインジケータ変数に関連付けられます。

インジケータ変数のテーブルは、相当する SQL 文を示すためのみに再定義されます (SQL 文では下付き文字指定は許可されていません)。必要に応じて、再定義を省略し、下付き文字指定を使用することで、COBOL プログラムでインジケータ変数を参照することもできます。