PANEL-WORKER

5. 単一登録パネルの開発

それでは、App となる「単一登録パネル」の開発について解説する。
「単一登録パネル」とは丁度、DFU と同じように1レコードを 1つの画面で登録/維持するためのAppである。
ここでは PANEL-WORKER によって生成されたPNLGRPをわかりやすくするために一部を省略したものをサンプルとして使用する。
データ・ベースとして「銀行マスター」を使用する。

【 銀行マスターのDDSソース】
0001.00      A**********************************************              
0002.00      A*    BANKM   :   銀行マスター                *              
0003.00      A**********************************************              
0004.00      A                                      UNIQUE                
0005.00      A          R @BANKM                                          
0006.00      A*( 固定情報 )                                               
0007.00      A            BKBKCD         4A         COLHDG(' 銀行コード ')
0008.00      A            BKNMKJ        14O         COLHDG(' 銀行名 ')    
0009.00      A            BKKBN          3A         COLHDG(' 区分 ')      
0010.00      A*                                                           
0011.00      A          K BKBKCD

最終的に完成されたAppは次のようになる。

【 初期画面イメージ】
 BNK001                       銀行マスターの登録
                                                               モード :   変更 
                                                                               
 銀行コード . . . . .   0001                                                   
                                                                               
                                                                             
                                                                               
                                                                               
                                                                               
 登録または変更するコードを打鍵して実行キーを押してください。
【 明細画面イメージ】
 BNK001                       銀行マスターの登録
                                                               モード :   変更 
                                                                               
 銀行コード . . . . :   0001                                                   
 銀行名 . . . . . . .    東京 1 銀行                                           
 区分 . . . . . . . .   UPD                                                    
                                                                               
                                                                          
                                                                               
                                                                               
                                                                               
                                                                          終り 
 F3= 終了   F4= プロンプト   F7= 次頁   F8= 前頁   F10= 更新   F12= 取消し     
 F23= 削除

初めての方には以下のPNLGRPソースは少々長く感じるかも知れないが、実は単純な記述の繰り返しであるので理解には心配する必要はない。

