RPGなら、あっという間に書ける。

そう思いながら、わざわざCLの中でデータベースへの書き込みをしようとしていた。2024年10月、AS/400の仕事での話である。

CLは、Control Language。処理の流れを組み立てるための言語だ。変数も使えるし、条件によって処理を分けることもできる。

けれど、データベースの読み書きとなると、僕にはRPGのほうがずっと手になじんでいる。必要なデータを読み、加工し、書き出す。いつもの仕事である。

それでも、このときはRPGのプログラムを一本増やしたくなかった。

当時のブログを読むと、新しいオブジェクトを増やすことに伴う手間を気にしている。とくに、文書化の作業だ。

プログラムを一本書けば、その一本についての文書も必要になる。コードを書く速さだけで決められない事情が、そこにはあった。

もっとも、CLで何とかしようと考えるほうにも、ちゃんと手間はかかる(笑)。

読むほうは、それほど困らなかった。

DCLFで使うデータベース・ファイルを宣言し、RCVFでレコードを順番に読む。最後まで読んだことは、MONMSGでメッセージを監視して判断する。

さて、書くほうは。

SNDFというコマンドはある。名前だけ見ると、こちらに任せられそうだ。ところが、これは画面にデータを送るためのもの。データベースへの書き込みには使えない。

読む入口はあったのに、欲しかった書く出口が、同じ調子では見つからない。

そこで使ったのがSQLだった。

INSERT INTOで始まる、データを追加するためのSQL文を組み立てる。そして、それをRUNSQLコマンドで実行する。

CLの中からSQLを使えば、別のRPGプログラムに書き込みを任せずに済む。

当時のブログは、少々面倒だったけれど、オブジェクトを増やさずに済んだからOK、という調子で結んでいる。

この古い記事には、完成したコードは載っていない。残っているのは、何に引っ掛かり、どうやって抜けたかという、短い仕事の記録である。

読み返すと、プログラムを一本増やした先の文書まで気にしているところが、いかにも現場の話だと思う。

RPG好きの僕が、RPGを一本増やさないために知恵を絞る。

そんな日もある(笑)。

現在の補足

この記事は、2024年10月4日の旧ブログ「AS/400のCLでデータベースを操るのは難儀やな」をもとに再構成しました。当時の環境のOSバージョンは元記事に記載されていません。

今回確認したIBM i 7.4の公式資料でも、RCVFによるデータベース・ファイルの読み取りと、RUNSQLによるINSERTの実行が説明されています。「RPGを一本増やさずに済んだ」という部分は、当時の本人の記録に基づきます。

参考資料(2026年10月19日確認):

WRITTEN BY 太城 義雄(たき よしお)

IBM i / AS/400を愛するSE