AutoWeb

17. スクロール・バー

RPGプログラマーがGUI化やWeb化で最も興味を持つのが
コンボボックスとスクロール・バーです。
コンボボックスの例は先に紹介しました。
例では簡単なコンボボックスでしたが実際はもっと
複雑な条件のあるコンボボックスを作成することができます。

さて次にRPGプログラマーが興味を示すのがスクロール・バーです。
動的にスライドさせるスクロール・バーの実装は
これまで文字ベース(=CUI:Charactor User Interface)であった
RPGプログラマーにとっては憧れのようです。

 実は5250エミュレータもスクロール・バーの機能は持っています。

DDSでスクロール・バーを実現するのはとても簡単です。

0046.00      A          R SFCTL01                   SFLCTL(SFREC01)         
0047.00      A                                      TEXT(' SFL制御見出 ')
  :
0055.00      A  41                                  SFLDSPCTL      
0056.00      A  42                                  SFLDSP         
0057.00      A  43                                  SFLINZ         
0058.00      A                                      SFLRNA         
0059.00      A  44                                  SFLCLR         
0060.00      A  45                                  SFLEND(*SCRBAR)

のようにして SFLEND(*SCRBAR)を定義するとスクロール・バーが表示されます。
SFLEND(*MORE) であれば「続く..」や「終わり」が表示されますが
SFLEND(*SCRBAR) であればスクロール・バーが表示されます。

標識 45 はSFLレコードの終わりであるときにONになる標識です。
次は5250エミュレータでスクロール・バーを表示している画面です。

これをAutoWebで表示すると次のようにスクロール・バーとして表示されます。

[DSPFサンプル: SCROLLFM ]
 ソースはこちらで