【 PNLGRPソース】
0001.00 .*******************************************************************  
0002.00 .*                                                                    
0003.00 .*  PANEL GRP NAME:   BNK001                                          
0004.00 .*                                                                    
0005.00 .*  TEXT          :    銀行マスターの登録                             
0006.00 .*                                                                    
0007.00 .*  TYPE          :    単一表示パネル                                 
0008.00 .*                                                                    
0009.00 .*  PRIMARY FILE  :   BANKM                                           
0010.00 .*    LIBRARY     :     TESTFIL                                       
0011.00 .*  MEMBER        :   *FIRST                                          
0012.00 .*                                                                    
0013.00 .*   作成日       :   03/01/11         10:01:39                       
0014.00 .*                                                                    
0015.00 .*   作成ユーザー :   QTR              CONSOLEA                       
0016.00 .*                                                                    
0017.00 .*   変更日       :   03/01/11         10:01:39                       
0018.00 .*                                                                    
0019.00 .*   変更ユーザー :   QTR              CONSOLEA                       
0020.00 .*                                                                    
0021.00 .*******************************************************************  
0022.00                                                                       
0023.00 :PNLGRP.                                                              
0024.00 :COPYR .(C) COPYRIGHT OFFICE QUATTRO 1994.                            
0025.00 :IMPORT  NAME='*'                                                     
0026.00          PNLGRP='PANELWKR/CMDHLP'.                                    
0027.00 .*            -------------------------                               
0028.00 .*                 クラスの定義                                       
0029.00 .*            -------------------------                               
0030.00 .IM      MAINTCL                                                      
0031.00 :CLASS   NAME=PNLNAMCL                                                
0032.00          BASETYPE='CHAR 10'.                                          
0033.00 :TL.                                                                  
0034.00 :TI      VALUE='"          "'.BNK001                                  
0035.00 :ETL.                                                                 
0036.00 :ECLASS.                                                              
0037.00 :CLASS   NAME=DMYCL                                                   
0038.00          BASETYPE='CHAR 1'.                                           
0039.00 :ECLASS.                                                              
0040.00 .*...( ユーザークラス定義 )...                                        
0041.00 .* STRCLASSDFN    :  DO NOT REMOVE THIS LINE                          
0042.00 :CLASS   NAME=CHA004                                              
0043.00          BASETYPE='CHAR     4'.                                   
0044.00 :ECLASS.                                                          
0045.00 :CLASS   NAME=IGC014                                              
0046.00          BASETYPE='IGC    14 OPEN'.                               
0047.00 :ECLASS.                                                          
0048.00 :CLASS   NAME=CHA003                                              
0049.00          BASETYPE='CHAR     3'.                                   
0050.00 :ECLASS.                                                          
0051.00 .* ENDCLASSDFN    :  DO NOT REMOVE THIS LINE                      
0052.00 .*            -------------------------                           
0053.00 .*                 変数の定義                                     
0054.00 .*            -------------------------                           
0055.00 .IM      MAINTVAR                                                 
0056.00 :VAR     NAME=DMY                                                 
0057.00          CLASS=DMYCL.                                             
0058.00 .*...( ユーザー変数定義 )...                                      
0059.00 .* STRVARDFN      :  DO NOT REMOVE THIS LINE                      
0060.00 :VAR     NAME=BKBKCD                                              
0061.00          CLASS=CHA004.                                            
0062.00 :VAR     NAME=BKNMKJ                                              
0063.00          CLASS=IGC014.                                
0064.00 :VAR     NAME=BKKBN                                   
0065.00          CLASS=CHA003.                                
0066.00 .* ENDVARDFN      :  DO NOT REMOVE THIS LINE          
0067.00 .*            -------------------------               
0068.00 .*                 レコードの定義                     
0069.00 .*            -------------------------               
0070.00 .IM      MAINTRCD                                     
0071.00 :VARRCD  NAME=MODRCD                                  
0072.00          VARS='DSPMOD'.                               
0073.00 :VARRCD  NAME=HEDRCD                                  
0074.00  VARS='BKBKCD DMY'.                                   
0075.00 :VARRCD  NAME=DSPRCD                                  
0076.00 .* STRDSPRCD      :  DO NOT REMOVE THIS LINE          
0077.00  VARS='BKBKCD BKNMKJ BKKBN DMY'.                      
0078.00 .* ENDDSPRCD      :  DO NOT REMOVE THIS LINE          
0079.00 :VARRCD  NAME=KEYRCD                                  
0080.00  VARS='BKBKCD DMY'.                                   
0081.00 .*...( USRCHKPGM RETURN )...                          
0082.00 .* STRCHKRCD      :  DO NOT REMOVE THIS LINE          
0083.00 :VARRCD  NAME=BKBKCD9CHK       VARS=BKBKCD.           
0084.00 :VARRCD  NAME=BKNMKJ9CHK       VARS=BKNMKJ.   
0085.00 :VARRCD  NAME=BKKBN9CHK        VARS=BKKBN.    
0086.00 .* ENDCHKRCD      :  DO NOT REMOVE THIS LINE  
0087.00 .*            -------------------------       
0088.00 .*                 条件の定義                 
0089.00 .*            -------------------------       
0090.00 :COND    NAME=UPDSTS                          
0091.00          EXPR='DSPMOD = " 表示 "'.           
0092.00 :COND    NAME=DSPSTS                          
0093.00          EXPR='DSPMOD = " 表示 "'.            
0094.00 .*            -------------------------       
0095.00 .*                 機能キーの定義             
0096.00 .*            -------------------------       
0097.00 :KEYL    NAME=HEDKEYL.                        
0098.00 :KEYI    KEY=ENTER                            
0099.00          HELP=ENTER                           
0100.00          VARUPD=YES                           
0101.00          ACTION=ENTER.                        
0102.00 :KEYI    KEY=HELP                             
0103.00          HELP=HELP                            
0104.00          ACTION=HELP.                         
0105.00 :KEYI    KEY=F3                  
0106.00          HELP=F3                 
0107.00          ACTION='EXIT SET'       
0108.00          VARUPD=YES.             
0109.00 F3= 終了                         
0110.00 :KEYI    KEY=F7                  
0111.00          HELP=F7                 
0112.00          ACTION='RETURN 7'       
0113.00          VARUPD=YES.             
0114.00 F7= 次頁                         
0115.00 :KEYI    KEY=F8                  
0116.00          HELP=F8                 
0117.00          ACTION='RETURN 8'       
0118.00          VARUPD=YES.             
0119.00 F8= 前頁                         
0120.00 :EKEYL.                          
0121.00 :KEYL    NAME=DSPKEYL.           
0122.00 :KEYI    KEY=ENTER               
0123.00          HELP=ENTER              
0124.00          VARUPD=YES              
0125.00          ACTION=ENTER.           
0126.00 :KEYI    KEY=HELP                
0127.00          HELP=HELP               
0128.00          ACTION=HELP.            
0129.00 :KEYI    KEY=F3                  
0130.00          HELP=F3                 
0131.00          ACTION='EXIT SET'       
0132.00          VARUPD=NO.              
0133.00 F3= 終了                         
0134.00 :KEYI    KEY=F4                  
0135.00          HELP=F4                 
0136.00          ACTION='CALL WNDPMT'    
0137.00          VARUPD=YES.             
0138.00 F4= プロンプト                   
0139.00 :KEYI    KEY=F7                  
0140.00          HELP=F7                 
0141.00          ACTION='RETURN 7'       
0142.00          VARUPD=NO.              
0143.00 F7= 次頁                         
0144.00 :KEYI    KEY=F8                  
0145.00          HELP=F8                 
0146.00          ACTION='RETURN 8'       
0147.00          VARUPD=NO.               
0148.00 F8= 前頁                          
0149.00 :KEYI    KEY=F10                  
0150.00          HELP=F10                 
0151.00          COND=UPDSTS              
0152.00          ACTION='RETURN 10'       
0153.00          VARUPD=YES.              
0154.00 F10= 更新                         
0155.00 :KEYI    KEY=F12                  
0156.00          HELP=F12                 
0157.00          ACTION='CANCEL SET'      
0158.00          VARUPD=NO.               
0159.00 F12= 取消し                       
0160.00 :KEYI    KEY=F23                  
0161.00          HELP=F23                 
0162.00          COND=UPDSTS              
0163.00          ACTION='RETURN 23'       
0164.00          VARUPD=YES.              
0165.00 F23= 削除                         
0166.00 :KEYI    KEY=PAGEUP               
0167.00          HELP=PAGEUP              
0168.00          ACTION=PAGEUP.            
0169.00 :KEYI    KEY=PAGEDOWN              
0170.00          HELP=PAGEDOWN             
0171.00          ACTION=PAGEDOWN.          
0172.00 :EKEYL.                            
0173.00 :KEYL    NAME=ENDKEYL.             
0174.00 :KEYI    KEY=ENTER                 
0175.00          HELP=ENTER                
0176.00          ACTION=ENTER.             
0177.00 :KEYI    KEY=HELP                  
0178.00          HELP=HELP                 
0179.00          ACTION=HELP.              
0180.00 :KEYI    KEY=F3                    
0181.00          HELP=F3                   
0182.00          ACTION='EXIT SET'         
0183.00          VARUPD=NO.                
0184.00 F3= 終了                           
0185.00 :KEYI    KEY=F12                   
0186.00          HELP=F12                  
0187.00          ACTION='CANCEL SET'       
0188.00          VARUPD=NO.                
0189.00 F12= 取消し                                  
0190.00 :EKEYL.                                      
0191.00 .*            -------------------------      
0192.00 .*                 ヘルプの定義              
0193.00 .*            -------------------------      
0194.00 :HELP    NAME=DSPHEADH. 銀行マスターの登録   
0195.00 :PC.                                         
0196.00  初期画面                                    
0197.00 :EHELP.                                      
0198.00 :HELP    NAME=DSPDTAH. 銀行マスターの登録    
0199.00 :PC.                                         
0200.00  明細画面                                    
0201.00 :EHELP.                                      
0202.00 :HELP    NAME=DSPENDH. 銀行マスターの登録    
0203.00 :PC.                                         
0204.00  終了画面                                    
0205.00 :EHELP.                                      
0206.00 .* STRHLPDFN      :  DO NOT REMOVE THIS LINE 
0207.00 :HELP    NAME=BKBKCDH. 銀行コード            
0208.00 :PC.                                         
0209.00  銀行コード                                  
0210.00 :EHELP.                                       
0211.00 :HELP    NAME=BKNMKJH. 銀行名                 
0212.00 :PC.                                          
0213.00  銀行名                                       
0214.00 :EHELP.                                       
0215.00 :HELP    NAME=BKKBNH. 区分                    
0216.00 :PC.                                          
0217.00  区分                                         
0218.00 :EHELP.                                       
0219.00 .* ENDHLPDFN      :  DO NOT REMOVE THIS LINE  
0220.00 .*            -------------------------       
0221.00 .*               表 示 パ ネ ル           
0222.00 .*            -------------------------       
0223.00 .*    ------------------------                
0224.00 .*    DSPHEAD : 初期画面                      
0225.00 .*    ------------------------                
0226.00 :PANEL   NAME=DSPHEAD                         
0227.00          HELP='DSPHEADH'                      
0228.00          KEYL=HEDKEYL                         
0229.00          PANELID=PNLNAM                       
0230.00          ENTER='RETURN 27'                    
0231.00          CSRVAR=CSRVAR              
0232.00          CSRPOS=CSRPOS              
0233.00          CSRLST=CSRLST              
0234.00          CSREID=CSREID              
0235.00          CSRNAME=CSRNAME            
0236.00          TOPSEP=NONE.               
0237.00  銀行マスターの登録                 
0238.00 :DATA    DEPTH=2                    
0239.00          HELP='DSPHEADH'            
0240.00          BOTSEP=NONE.               
0241.00 :DATACOL WIDTH=58.                  
0242.00 :DATACOL WIDTH='*'.                 
0243.00 :DATAI   VAR=MODE                   
0244.00          USAGE=OUT.                 
0245.00 :DATAIX  VAR=DSPMOD                 
0246.00          ALIGN=RIGHT                
0247.00          NEWLINE=NO                 
0248.00          USAGE=OUT.                 
0249.00 :EDATA.                             
0250.00 :DATA    DEPTH=10                   
0251.00          SCROLL=NO                  
0252.00          LAYOUT=1                                                     
0253.00          BOTSEP=SPACE.                                                
0254.00 :DATACOL WIDTH=20.                                                    
0255.00 :DATACOL WIDTH='*'.                                                   
0256.00 .*                                                                    
0257.00 :DATAGRP GRPSEP=NONE                                                  
0258.00          COMPACT.                                                     
0259.00 .* DO                                                                 
0260.00 .* STRHEDDATAI    :  DO NOT REMOVE THIS LINE                          
0261.00 :DATAI   VAR=BKBKCD                                                   
0262.00          HELP=BKBKCDH                                                 
0263.00          USAGE=INOUT.                                                 
0264.00  銀行コード                                                           
0265.00 .* ENDHEDDATAI    :  DO NOT REMOVE THIS LINE                          
0266.00 .* END                                                                
0267.00 :EDATAGRP.                                                            
0268.00 :BOTINST. 登録または変更するコードを打鍵して実行キーを押してください。
0269.00 :EDATA.                                                               
0270.00 :EPANEL.                                                              
0271.00 .*    ------------------------                                        
0272.00 .*    DSPDTA01 : 明細画面                                             
0273.00 .*    ------------------------              
0274.00 :PANEL   NAME=DSPDTA                        
0275.00          HELP='DSPDTAH'                     
0276.00          KEYL=DSPKEYL                       
0277.00          PANELID=PNLNAM                     
0278.00          ENTER='RETURN 27'                  
0279.00          CSRVAR=CSRVAR                      
0280.00          CSRPOS=CSRPOS                      
0281.00          CSRLST=CSRLST                      
0282.00          CSREID=CSREID                      
0283.00          CSRNAME=CSRNAME                    
0284.00          TOPSEP=NONE.                       
0285.00  銀行マスターの登録                         
0286.00 :DATA    DEPTH=2                            
0287.00          HELP='DSPDTAH'                     
0288.00          BOTSEP=NONE.                       
0289.00 :DATACOL WIDTH=58.                          
0290.00 :DATACOL WIDTH='*'.                         
0291.00 :DATAI   VAR=MODE                           
0292.00          USAGE=OUT.                         
0293.00 :DATAIX  VAR=DSPMOD                         
0294.00          ALIGN=RIGHT                                
0295.00          NEWLINE=NO                                 
0296.00          USAGE=OUT.                                 
0297.00 :EDATA.                                             
0298.00 .* キー項目の表示                                   
0299.00 :DATA    DEPTH=01                                   
0300.00          SCROLL=NO                                  
0301.00          LAYOUT=1                                   
0302.00          BOTSEP=NONE                                
0303.00          COMPACT.                                   
0304.00 :DATACOL WIDTH=20.                                  
0305.00 :DATACOL WIDTH='*'.                                 
0306.00 .*                                                  
0307.00 :DATAGRP GRPSEP=NONE                                
0308.00          COMPACT.                                   
0309.00 .* STRKEYDATAI    :  DO NOT REMOVE THIS LINE        
0310.00 :DATAI   VAR=BKBKCD                                 
0311.00          HELP=BKBKCDH                               
0312.00          USAGE=OUT.                                 
0313.00  銀行コード                                         
0314.00 .* ENDKEYDATAI    :  DO NOT REMOVE THIS LINE        
0315.00 :EDATAGRP.                                        
0316.00 :EDATA.                                           
0317.00 .* データ項目の表示                               
0318.00 :DATA    DEPTH='*'                                
0319.00          SCROLL=YES                               
0320.00          LAYOUT=1                                 
0321.00          BOTSEP=NONE                              
0322.00          COMPACT.                                 
0323.00 :DATACOL WIDTH=20.                                
0324.00 :DATACOL WIDTH='*'.                               
0325.00 .* STRDTADATAI    :  DO NOT REMOVE THIS LINE      
0326.00 :DATAI   VAR=BKNMKJ                               
0327.00          HELP=BKNMKJH                             
0328.00          USAGE=INOUT.                             
0329.00  銀行名                                           
0330.00 :DATAI   VAR=BKKBN                                
0331.00          HELP=BKKBNH                              
0332.00          USAGE=INOUT.                             
0333.00  区分                                             
0334.00 .* ENDDTADATAI    :  DO NOT REMOVE THIS LINE      
0335.00 :EDATA.                                           
0336.00 :EPANEL.                           
0337.00 .* ENDPNL OF DSPTOP                
0338.00 .*    ------------------------     
0339.00 .*    ENDOPT   : 終了画面          
0340.00 .*    ------------------------     
0341.00 :PANEL   NAME=ENDOPT               
0342.00          HELP='DSPENDH'            
0343.00          KEYL=ENDKEYL              
0344.00          ENTER='RETURN 27'         
0345.00          TOPSEP=SPACE.             
0346.00  データ入力の終了                  
0347.00 :DATA    DEPTH=9                   
0348.00          HELP='DSPENDH'            
0349.00          LAYOUT=1                  
0350.00          BOTSEP=SPACE.             
0351.00 :TOPINST .  処理されたレコード数  
0352.00 :DATACOL WIDTH=18.                 
0353.00 :DATACOL WIDTH='*'.                
0354.00 :DATAGRP COMPACT.                  
0355.00 :DATAI   VAR=ADDRCD                
0356.00          JUSTIFY=RIGHT             
0357.00          USAGE=OUT.  追加                                  
0358.00 :DATAI   VAR=CHGRCD                                         
0359.00          JUSTIFY=RIGHT                                      
0360.00          USAGE=OUT.  変更                                  
0361.00 :DATAI   VAR=DLTRCD                                         
0362.00          JUSTIFY=RIGHT                                      
0363.00          USAGE=OUT.  削除                                  
0364.00 :EDATAGRP.                                                  
0365.00 :EDATA.                                                     
0366.00 :DATA    DEPTH='*'                                          
0367.00          HELP='DSPENDH'                                     
0368.00          LAYOUT=1                                           
0369.00          BOTSEP=SPACE.                                      
0370.00 :TOPINST . 選択項目を入力して,実行キーを押してください。   
0371.00 :DATACOL WIDTH=28.                                          
0372.00 :DATACOL WIDTH=10.                                          
0373.00 :DATACOL WIDTH='*'.                                         
0374.00 :DATAGRP GRPSEP=NONE                                        
0375.00          COMPACT.                                           
0376.00 :DATAI   VAR=ANS                                            
0377.00          USAGE=INOUT.                                       
0378.00   データ入力の終了                                   
0379.00 :DATAC.Y=YES,  N=NO                                   
0380.00 :EDATAGRP.                                            
0381.00 :EDATA.                                               
0382.00 :EPANEL.                                              
0383.00                                                       
0384.00 :EPNLGRP.                                             
0385.00 .*      * * *    END   OF   PANEL GROUP     * * * 
【 解説 】

