iweb RPG による Web アプリケーション構築

Slides:



Advertisements
Similar presentations
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
Advertisements

情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
目次 このドキュメントについて・・・前提条件……………………………………… 2
インターネット技術特論 D:SSI,PHP,eRuby 山口 実靖
Webアプリケーションの 通信メカニズム WEBアプリ研究プロジェクト 第2回.
プログラミング基礎I(再) 山元進.
Imagio カンタン文書登録V2 画面シミュレーション.
ウェブページ制作の基礎 タグの直接入力によるウェブページの制作 次のスライドへ進んだり,戻ったりしたい時は,右下のボタンをクリック。 次へ.
Struts1.xの脆弱性(CVE ) に対するSDEの対処:wrapタイプ (パッチのご提供)
talend活用事例 ・ナビゲータグラフのカスタマイズにおける事例 ・CSVダウンロードでのカスタマイズ事例
法人e名刺 ブログ運用マニュアル 社外秘 目次 □ブログ運用ルール
JAVA GUIプログラミング 第1回 JAVAの実行 絵を描こう.
アプレット (Applet)について.
Servlet入門(2) 入力フォームをつかったWebアプリ
ホームページの作り方.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
Webコミュニケーショングループ ~PHPの基礎~ M1 宮崎 真.
第4回 個人の動画配信補足のためのWeb構築
PHP 実用的なサンプル 浅川 和久 2017/3/18 PHP 実用的なサンプル.
Bottle/Pythonによる Webアプリ入門
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
専門ゼミⅠ 南ゼミ 特別授業③ 2002年6月7日 金曜日 4限目 今泉 裕隆.
HTTPプロトコルとJSP (1) データベース論 第3回.
平成22年度に実施を予定するインターネットを 用いた研修システムによる研修 ライブ配信受講手順書
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
情報アプリケーション1 2008年 12月 3日 第四回資料 担当 重定 如彦 .
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
押さえておきたいIE8の セキュリティ新機能
HTTPプロトコル J2EE I 第7回 /
Web上で管理・利用できる 面接予約データベースシステムの構築
関数 関数とスタック.
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
XAS マニュアル 暫定版.
Servlet入門(2) 入力フォームをつかったWebアプリ
スクリプト言語を用いたPHITSの連続実行
データベース設計 第9回 Webインタフェースの作成(1)
情報アプリケーション1 2006年 10月 5日 第三回資料 担当 重定 如彦 .
第8章 Web技術とセキュリティ   岡本 好未.
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
図書館職員のための アプリケーション開発講習会
2018/12/5 ネット商品の管理術 ファイル読み込みの活用.
第4回 javaのプログラミング 04A2029           古賀慎也.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
i-web RPGX による Web アプリケーション構築
制作技術ー3 双方向通信 : CGIシステムと環境変数
タグを使ったウェブページ作成 兵庫県立伊丹北高等学校 佐藤 勝彦.
Microsoft PowerPoint98 Netscape Communicator 4.06[ja]
Jakarta Struts (2) ソフトウェア特論 第11回.
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
情報アプリケーション1 2006年 10月 19日 第四回資料 担当 重定 如彦 .
ECサイト for 販売大臣マニュアル 平成24年 12月作成 株式会社 インターメディア・プランニング.
第5回 個人の動画配信補足のためのWeb構築
Javaによる Webアプリケーション入門 第11回
情報スキル活用 第4週 基礎技術-4 : その1(タグのまとめ).
コンピュータ プレゼンテーション.
コンピュータ プレゼンテーション.
C言語 はじめに 2016年 吉田研究室.
高度プログラミング演習 (01).
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
Jakarta Struts (1) ソフトウェア特論 第10回.
第5回 プログラミングⅡ 第5回
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
JSFによるWebアプリケーション開発 第7回
printf・scanf・変数・四則演算
第3回Bashゼミ for文処理について 発表者 直江 宗紀.
Presentation transcript:

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

得意先照会の動き

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

プログラム解説 03

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

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

@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

@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> <!------- ボディの表示 --> <TABLE border="0"> <TR> <TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="TOKUCD" maxlength="6"></TD> </TR> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR> </CENTER> </FORM> </BODY> </HTML> ここで“GET”と記述することで環境変数としてCGIプログラムにデータが渡されます。 ボタンを押した後のCGIプログラムを 指定します。 <FORM> ~ </FORM> の間にある <INPUT>タグで 指定したフィールドの変数値が渡されます。 ここでは、“TOKUCD”の値が渡されます。 (イメージ:TOKUCD=入力した値) 07

@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 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バイトで設定しています。 タイトル、見出しなどの共通表示部分を先に書き出しておきます。 環境変数取得のAPIにてデータを取得します。 08

@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

