PANEL-WORKER

14. DSPF のヘルプをパネル・グループで作成する方法

パネル・グループ(*PNLGRP)に興味の無かった人でも
パネル・グループによって DSPF のヘルプが作れるとなると
興味が出てくるかも知れない。
どのような DSPF でもフィールドにカーソルをセットして
機能キー: F1を押すだけでたちまちPOPUPのヘルプが表示されるのは
かっこいいし何よりエンド・ユーザーへの説明が楽になる。
操作性(ユーザービリティー)がよくなるようにと
補助用にフィールドを追加してはみたものの
それらの活用方法は文章にでもしないとうまく説明できない場合がある。
このようなときにはヘルプの機能は必要である。

IBM のユーティリティーはほとんどがF1キーを押すと
その対応するヘルプによる説明文がPOPUPとして
表示されることはよく知られている。
それと同様のヘルプを簡単に作成する方法を紹介する。

ソース・ファイルを作成

ソース・ファイルとして 92バイトのソース・ファイルを次のように作成する。

     CRTSRCPF FILE(MYSRCLIB/QHLPSRC) RCDLEN(92) CCSID(65535) AUT(*ALL)
		

作成するソース・ファイル名は

     QPNLSRC : パネル・グループ
     QHLPSRC : ヘルプ用のパネル・グループ
     QMNUSRC : メニュー用のパネル・グループ
		

などであるが、ここでは QHLPSRC として作成してみよう。

SEU でパネル・グループ(PNLGRP)を開始

     STRSEU MYSRCLIB/QHLPSRC PGM001H
		

のようにしてSEU を起動する。 ソース・メンバー名は プログラム名 + 'H' とする。

ヘルプ・ソースを記述する。

ヘルプ・ソースを登録するのは簡単である。
ヘルプはパネル・グループ(PNLGRP)というIBM独自のタグ言語である。

     :PNLGRP HLPSHELF=LIST.  ----------(最初は :PNLGRPに始まって)

     :HELP NAME='MYPGM/MITNO'. 見積  -----------------------
     :XH3. 見積                                            |
     :P.                                                     |---- :HELP〜 :EHELP.までが
     :PC. 新規契約を入力するときに見積b入力すれば         |      ひとつの説明
     :PC. 契約者や契約者住所などを見積書から自動的に         |
     :PC. 参照されますので入力の手間を省くことができます。   |
     :EHELP. -------------------------------------------------
        :
        : 
     :EPNLGRP.  ----------------------(最後は :EPNLGRP. に終わる)

		

全体のソースの概要はのような感じでパネル・グループのひとつのタグはすべて
:」(コロン)によって始まり「.」(ピリオド)で終わる。
パネル・グループ全体は :PNLGRP:EPNLGRP. によって囲まれており
その内側を小さな :HELP:EHELP. で囲まれたタグを複数個で繰り返して記述する。

:HELPタグの NAMEパラメータは NAME='プログラム名/フィールド名' として定義しておく。
プログラム全体への説明であれば NAME='プログラム名' だけとする。
:PC. タグは終わりタグのない説明文を入れるタグであり、ここに説明文を入れる。

これくらいの知識があれば十分、ヘルプを作成することができる。

ヘルプ文をコンパイルする。

ヘルプ・ソースを

     CRTPNLGRP PNLGRP(MYLIB/PGM001H) SRCFILE(MYSRCLIB/QHLPSRC) AUT(*ALL)
		

のようにして CRTPNLGRP コマンドによってパネル・グループ・オブジェクト
( *PNLGRP ) を生成する。
不慣れな場合は警告エラーがかなり出るかも知れないが
とにかくオブジェクトを作成することである。

DSPFソースにヘルプを記述する。

前述の CRTPNLGRP でヘルプ・オブジェクトは生成することができたのだが
それを DSPF に組み込む必要がある。
ヘルプの記述はファイル・レベルとフィールド別にはレコード・レベルの
両方への記述が必要である。

[ファイル・レベル]

     A                                      DSPSIZ(27 132 *DS4)
     A                                      MSGLOC(27)         
     A                                      PRINT              
     A                                      HELP                               
     A                                      ALTHELP(CA01)                      
     A                                      HLPPNLGRP(PGM001H MYLIB/PGM001H)       
     A                                      HLPTITLE('注文書の入力 ') 
		
【解説】

HELPに続いて ALTHELP(CA01) が F1キーによるヘルプを可能にする記述である。
HLPPNLGRP にはヘルプ・パネル・グループの名前を宣言する。
HLPTITLE にはヘルプのタイトルを記述する。

[レコード・レベル]


     A          R AA1010                                               
     A                                      TEXT(' 初期画面 ')         
     A                                      CF03(03 ' 終了 ')          
     A                                      CF04(04 ' 検索 ')          
     A                                      CF12(12 ' 取消 ')          
     A                                      BLINK                      
     A                                      INZRCD                     
     A          H                           HLPARA(4 21 4 21)          
     A                                      HLPPNLGRP('PGM001/SHRKBN' -  
     A                                      MYLIB/PGM001H)               
     A          H                           HLPARA(6 21 6 24)          
     A                                      HLPPNLGRP('PGM001/EGYCOD' -  
     A                                      MYLIB/PGM001H)               
      :
【解説】

レコード R の欄に H を記述するとヘルプの記述となる。
HLPARAキー・ワードでヘルプ領域(HELP AREA)を(開始行 開始桁 終了行 終了桁)として
記述してその領域にカーソルが位置してF1キーが押されたときに表示するヘルプは
HLPPNLGRP で示されるヘルプである。前述のヘルプ・ソースと比較して
眺めればすぐに理解して頂けると思う。

DSPFソースを再作成する

DSPF を CRTDSPF コマンドで再作成する。
今回の修正によって入出力バッファーの変化は無いので、レベル・チェックを *NO で
再作成すれば RPG/COBOL を再コンパイルする必要はない。

     CRTDSPF FILE(MYLIB/MYDSPF) SRCFILE(MYSRCLIB/QDSPSRC) LVLCHK(*NO) AUT(*ALL)
		

のような具合である。

実行してF1-ヘルプを確かめる

PANEL-WORKER

このように、慣れれば F1キーによるヘルプ画面の作成は簡単である。
エンド・ユーザーに対して、もう少し操作を説明したいという場合に特に有効である。
しかしできればどの画面でも F1-ヘルプの説明を入れておけば
新入社員でもやさしく操作することができて操作性の向上になることは間違いない。

開発者はプログラム内部の機能にだけ関心が集中しがちであるが
操作性にも配慮してみてはどうだろうか?