ブログ

【Power Systems、IBM i 、AS/400】QMQRYオブジェクトによりSQL文を繰り返し使用する

はじめに

弊社では長年に渡り、様々なお客様のもとでIBM Power Systems(IBM i 、AS/400)における基幹システムを開発させていただいております。
本稿では、SQL文からQMQRYオブジェクトを作成する方法のご案内をいたします。

本稿の狙いは下記のとおりです。
・特定のSQL文を繰り返し使用したい。
・CLプログラム中でもSQL文を実行できるようにしたい。
・1本のQUERYプログラムでは実現できない処理でも、1本のSQL文で処理を実現できるような場合に、QUERYプログラムではなくQMQRYオブジェクトを用いることで、開発するオブジェクト数を削減したい。

本稿の題材

年月別・得意先別の売上金額集計ファイルをSQLで自己結合して、昨年対比を出力(照会)するSQLを1本のQMQRYオブジェクトにしてみます。
※自己結合による昨年対比は、1本のQUERYプログラムでは実現は難しいかと思われますため、ここでの題材としております。

参照する売上金額集計ファイル定義は下記のとおりです。

手順

手順1:SRCファイルを作成します

SQL文を記述しておくためのSRCファイルを、下記のコマンドで作成します。

CRTSRCPF FILE(QTEMP/QQMQRYSRC) RCDLEN(91) IGCDTA(*YES)

手順2: 手順1で作成したSRCファイルに、SQL文を記述したSRCメンバーを作成します

ここではSEUで作成します。
※YYYYMM(年月)は、6桁Sタイプで定義されているので、+100で1年後を表現します。

手順3:QMQRYオブジェクトの作成コマンドを実行します

CRTQMQRY QMQRY(QTEMP/URIQMQRY) SRCFILE(QTEMP/QQMQRYSRC)

手順4:試しに、コマンドラインから手順3のオブジェクトを実行してみます

STRQMQRY QMQRY(QTEMP/URIQMQRY)

実行結果は下記のようになりました。

最後までお読みいただきまして、ありがとうございます。
ご参考になりましたら幸いです。

pagetop