AutoWeb

39. 年間売上ヒストリー(5250ハンドラー・サンプル)

これからは実際の業務のサンプルをいくつか紹介していきたい。
最初はかんたんでわかりやすい

5250ハンドラー

による画面拡張のサンプルである。

[解説]

ご覧のように横方向へは1月~12月までの売上数量が表示されており
これは明らかに80桁はもちろん132桁もオーバーしている。

早速DSPFDDSソースを紹介しよう。

[年間売上ヒストリー:SMP111FM ]

ソースはこちらから

0001.00      A*-----------------------------------------------*                       
0002.00      A*   サブファイル表示     SMP111FM               *                       
0003.00      A*                                                                       
0004.00      A*        年間売上ヒストリー                                             
0005.00      A*                                                                       
0006.00      A*    DSPSIZ(*FREE) を指定して                                           
0007.00      A*     CRTEXDSPF で作成するだけです。     ↓                             
0008.00      A*-----------------------------------------------*                       
0009.00      A                                      DSPSIZ(*FREE)                     
0010.00      A                                      MSGLOC(24)                        
0011.00      A                                      PRINT                             
0012.00      A                                      HELP                              
0013.00      A                                      ALTHELP(CA01)                     
0014.00      A                                      HLPPNLGRP(SMP111H QTROBJ/SMP111H) 
0015.00      A                                      HLPTITLE(' 年間売上ヒストリー ')  
0016.00      A*-----------------------------------------------*                       
0017.00      A          R DSPHEAD                                                     
0018.00      A*-----------------------------------------------*                       
0019.00      A                                      TEXT(' 初期画面 ')                
0020.00      A                                      CF03(03 ' 終了 ')                 
0021.00      A                                      SETOF(99)                         
0022.00      A                                      BLINK                             
0023.00      A                                      CSRLOC(LIN        POS)            
0024.00      A            PGM           10A  O  1  2COLOR(BLU)                           
0025.00      A                                  1 27' 年間売上ヒストリー '               
0026.00      A                                      DSPATR(HI)                           
0027.00      A                                  2  2' 商品コード '                       
0028.00      A            STRCOD        10A  B  2 15TEXT(' 商品コード ')                 
0029.00      A                                 11 15' 必要な項目を打鍵して実行キーを押 + 
0030.00      A                                       して下さい。 '                      
0031.00      A                                      DSPATR(HI)                           
0032.00      A                                 23  2'F3= 終了 '                          
0033.00      A                                      COLOR(BLU)                           
0034.00      A            LIN            3S 0H                                           
0035.00      A            POS            3S 0H                                           
0036.00       * サブ・ファイル・レコード                                                 
0037.00      A          R SFREC01                   SFL                                  
0038.00      A                                      TEXT(' SFL明細行 ')               
0039.00      A  20                                                                       
0040.00      AO 99                                  SFLNXTCHG                            
0041.00      A            GYO            4A  O  6  2TEXT(' № ')                         
0042.00      A* 03                                  DSPATR(UL)                           
0043.00      A            SHCODE        10A  O  6  7TEXT(' 商品コード ')                 
0044.00      A            SHNAME        24O  O  6 18TEXT(' 商品名 ')                     
0045.00      A*( 1 段目の表示 )                                                          
0046.00      A            NHSU01         4Y 0O  6 45TEXT('1 月売上高 ')                  
0047.00      A                                      EDTCDE(J)                            
0048.00      A            NHSU02         4Y 0O  6 53TEXT('2 月売上高 ')     
0049.00      A                                      EDTCDE(J)               
0050.00      A            NHSU03         4Y 0O  6 61TEXT('3 月売上高 ')     
0051.00      A                                      EDTCDE(J)               
0052.00      A            NHSU04         4Y 0O  6 69TEXT('4 月売上高 ')     
0053.00      A                                      EDTCDE(J)               
0054.00      A*( 2 段目の表示 )                                             
0055.00      A            NHSU05         4Y 0O  6 77TEXT('5 月売上高 ')     
0056.00      A                                      EDTCDE(J)               
0057.00      A            NHSU06         4Y 0O  6 85TEXT('6 月売上高 ')     
0058.00      A                                      EDTCDE(J)               
0059.00      A            NHSU07         4Y 0O  6 93TEXT('7 月売上高 ')     
0060.00      A                                      EDTCDE(J)               
0061.00      A            NHSU08         4Y 0O  6101TEXT('8 月売上高 ')     
0062.00      A                                      EDTCDE(J)               
0063.00      A*( 3 段目の表示 )                                             
0064.00      A            NHSU09         4Y 0O  6109TEXT('9 月売上高 ')     
0065.00      A                                      EDTCDE(J)               
0066.00      A            NHSU10         4Y 0O  6117TEXT('10 月売上高 ')    
0067.00      A                                      EDTCDE(J)               
0068.00      A            NHSU11         4Y 0O  6125TEXT('11 月売上高 ')    
0069.00      A                                      EDTCDE(J)               
0070.00      A            NHSU12         4Y 0O  6132TEXT('12 月売上高 ')    
0071.00      A                                      EDTCDE(J)               
0072.00      A          R SFCTL01                   SFLCTL(SFREC01)               
0073.00      A                                      SFLSIZ(0020)                  
0074.00      A                                      SFLPAG(0010)                  
0075.00      A                                      TEXT(' SFL制御見出 ')      
0076.00      A                                      OVERLAY                       
0077.00      A  41                                  SFLDSPCTL                     
0078.00      A  42                                  SFLDSP                        
0079.00      A  43                                  SFLINZ                        
0080.00      A                                      SFLRNA                        
0081.00      A  44                                  SFLCLR                        
0082.00      A  45                                  SFLEND(*MORE)                 
0083.00      A  46                                  SFLDLT                        
0084.00      A                                      ROLLUP(14 ' 次頁 ')           
0085.00      A                                      ROLLDOWN(15 ' 前頁 ')         
0086.00      A                                      CF03(03 ' 終了 ')             
0087.00      A                                      CF12(12 ' 前画面 ')           
0088.00      A                                      SETOF(99)                     
0089.00      A                                      BLINK                         
0090.00      A          H                           HLPARA(6  7 22 17)            
0091.00      A                                      HLPPNLGRP('SMP111/SHCODE' -   
0092.00      A                                      QTROBJ/SMP111H)               
0093.00      A          H                           HLPARA(6 18 22 42)            
0094.00      A                                      HLPPNLGRP('SMP111/SHNAME' -   
0095.00      A                                      QTROBJ/SMP111H)               
0096.00      A          H                           HLPARA(6 45 22 72)               
0097.00      A                                      HLPPNLGRP('SMP111/NHSU01' -      
0098.00      A                                      QTROBJ/SMP111H)                  
0099.00      A            PGM           10A  O  1  2COLOR(BLU)                       
0100.00      A  61                                  ERRMSGID(EDT0411 QPDA/QEDTMSG 61)
0101.00      A  62                                  ERRMSGID(EDT0410 QPDA/QEDTMSG 62)
0102.00      A  63                                  ERRMSGID(QRY1902 QQRYMSG 63)     
0103.00      A  64                                  ERRMSGID(QRY1903 QQRYMSG 64)     
0104.00      A            DSPREC         4S 0H      SFLRCDNBR(CURSOR)                
0105.00      A                                      TEXT('SFL 表示 レコード № ')       
0106.00      A            LIN            3S 0H      TEXT('カーソル 位置合せ - 行 ')      
0107.00      A            POS            3S 0H      TEXT('カーソル 位置合せ - 桁 ')      
0108.00      A                                  1 27' 年間売上ヒストリー '           
0109.00      A                                      DSPATR(HI)                       
0110.00      A                                  1121' システム '                     
0111.00      A                                  1132SYSNAME                          
0112.00      A                                  2121' 日付 '                         
0113.00      A                                  2130DATE(*YY) EDTCDE(W)              
0114.00      A                                  3121' 時刻 '                         
0115.00      A                                  3132TIME                             
0116.00      A                                  4121' ユーザー '                     
0117.00      A                                  4132USER                             
0118.00      A*( 明細行の桁見出し )                                                  
0119.00      A                                  5  2' № '                           
0120.00      A                                      DSPATR(HI)       
0121.00      A*     エラー 標識 :61 - 69                                
0122.00      A                                  5  7' 商品コード '   
0123.00      A                                      DSPATR(HI)       
0124.00      A                                  5 20' 商品名 '       
0125.00      A                                      DSPATR(HI)       
0126.00      A*( 1 段目の表示 )                                      
0127.00      A                                  5 45' 1 月 '         
0128.00      A                                      DSPATR(HI)       
0129.00      A                                  5 53' 2 月 '         
0130.00      A                                      DSPATR(HI)       
0131.00      A                                  5 61' 3 月 '         
0132.00      A                                      DSPATR(HI)       
0133.00      A                                  5 69' 4 月 '         
0134.00      A                                      DSPATR(HI)       
0135.00      A*( 2 段目の表示 )                                      
0136.00      A                                  5 77' 5 月 '         
0137.00      A                                      DSPATR(HI)       
0138.00      A                                  5 85' 6 月 '         
0139.00      A                                      DSPATR(HI)       
0140.00      A                                  5 93' 7 月 '         
0141.00      A                                      DSPATR(HI)       
0142.00      A                                  5101' 8 月 '         
0143.00      A                                      DSPATR(HI)       
0144.00      A*( 3 段目の表示 )                                                           
0145.00      A                                  5109' 9 月 '                              
0146.00      A                                      DSPATR(HI)                            
0147.00      A                                  5117'10 月 '                              
0148.00      A                                      DSPATR(HI)                            
0149.00      A                                  5125'11 月 '                              
0150.00      A                                      DSPATR(HI)                            
0151.00      A                                  5133'12 月 '                              
0152.00      A                                      DSPATR(HI)                            
0153.00      A*( 見出しの項目 )                                                           
0154.00      A          R NOREC                                                           
0155.00      A                                      TEXT(' MSG : レコードなし ')       
0156.00      A                                      OVERLAY                               
0157.00      A                                      CF03(03 ' 終了 DEBUG')                
0158.00      A                                 10  5'( 検索されて見つかったレコードが -   
0159.00      A                                       ない。 )'                            
0160.00      A                                      DSPATR(HI)                            
0161.00      A                                 16  5' 処理を続けるために実行キーを押し -  
0162.00      A                                       なさい。 '                           
0163.00      A                                      DSPATR(HI)                            
0164.00      A          R DSPEND01                                                        
0165.00      A                                      TEXT(' 機能キーの表示 ')              
0166.00      A                                      OVERLAY                               
0167.00      A                                      CF03(03 ' 終了 ')                     
0168.00      A                                      SLNO(*VAR)    
0169.00      A            SLNO           2Y 0H                    
0170.00      A                                 23  2'F3= 終了 '   
0171.00      A                                      COLOR(BLU)    
0172.00      A                                 23 19'F12= 前画面 '
0173.00      A                                      COLOR(BLU)    
0174.00      A                                 23 72'F1= 説明 '   
0175.00      A                                      COLOR(BLU)    