上記のソースは次のような構造になっている。

クラスの定義

クラスとは変数の基底となる定義である。長さなどの属性を定義するわけであるが、変数自身は変数を直接、定義するのではなくクラスをベースとして定義する。
例えば後での変数の定義で長さ10桁の文字を定義したいのであれば、最初にその属性でのクラスを定義しておいてから変数は、そのクラスをベースとして定義する。
例えば

:CLASS   NAME=CHA004
          BASETYPE='CHAR     4'.
:ECLASS.

によって長さ4桁の文字のクラス CHA004 を定義している。

変数の定義

変数の定義ではPNLGRPの中で使用する変数をクラスをベースとして定義する。
例えば

:VAR     NAME=BKBKCD
         CLASS=CHA004.

によって4桁の文字変数である BKBKCD を定義している。
これでわかるように同じ属性の変数は同じクラスを何度でも使って定義することができる。
また、同じ記述は
    .IM      MAINTVAR
のようにして登録しておいた変数記述のソースをコンパイル時にインポートすることもできる。
これによって汎用的な変数の定義などは個別のPNLGRPソースとして登録しておくと新規のPNLGRPソースを小さなものにできる。

レコードの定義

レコードとは、この PNLGRP を起動するAppとのインター・フェースである。
PNLGRP を起動するAppはレコードを介してPNLGRPの変数を読み取ったり、更新したりする。
よって読み取りや更新を行いたい変数の組み合わせを1つのレコードとして定義しておく必要がある。
例えば、

