PANEL-WORKER

4. パネル・グループによるメニューの作成

パネル・グループによるメニューの作成ほど便利なものはない。
メニューには

  1. CLP などによる*PGM
  2. SDA などにによる *DSPF
  3. PNLGRP による *PNLGRP

の3種類がある。
いずれの場合でも CRTMNUコマンドを使ってメニューに生成する必要がある。
この中で OS/400提供のユーティリティー・メニューは 90% 以上が「B 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つも無いことを思い出して欲しい。