メニューボタン
IBMi海外記事2014.12.24

あったのに知らなかった SQL 関数、パート 1

Ted Holt 著

強力な潜在能力を持った SQL 関数がシステムに存在したのに、気付かなかっただけだと言ったらどう思いますか。それらの SQL 関数の名前がわからないと言ったらどうでしょうか。SQL 照会で、既存の RPG ルーチンを簡単に利用できると言ったらどう思うでしょう。興味がわきますか?
(Little Rascals (AKA Our Gang) のヒントを見て、こう言いましょう「どうやって?」と)
サービス・プログラムのサブプロシージャーから SQL 関数を作成するのは簡単です。図示するため、サービス・プログラムの構築元となる RPG モジュールのソース・コードを以下に示します。

技術解説2-1

この図をまとめた時のように、自由形式の RPG を使用する必要はありません。固定フォーマット RPG で十分に機能します。
この図のモジュールは、最近取り組んだプロジェクトに基づいています。都市、州、郵便番号、国名がまとめて 1 つの値として保存されたデータに取り組む必要がありました。住所の各部を分ける方法を思いつく必要がありました。この例は、都市、州、ZIP コード (米国の郵便番号) を抽出する非常に簡略化されたバージョンです。このバージョンでは、都市名の後にコンマとスペースがあり、次に州名、スペース、最後に ZIP コードが来ると想定しています。
モジュールを作成します。
CRTRPGMOD MODULE(MYLIB/ADDR) SRCFILE(MYLIB/QRPGLESRC)
モジュールからサービス・プログラムを作成します。
CRTSRVPGM SRVPGM(MYLIB/ADDR) EXPORT(*ALL)
これで、プログラムはサービス・プログラムにバインドし、GetCity、GetState、GetZip の各サブプロシージャーを使用できるようになりました。素晴らしいです!これが ILE のすべてです。
さらに一歩進めましょう。これらのサブプロシージャー上に SQL 関数を作成することで、SQL 照会で、この同じコードを使用できます。GetCity 関数を作成するコマンドを示します。(興味があるかどうかわかりませんが、GetState 関数と GetZip 関数の作成については読者にお任せします)

技術解説2-2

これらの新しい SQL 関数を使用するクエリーは次のようになります。

技術解説2-3

次のような結果になります。

技術解説2-4

あなたのショップにあるサービス・プログラムを考えてみてください。値を戻すエクスポートされたサブプロシージャーはそれぞれ、潜在的な SQL 関数の値です。すごいでしょう?(Little Rascalsのヒントを見て、こう叫んでください「びっくり、すごいね」と)

あわせて読みたい記事

PAGE TOP