:VARRCD  NAME=DSPRCD
         VARS='BKBKCD BKNMKJ BKKBN DMY'.

は、変数: BKBKCD + BMNMKJ + BKKBN + DMY をセットするレコード DSPRCD である。

条件の定義

条件を与えたい場合は条件を定義することができる。
例えば、

:COND    NAME=DSPSTS
         EXPR='DSPMOD = " 表示 "'.

とは 変数 DSPMOD の値が "表示"であったときDSPSTS という条件が「真」になることを意味している。

機能キーの定義

機能キーの定義では機能キーのセットを名前をつけて定義する。
機能キーのセットは

:KEYL    NAME=DSPKEYL.

から

:EKEYL.

のあいだに定義する。この場合は DSPKEYL という名前の機能キーのセットを定義することになる。
それぞれの機能キーは :KEYI によって、例えば、

:KEYI    KEY=F10
     HELP=F10            
     COND=UPDSTS         
     ACTION='RETURN 10'  
     VARUPD=YES.         
F10= 更新

のように定義する。これは KEY=F10 によって F10キーを定義している。
COND=UPDSTS によって条件 UPDSTS が真のときに限り表示されることになる。
また ACTION='RETURN 10'機能キーF10が押されたときには 値=10を戻すことを意味している。
VARUPD=YES機能キーが押されたときに変数の値を入手することを意味している。
つまり RPGでの CF10キーに相当する。これに対して VARUPD=NO であればRPGでの CA10キーに相当することになる。

