タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

【AS400】QRYプログラムからSQL文を生成する方法

昨日、同僚から教えていただいたネタをひとつご紹介します。

私は、知らない機能だったので、衝撃でした。
SQLがよくわかっていなかった10年前に知りたかった機能でしたよ!!!

と、こぼしていても始まらないので、さっそく試してみました。

QRYプログラムの作成

WRKQRY
  • ファイル  :TIGERDB/MSHAIN
  • フィールド :SHAINID, NAME
  • レコード抽出:SHAINID RANGE '0001' '0100'

今回は、動作を確認するだけなので、シンプルなQRYにしました。

「TIGERQRY/MSHAINLIST」という名前で保存しました。

ソースPFの準備

SQL文は、ソースファイルとして吐き出しされるとのことなので、SQL保管用のソースPFを準備します。

CRTSRCPF FILE(TIGER/SQLSRC) RCDLEN(112) IGCDTA(*YES) TEXT('TIGER SQLSRC')

QRYからSQL文への変換

最後に、変換処理を「RTVQMQRY」コマンドで実施します。

RTVQMQRY [F4]
                     QUERY 管理機能プログラム検索  (RTVQMQRY)                   
                                                                                
  選択項目を入力して,実行キーを押してください。                                
                                                                                
  QUERY 管理機能プログラム  . . . > MSHAINLIST     名前                         
   ライブラリー  . . . . . . . . . . . >   TIGERQRY     名前 , *LIBL, *CURLIB        
  ソース・ファイル  . . . . . . . > SQLSRC         名前                         
   ライブラリー  . . . . . . . . . . . >   TIGER        名前 , *LIBL, *CURLIB        
  ソース・メンバー  . . . . . . .   *QMQRY         名前 , *QMQRY                
  QRYDFN からの情報使用可能   . . > *ONLY         *NO, *YES, *ONLY              
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                         終り   
 F3= 終了    F4=プロンプト   F5= 最新表示    F12= 取り消し                    
 F13= この画面の使用法                    F24= キーの続き  

先ほど作成したTIGER/SQLSRC に保存する設定にしました。
なお、ファイル名はQRYプログラム名と同じになるようです。

SQL確認

TIGER/SQLSRC に「MSHAINLIST」というファイルが生成され、中身を確認してみると、SQL文が書き出されていました。
複雑なSQL文になる場合に、一度QRYで確認してからこの方法を使えば時短になりそうですね!!
もちろん、SQLマスターになることも大切なのですが。。。

  桁 . . . . . :    1 100                                     走査検索               
 SEU==>                                                                          
 FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
        ****************** データの始め ************************************************
0001.00 H QM4 05 Q 01 E V W E R 01 03 05/15/03 07:44                              
0002.00 V 1001 050  社員リスト                                                         
0003.00 V 5001 004 *HEX                                                               
0004.00 SELECT                                                                          
0005.00   ALL       SHAINID, NAME                                                       
0006.00   FROM      TIGERDB/MSHAIN T01                                                
0007.00   WHERE     SHAINID BETWEEN '0001' AND '0100'                              
        ***************** データの終わり ***********************************************