0001.00      A*  91/10/14  21:54:59    QUATTRO     REL-R03M00  5728-PW1     
0002.00      A*-----------------------------------------------*             
0003.00      A*   サブファイル表示     SFLDSPFM               *             
0004.00      A*                                                             
0005.00      A*        商品マスター照会                                     
0006.00      A*                                                             
0007.00      A*-----------------------------------------------*             
0008.00      A*            11:25:43    QUATTRO     REL-R06M00  5714-UT1     
0009.00      A                                      DSPSIZ(24 80 *DS3)      
0010.00      A                                      MSGLOC(24)              
0011.00      A                                      PRINT                   
0012.00      A*-----------------------------------------------*             
0013.00      A          R DSPHEAD                                           
0014.00      A*-----------------------------------------------*             
0015.00      A                                      TEXT(' 初期画面 ')      
0016.00      A*%%TS  SD  19930612  135725  QUATTRO     REL-V3R2M0  5738-PW1 
0017.00      A                                      CF03(03 ' 終了 ')       
0018.00      A                                      SETOF(99)               
0019.00      A                                      BLINK                   
0020.00      A                                      CSRLOC(LIN        POS)  
0021.00      A                                  1 27' 商品マスター照会 '    
0022.00      A                                      DSPATR(RI)              
0023.00      A                                      COLOR(PNK)              
0024.00      A                                  2  2' 商品コード '                      
0025.00      A            SHCODE        10A  B  2 15TEXT(' 商品コード ')                
0026.00      A                                 11 15' 必要な項目を打鍵して実行キーを押 +
0027.00      A                                       して下さい。 '                     
0028.00      A                                      DSPATR(HI)                          
0029.00      A                                 23  2'F3= 終了 '                         
0030.00      A                                      COLOR(BLU)                          
0031.00      A            LIN            3S 0H                                          
0032.00      A            POS            3S 0H                                          
0033.00      A          R SFREC01                   SFL                                 
0034.00      A                                      TEXT(' SFL明細行 ')              
0035.00      A*%%TS  SD  19930612  144015  QUATTRO     REL-V3R2M0  5738-PW1             
0036.00      A*------------------------------------------------*                        
0037.00      A  20                                                                      
0038.00      AO 99                                  SFLNXTCHG                           
0039.00      A            GYO            4A  O  8  2TEXT(' № ')                        
0040.00      A  03                                  DSPATR(UL)                          
0041.00      A            SHCODE        10A  O  8  7TEXT(' 商品コード ')                
0042.00      A            SHNAME        24O  O  8 20TEXT(' 商品名 ')                    
0043.00      A            SHTANK         7Y 0O  8 45TEXT(' 単価 ')                      
0044.00      A                                      EDTCDE(K)                           
0045.00      A            SHSCOD         4A  O  8 60TEXT(' 品種コード ')                
0046.00      A          R SFCTL01                   SFLCTL(SFREC01)                     
0047.00      A                                      TEXT(' SFL制御見出 ')            
0048.00      A*%%TS  SD  19930612  144015  QUATTRO     REL-V2R1M0  5738-PW1 
0049.00      A*------------------------------------------------*            
0050.00      A                                      OVERLAY                 
0051.00      A* SFLPAG :1 画面での表示行数                                  
0052.00      A* SFLSIZ :サブファイル 全体の大きさ                                
0053.00      A                                      SFLSIZ(14)              
0054.00      A                                      SFLPAG(13)              
0055.00      A  41                                  SFLDSPCTL               
0056.00      A  42                                  SFLDSP                  
0057.00      A  43                                  SFLINZ                  
0058.00      A                                      SFLRNA                  
0059.00      A  44                                  SFLCLR                  
0060.00      A  45                                  SFLEND(*SCRBAR)         
0061.00      A  46                                  SFLDLT                  
0062.00      A                                      ROLLUP(14 ' 次頁 ')     
0063.00      A                                      ROLLDOWN(15 ' 前頁 ')   
0064.00      A                                      CF03(03 ' 終了 ')       
0065.00      A                                      CF12(12 ' 前画面 ')     
0066.00      A                                      SETOF(99)               
0067.00      A*                                     MOUBTN(*ULP ROLLUP)     
0068.00      A*                                     MOUBTN(*URP ROLLDOWN)   
0069.00      A                                      BLINK                   
0070.00      A*( SFLEND(*MORE)... 続く / 終りの使用のために SFLMSG は       
0071.00      A*  使用しません。 )                                           
0072.00      A            DMYFLD         1A  O  1 72                                  
0073.00      A* 61 : IMPOSSIBLE TO ROLLUP                                             
0074.00      A  61                                  ERRMSGID(EDT0411 QPDA/QEDTMSG 61) 
0075.00      A* 62 : IMPOSSIBLE TO ROLLDOWN                                           
0076.00      A  62                                  ERRMSGID(EDT0410 QPDA/QEDTMSG 62) 
0077.00      A            DSPREC         4S 0H      SFLRCDNBR(CURSOR)                 
0078.00      A                                      TEXT('SFL 表示 レコード № ')        
0079.00      A            LIN            3S 0H      TEXT('カーソル 位置合せ - 行 ')       
0080.00      A            POS            3S 0H      TEXT('カーソル 位置合せ - 桁 ')       
0081.00      A                                  1 27' 商品マスター照会 '              
0082.00      A                                      DSPATR(RI)                        
0083.00      A                                      COLOR(PNK)                        
0084.00      A*( 明細行の桁見出し )                                                   
0085.00      A                                  7  2' № '                            
0086.00      A                                      DSPATR(HI)                        
0087.00      A*     エラー 標識 :61 - 69                                                 
0088.00      A                                  7  7' 商品コード '                    
0089.00      A                                      DSPATR(HI)                        
0090.00      A                                  7 20' 商品名 '                        
0091.00      A                                      DSPATR(HI)                        
0092.00      A                                  7 45' 単価 '                          
0093.00      A                                      DSPATR(HI)                        
0094.00      A                                  7 56' 品種コード '                    
0095.00      A                                      DSPATR(HI)                        
0096.00      A*( 見出しの項目 )                                                         
0097.00      A                                  2  2' 商品コード '                      
0098.00      A            STRCOD        10A  O  3  2TEXT(' 商品コード ')                
0099.00      A          R NOREC                                                         
0100.00      A                                      TEXT(' MSG : レコードなし ')     
0101.00      A*%%TS  SD  19930612  144015  QUATTRO     REL-V2R1M0  5738-PW1             
0102.00      A                                      OVERLAY                             
0103.00      A                                      CF03(03 ' 終了 ')                   
0104.00      A                                 10  5'( 検索されて見つかったレコードが - 
0105.00      A                                       ない。 )'                          
0106.00      A                                      DSPATR(HI)                          
0107.00      A                                 16  5' 処理を続けるために実行キーを押し -
0108.00      A                                       なさい。 '                         
0109.00      A                                      DSPATR(HI)                          
0110.00      A          R DSPEND01                                                      
0111.00      A                                      TEXT(' 機能キーの表示 ')            
0112.00      A*%%TS  SD  19930612  144015  QUATTRO     REL-V2R1M0  5738-PW1             
0113.00      A*----------------------------------------------------*                    
0114.00      A                                      OVERLAY                             
0115.00      A                                      CF03(03 ' 終了 ')                   
0116.00      A                                 23  2'F3= 終了 '                         
0117.00      A                                      COLOR(BLU)                          
0118.00      A                                 23 41'F12= 前画面 '                      
0119.00      A                                      COLOR(BLU)  


                            

[ RPGサンプル: SCROLL ]
ソースはこちらで

