僕は、37年間勤めた職場で、ずっとAS/400を使ってきた。 ところが、その間、サブファイルは使ってこなかった。

サブファイルとは、検索結果などの複数の明細を、画面に一覧表示するための仕組みだ。[1]

AS/400歴は長い。でも、サブファイルについては、これから経験を積むところなのである(笑)。

今回、そのサブファイルで、商品名を表示しようとしていた。

一画面に12件を表示する一覧がある。二ページ目の二件目で商品コードを入力し、RPGのプログラムへ処理を戻す。商品名を調べて、その行に表示する。

そのとき、二ページ目を表示したままにしたい。

今回、考えたかったのは、商品名を補う処理に加えて、表示し直すときの現在地だった。

画面の中身を更新することと、どこから見せるかを決めること。この二つを、分けて考える。

まず、画面の二行目と、一覧全体の二件目は違う。

先頭から12件ずつ表示する単純な例なら、こうなる。

位置サブファイル内の番号
二ページ目の先頭13
二ページ目の二件目14

この、サブファイルの中で何番目かを表すのが、相対レコード番号、RRNである。商品コードとは別の番号だ。

表示位置を指定するためのキーワードに、SFLRCDNBRがある。指定したRRNを含むページを表示し、*TOPを付ければ、そのレコードを先頭にできる。[2]

だから、この例で13番をページの先頭にしたいなら、SFLRCDNBR(*TOP)の項目に13を渡す、という考え方になる。

今見ている先頭を受け取るには、SFLSCROLLも使える。Enterでプログラムに戻ると、表示中の先頭のRRNが返る。その値を、次に表示するときの位置指定に使う。[3]

どの行の商品名を補うか。そして、どの行を画面の先頭にするか。

同じ一覧の話でも、持っておきたい情報が少し違う。

なお、この説明は、複数ページ分のレコードを読み込んだサブファイルを想定している。中身を入れ替えたり並べ直したりするなら、戻す番号が今の一覧でも有効かを確かめる必要がある。

これは、そんな表示位置の仕組みを、あらためて整理した話だ。

入力した商品コードに、商品名が付く。そのまま同じページで続きを入力できる。使う人には、その流れが自然であってほしい。

大きな機能の話ではない。でも、こういう「そのまま続けられる」を、画面を作るときには考えておきたい。

商品名を補う話をしていたのに、先に補充が必要だったのは、僕のサブファイルの経験だった(笑)。

参考資料

[1] IBM i 7.5:SFLキーワード
[2] IBM i 7.5:SFLRCDNBRキーワード
[3] IBM i 7.5:SFLSCROLLキーワード

資料確認:2026年10月15日。仕組みを説明する一例で、実機での改修完了を報告するものではありません。

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

IBM i / AS/400を愛するSE