IBMDB2iストレージエンジンその3
RedBookの続きをやります。phpMyAdminからSQLを投げてデータが、AS/400に書かれるのは確認できたので、4.2.3項にある「Accessing MySQL data from RPG with native access」をやってみます。SQL-RPGの解説もありますが、実はよく知りません。自分は、Native-RPGが大好きなんで。
注記みたいなのが書いてあります。
- PF,LFはMySQLのEngineで、Table,Indexを作ってね
- BLOBなどのLarge Objectは、Native-RPGからアクセス出来ないよ、でもSQL-RPGならOKだよ
- F仕様書でダブルクウォートをサポートして無いから、ファイルはQTEMP等の一時エリアに、別名でコピーして、使いましょう。一時ファイルでプログラムをコンパイル後、一時ファイルは削除しましょう。実行時はOVRDBFで実ファイルにオーバーライドしましょう。
RPGでレコード追加のテスト
H DATEDIT(*YMD) H COPYRIGHT('(C) CHUBU SYSTEM CO,.LTD 1996 - ') /IF DEFINED(*CRTBNDRPG) H DFTACTGRP(*NO) ACTGRP(*NEW) /ENDIF F* 社員マスター FSHAIN UF A E K DISK RENAME(SHAIN :SHAINR) D*-----<< メインプロシージャ・プロトタイプ定義 >>-----* DDB2I001 PR DDB2I001 PI D*-----<< サブプロシージャ・プロトタイプ >>-----* D*-----<< サブプロシージャ定義 >>-----* D SAVE PR D****************************************************************** D* C*- -----------------------------------------------------------------* C*- --------<< FREE FORMAT >>-------* C*- -----------------------------------------------------------------* /FREE SAVE() ; *INLR = *ON ; RETURN ; /END-FREE P**************************************************************** P** < SAVE > : ** P**************************************************************** P SAVE B D SAVE PI D*< 変数 > D UPD_RECORD E DS EXTNAME(SHAIN :*INPUT) D QUALIFIED D WRT_RECORD E DS EXTNAME(SHAIN :*OUTPUT) D QUALIFIED D SHAIN_KEY E DS EXTNAME(SHAIN :*KEY) D QUALIFIED /FREE // 最終レコード取得 SHAIN_KEY.CODE = *HIVAL ; SETLL %KDS(SHAIN_KEY) SHAINR ; READP(N) SHAINR UPD_RECORD ; CLEAR WRT_RECORD ; IF %EOF ; WRT_RECORD.CODE = 1 ; ELSE ; WRT_RECORD.CODE = UPD_RECORD.CODE + 1 ; ENDIF ; WRT_RECORD.KANA = ' カタカナ ' + %CHAR(WRT_RECORD.CODE); WRT_RECORD.NAME = ' 名前 ' + %CHAR(WRT_RECORD.CODE); WRT_RECORD.C_DATE = %DEC(%DATE()) ; WRT_RECORD.C_TIME = %DEC(%TIME()) ; WRITE SHAINR WRT_RECORD ; RETURN ; /END-FREE P E
CALL DB2I001を実行
iナビで確認
phpMyAdminで確認
無事レコードが追加されました。