4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ILERPGAdvent Calendar 2024

Day 14

IBM i の既存プログラムを活かしたハイブリッド開発(その2)

Last updated at Posted at 2024-12-13

前回のIBM i の既存プログラムを活かしたハイブリッド開発(その1)に続き、ハイブリッド開発の実装パターン1を行っていきます。

前回作成した仮想既存資産のRPGは次のとおりです。

①消費税計算サブルーチン(10%)

■ 引数

  • IN :金額(税抜き)
  • OUT:金額(税込み)
    ■返り値
  • なし

このRPGをSQLから呼び出せる、SQLストアド・プロシージャを作成する事でOpen側との連携をすることが可能になります。

それでは具体的にストアド・プロシージャを作成するSQLを見ていきます。

PROC1-1
-- プロシージャ作成
CREATE OR REPLACE PROCEDURE
  USHIDA@Q24.MY_ZEIKOMI1
  (
    IN  IN_KING1 NUMERIC(011 ,00)
   ,OUT OT_KING2 NUMERIC(011 ,00)
  )
  LANGUAGE RPGLE
  EXTERNAL NAME 'USHIDA@Q24/Q240101R(MY_ZEIKOMI)'
  PARAMETER STYLE GENERAL
;

このSQLではCREATE PROCEDUREによって ライブラリ USHIDA@Q24 内に MY_ZEIKOMI1 という名前のストアド・プロシージャを定義しています。
続いて、(...) 内に引数の定義をしており、RPG引数のゾーン10進数は SQL 型 NUMERITC に該当します。
LANGUAGERPGLE となり、EXTERNAL NAME で実際に呼び出されるプログラムをライブラリ/プログラム名(プロシージャ名)の形式で指定します。
PARAMETER STYLE GENERALは、この形式で引数を定義した場合程度に思って下さい。詳細はマニュアルを見て下さい。STRSQLやACSで上記SQLを実行すると以下の様に出力されます。

20241214-01.png

これで既存RPGにSQLからの入口が出来ました。それでは実際に実行して結果を確かめてみます。
ストアド・プロシージャを呼び出すにはCALLステートメントを使用します。
次のSQLで結果を確かめます。

PROC1-2
-- 変数定義
CREATE OR REPLACE VARIABLE
  USHIDA@Q24.KING1
  NUMERIC(011 ,00)
;
CREATE OR REPLACE VARIABLE
  USHIDA@Q24.KING2
  NUMERIC(011 ,00)
;

-- 変数設定
SET USHIDA@Q24.KING1 = 1000
   ,USHIDA@Q24.KING2 = 0
;

-- 呼び出し
CALL
  USHIDA@Q24.MY_ZEIKOMI1
  (
    USHIDA@Q24.KING1
   ,USHIDA@Q24.KING2
  )
;

-- 結果
VALUES
  USHIDA@Q24.KING1
 ,USHIDA@Q24.KING2
;


上記SQLでは、ストアド・プロシージャの引数に使用する変数を CREATE VARIABLE で定義しております。続いてその変数に初期値を SET しています。初期値をセットしないと変数がNULLの状態でエラーとなります。
CALL でストアド・プロシージャを呼び出し、最後に結果を VALUES で出力しています。

一連の SQL を実行すると以下の様に出力されます。
20241214-02.png

「1,000円の税抜き金額を入力に与えると、10%税込みの金額1,100円で出力」 されました。
この様に既存資産であるRPGをSQLのストアド・プロシージャを経由する事で、Open側に既存ビジネスロジックをそのまま活用させる事が可能になりました。
次回はもう一つのパターンがどうなるか?見ていきます。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?