AutoWeb

31. 画像イメージの表示

AutoWeb画像イメージを表示することはできますか?
という質問は以前よくありましたが
最近は当たり前と思われているのかあまりこの質問はありません。
しかしこれからWeb化しようという人にとっては興味のあるところで
あると思います。

画像イメージを表示するのは比較的簡単で

①IFSに画像イメージを配置しておく。

②IMG タグで画像イメージを出力する

通常の5250画面であれば DSPFDDSキー・ワードに HTMLというタグがあります。
このHTMLキー・ワードを使えばグラフィックをサポートする表示装置に
HTMLを出力することができる、ということにIBMのマニュアル上では
なっているのですが

 ・グラフィックをサポートしている5250エミュレータはほとんど
  存在していない。

SFLレコード上では HTMLキー・ワードは使用できない。(仕様上の制約)

という条件がありほとんど使い物にはなりません。
AutoWebではいろいろな方法でHTMLの表示をサポートしていますが
一番簡単な方法はフィールドのテキストに *HTML という文字列を入れておくことです。
AutoWebは *HTMLの記述があるフィールド値はHTMLであると見なして
HTMLとしてブラウザに出力します。

この結果としてSFL上にも画像データを出力することができるようになっています。

[例] 部品在庫の照会 PGM209

画像をクリックすると次のように拡大して表示されます。

[DSPFソース]

ソースはこちらで

