OS/400 には RUNSQLSTM という SQL 実行コマンドが用意されているが
- ソースファイルへの SQL文の登録が必要
- SELECT 文が実行できない。
という 理由から STRQMQRY に代わる機能は提供していない。
それでは 汎用的に SQL 文がバッチで実行できる SQL パッケージを紹介しよう。
次の RPG SQL-パッケージは 実際 PANEL-WORKER Chicago の Excel アップロード・サーバーの中で
PC クライアントからの SQL 要求文を処理している実物である。
0001.00 H DFTNAME(RUNSQLCMD) DATEDIT(*YMD/) 0002.00 F********** RUN SQL COMMAND ************************************* 0003.00 FSTR5000 IF E DISK USROPN 0004.00 F***************************************************************** 0005.00 D MSGID DS 0006.00 D SQL 1 3 0007.00 D SQLCD 3 7 0 0008.00 D SPCBIN DS 0009.00 D CMPBIN 1 4B 0 0010.00 D CMPCHR 1 4 0011.00 C*----------------------------------------------------+ 0012.00 C* パラーメータの受取り 0013.00 C*----------------------------------------------------+ 0014.00 C *ENTRY PLIST 0015.00 C PARM STRING 0016.00 C PARM MSGID 0017.00 C PARM MSGDTA 80 0018.00 C PARM RESULT 4 0019.00 C*----------------------------------------------------+ 0020.00 C/EXEC SQL WHENEVER SQLERROR GO TO ERROR 0021.00 C/END-EXEC 0022.00 C/EXEC SQL 0023.00 C+ EXECUTE IMMEDIATE :STRING 0024.00 C/END-EXEC 0025.00 C* 0026.00 C Z-ADD SQLER6 CMPBIN 0027.00 C MOVE CMPCHR MSGID 0028.00 C MOVE 'SQL' SQL 0029.00 C MOVEL SQLERM MSGDTA 0030.00 C MOVE 'CMOK' RESULT 0031.00 C GOTO END 0032.00 C ERROR TAG 0033.00 C Z-SUB SQLCOD SQLCD 0034.00 C MOVE 'SQL' SQL 0035.00 C MOVEL SQLERM MSGDTA 0036.00 C MOVE 'ERR_' RESULT 0037.00 C END TAG 0038.00 C SETON LR 0039.00 C RETURN 0040.00 C****************************************************** 0041.00 C *INZSR BEGSR 0042.00 C****************************************************** 0043.00 C* 初期 CYCLE のみの実行 0044.00 CSR GOTO INZEND 0045.00 CSR OPEN STR5000 99 0046.00 CSR READ STR5000 50 0047.00 CSR CLOSE STR5000 99 0048.00 CSR INZEND ENDSR