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

グループ項目内でホスト変数が宣言されている場合、これらの変数をそれぞれ参照する必要のある 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 プログラムでインジケーター変数を参照することもできます。