[解説]

まず最初に

0009.00      A                                      DSPSIZ(*FREE) 

によって表示サイズは *FREEであることを宣言している。
もちろんこれはIBMでは認められていないが AutoWebでは有効である。

次に

0036.00       * サブ・ファイル・レコード                                                 
0037.00      A          R SFREC01                   SFL                                  
0038.00      A                                      TEXT(' SFL明細行 ')
  :
0054.00      A*( 2 段目の表示 )                                             
0055.00      A            NHSU05         4Y 0O  6 77TEXT('5 月売上高 ')     
0056.00      A                                      EDTCDE(J)               
0057.00      A            NHSU06         4Y 0O  6 85TEXT('6 月売上高 ')     
0058.00      A                                      EDTCDE(J)               
0059.00      A            NHSU07         4Y 0O  6 93TEXT('7 月売上高 ')     
0060.00      A                                      EDTCDE(J)               
0061.00      A            NHSU08         4Y 0O  6101TEXT('8 月売上高 ')     
0062.00      A                                      EDTCDE(J)               
0063.00      A*( 3 段目の表示 )                                             
0064.00      A            NHSU09         4Y 0O  6109TEXT('9 月売上高 ')     
0065.00      A                                      EDTCDE(J)               
0066.00      A            NHSU10         4Y 0O  6117TEXT('10 月売上高 ')    
0067.00      A                                      EDTCDE(J)               
0068.00      A            NHSU11         4Y 0O  6125TEXT('11 月売上高 ')    
0069.00      A                                      EDTCDE(J)               
0070.00      A            NHSU12         4Y 0O  6132TEXT('12 月売上高 ')    
0071.00      A                                      EDTCDE(J)     

