2007/7/19 木曜日

標識を使用せず、画面項目の制御を行う方法

Filed under: RPG — takahashi @ 22:45:40

画面系のPRGプログラムを組んでいると、項目の多いPGになると標識が足らなくなって困った経験はありませんか!?
そこで今回は、標識を使用せずに画面項目の制御する方法をお伝えしようと思います

まず、画面DDS側でのコーディング方法を説明します

RPG:
  1. 0113.00 A            D1KIEN         2Y 0B  5  9TEXT(' 枝番 ')
  2. 0114.00 A                                      CHECK(RB)
  3. 0115.00 A                                      EDTCDE(Z)
  4. 0116.00 A                                      DSPATR(UL)
  5. 0117.00 A                                      DSPATR(&P1KIEN)
  6.  
  7. 0259.00 A            P1KIEN         1A  P      TEXT(' 枝番 ')

DSPATRにはBL等のキーワードではなく&の後に任意の名前を入力します。
次に&の後につけた名前と同じフィールドを追加します。ここでフィールドのタイプはPタイプ(プログラム-システム間)を指定します。

プログラム-システム間フィールドはプログラムとシステム間でデータの受け渡しに使用されます。 次にRPG側のコーディングです。

RPG:
  1. 0136.00      I*==============================================================*
  2. 0137.00      I*           デ  ー  タ  構  造                         *
  3. 0138.00      I*==============================================================*
  4. 0139.00      I* 固定値(表示属性 16 進 フィールド)
  5. 0140.00      I              X'24'                 C         P#CLR
  6. 0141.00      I              X'A0'                 C         P#PRO
  7. 0142.00      I              X'2A'                 C         P#ERR

I仕様書にて、項目の表示属性を16進数で定義します。
上記の例で説明すると
X'2A'は下線表示の入力項目
X'A0'は下線なしの非入力項目
X'2A'は明滅の高輝度表示の入力項目 となります

通常、標識のON、OFFで項目の表示属性を制御している所は、次の様に行います

RPG:
  1. 0732.00      C                     MOVELP#CLR     P1KIEN            枝番

16進数で定義した値を、画面DDSで定義したプログラム-システム間フィールドにセットします。

今回の例では
P#CLRをセットすれば、画面は下線付きの入力項目(DSPATR ULと同じ)になり
P#PROをセットすれば、画面は下線なしの保護項目(DSPATR PRと同じ)になり
P#ERRをセットすれば、画面は高輝度の明滅項目(DSPATR BL HIと同じ)になります。

但し、DSPATR(PC)と同等の動きをさせる事は不可能なので、カーソル制御は別途する必要があります。

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 0.463 sec. Powered by WordPress ME