パラメーターを使用するRPGストアード プロシージャーを作成する
異なるプラットフォームにまたがって使用されるプロセスの作成が必要になることがあります。1つの例は、価格設定ルーチンです。あるシステムで価格設定を行う必要が生じたときに、私たちのシステムでどのようにオーダーが作成されたかにかかわらず、顧客が支払う価格は必ず同じになる必要があります。
このような機能を作成するための1つの方法は、Webサービスを使用することです。また、別の方法として、ストアード プロシージャーを使用することも考えられます。この記事シリーズでは、IBM iでストアード プロシージャーを作成する様々な方法について重点的に取り上げます。
パート1となる本記事では、入力パラメーターを受け取り、出力パラメーターを返すRPGプログラムを作成しています(図1)。このプログラムは非常に単純ですが、どのようなことを実現することを目指しているかを説明する良い例になります。このプログラムのソース コードは、ダウンロードして利用することができます。
プログラムは入力としてメッセージを受け取ってから、サービス利用者に返す出力メッセージを作成します。あまりワクワクするようなものではありませんが、要件は満たします。次に、SQLスクリプトを作成して、このRPGプログラムをストアード プロシージャーとしてカタログ化します(図2)。
このスクリプトをステップごとに見てみましょう。17行目では、ライブラリー MLLIB内でストアード プロシージャーを作成または置き換えすることをシステムに伝えています。ストアード プロシージャー名は、 MLRSTRPRC1です。
19行目および20行目は、ストアード プロシージャーの入出力パラメーターを定義します。それらは、RPGプログラムで定義したのと同じように定義されます。
23行目は、ストアード プロシージャーがRPGプログラムを利用することを指示します。 Not Deterministic は、プロシージャーが、呼び出されるたびに同じ結果を返さない可能性があることを意味します。
24行目は、プロシージャーで呼び出されるRPGプログラムの場所を示します。
最後に、25行目の Parameter Style General は、パラメーターが外部プログラムに渡されることを指示します。
プログラムのコメント セクション(8行目)で、ストアード プロシージャーを作成するのに使用したステートメントを示しています。
スクリプトが作成されたら、ACSで実行することによって、テストすることができます。「SQLスクリプトの実行」で、このプロシージャーを呼び出します(図3)。
ここでは、パラメーター Hello を入力としてスクリプトに渡しています。2つ目のパラメーターは、こちらに返されることになる出力パラメーターであるため、プレースホルダー(疑問符)を使用して、そのように指示しています。スクリプトを実行すると、ACSはメッセージ ビューで結果を表示します(図4)。
この記事は、ストアード プロシージャーの使用法の様々な側面を紹介する記事シリーズのパート1です。次回の記事では、RPGを使用して結果セットをサービス利用者に返すストアード プロシージャーを作成する方法について取り上げる予定です。