RPG

442. SAA標準化(2) – メニュー

初めのSAA標準化はメニューからである。
SAAの標準化のお手本はIBM iのユーティリティーなので
IBM メニューの作り方を真似るようにするとよい。
_

メニューは

(1) PGM メニュー

(2) DSPF メニュー

(3) UIMメニュー

の3種類があるがどのソースから作ってもオブジェクト・タイプは*MENUであれば
十分である。
ただし多くの業務メニューではCLPで作成されていて*MENUになっていないものが
大半である。この理由は

(1) CALL MENU 形式で動作するので *MENUのする方法を学びたくない。

(2) 社内の先輩がCALL MENU形式で作っているので

など多くの理由があるが多くのIBM ユーザーを見ていると調べて学習するのが
苦手なように見える。
GO MNEU形式が推薦される理由は

(1)メニューの呼び出しは GO MNEU形式であることを社内で統一する。

(2)CALL MENU形式でエラー・モニターがされていない*PGMが多くエラーで
アベンドするとエンド・ユーザーに不信感を与えてしまう。

開発者としてできるだけMONMSGを使ってエラーを監視して
不用意なアベンドにも想定したシステム作りを心がけたいものである。

■ CRTMNUコマンドによる *MENUオブジェクトの作成

ところでCRTMNU (=メニュー作成)コマンドをご存知だろうか?
CRTMNU コマンドを使うと任意の*PGM, *DSPF, *UIM からメニューを生成することができる。
ただし CRTMNU *PGM の場合はパラメータが定型的に決まっていて

0001.00              PGM        PARM(&MENU &MNULIB &RTNCOD)            
0002.00 /*---------------------------------------------------------*/  
0003.00 /*   MN00        :  メイン・メニュー                       */  
0004.00 /*---------------------------------------------------------*/  
0005.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(80)          
0006.00              DCL        VAR(&MENU) TYPE(*CHAR) LEN(10)         
0007.00              DCL        VAR(&MNULIB) TYPE(*CHAR) LEN(10)       
0008.00              DCL        VAR(&RTNCOD) TYPE(*CHAR) LEN(2) /* +   
0009.00                            戻りコード  */                      

というように定型的な3つのパラメータが必要である。

■ UIMメニューならUIMソースから直接メニューを作成

これに対してパネル・グループ(UIM)の場合はパネル・グループのソース・ファィルから
CRTMNUコマンドで直接、メニュー・オブジェクトを作成することができる。
CRTPNLGRPコマンドによってパネル・グループ・オブジェクトを先に作成しておく必要がない。

またAutoWebのユーザーであればMENU ソースの生成(CRTMNUSRC)コマンドで
パネル・グループの知識が無くてもメニューのネル・グループのソースを生成することができる。

■ メニュー のSAA標準化

上記のようにGO MENU形式でなくても次のSAA標準化は準拠して欲しい。

・メニューのタイトルに「XXXメニュー」という「メニュー」という文字列を表記して
これがメニューであることをエンド・ユーザーにわかりやすくする。

・選択番号は「数字+ .(ピリオド)」形式を必ず表記して選択番号としてわかりやすくする。
数字だけでは不親切である。

・サブ・メニュー項目は必ず「xxxメニュー」のように「メニュー」の文字列を付加する。
「メニュー」の付加がないとそれがサブ・メニューであるひかどうかエンド・ユーザーには
わからない。必ずサブ・メニューであることを表記しなければならない。

・メニュー項目の表記は上から下、左から右への最大2列で表記すること。
独善的なデザインのメニューはエンド・ユーザーを混乱させるだけである。

・凝った形のデザインは必要ない。業務は奇をてらうものであってはならない。

▼ SAAに準拠したメニューの例
 _

・タイトルには「メイン・メニュー」とメニューの文字列が表記されている。
・選択項目はすべて「数字+ .(ビリオド)」の形式である。
・サブ・メニューには「XXXメニュー」とメニューの表記がある。