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バージョンでもお使いになれます。