0001.00 H DFTNAME(PGMID) DATEDIT(*YMD/)                                      
0002.00 F**********  商品マスター照会 ************************************   
0003.00 FSCROLLFM  CF   E             WORKSTN                                
0004.00 F                                     SFILE(SFREC01:RRN1)            
0005.00 F                                     INFDS(INFDS)                   
0006.00 FSHOHIN    IF   E           K DISK                                   
0007.00 F*****************************************************************   
0008.00 D*                                                                   
0009.00 D*         -( サブ・ファイルのファイル情報 )-                        
0010.00 D*                                                                   
0011.00 D INFDS           DS                                                 
0012.00 D*( カーソルの行と桁の取り込み )                                     
0013.00 D  LINE                 370    371B 0                                
0014.00 D*  TOPRRN: 今表示しているサブ・ファイルの先頭の RRN                 
0015.00 D  TOPRRN               378    379B 0                                
0016.00 D* BRRN : サブ・ファイルのレコード№                                 
0017.00 D  BRRN                 376    377B 0                                
0018.00 D SFREC           DS                                                 
0019.00 D  GYO                           4A                                  
0020.00 D  SHCODE                       10A                                  
0021.00 D  SHNAME                       24A                                  
0022.00 D  SHTANK                        7S 0                                
0023.00 D  SHSCOD                        4A                                  
0024.00 C                   GOTO      DETAIL                                            
0025.00 C*( 初期画面 )                                                                  
0026.00 C*----------------------------------------------------+                         
0027.00 C     START         TAG                                                    |    
0028.00 C                   EXFMT     DSPHEAD                                      |    
0029.00 C*----------------------------------------------------+                         
0030.00 C                   SETOFF                                       99             
0031.00 C*( CF03 )- 終了                                                                
0032.00 C     *IN03         IFEQ      *ON                                          CF03 
0033.00 C                   SETON                                        LR             
0034.00 C   LR              RETURN                                                      
0035.00 C                   END                                                    CF03 
0036.00 C*( 実行キー )                                                                  
0037.00 C     DETAIL        TAG                                                         
0038.00 C*----------------------------------------------------+                         
0039.00 C     SETKEY        KLIST                                                  |    
0040.00 C                   KFLD                    STRCOD                         |    
0041.00 C*----------------------------------------------------+                         
0042.00 C                   MOVE      SHCODE        STRCOD                              
0043.00 C     SETKEY        SETLL     SHOHIN                                            
0044.00 C                   EXSR      SFLCLR                                            
0045.00 C*   : ファイルの読み取り                                                       
0046.00 C                   Z-ADD     1             TOPRRN                              
0047.00 C                   EXSR      READ                                              
0048.00 C*   U8:AutoWeb のスクロール・バーでは EOF になるまで                                   
0049.00 C*       読取りを繰り返す。                                                             
0050.00 C     *IN88         IFEQ      *ON                                                       
0051.00 C                   DOW       *IN45 = *OFF                                              
0052.00 C                   SETON                                        4142      |SFL-DSPLY   
0053.00 C                   WRITE     SFCTL01                                      |            
0054.00 C                   SETOFF                                       4142      |            
0055.00 C                   EXSR      ROLLUP                                                    
0056.00 C                   ENDDO                                                               
0057.00 C                   ENDIF                                                               
0058.00 C*( サブ・ファイルの表示 )                                                              
0059.00 C                   WRITE     DSPEND01                                                  
0060.00 C*----------------------------------------------------+                                 
0061.00 C     DSPLY         TAG                                                    |            
0062.00 C                   SETON                                        4142      |SFL-DSPLY   
0063.00 C   89              READ      SFCTL01                                      |            
0064.00 C  N89              EXFMT     SFCTL01                                      |            
0065.00 C                   SETOFF                                       4142      |            
0066.00 C*----------------------------------------------------+                                 
0067.00 C                   SETOFF                                       99                     
0068.00 C*( CF03 )- 終了                                                                        
0069.00 C     *IN03         IFEQ      *ON                                          CF03         
0070.00 C                   SETON                                        LR                     
0071.00 C   LR              RETURN                                                              
0072.00 C                   END                                                    CF03   
0073.00 C*( CF12 )- 前画面                                                                
0074.00 C     *IN12         IFEQ      *ON                                          CF12   
0075.00 C                   SETOFF                                       12               
0076.00 C                   MOVE      STRCOD        SHCODE                                
0077.00 C                   GOTO      START                                               
0078.00 C                   END                                                    CF12   
0079.00 C*( ROLL UP )- 次ページ                                                           
0080.00 C     *IN14         IFEQ      *ON                                                 
0081.00 C                   EXSR      ROLLUP                                              
0082.00 C                   GOTO      DSPLY                                               
0083.00 C                   END                                                           
0084.00 C*( ROLL DOWN )- 前ページ                                                         
0085.00 C     *IN15         IFEQ      *ON                                                 
0086.00 C                   Z-ADD     1             DSPREC                                
0087.00 C                   SETON                                        6299      ERRMSG 
0088.00 C                   GOTO      DSPLY                                               
0089.00 C                   END                                                           
0090.00 C*( 実行キー )                                                                    
0091.00 C     2             CHAIN     SFREC01                            90               
0092.00 C                   GOTO      DSPLY                                               
0093.00 C*                                                                                
0094.00 C     END           TAG                                                           
0095.00 C******************************************************                           
0096.00 C     *INZSR        BEGSR                                                             
0097.00 C******************************************************                               
0098.00 C*  初期サイクルのみの実行                                                            
0099.00 C   U8              SETON                                        88                   
0100.00 C                   SETON                                        88                   
0101.00 C                   CLEAR                   SFREC01                                   
0102.00 C*( SFL 行数を 13 行にセット ) 13                                                     
0103.00 C                   MOVE      13            GYOSU             2 0           行数      
0104.00 C                   MOVE      08            STRGYO            2 0           開始行№  
0105.00 C                   ENDSR                                                             
0106.00 C******************************************************                               
0107.00 C     READ          BEGSR                                                             
0108.00 C******************************************************                               
0109.00 C                   MOVE      *BLANKS       EOF               1                       
0110.00 C                   MOVE      *ZEROS        DSPREC                                    
0111.00 C                   SETOFF                                       45                   
0112.00 C*( データ・ベースの検索 )                                                            
0113.00 C     TOPRRN        ADD       GYOSU         ENDRRN            4 0                     
0114.00 C                   SUB       1             ENDRRN                                    
0115.00 C*                                                                                    
0116.00 C     TOPRRN        DO        ENDRRN        RRN1              4 0          READ       
0117.00 C                   SETOFF                                       50                   
0118.00 C                   READ      SHOHIN                                 50               
0119.00 C*( 終り )                                                                            
0120.00 C     *IN50         IFEQ      *ON                                          EOF   
0121.00 C                   MOVE      'E'           EOF                                  
0122.00 C                   SETOFF                                       1129            
0123.00 C                   SETON                                        45              
0124.00 C                   GOTO      REDEND                                             
0125.00 C                   ELSE                                                   EOF   
0126.00 C*( 行 NO に入れる )                                                             
0127.00 C                   MOVE      RRN1          GYO                                  
0128.00 C     DSPREC        IFEQ      *ZEROS                                             
0129.00 C                   Z-ADD     TOPRRN        DSPREC                               
0130.00 C                   ENDIF                                                        
0131.00 C*( サブ・ファイルへ更新 )                                                       
0132.00 C*----------------------------------------------------+                          
0133.00 C                   WRITE     SFREC01                                      |     
0134.00 C*----------------------------------------------------+                          
0135.00 C                   Z-ADD     RRN1          LSTRRN            4 0                
0136.00 C                   ENDIF                                                  EOF   
0137.00 C                   ENDDO                                                  READ  
0138.00 C     REDEND        TAG                                                          
0139.00 C     DSPREC        IFEQ      *ZEROS                                             
0140.00 C                   SETON                                        89              
0141.00 C     TOPRRN        SUB       1             DSPREC                               
0142.00 C                   ENDIF                                                        
0143.00 C                   ENDSR                                                        
0144.00 C******************************************************                          
0145.00 C     SFLCLR        BEGSR                                                        
0146.00 C******************************************************                          
0147.00 C*( サブ・ファイルのクリヤー )                                                   
0148.00 C*----------------------------------------------------+                          
0149.00 C                   SETON                                        44        |     
0150.00 C                   WRITE     SFCTL01                                      |     
0151.00 C                   SETOFF                                       4489      |     
0152.00 C*----------------------------------------------------+                          
0153.00 C                   ENDSR                                                        
0154.00 C******************************************************                          
0155.00 C     ROLLUP        BEGSR                                                        
0156.00 C******************************************************                          
0157.00 C     EOF           IFEQ      'E'                                                
0158.00 C                   SETON                                        6199      ERRMSG
0159.00 C   99              Z-ADD     LSTRRN        DSPREC                               
0160.00 C   99              GOTO      UPEND                                              
0161.00 C                   END                                                          
0162.00 C     ENDRRN        ADD       1             TOPRRN                               
0163.00 C                   EXSR      READ                                               
0164.00 C     UPEND         ENDSR  


                                                            

いかがでしたか? スクロール・バーの実装はとても簡単でした。
次回は非常に効果のあるタブ・コントロールについて説明しましょう。
簡単なタブ・コントロールだけで適用業務が驚くほど簡単になる例を
紹介します。