パネル・グループによるメニューの作成ほど便利なものはない。
メニューには
の3種類がある。
いずれの場合でも CRTMNUコマンドを使ってメニューに生成する必要がある。
この中で OS/400提供のユーティリティー・メニューは 90% 以上が「B PNLGRP による *PNLGRP」によるメニューである。
パネル・グループによるメニューは項目の登録が直感的であり、非常にわかりやすい。
またレイアウトもOS/400によって行われるので画面配置などを考慮する必要もなく、非常に信頼性の高いメニューを開発することができる。
それでは 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つも無いことを思い出して欲しい。