- DDS SFLCTL内の定義は、サブファイルページ<サブファイルサイズと指定する
- DDS ロールアップキーはSFLCTL内に定義する
- DDS ロールダウンキーは定義しない
- DDS SFLRCDNBRは必ず指定する
簡易ロジック
ロジックを分かりやすくするために、TAGやSUBRを使います。また、これは、疑似RPGです。本当のRPGコーディングだとわかりずらいのでこうしました。とにかくここでは、ロジックを理解して下さい。
メインルーチン
\CLR_SFL TAG
EXSR @CLR_SFL サブファイルの消去
\BLD_SFL TAG
EXSR @BLD_SFL サブファイルのビルド
\DSP_SFL TAG
EXSR @DSP_SFL サブファイルの表示
IF F3 is pushed then GOTO \END F3でプログラム終了
IF ROLLUP is pushed then GOTO \BLD_SFL ロールアップで次ページ表示
IF Redisplay is pushed then GOTO\CLR_SFL 再表示で初めから
GOTO \DSP_SFL 実行キーだけが押されたら表示へ戻る
\END TAG
SETLR ON and RETURN 終了
サブルーチン
@CLR_SFL BEGSR サブファイルクリア
SFLCLR ON CTLRCDのキーワード標識オン
WRITE SFLCTL サブファイルクリア実行
SFLCLR OFF CTLRCDのキーワード標識オフ
RRN = 0 相対レコード番号を0にリセット
Saved RRN = 0 保管用相対レコード番号を0にリセット
key SETLL A File ファイルカーソルリセット
ENDSR
@BLD_SFL BEGSR サブファイルのビルド
Count = 0 カウンターを0にする
RRN = Saved RRN 相対レコード番号の初期値を前回の最後の値にする
Count DOUEQ SFLRCD Size 1ページ分のレコード数になるまで繰り返し
key READEQ A File ファイルからレコード読込
IF A File EOF then LEAVE ファイルEOFならループから出る
IF Count =0 then SFLRCDNBR = RRN 最初のレコードセットのときに、SFLRCDNBRをセット
RRN = RRN + 1 相対レコード番号をカウントアップ
Count = Count + 1 1ページ分のレコードをカウント
WRITE SFLRCD サブファイルレコードの書き出し
ENDDO
IF Not A File EOF then Saved RRN = RRN 次回の相対レコード番号用に保管
IF A File EOF then SFLMORE ON EOFならば、SFLMODEをONにする
ENDSR
@DSP_SFL BEGSR サブファイルを画面に表示
SFLDSP ON サブファイルレコードのオン(レコードがあれば)
SFLDSPCTL ON サブファイルコントロールのオン
EXFMT SFLCTL レコードの表示命令
SFLDSP OFF サブファイルレコードのオフ
SFLDSPCTL OFF サブファイルコントロールのオフ
ENDSR
|