1 / 30

サンプルプログラム(得意先照会)

1.@WEBツールを使用せずに作成. 2.@WEBツールを使用して作成. 3.@WEBツールのHTML作成補助   ツールを使用して作成. iweb RPG による Web アプリケーション構築. サンプルプログラム(得意先照会). 01. 得意先照会の動き. iwebRPGの簡単な処理の流れ. 通常、キー画面・明細画面の表示という処理をRPGで作成する際、 1本のプログラムで全て処理されますが、WEBRPGの場合、 キー画面表示用プログラム・明細画面表示用プログラムと、 2本に分けなければなりません。

krikor
Télécharger la présentation

サンプルプログラム(得意先照会)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 1.@WEBツールを使用せずに作成 2.@WEBツールを使用して作成 3.@WEBツールのHTML作成補助   ツールを使用して作成 iweb RPG による Web アプリケーション構築 サンプルプログラム(得意先照会) 01

  2. 得意先照会の動き

  3. iwebRPGの簡単な処理の流れ 通常、キー画面・明細画面の表示という処理をRPGで作成する際、 1本のプログラムで全て処理されますが、WEBRPGの場合、 キー画面表示用プログラム・明細画面表示用プログラムと、 2本に分けなければなりません。 それはプログラムからWEB表示処理させるときに、HTTPサーバは 単独処理として処理が行われるので、次の処理を行う場合は 別プログラムを呼び出さなくてはならないのです。 よって、処理画面が増えるたびにプログラム本数も合わせて 増えることになります。 RPGプログラムからWEB画面表示させる場合は、『標準出力』 という特別な領域にデータを送る必要があります。これは、 IBM標準のサービスプログラムで処理を行うことが可能です。 WEB画面からRPGプログラムへデータを受け取る場合は、 『環境変数』と『標準入力』という2つの特別な領域から データを受け取ることになります。これも、 IBM標準のサービスプログラムで処理を行うことが可能です。 『環境変数』で受け取るか『標準入力』で受け取るかは、 HTML側の命令文で決まります。 『環境変数』は、get メソッドを指定します。 データはURLの後ろについてきます。 Ex. /cgi-bin/AP0020.PGM?TOKUCD=000001 通常、キーワードを送って結果を返すような処理の場合に使用されます。 『標準入力』は、postメソッドを指定します。 送信範囲のWEBのデータそのものが送られます。 通常、メッセージの書き込みや、新規データの登録などに使用されます。 今回は『環境変数』を使って処理を行います。 WEBブラウザ プログラム HTTPサーバ キー画面表示処理PGM PGM01 HTML キー画面 標準出力処理 ① <FORM name="FORM1" method="GET" ・・・ ② 明細画面表示処理PGM HTML 明細画面 PGM02 環境変数取得処理 ③ 標準出力処理 全ての処理がHTTPサーバを介して処理が行われる。 <FORM name="FORM1" method="GET" action="HTTP://WWW1.AXEL.NE.JP/CGI-BIN/AP0020.PGM"> この部分を“POST”にすると標準入力でデータを受け取ることが出来ます。 02

  4. プログラム解説 03

  5. 1.@WEBツールを使用せずに プログラムを作成 04

  6. AS400 CGIプログラム 処理の流れ このプログラムはブラウザから6桁の得意先コードを受け取り、AS400上の得意先マスタから得意先名・住所を取得し、ブラウザに表示します。得意先マスタになかった場合は、エラー表示します。 ASCII EBCDIC 得意先コードを入力し実行 ユーザー作成のプログラム(ILERPG) IBM提供のサービスプログラム キー画面表示 HTTPサーバ (Common Gateway Interface) ① 標準出力 環境変数取得 CALLB QtmhWrStout ② QtmhGetEnv 明細画面表示 ② 環境変数 CALLB QtmhGetEnv 標準入力 取得したコードで得意先マスタを読む 入力結果 ③ QtmhRdStin CHAIN TOKUI2R 出力準備 ① 標準出力 標準出力 ⑤ ④ QtmhWrStout CALLB QtmhWrStout 得意先マスタTOKUI2 得意先コード得意先名得意先住所 05

  7. @WEBツールを使用せずにCGIプログラムを作成(キー画面)@WEBツールを使用せずにCGIプログラムを作成(キー画面) キー画面 ************************************************************************** * データ構造(DS) ************************************************************************** D* コンパイル時配列 DHTM S 80 DIM(52) PERRCD(1) CTDATA D* 改行コード DNL C x'15' * APIの定義 * D* 標準出力API 'QtmhWrStout' 用 DOUT S 2048A INZ DOUTLN S 9B 0 INZ(2048) * * ユーザースペースエラーコード /COPY QSYSINC/QRPGLESRC,QUSEC ************************************************************************** * メイン ************************************************************************** * ◆HTML文作成◆ C DO 52 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) * ◆標準出力◆ C CALLB 'QtmhWrStout' C PARM OUT C PARM OUTLN C PARM QUSEC C CLEAR OUT C ENDDO * * ◆終了◆ C SETON LR C RETURN HTML文は、コンパイル時配列を使って記述します。標準出力に書き出すデータの1行あたりの長さは、 120バイト以下、行の最後には EBCDIC の 改行文字を入れるという条件があります。 IBM提供のサービスプログラムを使用します。 QtmhWrStoutは標準出力するAPIです。このプログラムを介してHTMLがWEB上に表示されます。 “OUT”パラメータには、配列にて記述されているHTML文を セットします。 “OUTLIN”パラメータは標準出力の実際の文字列の長さを定義します。ここでは2048バイトで設定しています。 “QUSEC”パラメータには /COPY にて QSYSINC/QRPGLESRC を 取り込んでください。 “OUT”パラメータにHTML文をセットしていきます。 “OUT”パラメータにデータをセットし、標準出力の APIをCALLBしてHTML文を書き出します。 コンパイル時配列は次頁 06

  8. @WEBツールを使用せずにCGIプログラムを作成(キー画面の続き)@WEBツールを使用せずにCGIプログラムを作成(キー画面の続き) コンパイル時配列の内容 ** CTDATA HTML *************************************************************80 CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 </TITLE> </HEAD> <BODY bgcolor="lightGrey"> <FORM name="FORM1" method="GET" action="HTTP://WWW1.AXEL.NE.JP/CGI-BIN/AP0040.PGM"> <!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="White"> 得意先照会 </FONT></B></P> </TD></TR> </TABLE> </CENTER><BR><BR> <!------- ボディの表示 --> <CENTER> <TABLE border="0"> <TR> <TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="TOKUCD" maxlength="6"></TD> </TR> </TABLE> </CENTER><BR><BR> <CENTER> <TABLE border="0"> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR> </TABLE> </CENTER> </FORM> </BODY> </HTML> ここで“GET”と記述することで環境変数としてCGIプログラムにデータが渡されます。 ボタンを押した後のCGIプログラムを 指定します。 <FORM> ~ </FORM> の間にある <INPUT>タグで指定したフィールドの変数値が渡されます。ここでは、“TOKUCD”の値が渡されます。 (イメージ:TOKUCD=入力した値) 07

  9. @WEBツールを使用せずにCGIプログラムを作成(明細画面)@WEBツールを使用せずにCGIプログラムを作成(明細画面) HTML文は、コンパイル時配列を使って記述します。標準出力に書き出すデータの1行あたりの長さは、 120バイト以下、行の最後には EBCDIC の 改行文字を入れるという条件があります。 明細画面 3-1 * 得意先マスター FTOKUI2L01 IF E K DISK PREFIX(TK) ************************************************************************** * データ構造(DS) ************************************************************************** D* コンパイル時配列 DHTM S 80 DIM(46) PERRCD(1) CTDATA D* 改行コード DNL C x'15' * 外部プログラムの定義 * APIの定義 * * 環境変数API 'QtmhGetEnv' 用 DENBUFF S 2048A INZ DENBUFFLN S 9B 0 INZ(2048) DENACTLN S 9B 0 INZ DENVARNAME S 20A INZ('QUERY_STRING') DENVARLN S 9B 0 INZ(12) * 標準出力API 'QtmhWrStout' 用 DOUT S 2048A INZ DOUTLN S 9B 0 INZ(2048) * * ユーザースペースエラーコード /COPY QSYSINC/QRPGLESRC,QUSEC ************************************************************************** * メイン ************************************************************************** * ◆HTML文作成◆ C DO 22 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) C ENDDO * * ◆標準出力◆ C CALLB 'QtmhWrStout' C PARM OUT C PARM OUTLN C PARM QUSEC C CLEAR OUT * * ◆環境変数より入力情報取得◆ C CALLB 'QtmhGetEnv' C PARM ENBUFF C PARM ENBUFFLN C PARM ENACTLN C PARM ENVARNAME C PARM ENVARLN C PARM QUSEC IBM提供のサービスプログラムを使用します。 QtmhGetEnvは環境変数を取得するAPIです。このプログラムにより、変数項目を取得します。 “ENBUFF“パラメータは、環境変数が保管されます。 “ENBUFFLN”パラメータは、上記パラメータの長さを指定します。      ここでは2048バイトで設定しています。 “ENACTLN”パラメータは環境変数の実際の文字列の長さが入ってきます。 “ENVARNAME”パラメータは、取得する環境変数の名前をセットします。      環境変数QUERY_STRINGを取得するので固定値でセットします。 “ENVARLN”パラメータは、上記環境変数の名前の長さをセットします。     長さは12桁なのでこれも固定でセットします。 “QUSEC”パラメータには /COPY にて QSYSINC/QRPGLESRC を 取り込んでください。 QtmhWrStoutは標準出力するAPIです。このプログラムを介してHTMLがWEB上に表示されます。 “OUT”パラメータには、配列にて記述されているHTML文を 2048バイトまでセットします。 “OUTLIN”パラメータは標準出力の実際の文字列の長さを定義します。     ここでは2048バイトで設定しています。 “QUSEC”パラメータには /COPY にて QSYSINC/QRPGLESRC を 取り込んでください。 タイトル、見出しなどの共通表示部分を先に書き出しておきます。 環境変数取得のAPIにてデータを取得します。 08

  10. @WEBツールを使用せずにCGIプログラムを作成(明細画面の続き)@WEBツールを使用せずにCGIプログラムを作成(明細画面の続き) 明細画面 3-2 * * ◆データのデコード◆ * ------------------------------------------------------------ * アスキーコードデータからEBCDICコードデータに変換する * ------------------------------------------------------------ C MOVEL(P) ENBUFF QCHR C Z-ADD ENACTLN QLEN C MOVEL(P) '5035' CP C CALLB '#DECODE' C PARM QCHR 2048 C PARM QLEN 5 0 C PARM CP 4 C MOVEL(P) QCHR W_BUFF 2048 * * ◆変数の取得◆ * ------------------------------------------------------------ * EBCDICコードデータとキーを渡し、変数を取得する * ------------------------------------------------------------ * 得意先コード C MOVEL(P) W_BUFF ENBUFF C MOVEL(P) 'TOKUCD' KEY C CALLB '#EXT_KVAL' C PARM ENBUFF 2048 C PARM KEY 20 C MOVEL(P) ENBUFF W_TOKUCD 10 * * ◆得意先マスターより情報を取得◆ C W_TOKUCD CHAIN TOKUI2R 90 C IF *IN90 = *ON C EXSR #ERR C ELSE C EXSR #OK C ENDIF * * ◆標準出力◆ C CALLB 'QtmhWrStout' C PARM OUT C PARM OUTLN C PARM QUSEC * * ◆終了◆ C SETON LR C RETURN デコードプログラムにて(今回は@WEBツールを使用) アスキーコードからEBCDICコードに 変換をかけます。 変数取得プログラムにて(今回は@WEBツールを使用) 得意先コードを取得します。 取得した得意先コードより、得意先マスタを読み込み データセットの処理を行います。 標準出力APIにてWEBに書き出します。 09

  11. @WEBツールを使用せずにCGIプログラムを作成(明細画面の続き)@WEBツールを使用せずにCGIプログラムを作成(明細画面の続き) 明細明細画面 3-3 ************************************************************** * エラー用HTML文作成 ************************************************************** C #ERR BEGSR * * ◆HTML文作成◆ C 37 DO 46 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) C ENDDO * C ENDSR ************************************************************** * HTML文作成 ************************************************************** C #OK BEGSR * * ◆HTML文作成◆ C 23 DO 28 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) C ENDDO * 得意先名 C EVAL OUT = %TRIM(OUT) + %TRIM('<TD>') + C %TRIM(TKTOKNAM) + C %TRIM('</TD>') + %TRIM(NL) * 得意先住所 C EVAL OUT = %TRIM(OUT) + %TRIM('<TD>') + C %TRIM(TKTOKADR) + C %TRIM('</TD>') + %TRIM(NL) * C 29 DO 35 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) C ENDDO * C ENDSR 得意先マスターが読めなかった場合、 エラーメッセージを表示するHTML文を 作成します。 得意先マスターが読めた場合、 得意先名と住所を表示させるHTML文を 作成します。 コンパイル時配列は次頁 10

  12. @WEBツールを使用せずにCGIプログラムを作成(明細画面の続き)@WEBツールを使用せずにCGIプログラムを作成(明細画面の続き) コンパイル時配列の内容 ** CTDATA HTML *************************************************************** CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 </TITLE> </HEAD> <BODY bgcolor="lightGrey"> <!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="white"> 得意先照会 </FONT></B></P> </TD></TR> </TABLE> </CENTER><BR><BR> <!------- ボディの表示 --> <CENTER> <TABLE border="1" cellspacing="0"> <TR bgcolor="#6666FF"> <TD><P align="center"><B><FONT color="white"> 得 意 先 </FONT></B></TD> <TD><P align="center"><B><FONT color="white"> 住   所 </FONT></B></TD> </TR> <TR bgcolor="white"> </TR> </TABLE> </CENTER> </BODY> </HTML> ================= ここからはエラータグ ===================== 35 <HR SIZE="3" WIDTH="360"> <TABLE border="0"> <TR><TD><FONT size="3"> 入力された得意先がありません </TD></TR> </TABLE> <HR SIZE="3" WIDTH="360"> </CENTER> </BODY> </HTML> <!------- ボディの表示 -->の下にある<CENTER> まで同じ 文でいけるので、最初にここまでのHTML文を標準出力 させています。 通常得意先マスタが読み込めた場合は、矢印の部分 ( <TR bgcolor=“white”> と</TR> の間)に 得意先名と住所を表示するHTML文が入り、 </HTML>までの残りのHTML文を標準出力します。 ここに変数値が入る 通常得意先マスタが読み込めなかった場合は、 35配列より下の部分が置き換えられて標準出力されます。 11

  13. 2.@WEBツールを使用して プログラムを作成 12

  14. AS400 CGIプログラム 処理の流れ このプログラムはブラウザから6桁の得意先コードを受け取り、AS400上の得意先マスタから得意先名・住所を取得し、ブラウザに表示します。得意先マスタになかった場合は、エラー表示します。 ASCII EBCDIC 得意先コードを入力し実行 ユーザー作成のプログラム(ILERPG) ユーザー作成の HTMLファイル @WEBツール キー画面表示 HTTPサーバ (Common Gateway Interface) キー画面表示用 HTMLファイル ① 標準出力 環境変数取得 CALLB #OUT_HTML ② #GET_FORM 明細画面表示 ② 環境変数 明細表示用 HTMLファイル #GET_FORM 標準入力 取得したコードで得意先マスタを読む 入力結果 ③ #POST_FORM CHAIN TOKUI2R 出力準備 ① エラー表示用 HTMLファイル 標準出力 標準出力 ⑤ ④ #OUT_HTML CALLB #OUT_HTML 得意先マスタTOKUI2 得意先コード得意先名得意先住所 13

  15. DATA パラメータ TOKUNM=(株)○○システム& ADR=名古屋市中村区名駅2-3-3& @WEBツール #GET_FORMと#OUT_HTML #GET_FORM WEBからのデータは、AS400HTTPサーバを介して環境変数という領域に入ってきます。 #GET_FORM は、環境変数( QUERY_STRING)から、入力項目ごとにデータを取得するプログラムです。 得意先コード:000001 HTTPサーバ提供の環境変数 ユーザープログラム QUERY_STRING SERVER_NAME TOKUCD=000001 フィールド名:TOKUCDをセット SERVER_NAME EVAL W_TOKUCD = GET_FORM(field:option) 000001 を取得 オプションはブランク QUERY_STRING は、フォームから入力された フィールド名及びフィールド値が入ってきます。 #OUT_HTML AS400からWEBへデータを出力する場合、標準出力という領域からAS400HTTPサーバを介してデータが出力されます。 #OUT_HTML は、AS400上のHTMLファイルを変数パラメータで置き換え、標準出力に出力するプログラムです。 ユーザープログラム #OUT_HTML 明細 EVAL DATA = 'TOKUNM=' + %TRIM(TKTOKNAM) + %TRIM('&') + 'ADR=' + %TRIM(TKTOKADR) + %TRIM('&') #OUT_HTMLのパラメータ HTMLファイル CALLB '#OUT_HTML' PARM 'CGILIB' LIB 10 PARM 'QHTMSRC' FIL 10 PARM @@PGMID MBR 10 PARM DATA 2000 変数値を反映 <TD>&&TOKUNM</TD> <TD>&&ADR</TD> 14

  16. @WEBツールを使用してCGIプログラムを作成(キー画面)@WEBツールを使用してCGIプログラムを作成(キー画面) キー画面 プログラム:AP0010 ************************************************************************** * データ構造(DS) ************************************************************************** * プログラム状況データ構造 D SDS D @@PGMID 1 10 プログラムID * ************************************************************************** * メイン ************************************************************************** * ◆標準出力◆ C CALLB '#OUT_HTML' C PARM 'CGILIB' LIB 10 ライブラリ名 C PARM 'QHTMSRC' FIL 10 ファイル名 C PARM @@PGMID MBR 10 メンバー名 C PARM DATA 2000 変数 * * ◆終了◆ C SETON LR C RETURN システムより自分自身のメンバー名を取得します。 @WEBツール提供の標準出力プログラムを CALLBにて呼び出します。 “LIB”パラメータには、HTML文が書かれたソースが 入っているライブラリを指定します。 ここではCGILIBというライブラリを指定しています。 “FIL”パラメータは、HTML文が書かれたソースが 入っているファイル名を指定します。 ここではQHTMSRCというファイル名を指定しています。 “MBR”パラメータには、HTML文が書かれたメンバー名を指定します。ここでは、CGIプログラムと同じ名前で 指定しています。 “DATA”パラメータはここでは使用しません。 変数データをセットする際に使用します。 15

  17. @WEBツールを使用してCGIプログラムを作成(キー画面用HTMLソース)@WEBツールを使用してCGIプログラムを作成(キー画面用HTMLソース) CGILIB/QHTMSRCにて作成された HTML文です。 HTMLソース(キー画面用) CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 by @WEBRPG</TITLE> </HEAD> <BODY bgcolor="lightGrey"> <FORM name="FORM1" method="GET" action="HTTP://WWW1.AXEL.NE.JP/CGI-BIN/AP0020.PGM"> <!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="White"> 得意先照会 </FONT></B></P> </TD></TR> </TABLE> </CENTER><BR><BR> <!------- ボディの表示 --> <CENTER> <TABLE border="0"> <TR> <TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="TOKUCD" maxlength="6"></TD> </TR> </TABLE> </CENTER><BR><BR> <CENTER> <TABLE border="0"> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR> </TABLE> </CENTER> </FORM> </BODY> </HTML> このファイルは、 ライブラリ CGILIB ファイル QHTMSRC メンバー AP0010 として作成しています。 ボタンを押した後のCGIプログラムを指定します。 ここで“GET”と記述することで環境変数としてCGIプログラムにデータが渡されます。 <FORM> ~ </FORM> の間にある <INPUT>タグで指定したフィールドの変数値が渡されます。ここでは、“TOKUCD”の値が渡されます。 (イメージ:TOKUCD=入力した値) 16

  18. @WEBツールを使用してCGIプログラムを作成(明細画面)@WEBツールを使用してCGIプログラムを作成(明細画面) システムより自分自身のメンバー名を取得します。 明細画面 プログラム:AP0020 * 得意先マスター FTOKUI2L01 IF E K DISK PREFIX(TK) ************************************************************************** * データ構造(DS) ************************************************************************** * プログラム状況データ構造 D SDS D @@PGMID 1 10 プログラムID * * @WEBツールの定義 * * 変数取得 (GET) D GET_FORM PR 2000 EXTPROC('GET_FORM') D 10 VALUE D 1 D field S 10 INZ フィールド名 D option S 1 INZ オプション ************************************************************************** * メイン ************************************************************************** * ◆環境変数より入力情報取得◆ * 得意先 C CLEAR W_TOKUCD 10 C MOVEL(P) 'TOKUCD' field C EVAL W_TOKUCD = GET_FORM(field:option) * ◆得意先マスターより情報を取得◆ C W_TOKUCD CHAIN TOKUI2R 90 * データがなかったらエラー画面表示 C IF *IN90 = *ON C MOVEL(P) 'AP9999' @@PGMID * データがあれば変数を置き換えるパラメータをセット C ELSE C EVAL DATA = 'TOKUNM=' + %TRIM(TKTOKNAM) + 得意先名 C %TRIM('&') + C 'ADR=' + %TRIM(TKTOKADR) + 住所 C %TRIM('&') C ENDIF * ◆標準出力◆ C CALLB '#OUT_HTML' C PARM 'CGILIB' LIB 10 ライブラリ名 C PARM 'QHTMSRC' FIL 10 ファイル名 C PARM @@PGMID MBR 10 メンバー名 C PARM DATA 2000 変数 * ◆終了◆ C SETON LR C RETURN @WEBツールを使用します。 GET_FORM は、環境変数を取得し、キーデータを 返すプログラムです。 2000バイトのパラメータは出力パラメータです。 変数値が返ってきます。 10バイトのパラメータは入力パラメータです。 取得したい変数の名前をセットします。 1バイトのパラメータは入力パラメータです。 返ってくる変数値のパターンをここで指定します。 今回は、ブランクをセットします。 ここで得意先コードを取得します。 Fieldに‘TOKUCD’とセットします。 Optionは今回はブランクです。 W_TOKUCDに変数値がセットされます。 @WEBツールの#OUT_HTMLのパラメータ “DATA”に左記のように変数をセットします。 データ上はこうなります。 TOKUNM=(株)○○システム&ADR=名古屋市中村区名駅2-3-3& 変数の名前=変数&というルールです。 複数項目の場合は、& の後に続けてセット してください。 @WEBツールの#OUT_HTMLで標準出力させます。 17

  19. @WEBツールを使用してCGIプログラムを作成(明細画面通常表示用HTMLファイル)@WEBツールを使用してCGIプログラムを作成(明細画面通常表示用HTMLファイル) HTMLソース(通常表示用) CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 by @WEBRPG</TITLE> </HEAD> <BODY bgcolor="lightGrey"> <!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="white"> 得意先照会 </FONT></B></P> </TD></TR> </TABLE> </CENTER><BR><BR> <!------- ボディの表示 --> <CENTER> <TABLE border="1" cellspacing="0"> <TR bgcolor="#6666FF"> <TD><P align="center"><B><FONT color="white"> 得 意 先 </FONT></B></TD> <TD><P align="center"><B><FONT color="white"> 住   所 </FONT></B></TD> </TR> <TR bgcolor="white"> <!-- FLDREP START --> <TD>&&TOKUNM</TD> <TD>&&ADR</TD> <!-- FLDREP END --> </TR> </TABLE> </CENTER> </BODY> </HTML> このファイルは、 ライブラリ CGILIB ファイル QHTMSRC メンバー AP0020 として作成しています。 斜体の部分 &&TOKUNM と&&ADR が @WEBツールの#OUT_HTMLの “DATA”パラメータに セットし、置換処理が行われるフィールドです。 置換処理が行われる範囲は、 <!-- FLDREP START -->と<!-- FLDREP END -->の 間です。置換対象は &&変数名 で記述します。 例えば… &&TOKUNM は (株)○○システム &&ADR は 名古屋市中村区名駅2-3-3 実際は上記のように置き換わります。 <!-- FLDREP START -->と<!-- FLDREP END -->は WEBのHTML文には記述されません。 18

  20. @WEBツールを使用してCGIプログラムを作成(明細画面エラー表示用HTMLファイル)@WEBツールを使用してCGIプログラムを作成(明細画面エラー表示用HTMLファイル) HTMLソース(エラー表示用) CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 by @WEBRPG</TITLE> </HEAD> <BODY bgcolor="LightGrey"> <!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="Navy"> <P align="center"><B><FONT size="4" color="White"> 得意先照会 </FONT></B></P> </TD></TR> </TABLE> </CENTER><BR><BR><BR> <!------- ボディの表示 --> <CENTER> <HR SIZE="3" WIDTH="360"> <TABLE border="0"> <TR><TD><FONT size="3"> 入力された得意先がありません </TD></TR> </TABLE> <HR SIZE="3" WIDTH="360"> </CENTER> </BODY> </HTML> 通常表示用とは別ファイルで作成しておきます。 このファイルは、 ライブラリ CGILIB ファイル QHTMSRC メンバー AP9999 として作成しています。 19

  21. 両プログラムの比較 20

  22. 両プログラムを比較(プログラムソース) キー画面を表示するプログラムです。 @WEBツールを使用しない @WEBツールを使用する ************************************************************************** * データ構造(DS) ************************************************************************** D* コンパイル時配列 DHTM S 80 DIM(52) PERRCD(1) CTDATA D* 改行コード DNL C x'15' * APIの定義 * D* 標準出力API 'QtmhWrStout' 用 DOUT S 2048A INZ DOUTLN S 9B 0 INZ(2048) * * ユーザースペースエラーコード /COPY QSYSINC/QRPGLESRC,QUSEC ************************************************************************** * メイン ************************************************************************** * ◆HTML文作成◆ C DO 52 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) * ◆標準出力◆ C IF i = 25 OR C i = 52 C CALLB 'QtmhWrStout' C PARM OUT C PARM OUTLN C PARM QUSEC C CLEAR OUT C ENDIF C ENDDO * * ◆終了◆ C SETON LR C RETURN ** CTDATA HTML *************************************************************80 CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 </TITLE> </HEAD> <BODY bgcolor="lightGrey"> <FORM name="FORM1" method="GET" action="HTTP://WWW1.AXEL.NE.JP/CGI-BIN/AP0040.PGM"> <!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="White"> 得意先照会 </FONT></B></P> </TD></TR> </TABLE> </CENTER><BR><BR> <!------- ボディの表示 --> <CENTER> <TABLE border="0"> <TR> <TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="TOKUCD" maxlength="6"></TD> </TR> </TABLE> </CENTER><BR><BR> <CENTER> <TABLE border="0"> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR> </TABLE> </CENTER> </FORM> </BODY> </HTML> ************************************************************************** * データ構造(DS) ************************************************************************** * プログラム状況データ構造 D SDS D @@PGMID 1 10 プログラムID * ************************************************************************** * メイン ************************************************************************** * ◆標準出力◆ C CALLB '#OUT_HTML' C PARM 'CGILIB' LIB 10 ライブラリ名 C PARM 'QHTMSRC' FIL 10 ファイル名 C PARM @@PGMID MBR 10 メンバー名 C PARM DATA 2000 変数 * * ◆終了◆ C SETON LR C RETURN ここで標準出力にて HTML文を書き出しています キー画面表示用 HTMLファイル HTML記述ファイルの場所を パラメータで指定するだけで HTML文を書き出してくれる。 メンテナンスは、HTML記述のファイルを 変更するだけでいい。 プログラムソース上でHTML文を記述するので 変更するごとにリコンパイルしなければならない。 21

  23. 両プログラムを比較(プログラムソース) 明細画面を表示するプログラムです。 @WEBツールを使用しない @WEBツールを使用する * 得意先マスター FTOKUI2L01 IF E K DISK PREFIX(TK) ************************************************************************** * データ構造(DS) ************************************************************************** D* コンパイル時配列 DHTM S 80 DIM(46) PERRCD(1) CTDATA D* 改行コード DNL C x'15' * 外部プログラムの定義 * APIの定義 * * 環境変数API 'QtmhGetEnv' 用 DENBUFF S 2048A INZ DENBUFFLN S 9B 0 INZ(2048) DENACTLN S 9B 0 INZ DENVARNAME S 20A INZ('QUERY_STRING') DENVARLN S 9B 0 INZ(12) * 標準出力API 'QtmhWrStout' 用 DOUT S 2048A INZ DOUTLN S 9B 0 INZ(2048) * * ユーザースペースエラーコード /COPY QSYSINC/QRPGLESRC,QUSEC ************************************************************************** * メイン ************************************************************************** * ◆HTML文作成◆ C DO 22 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) C ENDDO * * ◆標準出力◆ C CALLB 'QtmhWrStout' C PARM OUT C PARM OUTLN C PARM QUSEC C CLEAR OUT * * ◆環境変数より入力情報取得◆ C CALLB 'QtmhGetEnv' C PARM ENBUFF C PARM ENBUFFLN C PARM ENACTLN C PARM ENVARNAME C PARM ENVARLN C PARM QUSEC * * ◆データのデコード◆ * ------------------------------------------------------------ * アスキーコードデータからEBCDICコードデータに変換する * ------------------------------------------------------------ C MOVEL(P) ENBUFF QCHR C Z-ADD ENACTLN QLEN C MOVEL(P) '5035' CP C CALLB '#DECODE' C PARM QCHR 2048 C PARM QLEN 5 0 C PARM CP 4 C MOVEL(P) QCHR W_BUFF 2048 * * ◆変数の取得◆ * ------------------------------------------------------------ * EBCDICコードデータとキーを渡し、変数を取得する * ------------------------------------------------------------ * 得意先コード C MOVEL(P) W_BUFF ENBUFF C MOVEL(P) 'TOKUCD' KEY C CALLB '#EXT_KVAL' C PARM ENBUFF 2048 C PARM KEY 20 C MOVEL(P) ENBUFF W_TOKUCD 10 * * 得意先マスター FTOKUI2L01 IF E K DISK PREFIX(TK) ************************************************************************** * データ構造(DS) ************************************************************************** * プログラム状況データ構造 D SDS D @@PGMID 1 10 プログラムID * * @WEBツールの定義 * * 変数取得 (GET) D GET_FORM PR 2000 EXTPROC('GET_FORM') D 10 VALUE D 1 D field S 10 INZ フィールド名 D option S 1 INZ オプション ************************************************************************** * メイン ************************************************************************** * ◆環境変数より入力情報取得◆ * 得意先 C CLEAR W_TOKUCD 10 C MOVEL(P) 'TOKUCD' field C EVAL W_TOKUCD = GET_FORM(field:option) * ◆得意先マスターより情報を取得◆ C W_TOKUCD CHAIN TOKUI2R 90 * データがなかったらエラー画面表示 C IF *IN90 = *ON C MOVEL(P) 'AP9999' @@PGMID * データがあれば変数を置き換えるパラメータをセット C ELSE C EVAL DATA = 'TOKUNM=' + %TRIM(TKTOKNAM) + 得意先名 C %TRIM('&') + C 'ADR=' + %TRIM(TKTOKADR) + 住所 C %TRIM('&') C ENDIF * ◆標準出力◆ C CALLB '#OUT_HTML' C PARM 'CGILIB' LIB 10 ライブラリ名 C PARM 'QHTMSRC' FIL 10 ファイル名 C PARM @@PGMID MBR 10 メンバー名 C PARM DATA 2000 変数 * ◆終了◆ C SETON LR C RETURN ここで環境変数にて データを取得しています ここで標準出力にて HTML文を書き出しています 変数項目は、DATAパラメータ にセット 明細画面表示用 HTMLファイル デコード処理やデータ抜き出し処理の プログラムを別途作成しなくてはならない。 エラー画面表示用 HTMLファイル 画面ごとでHTMLファイルを作成すればよいので メンテナンスや管理が楽。 22

  24. 両プログラムを比較(プログラムソース) 明細画面を表示するプログラムです。 @WEBツールを使用しない * ◆得意先マスターより情報を取得◆ C W_TOKUCD CHAIN TOKUI2R 90 C IF *IN90 = *ON C EXSR #ERR C ELSE C EXSR #OK C ENDIF * * ◆標準出力◆ C CALLB 'QtmhWrStout' C PARM OUT C PARM OUTLN C PARM QUSEC * * ◆終了◆ C SETON LR C RETURN ************************************************************** * エラー用HTML文作成 ************************************************************** C #ERR BEGSR * * ◆HTML文作成◆ C 37 DO 46 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) C ENDDO C ENDSR ************************************************************** * HTML文作成 ************************************************************** C #OK BEGSR * * ◆HTML文作成◆ C 23 DO 28 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) C ENDDO * 得意先名 C EVAL OUT = %TRIM(OUT) + %TRIM('<TD>') + C %TRIM(TKTOKNAM) + C %TRIM('</TD>') + %TRIM(NL) * 得意先住所 C EVAL OUT = %TRIM(OUT) + %TRIM('<TD>') + C %TRIM(TKTOKADR) + C %TRIM('</TD>') + %TRIM(NL) * C 29 DO 35 i 3 0 C EVAL OUT = %TRIM(OUT) + %TRIM(HTM(i)) + C %TRIM(NL) C ENDDO C ENDSR ** CTDATA HTML *************************************************************** CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 </TITLE> </HEAD> <BODY bgcolor="lightGrey"> ~長くなるので省略します~ </BODY> </HTML> ================= ここからはエラータグ ===================== 35 <HR SIZE="3" WIDTH="360"> <TABLE border="0"> <TR><TD><FONT size="3"> 入力された得意先がありません </TD></TR> </TABLE> <HR SIZE="3" WIDTH="360"> </CENTER> </BODY> </HTML> ここで標準出力にて HTML文を書き出しています 変数表示用のHTML文を 記述しなければならない。 23

  25. 3.HTML作成補助ツールを使用して プログラムを作成 24

  26. AS400 CGIプログラム 処理の流れ 用意するもの 1)HTMLファイル 2)変数をセットするプログラム 以上。 補助ツールを使用することで、簡単なWEBの画面処理が可能になります。 環境変数や標準出力 といったWEBの知識がいらないので簡単にコーディングできます。 ASCII EBCDIC URLを入力 HTML作成補助ツール @WEB ユーザー作成プログラム CGILIB ① HTTPサーバ (Common Gateway Interface) 環境変数、標準出力、次プログラムへのデータの 受け渡し 受け取ったキーで、得意先 マスターを読み込み、 変数項目をセット 得意先コードを入力し実行 CHAIN TOKUI2R 得意先マスタTOKUI2 ⑥ ③ EVAL=TOKUNM+・・・ QHTMDRV ⑤ ④ ⑦ パラメータセット 得意先コード得意先名得意先住所 入力結果 ② ⑧ ⑨ CGILIB 簡単なルールに従って HTMLファイルを作成するだけ。 キー画面表示用 HTMLファイル 明細表示用 HTMLファイル 25

  27. HTML作成補助ツールを使用してCGIプログラムを作成(URL入力)HTML作成補助ツールを使用してCGIプログラムを作成(URL入力) URLを入力しキー画面を出力させる HTML作成補助ツールのプログラムIDの後に、?を追加します。 それ以降は、パラメータとして認識されます。 PGMID=HTMLファイル名 と入力します。 今回は、AP0050というファイル名で入力しています。 http://www1.axel.ne.jp/@WEB/QHTMDRV.PGM?PGMID=AP0050 HTML作成補助ツール名 キー画面出力HTMLファイル名 26

  28. HTML作成補助ツールを使用してCGIプログラムを作成(キー画面表示用HTMLファイル)HTML作成補助ツールを使用してCGIプログラムを作成(キー画面表示用HTMLファイル) HTMLソース(キー画面表示用) CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 by @WEBRPG (ドライバ使用) </TITLE> </HEAD> <BODY bgcolor="lightGrey"> <FORM name="FORM1" method="GET" action="HTTP://WWW1.AXEL.NE.JP/@WEB/QHTMDRV.PGM"> <!------ ユーザープログラム名称 --> <input type="hidden" name="PGMID" value="AP0070"> <!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="White"> 得意先照会 </FONT></B></P> </TD></TR> </TABLE> </CENTER><BR><BR> <!------- ボディの表示 --> <CENTER> <TABLE border="0"> <TR> <TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="KEY" maxlength="6"></TD> </TR> </TABLE> </CENTER><BR><BR> <CENTER> <TABLE border="0"> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR> </TABLE> </CENTER> </FORM> </BODY> </HTML> このファイルは、 ライブラリ CGILIB ファイル QHTMSRC メンバー AP0050 として作成しています。 HTML作成補助ツールのプログラムを指定します。 変数項目セットプログラムを指定します。 明細表示HTMLファイル名はこの名前と同じにしてください。 この部分が、HTML作成補助ツールのプログラムに渡ります。 27

  29. HTML作成補助ツールを使用してCGIプログラムを作成(変数セットプログラム)HTML作成補助ツールを使用してCGIプログラムを作成(変数セットプログラム) 変数項目セットプログラム:AP0070 * 得意先マスター FTOKUI2L01 IF E K DISK PREFIX(TK) ************************************************************************** * パラメータ ************************************************************************** C *ENTRY PLIST C PARM P_KEY 1000 キー群 C PARM P_RTDATA 2000 返し変数 ************************************************************************** * メイン ************************************************************************** C MOVEL(P) 'AP0020' W_PGMID 10 * ◆キー取得◆ C CALL ‘QEXTKEY' C PARM LRKB 1 終了区分 C PARM P_KEY KEY 1000 キー群 C PARM RTDATA 1000 返し変数 C MOVEL(P) RTDATA W_TOKUCD 10 * * ◆得意先マスターより情報を取得◆ C W_TOKUCD CHAIN TOKUI2R 90 C IF *IN90 = *ON C MOVEL(P) *BLANK TKTOKNAM C MOVEL(P) *BLANK TKTOKADR C ENDIF * ◆変数を置き換えるパラメータをセット◆ C EVAL P_RTDATA = 'TOKUNM=' + %TRIM(TKTOKNAM) + 得意先名 C %TRIM('&') + C 'ADR=' + %TRIM(TKTOKADR) + 住所 C %TRIM('&') * * ◆終了◆ C SETON LR C RETURN HTML作成補助ツールからパラメータが渡ってきます。 キー群パラメータは、1つもしくは複数のキーの値が入っています。今回は、得意先コードのみが入っています。 返し変数パラメータは、HTML作成補助ツールに渡す パラメータです。変数項目を渡します。 ここで、キー取得のプログラムを使用して1つづつキーの 値を取得します。今回は得意先コードのみなので 一回しか呼び出していません。 終了区分パラメータは、データの終了時に ‘E’がセットされます。 通常はブランクをセットします。 キー群パラメータはHTML作成補助ツールから取得した キー群データを最初にセットしておきます。2回目以降は、 セットしません。 返し変数パラメータは、取得したキーデータがセットされます。 変数値をセットしていきます。セット方法は@WEBツールの #OUT_HTML(標準出力)プログラムの DATA パラメータの セット方法と同じです。 28

  30. HTML作成補助ツールを使用してCGIプログラムを作成(明細画面表示用HTMLファイル)HTML作成補助ツールを使用してCGIプログラムを作成(明細画面表示用HTMLファイル) HTMLソース(明細画面表示用) CONTENT-TYPE: TEXT/HTML <HTML> <HEAD> <TITLE> 得意先照会 by @WEBRPG (ドライバ使用) </TITLE> </HEAD> <BODY bgcolor="lightGrey"> <!------ タイトルの表示 --> <CENTER> <TABLE border="3"> <TR><TD bgcolor="navy"> <P align="center"><B><FONT size="4" color="white"> 得意先照会 </FONT></B></P> </TD></TR> </TABLE> </CENTER><BR><BR> <!------- ボディの表示 --> <CENTER> <TABLE border="1" cellspacing="0"> <TR bgcolor="#6666FF"> <TD><P align="center"><B><FONT color="white"> 得 意 先 </FONT></B></TD> <TD><P align="center"><B><FONT color="white"> 住   所 </FONT></B></TD> </TR> <TR bgcolor="white"> <!-- FLDREP START --> <TD>&&TOKUNM</TD> <TD>&&ADR</TD> <!-- FLDREP END --> </TR> </TABLE> </CENTER> </BODY> </HTML> このファイルは、 ライブラリ CGILIB ファイル QHTMSRC メンバー AP0070 として作成しています。 29

More Related