0001.00      A*%%TS  SD  20080115  153521  QTR         REL-V5R4M0  5722-WDS          
0002.00      A*-----------------------------------------------*                      
0003.00      A*   サブファイル表示     PGM209FM               *                      
0004.00      A*                                                                      
0005.00      A*      部品在庫の照会                                                  
0006.00      A*                                                                      
0007.00      A*      SFL レコードに HTML を表示するサンプル                          
0008.00      A*      CRTEXDSPF QTROBJ/PGM209FM SRCFILE(QTRSRC/QDSPSRC9               
0009.00      A*      AUT(*ALL)                                                       
0010.00      A*-----------------------------------------------*                      
0011.00      A*%%EC                                                                  
0012.00      A                                      DSPSIZ(27 132 *DS4)              
0013.00      A                                      MSGLOC(27)                       
0014.00      A                                      PRINT                            
0015.00      A          R SFREC01                   SFL                              
0016.00      A*%%TS  SD  20080115  153521  QTR         REL-V5R4M0  5722-WDS          
0017.00      A                                      TEXT(' SFL明細行 ')           
0018.00      A*------------------------------------------------*                     
0019.00      A*( 1 段目の表示 )                                                      
0020.00      A            GYO            4A  O  4  2TEXT(' № ')                     
0021.00      A            BZBHCD        12A  O  4  7TEXT(' 部品コード ')             
0022.00      A            BHNAME        20O  O  4 20TEXT(' 部品名 ')                 
0023.00      A            BZSURY         7Y 0O  4 42TEXT(' 在庫数量 ')               
0024.00      A                                      EDTCDE(J)                   
0025.00      A            BZHATZ         7Y 0O  4 54TEXT(' 発注残数 ')          
0026.00      A                                      EDTCDE(J)                   
0027.00      A*( 2 段目の表示 )                                                 
0028.00      A*    画像の URL を SFL レコードの下の段に表示して実際に表示する   
0029.00      A*    位置は上の段の右端に POS で移動して表示します。              
0030.00      A            IMGTAG       120A  O  5  2TEXT('POS(4,70) *HTML')     
0031.00      A*                                                                 
0032.00      A          R SFCTL01                   SFLCTL(SFREC01)             
0033.00      A*%%TS  SD  20080115  151505  QTR         REL-V5R4M0  5722-WDS     
0034.00      A                                      SFLSIZ(0006)                
0035.00      A                                      SFLPAG(0005)                
0036.00      A                                      TEXT(' SFL制御見出 ')    
0037.00      A                                      OVERLAY                     
0038.00      A  41                                  SFLDSPCTL                   
0039.00      A  42                                  SFLDSP                      
0040.00      A  43                                  SFLINZ                      
0041.00      A                                      SFLRNA                      
0042.00      A  44                                  SFLCLR                      
0043.00      A  45                                  SFLEND(*SCRBAR)             
0044.00      A  46                                  SFLDLT                      
0045.00      A                                      ROLLUP(14 ' 次頁 ')         
0046.00      A                                      ROLLDOWN(15 ' 前頁 ')       
0047.00      A N88                                  SFLFOLD(CF11)               
0048.00      A*N88                                  SFLDROP(CF11)             
0049.00      A                                      CF03(03 ' 終了 ')         
0050.00      A                                      SETOF(99)                 
0051.00      A                                      BLINK                     
0052.00      A                                  2  2' 部品在庫の照会 '        
0053.00      A                                      DSPATR(HI)                
0054.00      A*( 明細行の桁見出し )                                           
0055.00      A                                  3  2' № '                    
0056.00      A                                      DSPATR(HI)                
0057.00      A                                  3  7' 部品コード '            
0058.00      A                                      DSPATR(HI)                
0059.00      A                                  3 21' 部品名 '                
0060.00      A                                      DSPATR(HI)                
0061.00      A                                  3 42' 在庫数量 '              
0062.00      A                                      DSPATR(HI)                
0063.00      A                                  3 54' 発注残数 '              
0064.00      A                                      DSPATR(HI)                
0065.00      A  88                              3 66' 画像イメージ '          
0066.00      A                                      DSPATR(HI)                
0067.00      A          R DSPEND01                                            
0068.00      A                                      TEXT(' 機能キーの表示 ')  
0069.00      A*%%TS  SD  19930612  144015  QUATTRO     REL-V2R1M0  5738-PW1   
0070.00      A*----------------------------------------------------*          
0071.00      A                                      OVERLAY                   
0072.00      A                                      CF03(03 ' 終了 ')
0073.00      A                                 23  2'F3= 終了 '      
0074.00      A                                      COLOR(BLU)   


     

[コンパイル]

CRTDSPF FILE(QTROBJ/PGM209FM) SRCFILE(QTRSRC/QDSPSRC) LVLCHK(*NO) AUT(*ALL)

[RPGソース]

ソースはこちらから

0001.00 H DFTNAME(PGM209) DATEDIT(*YMD/)                                            
0002.00 F**********  部品在庫の照会  ******************************************     
0003.00 FPGM209FM  CF   E             WORKSTN                                       
0004.00 F                                     SFILE(SFREC01:RRN1)                   
0005.00 F                                     INFDS(INFDS)                          
0006.00 F                                     INFSR(*PSSR)                          
0007.00 FBHZAIKO   IF   E           K DISK                                          
0008.00 FBUHINM    IF   E           K DISK                                          
0009.00 FBHIMAGE   IF   E           K DISK                                          
0010.00 F**********************************************************************     
0011.00 D INFDS           DS                                                        
0012.00 D  NUM_COLS             154    155B 0                                       
0013.00 D  TOPRRN               378    379B 0                                       
0014.00 D  BRRN                 376    377B 0                                       
0015.00 D  LINE_NUM                      8A   OVERLAY(INFDS:21)                     
0016.00 D  CPFID                         7A   OVERLAY(INFDS:40)                     
0017.00 D  PGMID                        10A   OVERLAY(INFDS:334)                    
0018.00 D  EXCP_ID                       4A   OVERLAY(INFDS:171)                    
0019.00 D  EXCP_DATA                    80A   OVERLAY(INFDS:91)                     
0020.00 D  PROC_MOD                     10A   OVERLAY(INFDS:344)                    
0021.00                                                                             
0022.00 D BEG_IMG         C                   CONST('')         
0026.00 D VALUE           S            512A                                               
0027.00                                                                                   
0028.00 C                   EXSR      SFLCLR                                              
0029.00 C                   EXSR      READ                                                
0030.00 C                   Z-ADD     1             TOPRRN                                
0031.00 C*----------------------------------------------------                            
0032.00 C     DSPLY         TAG                                                           
0033.00 C                   WRITE     DSPEND01                                            
0034.00 C                   SETON                                        4142             
0035.00 C                   EXFMT     SFCTL01                                             
0036.00 C                   SETOFF                                       4142             
0037.00 C*----------------------------------------------------                            
0038.00 C                   SETOFF                                       99               
0039.00 C*( CF03 )- 終了                                                                  
0040.00 C     *IN03         IFEQ      *ON                                          CF03   
0041.00 C                   SETON                                        LR               
0042.00 C                   RETURN                                                        
0043.00 C                   END                                                           
0044.00 C*( 実行キー )                                                                    
0045.00 C                   GOTO      DSPLY                                               
0046.00 C*****************************************************                            
0047.00 C     *INZSR        BEGSR                                                         
0048.00 C*****************************************************                                    
0049.00 C     NUM_COLS      IFNE      132                                                         
0050.00 C     'DSPSIZ ERR'  DSPLY                   ANS               1                           
0051.00 C                   ENDIF                                                                 
0052.00 C*( U8: HTML の表示 )                                                                     
0053.00 C   U8              SETON                                        0888                     
0054.00 C*( 引用符 )                                                                              
0055.00 C                   BITOFF    '06'          QUOT              1                           
0056.00 C                   BITON     '123457'      QUOT                                          
0057.00 C                   ENDSR                                                                 
0058.00 C*****************************************************                                    
0059.00 C     READ          BEGSR                                                                 
0060.00 C*****************************************************                                    
0061.00 C     1             DO        *HIVAL        RRN1              4 0          RRN1=1-*HIVAL  
0062.00 C                   SETOFF                                       50                       
0063.00 C                   READ      BHZAIKO                                50                   
0064.00 C   50              LEAVE                                                                 
0065.00 C                   MOVE      RRN1          GYO                                           
0066.00 C                   SETOFF                                       99                       
0067.00 C     BZBHCD        CHAIN     BUHINM                             99                       
0068.00 C*   画像イメージの追加                                                                   
0069.00 C                   EXSR      ADD_IMAGE                                                   
0070.00 C*                                                                                        
0071.00 C*----------------------------------------------------+                                   
0072.00 C                   WRITE     SFREC01                                      |   
0073.00 C*----------------------------------------------------+                        
0074.00 C                   END                                                        
0075.00 C                   ENDSR                                                      
0076.00 C*****************************************************                         
0077.00 C     ADD_IMAGE     BEGSR                                                      
0078.00 C*****************************************************                         
0079.00 C                   SETOFF                                       99            
0080.00 C     BZBHCD        CHAIN     BHIMAGE                            99            
0081.00 C     *IN99         IFEQ      *OFF                                             
0082.00 C     BEG_IMG       CAT(P)    BMIMAGE:0     VALUE                              
0083.00 C                   CAT       END_IMG:0     VALUE                              
0084.00 C                   MOVEL(P)  VALUE         IMGTAG                             
0085.00 C                   END                                                        
0086.00 C                   ENDSR                                                      
0087.00 C*****************************************************                         
0088.00 C     SFLCLR        BEGSR                                                      
0089.00 C*****************************************************                         
0090.00 C*----------------------------------------------------+                        
0091.00 C                   SETON                                        44        |   
0092.00 C                   WRITE     SFCTL01                                          
0093.00 C                   SETOFF                                       44        |   
0094.00 C*----------------------------------------------------+                        
0095.00 C                   ENDSR                                                      
0096.00 C******************************************************         
0097.00 C     *PSSR         BEGSR                                       
0098.00 C******************************************************         
0099.00 C     'MSGID='      CAT(P)    PGMID:0       DSP40            40 
0100.00 C     DSP40         DSPLY                   ANS               1 
0101.00 C                   ENDSR     '*CANCL'     


                     

[コンパイル]

CRTBNDRPG PGM(QTROBJ/PGM209) SRCFILE(QTRSRC/QRPGLESRC) DFTACTGRP(*NO) ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL)

