RPG

349. 横スライド

前回で紹介したのは縦方向のスクロールであるが
横方向にスクロールというかスライドの機能も用意されている。
これはあまり馴染みが少なく紹介されている事例もないのではないかと
思われる。

↓ 見にくいですが月の表示の上に < >の横スクロールが表示されています。

[横スライドDSPF]

ソースはこちらから

0001.00      A*%%TS  SD  20160219  163828  QTR         REL-V6R1M0  5761-WDS    
0002.00      A*  91/10/14  21:54:59    QUATTRO     REL-R03M00  5728-PW1        
0003.00      A*-----------------------------------------------*                
0004.00      A*   サブファイル表示     SFLDSPFM               *                
0005.00      A*                                                                
0006.00      A*        年間売上ヒストリー                                      
0007.00      A*                                                                
0008.00      A*-----------------------------------------------*                
0009.00      A*            11:25:43    QUATTRO     REL-R06M00  5714-UT1        
0010.00      A*%%EC                                                            
0011.00      A                                      DSPSIZ(24 80 *DS3)         
0012.00      A                                      MSGLOC(24)                 
0013.00      A                                      PRINT                      
0014.00      A*-----------------------------------------------*                
0015.00      A          R DSPHEAD                                              
0016.00      A*-----------------------------------------------*                
0017.00      A                                      TEXT(' 初期画面 ')         
0018.00      A*%%TS  SD  19930612  135725  QUATTRO     REL-V3R2M0  5738-PW1    
0019.00      A                                      CF03(03 ' 終了 ')          
0020.00      A                                      SETOF(99)                  
0021.00      A                                      BLINK                      
0022.00      A                                      CSRLOC(LIN        POS)     
0023.00      A                                  1 27' 年間売上ヒストリー '     
0024.00      A                                      DSPATR(RI)                           
0025.00      A                                      COLOR(PNK)                           
0026.00      A                                  2  2' 商品コード '                       
0027.00      A            STRCOD        10A  B  2 15TEXT(' 商品コード ')                 
0028.00      A                                 11 15' 必要な項目を打鍵して実行キーを押 + 
0029.00      A                                       して下さい。 '                      
0030.00      A                                      DSPATR(HI)                           
0031.00      A                                 23  2'F3= 終了 '                          
0032.00      A                                      COLOR(BLU)                           
0033.00      A            LIN            3S 0H                                           
0034.00      A            POS            3S 0H                                           
0035.00      A          R SFREC01                   SFL                                  
0036.00      A*%%TS  SD  20160219  150907  QTR         REL-V6R1M0  5761-WDS              
0037.00      A                                      TEXT(' SFL明細行 ')               
0038.00      A  20                                                                       
0039.00      AO 99                                  SFLNXTCHG                            
0040.00      A            GYO            4A  O  8  2TEXT(' № ')                         
0041.00      A* 03                                  DSPATR(UL)                           
0042.00      A            SHCODE        10A  O  8  7TEXT(' 商品コード ')                 
0043.00      A            SHNAME        24O  O  8 18TEXT(' 商品名 ')                     
0044.00      A*( *SCRSTR 横スクロールの開始 )                                            
0045.00      A            URSU01         4Y 0O  8 45TEXT('1 月売上高 *SCRSTR')           
0046.00      A                                      EDTCDE(J)                            
0047.00      A            URSU02         4Y 0O  8 53TEXT('2 月売上高 ')                  
0048.00      A                                      EDTCDE(J)                  
0049.00      A            URSU03         4Y 0O  8 61TEXT('3 月売上高 ')        
0050.00      A                                      EDTCDE(J)                  
0051.00      A*(* SCREND 横スクロールの終了 )                                  
0052.00      A            URSU04         4Y 0O  8 69TEXT('4 月売上高 *SCREND') 
0053.00      A                                      EDTCDE(J)                  
0054.00      A          R SFCTL01                   SFLCTL(SFREC01)            
0055.00      A*%%TS  SD  20160219  163828  QTR         REL-V6R1M0  5761-WDS    
0056.00      A                                      SFLSIZ(0013)               
0057.00      A                                      SFLPAG(0012)               
0058.00      A                                      TEXT(' SFL制御見出 ')   
0059.00      A                                      OVERLAY                    
0060.00      A  41                                  SFLDSPCTL                  
0061.00      A  42                                  SFLDSP                     
0062.00      A  43                                  SFLINZ                     
0063.00      A                                      SFLRNA                     
0064.00      A  44                                  SFLCLR                     
0065.00      A  45                                  SFLEND(*MORE)              
0066.00      A  46                                  SFLDLT                     
0067.00      A                                      ROLLUP(14 ' 次頁 ')        
0068.00      A                                      ROLLDOWN(15 ' 前頁 ')      
0069.00      A                                      CF03(03 ' 終了 ')          
0070.00      A                                      CF12(12 ' 前画面 ')        
0071.00      A                                      CF19(19 ' 左 ')            
0072.00      A                                      CF20(20 ' 右 ')                   
0073.00      A                                      SETOF(99)                         
0074.00      A                                      BLINK                             
0075.00      A*( SFLEND(*MORE)... 続く / 終りの使用のために SFLMSG は                 
0076.00      A*  使用しません。 )                                                     
0077.00      A            DMYFLD         1A  O  1 72                                  
0078.00      A  61                                  ERRMSGID(EDT0411 QPDA/QEDTMSG 61) 
0079.00      A  62                                  ERRMSGID(EDT0410 QPDA/QEDTMSG 62) 
0080.00      A  63                                  ERRMSGID(QRY1902 QQRYMSG 63)      
0081.00      A  64                                  ERRMSGID(QRY1903 QQRYMSG 64)      
0082.00      A            DSPREC         4S 0H      SFLRCDNBR(CURSOR)                 
0083.00      A                                      TEXT('SFL 表示 レコード № ')        
0084.00      A            LIN            3S 0H      TEXT('カーソル 位置合せ - 行 ')       
0085.00      A            POS            3S 0H      TEXT('カーソル 位置合せ - 桁 ')       
0086.00      A                                  1 27' 年間売上ヒストリー '            
0087.00      A                                      DSPATR(RI)                        
0088.00      A                                      COLOR(PNK)                        
0089.00      A*( 明細行の桁見出し )                                                   
0090.00      A                                  6  2' № '                            
0091.00      A                                      DSPATR(HI)                        
0092.00      A*     エラー 標識 :61 - 69                                                 
0093.00      A                                  6  7' 商品コード '                    
0094.00      A                                      DSPATR(HI)                        
0095.00      A                                  6 20' 商品名 '                        
0096.00      A                                      DSPATR(HI)                     
0097.00      A  81        LBUTON         2Y 0B  5 42PSHBTNFLD(*RSTCSR (*NUMCOL 1)) 
0098.00      A                                      PSHBTNCHC(1 '<' CF19)          
0099.00      A*( *SCRSTR 横スクロールの開始 )                                      
0100.00      A*                                 6 45' 1 月 '                       
0101.00      A            MON01          6A     6 45                               
0102.00      A                                      TEXT('*SCRSTR')                
0103.00      A                                      DSPATR(HI)                     
0104.00      A*                                 6 53' 2 月 '                       
0105.00      A            MON02          6A     6 53                               
0106.00      A                                      DSPATR(HI)                     
0107.00      A*                                 6 61' 3 月 '                       
0108.00      A            MON03          6A     6 61                               
0109.00      A                                      DSPATR(HI)                     
0110.00      A*(* SCREND 横スクロールの終了 )                                      
0111.00      A*                                 6 69' 4 月 '                       
0112.00      A            MON04          6A     6 69                               
0113.00      A                                      DSPATR(HI)                     
0114.00      A                                      TEXT('*SCREND')                
0115.00      A  82        RBUTON         2Y 0B  5 76PSHBTNFLD(*RSTCSR (*NUMCOL 1)) 
0116.00      A                                      PSHBTNCHC(1 '>>' CF20)         
0117.00      A*( 見出しの項目 )                                                    
0118.00      A          R NOREC                                                    
0119.00      A                                      TEXT(' MSG : レコードなし ')
0120.00      A*%%TS  SD  19930612  144015  QUATTRO     REL-V2R1M0  5738-PW1              
0121.00      A                                      OVERLAY                              
0122.00      A                                      CF03(03 ' 終了 ')                    
0123.00      A                                 10  5'( 検索されて見つかったレコードが -  
0124.00      A                                       ない。 )'                           
0125.00      A                                      DSPATR(HI)                           
0126.00      A                                 16  5' 処理を続けるために実行キーを押し - 
0127.00      A                                       なさい。 '                          
0128.00      A                                      DSPATR(HI)                           
0129.00      A*( SFLMSGKEY )                                                             
0130.00      A          R FMTMSG                    SFL SFLMSGRCD(24)                    
0131.00      A            DMKEY                     SFLMSGKEY                            
0132.00      A            DMPGMQ                    SFLPGMQ                              
0133.00      A                                                                           
0134.00      A          R FMTMSGC                   SFLCTL(FMTMSG)                       
0135.00      A                                      OVERLAY                              
0136.00      A                                      HELP                                 
0137.00      A  78                                  SFLINZ                               
0138.00      A                                      SFLPAG(1)                            
0139.00      A                                      SFLSIZ(10)                           
0140.00      A                                      SFLDSP SFLDSPCTL                     
0141.00      A  79                                  SFLEND                               
0142.00      A            DMPGMQ                    SFLPGMQ                              
0143.00      A          R DSPEND01                                                       
0144.00      A*%%TS  SD  20160219  151550  QTR         REL-V6R1M0  5761-WDS 
0145.00      A                                      TEXT(' 機能キーの表示 ')
0146.00      A                                      OVERLAY                 
0147.00      A                                      CF03(03 ' 終了 ')       
0148.00      A                                 23  2'F3= 終了 '             
0149.00      A                                      COLOR(BLU)              
0150.00      A                                 23 19'F19= 左 '              
0151.00      A                                      COLOR(BLU)              
0152.00      A                                 23 35'F20= 右 '              
0153.00      A                                      COLOR(BLU)              
0154.00      A                                 23 55'F12= 前画面 '          
0155.00      A                                      COLOR(BLU)    


         

