CICS の execute に関する考慮事項

通常、CICS® のコンテキストでは、EGL execute ステートメントは 動的要素を持つネイティブ EXEC CICS ステートメントを実行するために使用されます。 このステートメントでは、同じプログラムにあるローカル EGL 変数や、同じ関数内に含まれるラベルが参照される場合があります。 EGL は、指定されたテキストおよび解決された変数名やラベル名を含む EXEC CICS ステートメントを生成して、 それをアプリケーション・プログラムに組み込みます。

構文

汎用フィールドを持つ構文図
cicsStatement
このタイプのステートメントの許容コンテンツについて詳しくは、 資料「CICS Application Programmer Reference」を参照してください。 cicsStatement のコンテンツには、テキスト、変数参照、またはラベル参照が任意の組み合わせで含まれる可能性があります。 テキストはいずれも変換 (大文字小文字変換など) されずにそのまま含まれます。 参照される変数はいずれも、同じ EGL プログラム内のローカル EGL 変数でなければなりません。 別のプログラムやライブラリーにある変数は参照できません。 すべての変数参照の前にコロン (:) が付いています。 これは、コロンの後のテキストが、解決しなければならない変数であるとみなされるように指示しています。 参照されるラベルはすべて、同じ関数内の EGL ラベルでなければなりません。 別の関数にあるラベルは参照できません。 すべてのラベル参照の前に % 記号 (%) が付いています。 これは、% 記号の後のテキストが、解決しなければならないラベルであるとみなされるように指示しています。
ステートメントの CICS 応答コードを取得するには、CICS 変数の EIBRESP や EIBRESP2 に 直接はアクセスできないため、ユーザーが cicsStatement の一部として RESP(:variable) 引数をコーディングする必要があります。 そうしないと、エラー・コードが参照対象の EGL 変数に書き込まれます。
execute ステートメントの例をいくつか以下に示します。
error int;
message char(80);
leng int;
function main()
		execute #cics{WRITEQ TD QUEUE("CSML") FROM(:MESSAGE) 
           ENGTH(:LENG) RESP(:error)};
. . . . .
		execute #cics{HANDLE CONDITION DUPREC(%Y)};
. . . . .
y:
		processDuplicateRecord();
end

意見