パネル・グループによるメニューの作成ほど便利なものはない。
メニューには
- CLP などによる*PGM
- SDA などにによる *DSPF
- PNLGRP による *PNLGRP
の3種類がある。
いずれの場合でも CRTMNUコマンドを使ってメニューに生成する必要がある。
この中で OS/400提供のユーティリティー・メニューは 90% 以上が「③ PNLGRP による *PNLGRP」によるメニューである。
パネル・グループによるメニューは項目の登録が直感的であり、非常にわかりやすい。
またレイアウトもOS/400によって行われるので画面配置などを考慮する必要もなく、非常に信頼性の高いメニューを開発することができる。
それでは PNLGRPのメニューのソースを紹介しよう。
【 PNLGRPソース】
0001.00 .******************************************************************* 0002.00 .* 0003.00 .* PANEL GRP NAME: MN02 0004.00 .* 0005.00 .* TEXT : 受注処理メニュー 0006.00 .* 0007.00 .* TYPE : 単一メニュー・パネル 0008.00 .* 0009.00 .* 作成日 : 98/07/31 13:22:21 0010.00 .* 0011.00 .* 作成ユーザー : QTR APTIVAS01 0012.00 .* 0013.00 .* 変更日 : 98/07/31 13:30:39 0014.00 .* 0015.00 .* 変更ユーザー : QTR APTIVAS01 0016.00 .* 0017.00 .******************************************************************* 0018.00 0019.00 :PNLGRP. 0020.00 :COPYR. 0021.00 (C) COPYRIGHT OFFICE QUATTRO 0022.00 :IMPORT NAME='*' 0023.00 PNLGRP=CMDMNU. 0024.00 .* ------------------------- 0025.00 .* クラスの定義 0026.00 .* ------------------------- 0027.00 .* ------------------------- 0028.00 .* 変数の定義 0029.00 .* ------------------------- 0030.00 :VAR NAME=ZMENU. 0031.00 .* ------------------------- 0032.00 .* レコードの定義 0033.00 .* ------------------------- 0034.00 .* ------------------------- 0035.00 .* 条件の定義 0036.00 .* ------------------------- 0037.00 .* ------------------------- 0038.00 .* 機能キーの定義 0039.00 .* ------------------------- 0040.00 :KEYL NAME=MNUKEYL. 0041.00 :KEYI KEY=ENTER 0042.00 HELP=ENTER 0043.00 ACTION=ENTER. 0044.00 :KEYI KEY=HELP 0045.00 HELP=HELP 0046.00 ACTION=HELP. 0047.00 :KEYI KEY=F3 0048.00 HELP=F3 0049.00 ACTION='EXIT SET' 0050.00 VARUPD=NO. 0051.00 F3= 終了 0052.00 :KEYI KEY=F4 0053.00 HELP=F4 0054.00 ACTION='PROMPT' 0055.00 VARUPD=NO. 0056.00 F4= プロンプト 0057.00 :KEYI KEY=F5 0058.00 HELP=F5 0059.00 ACTION='CMD WRKACTJOB' 0060.00 VARUPD=NO. 0061.00 F5= 活動状況 0062.00 :KEYI KEY=F6 0063.00 HELP=F6 0064.00 ACTION='CMD DSPMSG' 0065.00 VARUPD=NO. 0066.00 F6= メッセージ 0067.00 :KEYI KEY=F9 0068.00 HELP=F9 0069.00 ACTION='RETRIEVE' 0070.00 VARUPD=NO. 0071.00 F9= コマンドの複写 0072.00 :KEYI KEY=F10 0073.00 HELP=F10 0074.00 ACTION='CMD CALL QCMD' 0075.00 VARUPD=NO. 0076.00 F10= コマンド入力 0077.00 :KEYI KEY=F12 0078.00 HELP=F12 0079.00 ACTION='CANCEL SET' 0080.00 VARUPD=NO. 0081.00 F12= 取消し 0082.00 :KEYI KEY=F13 0083.00 HELP=F13 0084.00 ACTION='CMD OPMENUJ' 0085.00 VARUPD=NO. 0086.00 F13= 印刷制御 0087.00 :KEYI KEY=PAGEUP 0088.00 HELP=PAGEUP 0089.00 ACTION=PAGEUP. 0090.00 :KEYI KEY=PAGEDOWN 0091.00 HELP=PAGEDOWN 0092.00 ACTION=PAGEDOWN. 0093.00 :EKEYL. 0094.00 .* ------------------------- 0095.00 .* ヘルプの定義 0096.00 .* ------------------------- 0097.00 .* STRHLPDFN : DO NOT REMOVE THIS LINE 0098.00 :HELP NAME=OPTION01. 受注の入力 JUCHU 0099.00 :XH3. 0100.00 受注の入力 JUCHU 0101.00 :P. 0102.00 :PC. 0103.00 :EHELP. 0104.00 :HELP NAME=OPTION02. 商品明細表 PRT001 0105.00 :XH3. 0106.00 商品明細表 PRT001 0107.00 :P. 0108.00 :PC. 0109.00 :EHELP. 0110.00 :HELP NAME=OPTION03. 部品マスターの登録 PNL001 0111.00 :XH3. 0112.00 部品マスターの登録 PNL001 0113.00 :P. 0114.00 :PC. 0115.00 :EHELP. 0116.00 :HELP NAME=OPTION04. 品種別商品在庫照会 PNL004 0117.00 :XH3. 0118.00 品種別商品在庫照会 PNL004 0119.00 :P. 0120.00 :PC. 0121.00 :EHELP. 0122.00 :HELP NAME=OPTION05. 部品仕入の入力 PNL008 0123.00 :XH3. 0124.00 部品仕入の入力 PNL008 0125.00 :P. 0126.00 :PC. 0127.00 :EHELP. 0128.00 :HELP NAME=OPTION06. 部品在庫の照会 PNL009 0129.00 :XH3. 0130.00 部品在庫の照会 PNL009 0131.00 :P. 0132.00 :PC. 0133.00 :EHELP. 0134.00 :HELP NAME=OPTION07. 漢字処理メニュー KJMENU 0135.00 :XH3. 0136.00 漢字処理メニュー KJMENU 0137.00 :P. 0138.00 :PC. 0139.00 :EHELP. 0140.00 .* ENDHLPDFN : DO NOT REMOVE THIS LINE 0141.00 .* ------------------------- 0142.00 .* 表 示 パ ネ ル 0143.00 .* ------------------------- 0144.00 :PANEL NAME=DSPMNU HELP='MENU' 0145.00 KEYL=MNUKEYL 0146.00 PANELID=ZMENU 0147.00 ENTER='MSG CPD9817 QCPFMSG' 0148.00 TOPSEP=SYSNAM. 0149.00 受注処理メニュー 0150.00 :MENU DEPTH='*' 0151.00 SCROLL=NO 0152.00 BOTSEP=SPACE. 0153.00 :TOPINST. 次の中から1つを選んでください。 0154.00 .* STRMNUDFN : DO NOT REMOVE THIS LINE 0155.00 :MENUI OPTION=01 0156.00 ACTION='CMD JUCHU' 0157.00 HELP='OPTION01'. 0158.00 受注の入力 JUCHU 0159.00 :MENUI OPTION=02 0160.00 ACTION='CMD PRT001' 0161.00 HELP='OPTION02'. 0162.00 商品明細表 PRT001 0163.00 :MENUI OPTION=03 0164.00 ACTION='CMD CHGPNL QTROBJ/PNL001' 0165.00 HELP='OPTION03'. 0166.00 部品マスターの登録 PNL001 0167.00 :MENUI OPTION=04 0168.00 ACTION='CMD DSPPNL QTROBJ/PNL004' 0169.00 HELP='OPTION04'. 0170.00 品種別商品在庫照会 PNL004 0171.00 :MENUI OPTION=05 0172.00 ACTION='CMD CHGPNL QTROBJ/PNL008' 0173.00 HELP='OPTION05'. 0174.00 部品仕入の入力 PNL008 0175.00 :MENUI OPTION=06 0176.00 ACTION='CMD DSPPNL QTROBJ/PNL009' 0177.00 HELP='OPTION06'. 0178.00 部品在庫の照会 PNL009 0179.00 :MENUI OPTION=07 0180.00 ACTION='CMD GO QTROBJ/KJMENU' 0181.00 HELP='OPTION07'. 0182.00 漢字処理メニュー KJMENU 0183.00 .* ENDMNUDFN : DO NOT REMOVE THIS LINE 0184.00 :EMENU. 0185.00 .* STRCMDDFN : DO NOT REMOVE THIS LINE 0186.00 :CMDLINE SIZE=LONG. 0187.00 選択項目またはコマンド 0188.00 .* ENDCMDDFN : DO NOT REMOVE THIS LINE 0189.00 :EPANEL. 0190.00 0191.00 :EPNLGRP. 0192.00 .* * * * END OF PANEL GROUP * * *
【 解説 】
メニューとして表示されるのは
0144.00 :PANEL NAME=DSPMNU HELP='MENU'
から、
0189.00 :EPANEL.
の部分である。各メニュー項目は、
0155.00 :MENUI OPTION=01 0156.00 ACTION='CMD JUCHU' 0157.00 HELP='OPTION01'. 0158.00 受注の入力 JUCHU
のように :MENUI
タグによって記述される。オプションに対して実行されるコマンドは
ACTION='CMD CALL MYLIB/MYPGM'
のように記述すればよいだけであり、非常に簡単である。
メニューの作成は CRTPNLGRP に続いて CRTMNUコマンドによって生成する。
パネル・グループによるメニューで唯一、残念なことは2列に項目を表示できないことである。1行には1項目しか表示できない。
この理由は筆者も米国でメニューを眺めて初めて理解できた。
英文によるメニューでは日本語のように漢字を組み合わせて短い文節にはできないのである。英文表示ではどうしても長くなってしまうので日本語表示のように2列形式の表示の必要性をIBM が感じ取ることがなかったのではないだろうかと推測している。
ちなみに OS/400提供のメニューで2列形式の表示は1つも無いことを思い出して欲しい。