[解説]

左にスライド可能なときは

0097.00      A  81        LBUTON         2Y 0B  5 42PSHBTNFLD(*RSTCSR (*NUMCOL 1)) 
0098.00      A                                      PSHBTNCHC(1 '<' CF19)

 

によって標識81をオンにして左ボタンを使用可能にする。
右にスライド可能なときは

0115.00      A  82        RBUTON         2Y 0B  5 76PSHBTNFLD(*RSTCSR (*NUMCOL 1)) 
0116.00      A                                      PSHBTNCHC(1 '>>' CF20)

 

によって右ボタンを使用可能に制御する。

[横スライドRPG]

ソースはこちらから

0001.00 H DFTNAME(SMP107) DATEDIT(*YMD/)                                    
0002.00 F**********  売上ヒストリー **************************************  
0003.00 FSMP107FM  CF   E             WORKSTN                               
0004.00 F                                     SFILE(SFREC01:RRN1)           
0005.00 F                                     INFDS(INFDS)                  
0006.00 FSHOHIN    IF   E           K DISK                                  
0007.00 FNENKAN    IF   E           K DISK                                  
0008.00 FHINSHU    IF   E           K DISK                                  
0009.00 F*****************************************************************  
0010.00 D SAVDTA          S              1    DIM(1024)                     
0011.00 D*       読み取り ファイル の FORMAT を外部 DS として READ              
0012.00 D DATADS        E DS                  EXTNAME(SHOHIN)               
0013.00 D  DSPDTA                 1   1024                                  
0014.00 D                                     DIM(1024)                     
0015.00 D*                                                                  
0016.00 D*         -( サブ・ファイル の ファイル 情報 )-                              
0017.00 D*                                                                  
0018.00 D INFDS           DS                                                
0019.00 D*( カーソル の行と桁の取り込み )                                       
0020.00 D  LINE                 370    371B 0                               
0021.00 D*  TOPRRN: 今表示している サブ・ファイル の先頭の RRN                    
0022.00 D  TOPRRN               378    379B 0                               
0023.00 D* BRRN : サブファイル の レコードNO ( 2 進数 )                             
0024.00 D  BRRN                 376    377B 0             
0025.00                                                   
0026.00 D                 DS                              
0027.00 D  NHSU                   1     48  0 DIM(12)     
0028.00 D  NHSU01                 1      4  0             
0029.00 D  NHSU02                 5      8  0             
0030.00 D  NHSU03                 9     12  0             
0031.00 D  NHSU04                13     16  0             
0032.00 D  NHSU05                17     20  0             
0033.00 D  NHSU06                21     24  0             
0034.00 D  NHSU07                25     28  0             
0035.00 D  NHSU08                29     32  0             
0036.00 D  NHSU09                33     36  0             
0037.00 D  NHSU10                37     40  0             
0038.00 D  NHSU11                41     44  0             
0039.00 D  NHSU12                45     48  0             
0040.00                                                   
0041.00 D                 DS                              
0042.00 D  URSU                   1     16  0 DIM(4)      
0043.00 D  URSU01                 1      4  0             
0044.00 D  URSU02                 5      8  0             
0045.00 D  URSU03                 9     12  0             
0046.00 D  URSU04                13     16  0             
0047.00                                                   
0048.00 D*( WORK 日付 YYMMDD データ 構造  )                  
0049.00 D DATEDS          DS                               
0050.00 D  SRY                    1      2  0              
0051.00 D  SRYMD                  1      8  0              
0052.00 D  YYMMDD                 3      8  0              
0053.00 D  YYMM                   3      6  0              
0054.00 D  MMDD                   5      8  0              
0055.00 D  YY                     3      4  0              
0056.00 D  MM                     5      6  0              
0057.00 D  DD                     7      8  0              
0058.00                                                    
0059.00 D                 DS                               
0060.00 D  MONR                   1     24    DIM(4)       
0061.00 D  MON01                  1      6                 
0062.00 D  MON02                  7     12                 
0063.00 D  MON03                 13     18                 
0064.00 D  MON04                 19     24                 
0065.00                                                    
0066.00 D YEAR            S              6A   DIM(12)      
0067.00 D N               S              4S 0              
0068.00 D M               S              4S 0              
0069.00 D ST              S              4S 0 INZ(1)       
0070.00                                                    
0071.00 C*( 初期画面 )                                     
0072.00 C                   GOTO      STRRED                                  
0073.00 C*----------------------------------------------------+               
0074.00 C     START         TAG                                               
0075.00 C                   EXFMT     DSPHEAD                                 
0076.00 C*----------------------------------------------------+               
0077.00 C                   SETOFF                                       99   
0078.00 C*( CF03 )- 終了                                                      
0079.00 C     *IN03         IFEQ      *ON                                     
0080.00 C                   SETON                                        LR   
0081.00 C   LR              RETURN                                            
0082.00 C                   GOTO      START                                   
0083.00 C                   END                                               
0084.00 C*( 実行キー )                                                        
0085.00 C*   : KEYをファイルにセット                                       
0086.00 C*----------------------------------------------------+               
0087.00 C     SETKEY        KLIST                                             
0088.00 C                   KFLD                    STRCOD                    
0089.00 C*----------------------------------------------------+               
0090.00 C*( *LOVAL のセット )                                                 
0091.00 C     STRRED        TAG                                               
0092.00 C                   MOVE      *BLANKS       SHCODE                    
0093.00 C     SETKEY        SETLL     SHOHIN                                  
0094.00 C                   EXSR      SFLCLR                                  
0095.00 C*   : ファイルの読み取り                                             
0096.00 C                   Z-ADD     1             TOPRRN                     
0097.00 C                   EXSR      READ                                     
0098.00 C                   Z-ADD     1             DSPREC                     
0099.00 C*( サブ・ファイルの表示 )                                             
0100.00 C                   WRITE     DSPEND01                                 
0101.00 C*----------------------------------------------------+                
0102.00 C     DSPLY         TAG                                                
0103.00 C                   SETON                                        4142  
0104.00 C                   EXFMT     SFCTL01                                  
0105.00 C                   SETOFF                                       4142  
0106.00 C*----------------------------------------------------+                
0107.00 C                   SETOFF                                       99    
0108.00 C*( CF03 )- 終了                                                       
0109.00 C     *IN03         IFEQ      *ON                                      
0110.00 C                   SETON                                        LR    
0111.00 C   LR              RETURN                                             
0112.00 C                   ENDIF                                              
0113.00 C*                                                                     
0114.00 C*( CF12 )- 前画面                                                     
0115.00 C     *IN12         IFEQ      *ON                                      
0116.00 C                   SETOFF                                       12    
0117.00 C                   GOTO      START                                    
0118.00 C                   ENDIF                                              
0119.00 C*( CF19 )- 左                                                         
0120.00 C     *IN19         IFEQ      *ON                                       
0121.00 C                   SETOFF                                       19     
0122.00 C     ST            IFGT      4                                         
0123.00 C                   SUB       4             ST                          
0124.00 C                   GOTO      STRRED                                    
0125.00 C                   ELSE                                                
0126.00 C                   SETON                                        6399   
0127.00 C                   GOTO      DSPLY                                     
0128.00 C                   ENDIF                                               
0129.00 C                   ENDIF                                               
0130.00 C*( CF20 )- 右                                                          
0131.00 C     *IN20         IFEQ      *ON                                       
0132.00 C                   SETOFF                                       20     
0133.00 C     ST            IFGT      8                                         
0134.00 C                   SETON                                        6499   
0135.00 C                   GOTO      DSPLY                                     
0136.00 C                   ELSE                                                
0137.00 C                   ADD       4             ST                          
0138.00 C                   GOTO      STRRED                                    
0139.00 C                   ENDIF                                               
0140.00 C                   ENDIF                                               
0141.00 C*( ROLL UP )- 次ページ                                                 
0142.00 C     *IN14         IFEQ      *ON                                       
0143.00 C                   EXSR      ROLLUP                                    
0144.00 C                   GOTO      DSPLY                                                 
0145.00 C                   ENDIF                                                           
0146.00 C*                                                                                  
0147.00 C*( 実行キー )                                                                      
0148.00 C                   GOTO      DSPLY                                                 
0149.00 C*                                                                                  
0150.00 C     END           TAG                                                             
0151.00 C******************************************************                             
0152.00 C     *INZSR        BEGSR                                                           
0153.00 C******************************************************                             
0154.00 C*  初期 サイクル のみの実行                                                            
0155.00 C*( サブファイル END-FLAG を ON にする )                                                 
0156.00 C                   SETON                                        45                 
0157.00 C*( DS の数字 フィールド の クリヤー )                                                      
0158.00 C                   CLEAR                   SFREC01                                 
0159.00 C                   MOVE      12            GYOSU             2 0           行数    
0160.00 C                   MOVE      08            STRGYO            2 0           開始行№
0161.00 C                   MOVE      19910101      SRYMD                                   
0162.00 C                   MOVE      910101        DATE              6 0                   
0163.00 C                   SETON                                        11                 
0164.00 C                   SETOFF                                       11                 
0165.00 C*( 年月の見出しを作成する )                                                        
0166.00 C     1             DO        12            N                                       
0167.00 C                   MOVE      N             MON               2                     
0168.00 C                   IF        %SUBST(MON:1:1) = '0'                   
0169.00 C                   MOVEL     ' '           MON                       
0170.00 C                   ENDIF                                             
0171.00 C                   EVAL      YEAR(N) = MON + ' 月 '                  
0172.00 C                   ENDDO                                             
0173.00 C                   ENDSR                                             
0174.00 C******************************************************               
0175.00 C     READ          BEGSR                                             
0176.00 C******************************************************               
0177.00 C                   MOVE      *BLANKS       EOF               1       
0178.00 C                   SETOFF                                       5945 
0179.00 C*( データ・ベースの検索 )                                            
0180.00 C*----------------------------------------------------+               
0181.00 C*          EQLKEY    KLIST                           |               
0182.00 C*----------------------------------------------------+               
0183.00 C     RTNRED        TAG                                               
0184.00 C*                                                                    
0185.00 C     TOPRRN        ADD       GYOSU         ENDRRN            4 0     
0186.00 C                   SUB       1             ENDRRN                    
0187.00 C*( 年月見出しをセットする )                                          
0188.00 C                   Z-ADD     ST            M                         
0189.00 C     1             DO        4             N                         
0190.00 C                   EVAL      MONR(N) = YEAR(M)                       
0191.00 C                   ADD       1             M                         
0192.00 C                   ENDDO                                               
0193.00 C*( 左右ボタンの制御 )                                                  
0194.00 C                   SETOFF                                       8182   
0195.00 C     ST            IFGT      4                                         
0196.00 C                   SETON                                        81     
0197.00 C                   ENDIF                                               
0198.00 C     ST            IFLT      9                                         
0199.00 C                   SETON                                        82     
0200.00 C                   ENDIF                                               
0201.00 C*                                                                      
0202.00 C     TOPRRN        DO        ENDRRN        RRN1              4 0       
0203.00 C     AGAIN         TAG                                                 
0204.00 C                   SETOFF                                       50     
0205.00 C                   READ      SHOHIN                                 50 
0206.00 C*( 終り )                                                              
0207.00 C     *IN50         IFEQ      '1'                                       
0208.00 C                   MOVE      'E'           EOF                         
0209.00 C                   SETOFF                                       1129   
0210.00 C                   SETON                                        45     
0211.00 C                   GOTO      REDEND                                    
0212.00 C                   ELSE                                                
0213.00 C*( CHECK  : READ した レコード の チエック )                                  
0214.00 C                   EXSR      CHECK                                     
0215.00 C*( 行 NO に入れる )                                                    
0216.00 C                   MOVE      RRN1          GYO                        
0217.00 C*( サブファイル へ更新 )                                                   
0218.00 C*----------------------------------------------------+                
0219.00 C                   WRITE     SFREC01                                  
0220.00 C*----------------------------------------------------+                
0221.00 C  N59              Z-ADD     RRN1          DSPREC                     
0222.00 C  N59              SETON                                        59    
0223.00 C                   Z-ADD     RRN1          LSTRRN            4 0      
0224.00 C                   END                                                
0225.00 C                   END                                                
0226.00 C     REDEND        TAG                                                
0227.00 C                   ENDSR                                              
0228.00 C******************************************************                
0229.00 C     CHECK         BEGSR                                              
0230.00 C******************************************************                
0231.00 C*( 明細チエック )                                                     
0232.00 C                   Z-ADD     0             NHSU                       
0233.00 C                   SETOFF                                       90    
0234.00 C     SHCODE        CHAIN     NENKAN                             90    
0235.00 C*                                                                     
0236.00 C     SHSCOD        CHAIN     HINSHU                             99    
0237.00 C*( 年月のデータをセットする )                                         
0238.00 C                   Z-ADD     ST            M                          
0239.00 C     1             DO        4             N                          
0240.00 C                   EVAL      URSU(N) = NHSU(M)                      
0241.00 C                   ADD       1             M                        
0242.00 C                   ENDDO                                            
0243.00 C     CHKEND        ENDSR                                            
0244.00 C******************************************************              
0245.00 C     SFLCLR        BEGSR                                            
0246.00 C******************************************************              
0247.00 C*( サブファイル の クリヤー )                                                
0248.00 C*----------------------------------------------------+              
0249.00 C                   SETON                                        44  
0250.00 C                   WRITE     SFCTL01                                
0251.00 C                   SETOFF                                       44  
0252.00 C*----------------------------------------------------+              
0253.00 C                   ENDSR                                            
0254.00 C******************************************************              
0255.00 C     INZVAR        BEGSR                                            
0256.00 C******************************************************              
0257.00 C*( 初期値 )                                                         
0258.00 C                   ENDSR                                            
0259.00 C******************************************************              
0260.00 C     ROLLUP        BEGSR                                            
0261.00 C******************************************************              
0262.00 C     EOF           IFEQ      'E'                                    
0263.00 C                   SETON                                        6199
0264.00 C   99              Z-ADD     LSTRRN        DSPREC     
0265.00 C   99              GOTO      UPEND                    
0266.00 C                   END                                
0267.00 C     ENDRRN        ADD       1             TOPRRN     
0268.00 C                   EXSR      READ                     
0269.00 C     UPEND         ENDSR     


                         

[解説]

左ボタンと右ボタンによって月とデータの表示を制御している。