主題の質問をいただきまして。
こんなコマンドがあるとは知らなんだー、ありがとうMさん♪
QUERY/400定義 *QRYDFN をSQL文に変換出力するコマンド RTVQMQRY
参考URL:
Converting Query/400 Queries to SQL
RTVQMQRY (QUERY 管理機能プログラム検索) コマンド ※IBM i 7.5版は執筆時点で英語のため7.4リンクです
RTVQMQRY概要
QUERY/400定義 *QRYDFN または QUERY管理機能プログラム *QMQRY 読取り、SQL文に変換して出力ファイルに書き込みます。

※作成する出力ファイルの桁数はSRCPFデフォルトの92としています。
RTVQMQRYコマンド使用例① (かんたんな*QRYDFNからSQL文を生成)
事前にSQL出力ファイル(例ではQSQLSRC)を作成します。
CRTSRCPF FILE(DEMOLIB/QSQLSRC) IGCDTA(*YES)
CRTSRCPF FILE(DEMOLIB/QSQLSRC) IGCDTA(*YES)
次にRTVQMQRYコマンドを実行します。
サンプルは、単純にDb2 for i テーブル名(ビュー名)だけを指定したものです。
画像では見えませんが、DEMOLIB/HINMSPを指定しています。

実行結果は下記のように10個のカラムのデータが表示されます。

RTVQMQRYを実行します。
RTVQMQRY QMQRY(DEMOLIB/HINMSP) SRCFILE(DEMOLIB/QSQLSRC) SRCMBR(*QMQRY) ALWQRYDFN(*YES)

ポイントはQRYDFNからの情報使用可能ALWQRYDFNパラメーターをYESにすることです*
コマンド名を見ると分かるようにこのコマンドは本来、QUERY管理機能プログラム=オブジェクトタイプ *QMQRYを検索してSQL文を書き出すコマンドだからです。
出力結果を確認すると、、

SELECT文が生成されています。
では、このコマンドをACS SQL実行画面にコピペして実行してみます。

失敗しましたT T)
理由はライブラリー/ファイル名になっているからでした。うーむ、これSQLネイティブ形式出力も指定可能にしてほしいですね。
気を取り直してライブラリー名.ファイル名に修正実行すると、、

実行されました!
RTVQMQRYコマンド使用例② (やや複雑めな*QRYDFNからSQL文を生成)
次にちょっと複雑な指定をしたQRYDFNからSQL生成をやってみます。
テーブルは1と同じHINMSPです。
売上-原価=粗利 ARARIフィールドを追加

カラムを指定、表示順の変更下記のようにいくつかのフィールドを除外、順番並べ替えをしました。

原価 GENKA が2,000円以上のレコードのみ選択します

以上のQRYDFNを保管します。実行結果は下記のようになります。

それでは、RTVQMQRYコマンドで上記QUERY/400定義をSQL文に変換出力してみます。
RTVQMQRY QMQRY(DEMOLIB/HINMSP_Q2) SRCFILE(DEMOLIB/QSQLSRC) SRCMBR(*QMQRY) ALWQRYDFN(*YES)

生成されたSQL文はコチラです。

ライブラリー/ファイル名をライブラリー.ファイルに修正してACS SQLスクリプト実行してみます。
結果を比較すると、QUERY/400と同様なようです。

RTVQMQRYコマンドコマンド使用例③ さらに条件を追加してみる
使用例②に加えてさらに条件を加えてみます。
分類フィールド(ソート順)を、粗利ARARI 降順、仕入先番号HNVEND 昇順 を指定

カラムヘッダーが2列のものは1列に修正

現実的な意味合いはありませんが、計算機能1~5を追加

以上を設定してQUERY/400を実行してみると下記のような結果が返ります。
・ソート順が、ARARI降順→仕入先番号照準
・カラムヘッダーは1行になった
・計算機能1-5(合計、平均、最大、最小、レコード数)はすべて正常計算されました。

RTVQMQRYコマンドでこのQUERY/400定義 *QRYDFNをリトリーブしてみます。以下の結果になりました。計算機能などは省略された(出力されていない)ようです。

ACS SQLで実行します。結果はQUERY/400と同様なようです。(のぞく計算機能)粗利 ARARIカラムもヘッダーを設定していない為別な値が入っています。

SQL出力ファイルのレコード長の検証
SQL文を書き出すPFのレコード長は92桁以上であれば大丈夫なようです。
SQL文を出力した事後にDSPFFDコマンドで確認するとSQL出力ファイル中に3つのフィールド(カラム)が生成されています。

SRCPFのレコード長を伸ばすと、SRCDTAのレコード長が大きくなります。
ですが、SQL文の出力桁数は固定のようで80桁前後で折り返されてしまうようです。一方、SQL出力ファイルの桁数が小さいと出力されたSQL文の一部がSQL出力ファイルに保管されない場合がありました。
SQL出力ファイルレコード長:92 基本形とします。

SQL出力ファイルレコード長:132 桁数が伸びても出力桁数は92の場合と同様。スクショでは切れていますが右端に日付6桁が入っています。

SQL出力ファイルレコード長:79 HNNSUR, が抜けてしまいました

よってSQL出力ファイルのレコード長を長くとってもあまり意味が無い& (ひとまず)92より短いといけないようです。
QUERY/400定義がSQL文に落とせるか?のチェックコマンド ANZQRYコマンド
QUERY/400定義 *QRYDFN をSQL文に落とした際のエラー有無をチェックできます。
使い方は
ANZQRY QRY(DEMOLIB/HINMSP_Q3)
のように*QRYDFN名を指定し実行します。
考察:今後の、IBM i アプリ資産(ソースコードやIBM i上のオブジェクトの定義)のSQL化、オープン化について
こちらの記事Source Orbit:ソース・オービット IBM i のアプリコードDevOps・可視化ツールにもあるように、今後どんどん、
- IBM iのアプリ資産をGitなど外部リポジトリで管理できるようにする
- IBM iのアプリ資産をSQLベースに移行していく
ということが言えそうです。
※細かい所調べきれてないのでまた追記したいと思います。