と 80桁をオーバーして

0057.00      A            NHSU06         4Y 0O  6 85TEXT('6 月売上高 ')     
0058.00      A                                      EDTCDE(J)               
0059.00      A            NHSU07         4Y 0O  6 93TEXT('7 月売上高 ')     
0060.00      A                                      EDTCDE(J)               
0061.00      A            NHSU08         4Y 0O  6101TEXT('8 月売上高 ')     
0062.00      A                                      EDTCDE(J)
 :

のように普通に記述している。

0072.00      A          R SFCTL01                   SFLCTL(SFREC01)               
0073.00      A                                      SFLSIZ(0020)                  
0074.00      A                                      SFLPAG(0010)                  
0075.00      A                                      TEXT(' SFL制御見出 ') 
 :
0135.00      A*( 2 段目の表示 )                                      
0136.00      A                                  5 77' 5 月 '         
0137.00      A                                      DSPATR(HI)       
0138.00      A                                  5 85' 6 月 '         
0139.00      A                                      DSPATR(HI)       
0140.00      A                                  5 93' 7 月 '         
0141.00      A                                      DSPATR(HI)       
0142.00      A                                  5101' 8 月 '         
0143.00      A                                      DSPATR(HI)       
0144.00      A*( 3 段目の表示 )                                                           
0145.00      A                                  5109' 9 月 '                              
0146.00      A                                      DSPATR(HI)                            
0147.00      A                                  5117'10 月 '                              
0148.00      A                                      DSPATR(HI)                            
0149.00      A                                  5125'11 月 '                              
0150.00      A                                      DSPATR(HI)                            
0151.00      A                                  5133'12 月 '                              
0152.00      A                                      DSPATR(HI) 