ヘルプの定義

ヘルプの定義は各表示項目への説明を記述する。
ここでは

:HELP    NAME=BKBKCDH. 銀行コード 
:PC.                              
銀行コード                       
:EHELP.

のようにして項目だけを定義している。

表示パネル

表示パネルの定義がPNLGRPの主体であり、これまで上記で定義してきた変数などを使ってパネル・グループの本体を定義する。
この例では表示パネルは

初期画面 : DSPHEAD
明細画面 : DSPDTA
終了画面 : ENDOPT

の3つの表示パネルを定義している。

  :PANEL   NAME=DSPDTA
        HELP='DSPDTAH'   
        KEYL=DSPKEYL     
        PANELID=PNLNAM   
        ENTER='RETURN 27'
        CSRVAR=CSRVAR    
        CSRPOS=CSRPOS    
        CSRLST=CSRLST    
        CSREID=CSREID    
        CSRNAME=CSRNAME  
        TOPSEP=NONE.     
銀行マスターの登録

から :EPANEL. のあいだに項目を定義する。
各行は DATA タグによって

:DATA    DEPTH=01  
       SCROLL=NO   
       LAYOUT=1    
       BOTSEP=NONE 
       COMPACT.

から :EDATA. のあいだに定義される。
DATA タグがデータ表示項目の1つの塊であるが、その中を複数の列に分解したい場合はさらに、

