最後にサブ・ファイルの正しい使い方と誤った使い方とをまとめてみよう。
正しい サブ・ファイルの出力方法
正しいSFLレコードの出力適用業務とは、
■ SFLSIZ の大きさを SFLPAG の大きさ + 1 の値で DSPFソースを記述する。
【例】
A SFLSIZ(0014) A SFLPAG(0013)
■ 最初に SFLCLR を行って最初のSFLページを出力したら後は
ROLLUPキーが押されたときの記述だけを行う。
( ROLLDWNの処理は記述する必要はない。)
-------------------------------------------------------------------------------
C SETKEY SETLL SHOHIN
C EXSR SFLCLR
C* : ファイルの読み取り
C Z-ADD 1 TOPRRN
C EXSR READ
C Z-ADD 1 DSPREC
C*( サブ・ファイルの表示 )
C*----------------------------------------------------+
C DSPLY TAG
C SETON 4142
C EXFMT SFCTL01
C SETOFF 4142
C*----------------------------------------------------+
:
C*( ROLL UP )- 次ページ
C *IN14 IFEQ *ON
C EXSR ROLLUP
C GOTO DSPLY
C END
------------------------------------------------------------------------------------
■ 正しい SFLレコード処理の記述をしていれば
ROLLUPで SFLを追加する記述さえしていればよい。
ROLLUPキーによってSFLレコードが追加されれば、その後に ROLLDWNキーが押されたとしても
SFLレコードの表示をスクロールして戻すのは i5/OS が行うのでプログラムは何もする必要はない。
事実、ROLLUP した後に ROLLDWNキーを押してもプログラムに制御は戻らない。
■ 正しい SFLレコードの処理
SFLCLR で消去
![]()
SFLレコードを
1ページ分だけ
追加する
1ページ分だけ
追加する
![]()
ROLLUPが押されたら
SFLレコードを追加
SFLレコードを追加
たったこれだけの処理だけで SFLレコードの表示を実現することができる。
サブ・ファイルの仕組みは我々開発者が非常に楽になるように仕組まれているのであって
特殊なテクニックを理解したり、あれこれと策を労じる必要はない。
もし特殊なテクニックを使っているのであれば、それは間違いである。
サブ・ファイルは開発をやさしくするための仕組みであって難しくするための仕組みではないのだ。