のように 80桁はオーバーしているがごく普通の記述である。

[年間売上ヒストリーRPG :SMP111]

ソースはこちらから

0001.00 H DFTNAME(SMP111) DATEDIT(*YMD/)                                        
0002.00 F********** 売上ヒストリー ***************************************      
0003.00 FSMP111FM  CF   E             WORKSTN                                   
0004.00 F                                     EXTFILE('QTROBJ/SMP111FM')        
0005.00 F                                     HANDLER(HANDLER:HPARM)            
0006.00 F                                     SFILE(SFREC01:RRN1)               
0007.00 F                                     INFDS(INFDSF)                     
0008.00 FSHOHIN    IF   E           K DISK                                      
0009.00 FNENKAN    IF   E           K DISK                                      
0010.00 FHINSHU    IF   E           K DISK                                      
0011.00 F*****************************************************************      
0012.00  *( 縦方向への拡大 )                                                    
0013.00  *    この照会画面では AマホナWオイ 表示 (U8 がオン ) のときは               
0014.00  *    SFLSIZ の分だけ SFL レコードを出力する。                          
0015.00  *    5250 ハンドラーが SFLSIZ のレコードを読んで                       
0016.00  *    24 行をオーバーした 5250 ストリームを生成する。                   
0017.00  *    コマンド表示行 (DSPEND) は SLNO で表示行を変動させる。            
0018.00  *                                                                      
0019.00  *( 横方向への拡大 )                                                    
0020.00  *    横方向へは CRTEXDSPF によって 80 桁オーバーの項目は               
0021.00  *    HTML キーワードによって書き換えられている。                       
0022.00  *    ( ASNET.USR/QDSPSRC.SMP111FM を参照 )                             
0023.00  *    HTML キー・ワード                                                 
0024.00  *                                                                         
0025.00 D SAVDTA          S              1    DIM(1024)                            
0026.00 D*       読み取り ファイル の FORMAT を外部 DS として READ                     
0027.00 D DATADS        E DS                  EXTNAME(SHOHIN)                      
0028.00 D  DSPDTA                 1   1024                                         
0029.00 D                                     DIM(1024)                            
0030.00  /COPY ASNET.USR/QRPGLESRC,INFDS                                           
0031.00 D*                                                                         
0032.00 D*         -( サブ・ファイル の ファイル 情報 )-                                     
0033.00 D*                                                                         
0034.00 D INFDS           DS                                                       
0035.00 D*( カーソル の行と桁の取り込み )                                              
0036.00 D  LINE                 370    371B 0                                      
0037.00 D*  TOPRRN: 今表示している サブ・ファイル の先頭の RRN                           
0038.00 D  TOPRRN               378    379B 0                                      
0039.00 D* BRRN : サブファイル の レコードNO ( 2 進数 )                                    
0040.00 D  BRRN                 376    377B 0                                      
0041.00                                                                            
0042.00  * コンパイルのときに DEFINE(P5250=1) を指定すれば                         
0043.00  * 5250 ハンドラーを組み込みます。                                         
0044.00  * そうでなければ HTML ハンドラーを組み込みます。                          
0045.00  /IF DEFINED(HTML)                                                         
0046.00 D HANDLER         S             20A   INZ('ASNET.COM/HTMLHLR')             
0047.00  * HTML ハンドラーを組み込みました。                                       
0048.00  /ELSE                                                             
0049.00 D HANDLER         S             20A   INZ('ASNET.COM/P5250HLR')    
0050.00  * 5250 ハンドラーを組み込みました。                               
0051.00  /ENDIF                                                            
0052.00                                                                    
0053.00 D*( プログラム状況データ構造 )                                     
0054.00 D INFDSP         SDS                                               
0055.00 D  PGM                    1     10                                 
0056.00 D                              512A                                
0057.00                                                                    
0058.00  * ハンドラーに渡すパラメータの定義 *                              
0059.00 D HPARM           DS                                               
0060.00 D   STATUS                       1A                                
0061.00 D   HTMTYPE                     10A   INZ('TONAKAI   ')            
0062.00 D   HTM_DIR                    128A   INZ('/AS400-NET.USR/PROJECT/-
0063.00 D                                     PGM112')                     
0064.00 D   INFDSF_PTR                    *   INZ(%ADDR(INFDSF))           
0065.00 D   INFDSP_PTR                    *   INZ(%ADDR(INFDSP))           
0066.00 D   INGID_PTR                     *   INZ(%ADDR(*IN))              
0067.00 D   CFKEY_PTR                     *   INZ(%ADDR(CFKEYS))           
0068.00  /COPY ASNET.USR/QRPGLESRC,CFKEYS                                  
0069.00                                                                    
0070.00 D                 DS                                               
0071.00 D  NHSU                   1     48  0 DIM(12)                      
0072.00 D  NHSU01                 1      4  0           
0073.00 D  NHSU02                 5      8  0           
0074.00 D  NHSU03                 9     12  0           
0075.00 D  NHSU04                13     16  0           
0076.00 D  NHSU05                17     20  0           
0077.00 D  NHSU06                21     24  0           
0078.00 D  NHSU07                25     28  0           
0079.00 D  NHSU08                29     32  0           
0080.00 D  NHSU09                33     36  0           
0081.00 D  NHSU10                37     40  0           
0082.00 D  NHSU11                41     44  0           
0083.00 D  NHSU12                45     48  0           
0084.00                                                 
0085.00 D                 DS                            
0086.00 D  URSU                   1     16  0 DIM(4)    
0087.00 D  URSU01                 1      4  0           
0088.00 D  URSU02                 5      8  0           
0089.00 D  URSU03                 9     12  0           
0090.00 D  URSU04                13     16  0           
0091.00                                                 
0092.00 D*( WORK 日付 YYMMDD データ 構造  )               
0093.00 D DATEDS          DS                            
0094.00 D  SRY                    1      2  0           
0095.00 D  SRYMD                  1      8  0           
0096.00 D  YYMMDD                 3      8  0                               
0097.00 D  YYMM                   3      6  0                               
0098.00 D  MMDD                   5      8  0                               
0099.00 D  YY                     3      4  0                               
0100.00 D  MM                     5      6  0                               
0101.00 D  DD                     7      8  0                               
0102.00                                                                     
0103.00 D GYOSU           S              4S 0                               
0104.00 D YEAR            S              6A   DIM(12)                       
0105.00 D N               S              4S 0                               
0106.00 D M               S              4S 0                               
0107.00 D ST              S              4S 0 INZ(1)                        
0108.00 D SFLPAG          S              4S 0 INZ(10)                       
0109.00 D SFLSIZ          S              4S 0 INZ(20)                       
0110.00                                                                     
0111.00 C*( 初期画面 )                                                      
0112.00 C                   GOTO      STRRED                                
0113.00 C*----------------------------------------------------+             
0114.00 C     START         TAG                                             
0115.00 C                   EXFMT     DSPHEAD                               
0116.00 C*----------------------------------------------------+             
0117.00 C                   SETOFF                                       99 
0118.00 C*( CF03 )- 終了                                                    
0119.00 C     *IN03         IFEQ      *ON                                   
0120.00 C                   SETON                                        LR       
0121.00 C   LR              RETURN                                                
0122.00 C                   GOTO      START                                       
0123.00 C                   END                                                   
0124.00 C*( 実行キー )                                                            
0125.00 C*   : KEYをファイルにセット                                           
0126.00 C*----------------------------------------------------+                   
0127.00 C     SETKEY        KLIST                                                 
0128.00 C                   KFLD                    STRCOD                        
0129.00 C*----------------------------------------------------+                   
0130.00 C*( *LOVAL のセット )                                                     
0131.00 C     STRRED        TAG                                                   
0132.00 C                   MOVE      *BLANKS       SHCODE                        
0133.00 C     SETKEY        SETLL     SHOHIN                                      
0134.00 C                   EXSR      SFLCLR                                      
0135.00 C*   : ファイルの読み取り                                                 
0136.00 C                   Z-ADD     1             TOPRRN                        
0137.00 C                   EXSR      READ                                        
0138.00 C*( サブ・ファイルの表示 )                                                
0139.00 C                   WRITE     DSPEND01                                    
0140.00 C*----------------------------------------------------+                   
0141.00 C     DSPLY         TAG                                                   
0142.00 C                   SETON                                        4142     
0143.00 C                   EXFMT     SFCTL01                                     
0144.00 C                   SETOFF                                       4142   
0145.00 C*----------------------------------------------------+                 
0146.00 C                   SETOFF                                       99     
0147.00 C*( CF03 )- 終了                                                        
0148.00 C     *IN03         IFEQ      *ON                                       
0149.00 C                   SETON                                        LR     
0150.00 C   LR              RETURN                                              
0151.00 C                   ENDIF                                               
0152.00 C*                                                                      
0153.00 C*( CF12 )- 前画面                                                      
0154.00 C     *IN12         IFEQ      *ON                                       
0155.00 C                   SETOFF                                       12     
0156.00 C                   GOTO      START                                     
0157.00 C                   ENDIF                                               
0158.00 C*( ROLL UP )- 次ページ                                                 
0159.00 C     *IN14         IFEQ      *ON                                       
0160.00 C                   EXSR      ROLLUP                                    
0161.00 C                   GOTO      DSPLY                                     
0162.00 C                   ENDIF                                               
0163.00 C*                                                                      
0164.00 C*( 実行キー )                                                          
0165.00 C                   GOTO      DSPLY                                     
0166.00 C*                                                                      
0167.00 C     END           TAG                                                 
0168.00 C******************************************************                 
0169.00 C     *INZSR        BEGSR                                               
0170.00 C******************************************************                 
0171.00 C*  初期 サイクル のみの実行                                                
0172.00 C   U8              SETON                                        88     
0173.00 C*( DS の数字 フィールド の クリヤー )                                          
0174.00 C                   CLEAR                   SFREC01                     
0175.00 C                   MOVE      08            STRGYO            2 0       
0176.00 C                   MOVE      19910101      SRYMD                       
0177.00 C                   MOVE      910101        DATE              6 0       
0178.00 C                   Z-ADD     0             SHTANK                      
0179.00  * U8: AutoWeb 上での実行                                               
0180.00 C     *INU8         IFEQ      *ON                                       
0181.00 C                   EVAL      GYOSU = SFLSIZ                            
0182.00 C                   Z-ADD     10            SLNO                        
0183.00  * 5250 エミュレータ上での実行                                          
0184.00 C                   ELSE                                                
0185.00 C                   EVAL      GYOSU = SFLPAG                            
0186.00 C                   Z-ADD     1             SLNO                        
0187.00 C                   ENDIF                                               
0188.00 C                   SETON                                        11     
0189.00 C                   SETOFF                                       11     
0190.00 C                   ENDSR                                               
0191.00 C******************************************************                 
0192.00 C     READ          BEGSR                                                
0193.00 C******************************************************                  
0194.00 C                   MOVE      *BLANKS       EOF               1          
0195.00 C                   SETOFF                                       5945    
0196.00 C                   Z-ADD     0             DSPREC                       
0197.00 C*( データ・ベースの検索 )                                               
0198.00 C*----------------------------------------------------+                  
0199.00 C*          EQLKEY    KLIST                           |                  
0200.00 C*----------------------------------------------------+                  
0201.00 C     RTNRED        TAG                                                  
0202.00 C*                                                                       
0203.00 C     TOPRRN        ADD       GYOSU         ENDRRN            4 0        
0204.00 C                   SUB       1             ENDRRN                       
0205.00 C*                                                                       
0206.00 C     TOPRRN        DO        ENDRRN        RRN1              4 0        
0207.00 C     AGAIN         TAG                                                  
0208.00 C                   SETOFF                                       50      
0209.00 C                   READ      SHOHIN                                 50  
0210.00 C     SHCODE        IFEQ      'NV-SX10   '                               
0211.00 C                   SETOFF                                       11      
0212.00 C                   ENDIF                                                
0213.00 C*( 終り )                                                               
0214.00 C     *IN50         IFEQ      *ON                                        
0215.00 C                   MOVE      'E'           EOF                          
0216.00 C                   SETOFF                                       1129  
0217.00 C                   SETON                                        45    
0218.00 C                   GOTO      REDEND                                   
0219.00 C                   ELSE                                               
0220.00 C*( CHECK  : READ した レコード の チエック )                                 
0221.00 C                   EXSR      CHECK                                    
0222.00 C*( 行 NO に入れる )                                                   
0223.00 C                   MOVE      RRN1          GYO                        
0224.00 C*( サブファイル へ更新 )                                                   
0225.00 C*----------------------------------------------------+                
0226.00 C                   WRITE     SFREC01                                  
0227.00 C*----------------------------------------------------+                
0228.00 C  N59              Z-ADD     RRN1          DSPREC                     
0229.00 C  N59              SETON                                        59    
0230.00 C                   Z-ADD     RRN1          LSTRRN            4 0      
0231.00 C                   ENDIF                                              
0232.00 C                   ENDDO                                              
0233.00 C     REDEND        TAG                                                
0234.00 C     DSPREC        IFEQ      *ZEROS                                   
0235.00 C                   SETON                                        89    
0236.00 C     TOPRRN        SUB       1             DSPREC                     
0237.00 C                   ENDIF                                              
0238.00 C                   ENDSR                                              
0239.00 C******************************************************                
0240.00 C     CHECK         BEGSR                                             
0241.00 C******************************************************               
0242.00 C*( 明細チエック )                                                    
0243.00 C     DSPREC        IFEQ      *ZEROS                                  
0244.00 C                   Z-ADD     TOPRRN        DSPREC                    
0245.00 C                   ENDIF                                             
0246.00 C                   Z-ADD     0             NHSU                      
0247.00 C                   SETOFF                                       90   
0248.00 C     SHCODE        CHAIN     NENKAN                             90   
0249.00 C*                                                                    
0250.00 C     SHSCOD        CHAIN     HINSHU                             99   
0251.00 C*( 年月のデータをセットする )                                        
0252.00 C                   Z-ADD     ST            M                         
0253.00 C     1             DO        4             N                         
0254.00 C                   EVAL      URSU(N) = NHSU(M)                       
0255.00 C                   ADD       1             M                         
0256.00 C                   ENDDO                                             
0257.00 C     CHKEND        ENDSR                                             
0258.00 C******************************************************               
0259.00 C     SFLCLR        BEGSR                                             
0260.00 C******************************************************               
0261.00 C*( サブファイル の クリヤー )                                                 
0262.00 C*----------------------------------------------------+               
0263.00 C                   SETON                                        44   
0264.00 C                   WRITE     SFCTL01                                   
0265.00 C                   SETOFF                                       444589 
0266.00 C*----------------------------------------------------+                 
0267.00 C                   ENDSR                                               
0268.00 C******************************************************                 
0269.00 C     INZVAR        BEGSR                                               
0270.00 C******************************************************                 
0271.00 C*( 初期値 )                                                            
0272.00 C                   ENDSR                                               
0273.00 C******************************************************                 
0274.00 C     ROLLUP        BEGSR                                               
0275.00 C******************************************************                 
0276.00 C     EOF           IFEQ      'E'                                       
0277.00 C                   SETON                                        6199   
0278.00 C   99              Z-ADD     LSTRRN        DSPREC                      
0279.00 C   99              GOTO      UPEND                                     
0280.00 C                   END                                                 
0281.00 C     ENDRRN        ADD       1             TOPRRN                      
0282.00 C                   EXSR      READ                                      
0283.00 C     UPEND         ENDSR  


                                          

[解説]

これが5250ハンドラーを埋め込んだプログラムであり24*80の画面制約を取り払って
任意の大きさの画面表示を可能にしています。

5250ハンドラーとは

0003.00 FSMP111FM  CF   E             WORKSTN                                   
0004.00 F                                     EXTFILE('QTROBJ/SMP111FM')        
0005.00 F                                     HANDLER(HANDLER:HPARM)            
0006.00 F                                     SFILE(SFREC01:RRN1)               
0007.00 F                                     INFDS(INFDSF) 

 

0005.00 F                                     HANDLER(HANDLER:HPARM)

 

の部分です。

  
0058.00  * ハンドラーに渡すパラメータの定義 *                              
0059.00 D HPARM           DS                                               
0060.00 D   STATUS                       1A                                
0061.00 D   HTMTYPE                     10A   INZ('TONAKAI   ')            
0062.00 D   HTM_DIR                    128A   INZ('/AS400-NET.USR/PROJECT/-
0063.00 D                                     PGM112')                     
0064.00 D   INFDSF_PTR                    *   INZ(%ADDR(INFDSF))           
0065.00 D   INFDSP_PTR                    *   INZ(%ADDR(INFDSP))           
0066.00 D   INGID_PTR                     *   INZ(%ADDR(*IN))              
0067.00 D   CFKEY_PTR                     *   INZ(%ADDR(CFKEYS))           
0068.00  /COPY ASNET.USR/QRPGLESRC,CFKEYS

の記述も5250ハンドラーへ渡す記述で必要な部分です。
これらを組み込むことは複雑なように見えますが
実際は ADD5259HLR (5250ハンドラーの追加)というコマンドが用意されていて

                      5250 ハンドラーの追加  (ADD5250HLR)                     
                                                                              
 選択項目を入力して,実行キーを押してください。                               
                                                                              
FROM ソース・ファイル  . . . . . > QRPGLESRC      名前 , QRPGSRC, QRPGLESRC...
   ライブラリー  . . . . . . . . >   QTRSRC       名前 , *LIBL, *CURLIB       
FROM メンバー  . . . . . . . . . > SMP111         名前                        
TO ファイル  . . . . . . . . . . > QRPGLESRC     QRPGLESRC, QCBLLESRC         
   ライブラリー  . . . . . . . . >   R610SRC      名前 , *LIBL, *CURLIB       
TO メンバー  . . . . . . . . . .   *FROMMBR       名前 , *FROMMBR             
 レコードの置き換えまたは追加    > *REPLACE      *NONE, *ADD, *REPLACE        
 コンパイル・プロセッサー  . . .   *NO           *NO, *YES                    

                                                                        終り
F3= 終了    F4=プロンプト   F5= 最新表示    F10= 追加のパラメーター            
F12= 取り消し            F13= この画面の使用法    F24= キーの続き           

[解説]

このコマンド ADD5250HLRによって既存のRPGソースに5250ハンドラーの記述を
組み込んだ新しいRPGソースを生成することができます。
元になるRPGは ILE-RPG(RPG iV)である必要はなく RPG IIIでも RPG IIであってもよいのです。
RPGソースは自動的にILE-RPGに変換されるからです。
もちろんIBMによる変換ミスも ADD5250HLR はカバーしています。

つまりはハンドラーに関する知識は特に必要ないしハンドラーであるからといって
特殊な書き方に変える必要は全くありません。
他のWeb化製品のほとんどはその製品に見合った特殊なコーディングが必要です。
それでは処理は複雑になりそれまでの自然なRPGとのむ互換性もなくなります。

5250ハンドラーではDSPFのSFLレコードの処理やRRN, READC, CHAIN, WRITE, UPDATE, DELETE など
すべてそのままで使用することができますしカーソルのセットやカーソル位置の詠み込みもできます。
HTMLインターフェースでエンド・ユーザーが操作しているカーソルの位置さえ取得することが
できるのです。

このように当たり前の機能を当たり前に再現する機能が5250ハンドラーには備わっています。
お客さまが導入されてから期待通りに動作しなくてお客さまを失望させることはありません。
5250ハンドラーは今まで24*80の画面制約に悩まされていたIBMユーザーにとって
画期的なことであり世界でも24*80の画面制約を打ち払ったのは世界でも
日本の5250ハンドラーだけです。

5250ハンドラーは既に多くのお客さまでかなり高度な適用業務に組み込まれて稼動しており
開発者の満足を得ています。
Web化のためにCGIやJavaなどの手段が必要とされたのはすべて24*80の画面制約があったからです。
ましてや海外からのDELPHIや特殊で難しい開発プラットフォームがなぜ要るのでしょうか?
Web化と言えば難しい他の言語が必要であるという迷信はもうはるか昔に終わっています。

24*80の制約がなければ特別な開発言語を使用する必要は全くありません。
いつものとおりの記述だけでよいのですから。
5250ハンドラーはまさしく発明であり日本のIBM開発者の歴史を変えました。

5250ハンドラーのアーキテクチャーは米国IBMが発表する2年も前から㈱オフィスクアトロでは
この機能を開発していました。
IBMより2年も先を行っていたのです。
5250ハンドラーをぜひお試しください。
IBM iの使用感覚が劇的に変わることをお約束いたします。