} I言語 Lesson6 インターネットの学習


●スマホやタブレット等でデータを検索する場合はWebブラウザで検索する方法が一番簡単です、I言語はWebサーバー上でCGIの機能を使ってWebブラウザに検索結果を表示できます。その方法を学習します。
★注意★WindowsのIISと呼ばれWebサーバーを使いますが、VistaはBusiness以上、7はProfesional以上でないと使えないので注意して下さい。Windows10の場合で説明します。
★注意★CGIでは使用者とパスワードによる認証機能は使えません。陽に画面上でパスワードを要求する場合(セッションの機能は無いので、毎回パスワードチェックが必要です)はhttps等の暗号化をしないとパスワードがそのままネットワークを流れてしまうので注意して下さい。
(1)IISとCGIを使えるようにします。
(1.1)「スタート」上で右ボタン、「プログラムの機能」の「Windowsの機能の有効化または無効化」に行きます。
(1.2)「Windowsの機能」の「インターネット インフォメーション サービス」の□をクリックし■を付けます。
(1.3)左の「+」をクックして展開し、「World Wide Web サービス」の「+」をクリックし展開します。
(1.4)「アプリケーション開発機能」の左の「+」をクックして展開し、「CGI」の□をクリックし■を付けます。
(1.5)「OK」をクックして有効化します。
(1.6)「必要な変更が完了しました」で「閉じる」で完了です。
(2)CGIの設定をします。
(2.1)「スタート」上で右ボタン、「コントロールパネル」の「システムとセキュリティ」に行きます。
(2.2)「管理ツール」の「インターネット インフォメーション サービス(IIS)...」に行きます。
(2.3)真ん中のアイコンの中の「ハンドラーマッピング」をダブルクリックし、右ボタンで「スプリプトマップの追加」をクリックします。
(2.4)要求パスに「*.I1」(拡張子は別でも良いです)実行可能ファイルに「C:\I\I.システム名\BIN\I19TIMEW4.EXE システム名」(VER19の場合★注意★VER20以上は起動パスからシステム名を設定するので最後のシステム名は不要と成ります)で名前に「I1]を設定し「OK」をクリックします。
(2.5)「スクリプトマップの追加」で「はい」をクリックして完了です。
(3)最初に表示するHTMLをc:\inetpub\wwwroot\i1.htmlに作ります。
(3.1)「スタート」上で右ボタン、「エクスプローラー」の「ローカルディスク(c)」の「inetpub」の「wwwwroot]に行きます。
(3.2)ここでファイルの拡張子を表示させるため「表示」タブをクリックし、「ファイル名拡張子」にレ印を付けます。
(3.3)右ボタンで「新規作成」「テキスト ドキュメント」を選んで名前を「i1.html」に変更します。
(3.4)i1.html上で右ボタン、プログラムで開くで「メモ帳」を選びます。
(3.5)取りあえず以下の内容のファイルを作ります。
<!DOCTYPE html><html><head><meta charset="UTF-8">
<title>i</title></head><body>
<form action="test_ja_zzzz800101.i1" method="post">
<input type="text" name="where">
<input type="submit" value="検索">
</form></body></html>
(3.6)「メモ帳」の場合ファイルを閉じる時に普通に閉じてしまうと、文字コードがシフトJISになってしまいます、文字コードを「UTF-8」で書きたいので「ファイル」「名前を付けて保存」で文字コードを「ANSI」から「UTF-8」に変更して「保存」「はい」で保存して下さい。

(3.7)Edge等のWebブラウザを立ちあげURLに「http://127.0.0.1/i1.html」を入れて「ABC」を入力し「検索」をクリックしてみます。
(4)「HTTP エラー 404.0 - Not Found」のエラーが出て物理パスが「C:\inetpub\wwwroot\test_ja_zzzz800101.i1」と出ているのでとりあえずこの空のファイルを作って再実行します。
(4.1)「スタート」上で右ボタン、「エクスプローラー」の「ローカルディスク(c)」の「inetpub」の「wwwwroot]に行きます。
(4.2)ここでファイルの拡張子を表示させるため「表示」タブをクリックし、「ファイル名拡張子」にレ印を付けます。
(4.3)右ボタンで「新規作成」「テキスト ドキュメント」を選んで名前を「test_ja_zzzz800101.i1」に変更します。
(4.4)再度WebブラウザのURLに「http://127.0.0.1/i1.html」を入れて「ABC」を入力し「検索」をクリックしてみます。
(5)今度は「HTTP エラー 401.3 - Unauthorized」のエラーがでました、これは実行しようとしているプログラムへのアクセス権が無いので出ます。
(5.1)「スタート」上で右ボタン、「エクスプローラー」の「ローカルディスク(c)」の「I」の「I.システム名]の「BIN」で右クリック。
(5.2)「プロパティ」「セキュリティ」「編集」「追加」で「オブジェクト名」に「everyone」を入力し、「OK」「適用」「OK」「OK」で完了です。

(6)再度実行した結果です。
★これはI言語が作った画面でZZZZ800101のジョブがまだ作られていない為に「JOB NOT FOUND」のエラーを表示しています。

(6.1)ZZZZ800101のジョブに入力しをそのまま表示するプログラムを作って実行してみます。
★BODYで内容をHTMLに書き出します、尚、基本的なHTMLはI言語が書き出します。
★画面から受け取った値はname=の内容の先頭に#が付いた変数として受け取る事ができます。
★今回は単に受け取った値を返すだけの簡単なプログラムですが、SQLを実行し検索した結果でBODYを作れば検索結果を表示出来ます。

(6.2)実行した結果です。
★*(test)*はテスト中なので表示されます、プログラムを本番にしてactionを"real_ja_zzzz800101.i1"にすれば*(test)*は表示されなく成ります。
★下記が出来たTHMLです。
★<... CLASS="GREEN">で背景が緑になるようにCSSで標準的な背景色の設定がされています。
★BODY{}に直接書かれた英大文字は小文字に変換されます。
<!DOCTYPE html><html lang="ja"><head><meta charset="UTF-8">
<style type="text/css"><!--
.bold,.BOLD{font-weight:bold}
.black,.BLACK{color:white;background:black}
.silver,.SILVER{color:black;background:silver}
.gray,.GRAY{color:white;background:gray}
.white,.WHITE{color:black;background:white}
.maroon,.MAROON{color:white;background:maroon}
.red,.RED{color:white;background:red}
.purple,PURPLE{color:white;background:purple}
.fuchsia,.FUCHSIA{color:black;background:fuchsia}
.green,.GREEN{color:white;background:green}
.lime,.LIME{color:black;background:lime}
.olive,.OLIVE{color:white;background:olive}
.yellow,.YELLOW{color:black;background:yellow}
.navy,.NAVY{color:white;background:navy}
.blue,.BLUE{color:white;background:blue}
.teal,.TEAL{color:white;background:teal}
.aqua,.AQUA{color:black;background:aqua}
--></style>
</head><body>
<div class="purple">
*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*<br>
*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*</div>
内容は</span class="green">ABC</span>です。
<div class="purple">
*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*<br>
*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*(test)*</div>
</body></html>
All Rights Reserved, Copyright (C) 2016-2016 Nobumichi Harasawa.