DFU, Query, SQL

49. (5) 組込みSQLプログラミング

組込みSQLプログラミングとはRPG, COBOLまたはC言語のソースの中にSQL文を
埋め込む方法である。
ただしSEUでこれらを登録するには

ソース種類 ソース仕様タイプ
RPG(=RPG III) SQLRPG
ILE-RPG SQLRPGLE
COBOL SQLCBLLE

C SQLC

のようにソース仕様タイプを指定する必要がある。
またコンパイラーは CRTBNDRPG, CRTBNDCBLCRTBNDC ではなく

ソース種類 コンパイラー
RPG(=RPG III) CRTSQLRPG
ILE-RPG CRTSQLRPGI
COBOL CRTSQLCBL
ILE-COBOL CRTSQLCBL
C CRTSQLC

を使ってコンパイルしなければならない。

SQLのソースは一時的にQTEMPのソースに展開されてそこからコンパイルされる。
従ってDEBUGのときはQTEMPのソースが参照されていることに注意されたい。
また 各コンパイラーは *PGMだけでなく *MODULE も作成することができるので
SQLでバインド・プログラム(*SRVPGM)を開発することも可能である。

                   SQL ILE RPG オブジェクト の作成  (CRTSQLRPGI)                   
                                                                               
 選択項目を入力して,実行キーを押してください。                                
                                                                               
 オブジェクト  . . . . . . . . .   MYRPGPGM       名前                         
   ライブラリー  . . . . . . . .     OBJLIB       名前 , *CURLIB               
 ソース・ファイル  . . . . . . .   QRPGLESRC      名前 , QRPGLESRC             
   ライブラリー  . . . . . . . .     MYSRCLIB     名前 , *LIBL, *CURLIB        
 ソース・メンバー  . . . . . . .   *OBJ           名前 , *OBJ                  
 ソース・ストリーム・ファイル                                                  
                                                                               
 コミットメント制御  . . . . . .   *NONE         *CHG, *ALL, *CS, *NONE...     
 リレーショナル・データベース      *LOCAL                                      
 コンパイル・タイプ  . . . . . .   *PGM          *PGM, *SRVPGM, *MODULE        
 出力リスト  . . . . . . . . . .   *PRINT         *NONE, *PRINT                 
 テキスト ' 記述 ' . . . . . . .   *SRCMBRTXT   

[解説]

これは SQLRPGのコンパイルの例であるがコンパイル・タイプを*PGM ではなく
*MODULEや *SRVPGMを指定することができる。
出力リストは必ず *PRINTに変更しておかないとQTEMPへのソース生成エラーを
確認することができない。
コンパイルはこの一回だけの指示で内部では
1 QTEMPソースの生成
2.QTEMPソースからのコンパイル
と都合2回行われることになる。
COMIT や ROLLBK を使わないのであれば コミットメント制御 は*NONEと
しておくこと。
( コミットについては別の機会で説明する )