[解説]

部品マスター(BUHINM)に対応する部品イメージ・ファイルには部品イメージが保管されているIFSの場所を
示す情報が次のように入っています。

行    ....+....1....+....2....+....3....+....4....+....5....+....6.
        部品コード    イメージ保管場所                              
000001 BUH-001       /AS400-NET.USR/IMG/BIKE1.JPG                   
000002 BUH-002       /AS400-NET.USR/IMG/BKTTR7.JPG                  
000003 BUH-003       /AS400-NET.USR/IMG/DANCER.JPG                  
000004 BUH-004       /AS400-NET.USR/IMG/KICKBD2.GIF                 
000005 BUH-005       /AS400-NET.USR/IMG/PL1000.JPG                  
000006 BUH-006       /AS400-NET.USR/IMG/RAILCAR.JPG                 
000007 DIS-001       /AS400-NET.USR/IMG/RAILCAR.JPG                 
000008 DIS-002       /AS400-NET.USR/IMG/SHP2000.JPG                 
000009 DIS-003       /AS400-NET.USR/IMG/SSN125.JPG                  
****** ********  報告書の終わり  ********                           

これをRPGでは

というHTMLタグに作り上げて出力します。

よくお客さまからの質問にあるのはIFSでなくても社内の別のPCサーバーに画像イメージを
配置して表示することができますか?
という質問があります。
答えは「できます」です。

/QNTCという名前の特殊なディレクトリーがありますがここから突き抜けて社内の別のPCサーバーの
共有フォルダーを参照することができます。
そのPCサーバーにはHTTPサーバー(=Apacheなど)起動しておく必要はありません。
/QNTCはIBM iに標準的に用意されているディレクトリーであり
PTFも不要でどのi5/OSバージョンでもお使いになれます。