RPG

489. KEEP と ASSUME の使い方

表示装置ファイル(DSPF)の KEEPキー・ワードと ASSUME キー・ワードは
何に使うのだろう? 説明を読んでも意味不明といった印象を受ける人も
少なくないと思われる。
そこで実際に使う用途と意味を解説する。
  _

■ KEEP は画面バッファーを残す

まず KEEP KEEPキー・ワードとはレコード・レベルのキー・ワードであって
指定した画面レコードのバッファーをプログラムが終了後も
残しておく(KEEP)という意味である。

■ ASSUME は残ったバッファーを読み取る

ASSUME はS/36のために作られたような表示キー・ワードであって
表示レコードが出力されていない書記の状態でも表示レコードが
あるものと仮定する(ASSUME)キー・ワージである。
通常は 表示レコードを最初に出力してそれを次に読み取ることに
なるはずであるがASSUME を使えばレコードはあるものと
仮定して読み取ることになる。

■ 組み合わせることによって前の画面イメージを読み取る

 さてあるプログラム A が画面の入出力処理を行って
終了してとする。(EXFMT)
ただし最後の表示レコードには KEEPが指定されていたものとする。
このような入出力が行われると最後に表示した表示レコードのバッファーは
残ったままになっているはずある。
_

次のプログラム B が起動して最初の画面レコードの読み取りを
ASSUME として読み取って画面フィールドの位置や長さも
前のプログラム A のフィールドと同じ位置として読み取ったとすると
ログラム B には ログラム A での画面のフィールド値を
読み取ることができる。

■ 特殊なケースで

このように

プログラム A : KEEP

プログラム B : ASSUME

として実行すると プログラム B では プログラム A の画面フィールド値を
読み取ることができる。

通常の業務アプリケーションではこのような特殊な利用例はあまりないが
覚えておくと役に立つケースもある。
_

  ASSUME はまた別の目的で使用する場合もあるので
また別の機会に紹介する。

※ KEEP と ASSUME
紹介したこの技術は次期製品でDFUのDSPF情報を読取るのに
使用されています。