RPG

111. POPUPウィンドウの基礎 (2)

先の例の POPUPを表示するための RPGのソースを紹介する。

【 RPG ソース 】
0001.00 H DFTNAME(ANS005) DATEDIT(*YMD/)                                       
0002.00 F******** 商品コード照会 *****************************************     
0003.00 FANS005FM  CF   E             WORKSTN                                  
0004.00 FSHOHIN    IF   E           K DISK                                     
0005.00 F*****************************************************************     
0006.00 D KYR             S             10    DIM(500)                         
0007.00 D                 DS                                                   
0008.00 D  OPT                    1      5                                     
0009.00 D                                     DIM(5)                           
0010.00 D  OPT001                 1      1                                     
0011.00 D  OPT002                 2      2                                     
0012.00 D  OPT003                 3      3                                     
0013.00 D  OPT004                 4      4                                     
0014.00 D  OPT005                 5      5                                     
0015.00 D                 DS                                                   
0016.00 D  CDR                    1     50                                     
0017.00 D                                     DIM(5)                           
0018.00 D  CDR001                 1     10                                     
0019.00 D  CDR002                11     20                                     
0020.00 D  CDR003                21     30                                     
0021.00 D  CDR004                31     40                                   
0022.00 D  CDR005                41     50                                   
0023.00 D                 DS                                                 
0024.00 D  NMR                    1    120                                   
0025.00 D                                     DIM(5)                         
0026.00 D  NMR001                 1     24                                   
0027.00 D  NMR002                25     48                                   
0028.00 D  NMR003                49     72                                   
0029.00 D  NMR004                73     96                                   
0030.00 D  NMR005                97    120                                   
0031.00 C*----------------------------------------------------+              
0032.00 C     *ENTRY        PLIST                                            
0033.00 C                   PARM                    PRM001           10      
0034.00 C*----------------------------------------------------+              
0035.00 C*( 初期画面 )                                                       
0036.00 C     *LOVAL        SETLL     SHOHIN                                 
0037.00 C                   EXSR      READ                                   
0038.00 C*----------------------------------------------------+              
0039.00 C     START         TAG                                              
0040.00 C                   EXFMT     WINDOW                                 
0041.00 C*----------------------------------------------------+              
0042.00 C                   SETOFF                                       99   
0043.00 C*( CF12 )- 前画面                                                    
0044.00 C     *IN12         IFEQ      '1'                                     
0045.00 C                   SETON                                        LR   
0046.00 C   LR              RETURN                                            
0047.00 C                   END                                               
0048.00 C*( ROLL-UP)                                                          
0049.00 C     *IN14         IFEQ      '1'                                     
0050.00 C                   EXSR      ROLLUP                                  
0051.00 C                   END                                               
0052.00 C*( ROLL-DOWN )                                                       
0053.00 C     *IN15         IFEQ      '1'                                     
0054.00 C                   EXSR      ROLDWN                                  
0055.00 C                   END                                               
0056.00 C*( CHECK )                                                           
0057.00 C                   EXSR      CHECK                                   
0058.00 C                   GOTO      START                                   
0059.00 C******************************************************               
0060.00 C     *INZSR        BEGSR                                             
0061.00 C******************************************************               
0062.00 C*  初期のみの実行                                                    
0063.00 CSR                 Z-ADD     8             WNDL                        
0064.00 CSR                 Z-ADD     29            WNDP                        
0065.00 CSR                 MOVE      *LOVAL        SETCOD           10         
0066.00 CSR                 Z-ADD     1             RL                4 0       
0067.00 CSR                 MOVE      *BLANKS       PRM001                      
0068.00 CSR   INZEND        ENDSR                                               
0069.00 C******************************************************                 
0070.00 C     READ          BEGSR                                               
0071.00 C******************************************************                 
0072.00 CSR                 EXSR      CLEAR                                     
0073.00 CSR   1             DO        5             N                 4 0       
0074.00 CSR                 READ      SHOHIN                                 50 
0075.00 CSR 50              GOTO      REDEND                                    
0076.00 CSR   N             IFEQ      1                                         
0077.00 CSR                 MOVE      SHCODE        KYR(RL)                     
0078.00 CSR                 END                                                 
0079.00 CSR                 MOVE      SHCODE        CDR(N)                      
0080.00 CSR                 MOVE      SHNAME        NMR(N)                      
0081.00 CSR                 END                                                 
0082.00 CSR   REDEND        ENDSR                                               
0083.00 C******************************************************                 
0084.00 C     CLEAR         BEGSR                                           
0085.00 C******************************************************             
0086.00 CSR                 MOVE      *BLANKS       OPT                     
0087.00 CSR                 MOVE      *BLANKS       CDR                     
0088.00 CSR                 MOVE      *BLANKS       NMR                     
0089.00 CSR                 ENDSR                                           
0090.00 C******************************************************             
0091.00 C     ROLLUP        BEGSR                                           
0092.00 C******************************************************             
0093.00 CSR                 ADD       1             RL                      
0094.00 CSR                 EXSR      READ                                  
0095.00 CSR                 ENDSR                                           
0096.00 C******************************************************             
0097.00 C     ROLDWN        BEGSR                                           
0098.00 C******************************************************             
0099.00 CSR   RL            IFGT      1                                     
0100.00 CSR                 SUB       1             RL                      
0101.00 CSR   KYR(RL)       SETLL     SHOHIN                                
0102.00 CSR                 EXSR      READ                                  
0103.00 CSR                 END                                             
0104.00 CSR                 ENDSR                                           
0105.00 C******************************************************              
0106.00 C     CHECK         BEGSR                                            
0107.00 C******************************************************              
0108.00 CSR   1             DO        5             N                        
0109.00 CSR   OPT(N)        IFEQ      '1'                                    
0110.00 CSR                 MOVE      CDR(N)        PRM001                   
0111.00 CSR                 SETON                                        LR  
0112.00 CSR                 RETURN                                           
0113.00 CSR                 END                                              
0114.00 CSR                 END                                              
0115.00 CSR                 ENDSR                                            
【 解説 】

単純な照会PGM であるのでさほど解説は要らないと思うが*INZSR

0063.00 CSR                 Z-ADD     8             WNDL    
0064.00 CSR                 Z-ADD     29            WNDP    

によって POPUPの表示位置を設定しているとに注意して欲しい。
親画面の RPG から操作員が押したカーソルの位置を取得してこの PGM に渡すようにして、
動的に POPUPの表示位置を決めることもできる。
一般的にはカーソルの位置を起点としてから POPUPの表示が開始されるといかにも、
それらしい印象を与えることができる。
例えば、今ご覧になっているこの画面でマウスポインターをセットして右ボタンを押すと
フローティング・メニューがこの画面(HTML)の上に表示されるはずだ。