:DATACOL WIDTH=20. 
:DATACOL WIDTH='*'.

のようにして分割することができる。
これは最初の列は横幅の長さ20桁の列であり、2列目はその残りの桁数を割り当てることを意味している。DATAタグの場合も同様で、 DEPTH='*' の定義は残りの行数を割り当てることを意味している。

各項目は

  :DATAI   VAR=BKNMKJ
        HELP=BKNMKJH 
        USAGE=INOUT. 
銀行名

のようにして DATAI タグによって定義される。USAGE=INOUT入出力可を意味しており、出力専用の場合USAGE=OUT として定義する。

このようにタグの組み合わせによって画面を適切に分解して項目をそこに配置していくというのが PNLGRP による表示の方法である。
これによく似たやり方を行っているのが実は Java である。
Java の AWT は PNLGRP のように自動配置を基本としているが、いろいろと問題もあり、PNLGRP ほど配置は容易ではない。
PNLGRP はJava に比べて数十年もの歴史を持っているし何よりOS/400の大部分のインターフェースを PNLGRPで形成されていることを見ても信頼性と柔軟性に優れていることは実証済みである。
また表示のパフォーマンスもDSPFよりも優れている。
特に遠隔地オンラインなどの条件の悪いところではPNLGRPのパフォーマンスは効果を発揮する。