こちらの記事の続編です。
環境はIBM i 7.5を使用しています。
■今回ご紹介するサンプル一覧表
どこから? | SQLのカテゴリ | SQLサンプル | 操作内容 | ||
---|---|---|---|---|---|
ACS | 雑多なサンプル | CL ADDRPYLE | システム応答リストに自動応答させたいMSG IDを登録 | ||
ACS | 雑多なサンプル | CL CHGJOB INQMSGRPY(*SYSRPYL) | システム応答リストを参照するようにジョブ属性を変更 | ||
ACS | 雑多なサンプル | CL CHGJOB INQMSGRQY(*DFT) | システム応答リストの参照属性を元に戻す | ||
ACS | 雑多なサンプル | CL RMVRPYLE | システム応答リストからMSG IDを除去 |
ACS SQLサンプル カテゴリー:Miscellaneous(雑多なサンプル)システム応答リスト関連
直訳ですみません^^;、よく使うであろうベーシックなサンプルが収められています。
CL ADDRPYLE
システム応答リストに自動応答させたいMSG IDを登録
CL: ADDRPYLE SEQNBR(3333) MSGID(CPA32B2) RPY(I);
コメント:上記のパラメーターは全て例です。実際必要なメッセージIDとその応答を入力します。SEQNBRは1OS上でユニークで、小さい番号から参照されます。
実行例(CL ADDRPYLE):メッセージID CPA32B2 をシステム応答リストの3333番目に登録し、その自動応答は 'I' と指定しています。
※メッセージID CPA32B2 はどんなときに発生する?
たとえばALTER TABLEでテーブル(PF)の属性を変更しようとした際、ワーニングとして出力されたりします。通常無視してよい場合も多くその際はメッセージ応答に 'I' を入力しないと処理が継続しません。この操作をシステム応答リストに登録するのがこのSQLサンプルです。
ただし、システム応答リストを参照する、しないはジョブ毎に属性を持っています。デフォルトでは参照しない、になっていることが多いため、次のサンプルが役に立ちます。
CL CHGJOB INQMSGRPY(*SYSRPYL)
システム応答リストを参照するようにジョブ属性を変更
CL: CHGJOB INQMSGRPY(*SYSRPYL);
コメント:ジョブ属性 INQMSGRPYはシステム応答リストを参照する、しないを指定します。*SYSRPYLはシステム応答リストを参照するよう変更しています。
CL CHGJOB INQMSGRPY(*DFT)
システム応答リストをデフォルトに変更
CL: CHGJOB INQMSGRPY(*DFT);
コメント:1つ上のサンプルと組み合わせて使う想定です。*SYSRPYLに変更したままだと別なメッセージIDへの自動応答を意図せずに参照してしまう可能性もあるため、参照させたい処理・コマンドが完了したら参照属性を元にもどします。サンプル *DFT はジョブ記述 JOBD の照会メッセージ応答パラメーター INQMSGRPY などでジョブが開始時に設定されている属性を想定しています。環境によってはDFT以外の値がINQMSGRPYパラメーターに指定されている場合もあると思いますので、ジョブ開始時の値に戻す、という操作で使用してください。
***参考:ジョブ記述 *JOBD のINQMSGRPYパラメーター
CL RMVRPYLE
システム応答リストからMSG IDを除去
CL: RMVRPYLE SEQNBR(3333);
コメント:3333 は上のADDRPYLEの例と呼応したサンプルの番号です。実際のメッセージIDのSEQNBRを指定します。この操作でADDDRPYLEで追加したメッセージIDがシステム応答リストから除去されます。この操作も必須ではない、とも言えますが、自分のジョブが使用したいだけ、というようなシステム応答リスト登録は他のジョブに影響が無いように一時的な使用にする(ジョブ終了前に除去する)というのは適切な考え方です。