2.25.サブファイルいろいろ |
例えば、9000件のデータを持つファイルをサブファイルで表示しようとする場合、サブファイルへの書き出しを9000回繰り返してから表示するので、端末の前で『入力不可』をじっと見守ることになります。これを回避する手法は以下のとおりです。サブファイル1頁分を、WRITEしてから表示します。オペレーターがロールアップを押すと、次のサブファイル1頁分を、WRITEしてから表示します。これでいくと『入力不可』は、サブファイル1頁を書き込む間だけとなります。 これにあわせて、サブファイルに書き込むデータを選択するプロンプトを予め出して、9000件の数を減らします。又、画面上で、データの開始位置を指定して、選択できる様にすれば、もっと便利です。 表示したサブファイルをロールアップして、間違えて実行キーを叩いたら、サブファイルの一画面めから再表示してしまった、ということがあります。以下のようにしましょう。DSPFのソース上SFLRCDNBRを定義します。 RPGのソース上で、INFORMATION DSを作成して、 B 378 379 0 TOPRRN (TOPRRNは任意のフィールド)を定義します。 サブファイルの読み込みの後で、TOPRRNが0ならば、Z-ADD 1 を、TOPRRNが0でなければTOPRRNをSFLRCDNBRの定義フィールドに転送する。(最近、DDSキーワードで新しく、カーソル位置を取り込めるものができています。このキーワードについてはいづれ説明します。) サブファイルの読込ロールアップを何回も押して、1000件分表示してそのうち一件を選択するつもりで、サブファイルにマークを入力したら、ずーっと『入力不可』があって、やっと目的を達成した経験はないでしょうか。これは 1 DO 1000 RRN 等として、CHAIN を繰り返し、入力フィールドに何か入力がないか、調べるために起こります。このような場合は、CHAIN でなく READC を使います。これだと、変更のあったレコードのみ取り込みます。但し、注意すべきことがあります。 DDS(DSPF)上にオプション標識を付けた SFLNXTCHG を指定すること。 RPG 内でサブファイル新しく書き込む時は、SFLNXTCHG のオプション標識を OFF にしておくこと。 READCで読み込んだサブファイルは、必ず SFLNXTCHG オプション標識を ON にして UPDAT しておくこと。 READC を EOF まで繰り返す時、READC で読み込んだ直後、サブファイルに CHAIN 命令は使用しないこと。次の READC が捕らえる RRN がおかしくなってします。 |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||