はじめに
日本語プログラミング言語MindのCGIをIIS10.0で実行するのステップ3です。IIS(Windowsに古くから備わるWebサーバーサービスで今回のバージョンは10.0)での設定方法をステップ2までで確定いたしました。今回はCSSのインクルードを試みます。
前提条件
Windows11 Pro 22H2 22621.4169
Mind Version 8.0.08 for Windows
Internet Information Servicies 10.0
環境の構成
C#とkestrelで実行するのフォルダ環境をほぼそのまま使います。
C#とkestrelで実行していた場合は、アプリ本体の中間コードファイルmcoはプロジェクトルートに置かないと実行できませんでしたが、前回はCGI実行フォルダに引っ越しています。
C:\developments\vscode\kestrelcgi
├─cgi
│ test-form-submit.cgi
│ test-form-submit.mco
│ test-form.cgi
│ test-form.mco
└─wwwroot
│ favicon.ico
│ index.html
├─css
│ site.css
├─js
│ site.js
└─lib
├─bootstrap
│ └─dist
│ ├─css
│ └─js
├─jquery
├─jquery-validation
└─jquery-validation-unobtrusive
Mind CGIアプリケーションの作成
今回はMind8のCGIサンプルを少し修正して動かしますが、動かすのは実行パス設定した下記の機能です。
「フォームのテスト」cgi/test-form.cgi
cgiフォルダにはMind8インストールフォルダ配下のC:\pmind\cgilib\sample
からmrunt160.exeランタイムと上記cgiファイルに対応した中間コードファイルmcoがコピーされています。
Mind CGIライブラリの修正
ソースコード提供されているCGIライブラリのheader.srcを修正します。
「CSSデータ1、2、3」という文字列実体変数を追加。
「html5をDOCTYPEデータ設定」という単語を追加。
「htmlヘッダ出力0」という単語内で「CSSデータ1、2、3」の出力処理を追加します。
※~略~
METAデータ1とは 文字列実体 長さ 128。
METAデータ2とは 文字列実体 長さ 128。
DOCTYPEデータとは 文字列実体 長さ 128。
CSSデータ1とは 文字列実体 長さ 128。※追加
CSSデータ2とは 文字列実体 長さ 128。※追加
CSSデータ3とは 文字列実体 長さ 128。※追加
BODYデータとは 文字列実体 長さ 128。
ヘッダ内平仮名は 文字列実体 長さ 80。
※~略~
html5をDOCTYPEデータ設定とは (・ → ・) ※新デフォルト ※Pmod ※追加
「<!DOCTYPE html>」を
DOCTYPEデータに 入れる。
※~略~
ローカル。
htmlヘッダ出力0とは (タイトル、スタック検査指定 → ・)
タイトルは 文字列
スタック検査指定は 変数
スタックエラー検出は 変数
タイトルと スタック検査指定に 入れ
スタック検査指定
ならば スタック検査0し 偽?を スタックエラー検出に 入れ
つぎに
※~略~
※
「<TITLE>」を 表示し タイトルを 表示し
「</TITLE>」を 一行表示し
CSSデータ1が 非空列?
ならば ※注:TITLEより後に※
CSSデータ1を 一行表示し
つぎに
CSSデータ2が 非空列?
ならば ※注:TITLEより後に※
CSSデータ2を 一行表示し
つぎに
CSSデータ3が 非空列?
ならば ※注:TITLEより後に※
CSSデータ3を 一行表示し
つぎに
「</HEAD>」を 一行表示し
改行し
ヘッダ出力済み・htmlヘッダを
htmlヘッダ出力済みに 入れ
つぎに
※
※~略~
※
(スタック検査)
スタック検査指定
ならば スタックエラー検出
ならば 「<br><br><h3>エラー:スタックがずれてい」続
「ます(htmlヘッダ出力時)</h3>」を 表示し
つぎに
つぎに。
ソースコード提供されているCGIライブラリのcgilib.srcも若干修正します。
「CGILIB初期化0」という単語内で「html4.0をDOCTYPEデータ設定し」をコメントアウトして「html5をDOCTYPEデータ設定し」を実行するように追記します。
※~略~
CGILIB初期化0とは 本定義 (file/ckaridef.srcにて仮定義)
mimeセパレータ文字列作成し
エラー出力を標準出力に切り替え
BASE64テーブル初期化0し
html5をDOCTYPEデータ設定し ※Pmod
※ html4.0をDOCTYPEデータ設定し
※ html3.2をDOCTYPEデータ設定し
※ html2.0をDOCTYPEデータ設定し
DOS環境
ならば sjisをcharset設定し
さもなければ
eucをcharset設定し
つぎに
ヘッダ内平仮名を初期設定し
名前と値の強制格納プールを獲得し ※2001/08/19
「</HTML>」を /html定数に 入れ
デフォルトのnphヘッダを nphヘッダ行に 入れ
。
※~略~
Mind CGIライブラリのコンパイル
Mind8
C:\developments\vscode\mind9\cgilib>mind cgilib socketlibg obj\
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
割愛していますが、Mind7とMind9βでも同様です。また、下位ライブラリはsocketlibgを指定してください。fileでもビルド通過しますが、この新しいcgilibを下位指定してビルド結果の拡張子がexeではなくcgiとなるのはこのsocketlibgの指定によるものです。
Mind サンプルの修正
内容にオリジナルとの有意差はないのですが、生成されるhtmlを少し増やしています。
CSSデータ1と2にCSSへのリンクパスを設定しています。
メインとは
「<link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" />」を CSSデータ1に 入れ
「<link rel="stylesheet" href="/css/site.css" />」を CSSデータ2に 入れ
「フォームのテスト」で htmlヘッダを出力し
H3開始 「お名前とご年齢を教えてください」を 表示し H3終り
BR
BR
「<FORM method="post" action="test-form-submit.cgi">」を 一行表示し
「<INPUT type=hidden name="jcode-a" value="あ">」を 一行表示し
「<div class="mb-3">」を 一行表示し
「<label for="nameInput" class="form-label">」を 表示し
「お名前:」を 表示し
「</label>」を 一行表示し
「<input type="text" name="name" placeholder="麻引堵太郎"><br>」を 一行表示し
「<div id="nameHelp" class="form-text">(日本語でどうぞ)</div>」を 一行表示し
「</div>」を 一行表示し
「<div class="mb-3">」を 一行表示し
「<label for="ageinput" class="form-label">」を 表示し
「ご年齢:」を 表示し
「</label>」を 一行表示し
「<input type="text" name="age" placeholder="40"><br>」を 一行表示し
BR
「</div>」を 一行表示し
「<INPUT TYPE="submit" name="send" VALUE="Send" class="btn btn-primary btn-lg">」を 一行表示し
「 」を 表示し
「<INPUT TYPE="reset" name="reset" VALUE="Clear" class="btn btn-outline-warning btn-lg"><br>」を 一行表示し
「</FORM>」を 一行表示する。
formのサブミット側のCGIにも、CSSデータ1と2にCSSへのリンクパスを設定しています。
メインとは
「<link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" />」を CSSデータ1に 入れ
「<link rel="stylesheet" href="/css/site.css" />」を CSSデータ2に 入れ
「フォームのテスト(フォームの受け取り)」で htmlヘッダを出力し
H3中央開始 「フォームデータを受け取りました」を 表示し H3終り
BR
BR
Mind 修正アプリのコンパイル
Mind8
C:\developments\vscode\mind9\cgilib>mind sample\test-form obj\cgilib
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindexcgi.exe --> sample\test-form.cgi
C:\developments\vscode\mind9\cgilib>mind sample\test-form-submit obj\cgilib
日本語プログラミング言語 Mind Version 8.07 for Windows
Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\pmind\bin\mindexcgi.exe --> sample\test-form-submit.cgi
IIS配下のcgiフォルダに上記cgiファイルに対応した中間コードファイルmcoをコピーします。
Webサーバー設定
IISの導入オプション状態とアプリケーションプールの状態はこちらの記事をご参照ください。
実行開始
正常動作しました!![]()
「フォームの受け取り」cgi/test-form-submit.cgi

おわりに
いかがでしたでしょうか?
なにかの役にたてば幸いです。
