5250エミュレータの設定を 27*132 の画面サイズで作成しておくと
24*80 サイズの表示装置ファイルのプログラム、27*132 サイズの表示装置ファイルのプログラムの
どちらも表示することができる。
しかし24*80 の画面サイズで設定された 5250エミュレータでは 27*132 の
表示装置ファイルのプログラムを実行しようとすると装置エラーとなって
実行することはできない。
そこで、ここでは 24*80, 27*132 のどちらのサイズでも実行可能な DSPF の作成の方法を
紹介する。
A DSPSIZ(27 132 *DS4 24 80 *DS3)
ファイル・レベルのキー・ワードとして DSPSIZ
を上記のように指定する。
これは 27*132 サイズを記号 *DS4
で表し、24*80 サイズを *DS3
で表すことを意味する。
この記述は
A DSPSIZ(24 80 *DS3 27 132 *DS4)
と *DS3
と *DS4
の順序を逆転して記述してはならない。
順序は必ず *DS4 *DS3
の順序で記述すること。
MSGLOC
とはエラー・メッセージの出力行の指定である。
エラー・メッセージとは ERRMSG
キー・ワードおよび SFLMSG
キー・ワードによって
出力されるエラー・メッセージのことである。
(エラー・メッセージをフィールドとして出力しているのはエラー・メッセージとは
呼ばない)
MSGLOC
は *DS3
と *DS4
を使って次のように指定する。
A *DS3 MSGLOC(24) A *DS4 MSGLOC(27)
従ってファイル・レベルの記述は次のようになる。
A DSPSIZ(27 132 *DS4 24 80 *DS3) A *DS3 MSGLOC(24) A *DS4 MSGLOC(27)
A ZKSU 5Y 0O 9 82TEXT(' 在庫数 ') A N08 DSPATR(ND) A EDTCDE(K) A THSU 5Y 0O 9 92TEXT(' 手配数 ') A N08 DSPATR(ND) A EDTCDE(K)
27*132 サイズの環境下のみで表示されるフィールドも132桁以内に収まるように
自由に記述することができる。
CRTDSPF
では 80桁以上をオーバーしていてもエラーにはならない。
ただし24*80 サイズの実行時には 80桁をオーバーするフィールドは
出力されないようにするために標識で制御する必要がある。
上記の例では
A N08 DSPATR(ND)
によって標識 08 がオフのときには表示されないように制御している。
24*80, 27*132 サイズのどちらの環境でも表示されるフィールドであっても
それぞれの環境における表示位置を変更することもできる。
A 4 82' 納期 ' A *DS3 4 62 A JUNOKI 8Y 0B 4 91TEXT(' 納期 ') A *DS3 4 71
RPG プログラム側で今、表示された環境が 24*80 なのか 27*132 であるのかを
判断するのは次のように INFDS
の項目によって判断する。
FANS201FM CF E WORKSTN F INFDS(INFDS) : D INFDS DS D NUM_ROWS 152 153B 0 D NUM_COLS 154 155B 0 : C****************************************************** C *INZSR BEGSR C****************************************************** C NUM_COLS COMP 132 08 C ENDSR
INFDS
の NUM_ROWS
には画面サイズの行数の値が入り、
NUM_COLS
には画面サイズの桁数が入る。
これらの値によって今、表示されている画面サイズを判断することができる。
なお IBM RPG 解説書に公開されている NUM_ROWS, NUM_COLS
の桁位置は誤りであり
実際はこの値が正しい。