AutoWebで画像イメージを表示することはできますか?
という質問は以前よくありましたが
最近は当たり前と思われているのかあまりこの質問はありません。
しかしこれからWeb化しようという人にとっては興味のあるところで
あると思います。
画像イメージを表示するのは比較的簡単で
①IFSに画像イメージを配置しておく。
②IMG タグで画像イメージを出力する
通常の5250画面であれば DSPFのDDSキー・ワードに 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バージョンでもお使いになれます。