@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 C 23 DO 28 i 3 0 * 得意先名 C EVAL OUT = %TRIM(OUT) + %TRIM('<TD>') + C %TRIM(TKTOKNAM) + C %TRIM('</TD>') + %TRIM(NL) * 得意先住所 C %TRIM(TKTOKADR) + C 29 DO 35 i 3 0 得意先マスターが読めなかった場合、 エラーメッセージを表示するHTML文を 作成します。 得意先マスターが読めた場合、 得意先名と住所を表示させるHTML文を 作成します。 コンパイル時配列は次頁 10

@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> <!------- ボディの表示 --> <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"> </CENTER> </BODY> </HTML> ================= ここからはエラータグ ===================== 35 <HR SIZE="3" WIDTH="360"> <TABLE border="0"> <TR><TD><FONT size="3"> 入力された得意先がありません </TD></TR> <!------- ボディの表示 -->の下にある<CENTER> まで同じ 文でいけるので、最初にここまでのHTML文を標準出力 させています。 通常得意先マスタが読み込めた場合は、矢印の部分 ( <TR bgcolor=“white”> と</TR> の間)に 得意先名と住所を表示するHTML文が入り、 </HTML>までの残りのHTML文を標準出力します。 ここに変数値が入る 通常得意先マスタが読み込めなかった場合は、 35配列より下の部分が置き換えられて標準出力されます。 11

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

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

@WEBツール #GET_FORMと#OUT_HTML 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 明細 DATA パラメータ TOKUNM=(株)○○システム& ADR=名古屋市中村区名駅2-3-3& 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

@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

@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> <!------- ボディの表示 --> <TABLE border="0"> <TR> <TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="TOKUCD" maxlength="6"></TD> </TR> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR> </CENTER> </FORM> </BODY> </HTML> このファイルは、 ライブラリ CGILIB ファイル QHTMSRC メンバー AP0010 として作成しています。 ボタンを押した後のCGIプログラムを指定します。 ここで“GET”と記述することで環境変数としてCGIプログラムにデータが渡されます。 <FORM> ~ </FORM> の間にある <INPUT>タグで 指定したフィールドの変数値が渡されます。 ここでは、“TOKUCD”の値が渡されます。 (イメージ:TOKUCD=入力した値) 16

@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

@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> <!------- ボディの表示 --> <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 --> </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

@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> <!------- ボディの表示 --> <HR SIZE="3" WIDTH="360"> <TABLE border="0"> <TR><TD><FONT size="3"> 入力された得意先がありません </TD></TR> </CENTER> </BODY> </HTML> 通常表示用とは別ファイルで作成しておきます。 このファイルは、 ライブラリ CGILIB ファイル QHTMSRC メンバー AP9999 として作成しています。 19

両プログラムの比較 20

両プログラムを比較(プログラムソース) キー画面を表示するプログラムです。 ここで標準出力にて HTML文を書き出しています キー画面表示用 @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> <!------- ボディの表示 --> <TABLE border="0"> <TR> <TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="TOKUCD" maxlength="6"></TD> </TR> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR> </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

両プログラムを比較(プログラムソース) 明細画面を表示するプログラムです。 ここで環境変数にて データを取得しています ここで標準出力にて @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 * ◆データのデコード◆ * ------------------------------------------------------------ * アスキーコードデータから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

両プログラムを比較(プログラムソース) 明細画面を表示するプログラムです。 ここで標準出力にて HTML文を書き出しています @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 C 23 DO 28 i 3 0 * 得意先名 C EVAL OUT = %TRIM(OUT) + %TRIM('<TD>') + C %TRIM(TKTOKNAM) + C %TRIM('</TD>') + %TRIM(NL) * 得意先住所 C %TRIM(TKTOKADR) + C 29 DO 35 i 3 0 ** 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> </CENTER> ここで標準出力にて HTML文を書き出しています 変数表示用のHTML文を 記述しなければならない。 23

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

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

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

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> <!------- ボディの表示 --> <TABLE border="0"> <TR> <TD><FONT size="2"> 得意先 </TD> <TD><INPUT type="TEXT" name="KEY" maxlength="6"></TD> </TR> <TR><TD><INPUT type="SUBMIT" value=" 実行 "></TD></TR> </CENTER> </FORM> </BODY> </HTML> このファイルは、 ライブラリ CGILIB ファイル QHTMSRC メンバー AP0050 として作成しています。 HTML作成補助ツールのプログラムを指定します。 変数項目セットプログラムを指定します。 明細表示HTMLファイル名はこの名前と同じにしてください。 この部分が、HTML作成補助ツールのプログラムに渡ります。 27

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

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> <!------- ボディの表示 --> <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 --> </CENTER> </BODY> </HTML> このファイルは、 ライブラリ CGILIB ファイル QHTMSRC メンバー AP0070 として作成しています。 29