Mind Webアプリケーション(CGI)の開発を容易にするライブラリ

# はじめに
実行環境はこちらを参照して下さい。

https://qiita.com/Mind-Club_2017/items/0fdad646aff08a87618d

Webアプリケーション作成では、HTMLやJavaScriptのお世話になりますが、よく使うものをMindの処理単語として定義しておくことで、日本語で素早く開発が出来ます。

# HTMLFORMライブラリ
Webアプリケーションでは（HTMLのように）Submitして別なWebアプリケーションに処理が移るケースが多いと思いますが、プログラムの本数が多くなり、管理が煩雑になるので本ライブラリではSubmitで自分自身を呼び出すようにしています。

<details><summary>htmlform.src</summary>

```Mind:htmlform.src
※タイトル		ＨＴＭＬフォームライブラリ
※バージョン	2024/01/13
※リンク		cgilib
※作成者		@Mind-CLUB_2017(Qiita)
※データ		htmlform.jpg（イメージボタンを利用する方は画像ファイルを用意して下さい。）
※おことわり	現在は非推奨なタグも平気で使われています。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
※メインは
※	メインの前処理して
※	（ここにプログラム）
※	メインの後処理すること。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

その値とは
	値か空列を参照と、等価。

フォーム作成中？は、変数。

ローカルホスト？とは
	REMOTE_ADDRが、"127.0.0.1"に、等しい文字列。

ユーザーエージェントとは
	HTTP_USER_AGENT。

アップロードファイル名は、文字列実体、長さ、１０２４バイト。
アップロードフォルダ名は、文字列実体、長さ、２５６バイト。

アップロードフォルダ設定とは			（フォルダ名　→　・）
	アップロードフォルダ名を、アップロード格納ディレクトリに、入れること。

起動オプション＄は、文字列実体、長さ、２０４８バイト。

大きく一行表示とは						(文字列　→　・)
	「<H1>」を、表示し、表示し、「</H1>」を、一行表示すること。

中くらいで一行表示とは					(文字列　→　・)
	「<H2>」を、表示し、表示し、「</H2>」を、一行表示すること。

小さく一行表示とは						(文字列　→　・)
	「<H3>」を、表示し、表示し、「</H3>」を、一行表示すること。

ここで改行とは
	「<br>」を、一行表示すること。

フォント開始とは						(文字列　→　・)
	「<font face="」を、表示し、表示し、「">」を、一行表示すること。

フォント指定とは
	フォント開始と、等価。

メイリオフォントとは
	「Meiryo UI」で、フォント開始すること。

指定フォント開始とは					(文字列　→　・)
	「<font 」を、表示し、表示し、「>」を、一行表示すること。

フォント終了とは
	「</font>」を、一行表示すること。

指定フォント終了とは
	「</font>」を、一行表示すること。

BODYで壁紙設定とは						（画像ファイル名　→　・　）
		＿画像ファイル名は、文字列実体
	＿画像ファイル名に、入れる
	「background="」を、BODYデータに、入れる
	＿画像ファイル名を、BODYデータに、追加する
	「"」を、BODYデータに、追加すること。

BODYで背景色設定とは					（背景色コード(#FFCC00とか書く)　→　・　）
		＿背景色コードは、文字列実体
	＿背景色コードに、入れる
	「bgcolor="」を、BODYデータに、入れる
	＿背景色コードを、BODYデータに、追加する
	「"」を、BODYデータに、追加すること。

罫線を引くとは
	「<hr align="center">」を、一行表示すること。

棒グラフを書くとは						（項目名、横長％、枠色コード、背景色コード　→　・　）
		＿項目名は、文字列実体
		＿横長％は、変数
		＿枠色コードは、文字列実体
		＿背景色コードは、文字列実体
	＿項目名と、＿横長％と、＿枠色コードと、＿背景色コードに、入れる
        「<TABLE CELLPADDING="0" CELLSPACING="0" WIDTH="」を、表示し
        ＿横長％を、文字列変換し、表示し
        「%" BGCOLOR="」を、表示し
        ＿枠色コードを、表示し
        「">」を、一行表示し
                  「<TR><TD>」を、一行表示し
                          「<TABLE CELLSPACING="1" CELLPADDING="1" WIDTH="100%">」を、一行表示し
				「<TR><TD BGCOLOR="」を、表示し
				＿背景色コードを、表示し、
				「">」を、一行表示
				＿項目名を、一行表示し
				「</TD></TR>」を、一行表示し
                          「</TABLE>」を、一行表示し
                  「</TD></TR>」を、一行表示
          「</TABLE>」を、一行表示。

赤色の棒グラフを書くとは				（項目名、横長％　→　・）
	「#FF0000」、「#FFAAAA」で、棒グラフを書くこと。

緑色の棒グラフを書くとは				（項目名、横長％　→　・）
	「#00FF00」、「#AAFFAA」で、棒グラフを書くこと。

青色の棒グラフを書くとは				（項目名、横長％　→　・）
	「#0000FF」、「#AAAAFF」で、棒グラフを書くこと。

黄色の棒グラフを書くとは				（項目名、横長％　→　・）
	「#FFFF00」、「#FFFF99」で、棒グラフを書くこと。

白色の棒グラフを書くとは				（項目名、横長％　→　・）
	「#444444」、「#FFFFFF」で、棒グラフを書くこと。

黒色の棒グラフを書くとは				（項目名、横長％　→　・）
	「#444444」、「#999999」で、棒グラフを書くこと。

画像表示とは							（画像ファイル名　→　・）
	「<img src="」を、表示し、表示し、「" aline="middle" border="0">」を
	一行表示すること。

リンク画像表示とは						（画像ファイル名、リンク先ＵＲＬ　→　・）
	「<a href="」を、表示し、表示し		※リンク先ＵＲＬを表示
	「">」を、表示し、画像表示し、「</a>」を、一行表示すること。

		※※※　開始／終了がある　※※※

幅指定開始するとは						（ピクセル	⇒　・）
	「<div style="border:1px solid gray; text-align:left; width:」を
	表示し
	文字列変換し、表示し
	「px;">」を、一行表示すること。

幅指定終了とは							（・⇒・）
	「</div>」を、一行表示すること。

幅指定表示とは							（文字列、ピクセル　⇒　・）
	幅指定開始し、表示し、幅指定終了すること。

リンク開始とは							（リンク先　→　・）
	「<a href="」を、表示し、表示し、「">」を、表示すること。

ターゲット指定でリンク開始とは			（ターゲット、リンク先　→　・）
※使用例）「右フレーム」に、「contents.html」を、ターゲット指定でリンク開始
	「<a href="」を、表示し、表示し
	「" target="」を、表示し、表示し
	「">」を、表示すること。

リンク終了とは
	「</a>」を、一行表示すること。

センタリング開始とは
	「<center>」を、一行表示すること。

センタリング終了とは
	「</center>」を、一行表示すること。

行揃え開始とは							（「左」「中央」「右」→・）
	文字列事例する
		「左」は、「<div align="left">」
		「中央」は、「<div align="center">」
		「真ん中」は、「<div align="center">」
		「右」は、「<div align="right">」
		例外は、「<div>」
	事例終わり
	一行表示すること。

右に行揃え開始とは
	「右」で、行揃え開始すること。

左に行揃え開始とは
	「左」で、行揃え開始すること。

中央に行揃え開始とは
	「中央」で、行揃え開始すること。

行揃え終了とは
	「</div>」を、一行表示すること。

太字開始とは
	「<b>」を、表示すること。

太字終了とは
	「</b>」を、表示すること。

そのまま表示開始とは
	「<pre>」を、一行表示すること。

そのまま表示終了とは
	「</pre>」を、一行表示すること。

リスト表示開始とは
	「<ol>」を、一行表示すること。

リスト表示とは
	「<li>」を、表示し、表示し、「</li>」を、一行表示すること。

リスト表示終了とは
	「</ol>」を、一行表示すること。

白色切り替えとは
	「<font color="white">」を、表示すること。

明灰色切り替えとは
	「<font color="silver">」を、表示すること。

灰色切り替えとは
	「<font color="gray">」を、表示すること。

黒色切り替えとは
	「<font color="black">」を、表示すること。

黄色切り替えとは
	「<font color="yellow">」を、表示すること。

暗黄色切り替えとは
	「<font color="olive">」を、表示すること。

水色切り替えとは
	「<font color="aqua">」を、表示すること。

緑色切り替えとは
	「<font color="lime">」を、表示すること。

暗緑色切り替えとは
	「<font color="green">」を、表示すること。

青緑色切り替えとは
	「<font color="teal">」を、表示すること。

青色切り替えとは
	「<font color="blue">」を、表示すること。

暗青色切り替えとは
	「<font color="navy">」を、表示すること。

紫色切り替えとは
	「<font color="purple">」を、表示すること。

赤紫色切り替えとは
	「<font color="fuchsia">」を、表示すること。

赤色切り替えとは
	「<font color="red">」を、表示すること。

茶色切り替えとは
	「<font color="maroon">」を、表示すること。

切り替え終了とは
	「</font>」を、一行表示すること。

		※※※　表作成　※※※

表の見出しを作成とは					（見出し1、見出し2、見出し3・・・、列数　→　・　）
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	「<table border="2">」を、一行表示し
	「<tr align="center" valign="middle">」を、表示し
	列数で、回数指定し
		「<th valign="middle">」を、表示し、列項目(回数)を、表示し、「</th>」を、表示し
	繰り返す
	「</tr>」を、一行表示すること。

透明な表の見出しを作成とは				（見出し1、見出し2、見出し3・・・、列数　→　・　）
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	「<table border="0">」を、一行表示し
	「<tr align="center" valign="middle">」を、表示し
	列数で、回数指定し
		「<th valign="middle">」を、表示し、列項目(回数)を、表示し、「</th>」を、表示し
	繰り返す
	「</tr>」を、一行表示すること。

指定色で表の見出しを作成とは			（見出し1、見出し2、・・・、列数、色　→　・　）
		カラーコードは、文字列実体
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
	カラーコードに、入れる
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	「<table border bordercolor="」を、表示し
	カラーコードを、表示し
	「" Cellspacing="0">」を、一行表示し
	「<tr align="center" valign="middle">」を、表示し
	列数で、回数指定し
		「<th valign="middle">」を、表示し、列項目(回数)を、表示し、「</th>」を、表示し
	繰り返す
	「</tr>」を、一行表示すること。

表のデータを作成とは					（データ1、データ2、データ3・・・、列数　→　・　）
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	「<tr align="center" valign="middle">」を、表示し
	列数で、回数指定し
		「<td align="center" valign="middle">」を、表示し、列項目(回数)を、表示し、「</td>」を、表示し
	繰り返す
	「</tr>」を、一行表示すること。

左寄せで表のデータを作成とは			（データ1、データ2、データ3・・・、列数　→　・　）
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	「<tr align="left" valign="middle">」を、表示し
	列数で、回数指定し
		「<td align="left" valign="middle">」を、表示し、列項目(回数)を、表示し、「</td>」を、表示し
	繰り返す
	「</tr>」を、一行表示すること。

太字・左寄せで表のデータを作成とは		（データ1、データ2、データ3・・・、列数　→　・　）
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	「<tr align="left" valign="middle">」を、表示し
	列数で、回数指定し
		「<th align="left" valign="middle">」を、表示し、列項目(回数)を、表示し、「</th>」を、表示し
	繰り返す
	「</tr>」を、一行表示すること。

右寄せで表のデータを作成とは			（データ1、データ2、データ3・・・、列数　→　・　）
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	「<tr align="right" valign="middle">」を、表示し
	列数で、回数指定し
		「<td align="right" valign="middle">」を、表示し、列項目(回数)を、表示し、「</td>」を、表示し
	繰り返す
	「</tr>」を、一行表示すること。

太字・右寄せで表のデータを作成とは		（データ1、データ2、データ3・・・、列数　→　・　）
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	「<tr align="right" valign="middle">」を、表示し
	列数で、回数指定し
		「<th align="right" valign="middle">」を、表示し、列項目(回数)を、表示し、「</th>」を、表示し
	繰り返す
	「</tr>」を、一行表示すること。

最後だけ左寄せで表のデータを作成とは	(データ1、データ2、データ3・・・、列数　→　・)
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	「<tr align="left" valign="middle">」を、表示し
	列数で、回数指定し
		回数が、列数に、等しい
		ならば
			「<td align="left" valign="middle">」を、表示し、列項目(回数)を、表示し、「</td>」を、表示し
		さもなければ
			「<td align="center" valign="middle">」を、表示し、列項目(回数)を、表示し、「</td>」を、表示し
		つぎに
	繰り返す
	「</tr>」を、一行表示すること。

指定色で表のデータを作成とは			(データ1、データ2、データ3・・・、列数、色　→　・)
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
		指定色は、文字列
	指定色に、入れる
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	指定色で、文字列事例する
		「白色」は、「<tr bgcolor="white"」
		「明灰色」は、「<tr bgcolor="silver"」
		「灰色」は、「<tr bgcolor="gray"」
		「黒色」は、「<tr bgcolor="black"」
		「黄色」は、「<tr bgcolor="yellow"」
		「暗黄色」は、「<tr bgcolor="olive"」
		「水色」は、「<tr bgcolor="aqua"」
		「緑色」は、「<tr bgcolor="lime"」
		「暗緑色」は、「<tr bgcolor="green"」
		「青緑色」は、「<tr bgcolor="teal"」
		「青色」は、「<tr bgcolor="blue"」
		「暗青色」は、「<tr bgcolor="navy"」
		「紫色」は、「<tr bgcolor="purple"」
		「赤紫色」は、「<tr bgcolor="fuchsia"」
		「赤色」は、「<tr bgcolor="red"」
		「茶色」は、「<tr bgcolor="maroon"」
		例外は、「<tr」を
	事例終わり
	表示し
	「 align="center" valign="middle">」を、表示し
	列数で、回数指定し
		「<td align="center" valign="middle">」を、表示し、列項目(回数)を、表示し、「</td>」を、表示し
	繰り返す
	「</tr>」を、一行表示すること。

最後だけ左寄せで指定色で表のデータを作成とは	(データ1、データ2、データ3・・・、列数、色　→　・)
		列数は、変数
		回数2は、変数
		列項目は、36個の、文字列
		指定色は、文字列
	指定色に、入れる
	列数に、入れる
	列数で、回数指定し
		列項目(回数)に、入れる
	繰り返す
	列数を、2で、割ったもので、回数指定し
		列数から、回数を、引き、1を、加え、回数2に、入れる
		列項目(回数)と、列項目(回数2)を
		列項目(回数2)と、列項目(回数)に、入れる
	繰り返す
	指定色で、文字列事例する
		「白色」は、「<tr bgcolor="white"」
		「明灰色」は、「<tr bgcolor="silver"」
		「灰色」は、「<tr bgcolor="gray"」
		「黒色」は、「<tr bgcolor="black"」
		「黄色」は、「<tr bgcolor="yellow"」
		「暗黄色」は、「<tr bgcolor="olive"」
		「水色」は、「<tr bgcolor="aqua"」
		「緑色」は、「<tr bgcolor="lime"」
		「暗緑色」は、「<tr bgcolor="green"」
		「青緑色」は、「<tr bgcolor="teal"」
		「青色」は、「<tr bgcolor="blue"」
		「暗青色」は、「<tr bgcolor="navy"」
		「紫色」は、「<tr bgcolor="purple"」
		「赤紫色」は、「<tr bgcolor="fuchsia"」
		「赤色」は、「<tr bgcolor="red"」
		「茶色」は、「<tr bgcolor="maroon"」
		例外は、「<tr」を
	事例終わり
	表示し
	「 align="center" valign="middle">」を、表示し
	列数で、回数指定し
		回数が、列数に、等しい
		ならば
			「<td align="left" valign="middle">」を、表示し、列項目(回数)を、表示し、「</td>」を、表示し
		さもなければ
			「<td align="center" valign="middle">」を、表示し、列項目(回数)を、表示し、「</td>」を、表示し
		つぎに
	繰り返す
	「</tr>」を、一行表示すること。

表の作成を終了とは
	「</table>」を、一行表示すること。

		※※※　フォーム　※※※

フォーム開始とは						(起動CGIプログラム主ファイル名　→　・)
	フォーム作成中？を、セットする
	「<form method="post" action="」を、表示し、表示し、「.cgi">」を、一行表示
	「<input type="hidden" name="jcode-a" value="いろは">」を、一行表示する。

起動パラメータ付きでフォーム開始とは	(CGI主ファイル名、起動パラメータ　→　・)
	起動オプション＄に、入れる
	フォーム作成中？を、セットする
	「<form method="post" action="」を、表示し、表示し、「.cgi?」を、表示
	起動オプション＄を、表示し、「">」を、一行表示
	「<input type="hidden" name="jcode-a" value="いろは">」を、一行表示する。

メインフォーム開始とは					（・　→　・）
	起動パラメータが、空列？
	ならば
		私のプログラム名・短縮で、フォーム開始する
	さもなければ
		起動パラメータを、ＵＲＬエンコードし
		私のプログラム名・短縮と、起動パラメータを、起動パラメータ付きでフォーム開始する
	つぎに。

ターゲット指定でフォーム開始とは		（ターゲット、起動CGIプログラム主ファイル名　→　・）
	フォーム作成中？を、セットする
	「<form method="post" action="」を、表示し、表示し、「.cgi」を、表示し
	「" target="」を、表示し、表示し、「">」を、一行表示し
	「<input type="hidden" name="jcode-a" value="いろは">」を、一行表示する。

フォーム終了とは						(・　→　・)
	フォーム作成中？を、クリアする
	「</form>」を、一行表示すること。

一行テキスト入力フォーム作成とは		(変数名、入力文字数、フィールド文字数、先行入力文字列　→　・)
		フォーム変数名は、文字列実体、長さ、１０２４バイト
		フォーム入力文字数は、変数
		フォームフィールド文字数は、変数
		フォーム先行入力文字列は、文字列実体、長さ、１０２４バイト
	フォーム変数名と、フォーム入力文字数と
	フォームフィールド文字数と、フォーム先行入力文字列に、入れる
	
	「<input type="text" name=」を、表示し
	フォーム変数名を、ダブルクオートで囲んで表示し
	フォーム入力文字数が、真？
	ならば
		「 maxlength=」を、表示し
		フォーム入力文字数を、数値表示し
	つぎに
	フォームフィールド文字数が、真？
	ならば
		「 size=」を、表示し
		フォームフィールド文字数を、数値表示し
	つぎに
	フォーム先行入力文字列が、空列？
	でなければ
		「 value=」を、表示し
		フォーム先行入力文字列を、ダブルクオートで囲んで表示し
	つぎに
	「>」を、一行表示すること。

※入力フォーム表示とは					（　・　→　・）
※	「入力文字列」、０文字数、０文字幅、「」で、一行テキスト入力フォーム作成すること。

パスワード入力フォーム作成とは			（変数名、入力文字数、フィールド文字数、先行入力文字列　→　・　）
		フォーム変数名は、文字列実体、長さ、１０２４バイト
		フォーム入力文字数は、変数
		フォームフィールド文字数は、変数
		フォーム先行入力文字列は、文字列実体、長さ、１０２４バイト
	フォーム変数名と、フォーム入力文字数と
	フォームフィールド文字数と、フォーム先行入力文字列に、入れる
	
	「<input type="password" name=」を、表示し
	フォーム変数名を、ダブルクオートで囲んで表示し
	フォーム入力文字数が、真？
	ならば
		「 maxlength=」を、表示し
		フォーム入力文字数を、数値表示し
	つぎに
	フォームフィールド文字数が、真？
	ならば
		「 size=」を、表示し
		フォームフィールド文字数を、数値表示し
	つぎに
	フォーム先行入力文字列が、空列？
	でなければ
		「 value=」を、表示し
		フォーム先行入力文字列を、ダブルクオートで囲んで表示し
	つぎに
	「>」を、一行表示すること。

複数行テキスト入力フォーム作成とは		（変数名、横幅、行数、先行入力文字列　→　・　）
		フォーム変数名は、文字列実体、長さ、１０２４バイト
		フォームフィールド横幅は、変数
		フォームフィールド行数は、変数
		フォーム先行入力文字列は、文字列実体、長さ、１０２４バイト
	フォーム変数名と、フォームフィールド横幅と
	フォームフィールド行数と、フォーム先行入力文字列に、入れる
	
	「<textarea name=」を、表示し
	フォーム変数名を、ダブルクオートで囲んで表示し
	「 cols=」を、表示し
	フォームフィールド横幅が、真？
	ならば
		フォームフィールド横幅を
	さもなければ
		20を
	つぎに
	数値表示し
	「 rows=」を、表示し
	フォームフィールド行数が、真？
	ならば
		フォームフィールド行数を
	さもなければ
		5を
	つぎに
	数値表示し
	「 wrap="soft">」を、一行表示する
	フォーム先行入力文字列が、空列？
	でなければ
		フォーム先行入力文字列を、一行表示する	※ダブルクオートで囲んではいけない
	つぎに
	「</textarea>」を、一行表示すること。

チェックボックス作成とは				（変数名、設定値、初期状態(ON=1/OFF=0)、フォームラベル　→　・　）
		フォーム変数名は、文字列実体、長さ、１０２４バイト
		フォーム設定値は、文字列実体、長さ、１０２４バイト
		フォームデフォルト状態は、変数
		フォームラベルは、文字列実体、長さ、１０２４バイト
	フォーム変数名と、フォーム設定値と、フォームデフォルト状態と、フォームラベルに、入れる
	
	「<label> <input type="checkbox" name=」を、表示し
	フォーム変数名を、ダブルクオートで囲んで表示し
	フォーム設定値が、空列？
	でなければ
		「 value=」を、表示し
		フォーム設定値を、ダブルクオートで囲んで表示し
	つぎに
	フォームデフォルト状態が、真？
	ならば
		「 checked」を、表示し
	つぎに
	「>」を、表示し、フォームラベルを、表示し
	「</label>」を、一行表示すること。

ラジオボタン作成とは					（変数名、設定値、初期状態(ON=1/OFF=0)、フォームラベル　→　・　）
		フォーム変数名は、文字列実体、長さ、１０２４バイト
		フォーム設定値は、文字列実体、長さ、１０２４バイト
		フォームデフォルト状態は、変数
		フォームラベルは、文字列実体、長さ、１０２４バイト
	フォーム変数名と、フォーム設定値と、フォームデフォルト状態と、フォームラベルに、入れる

	「<label> <input type="radio" name=」を、表示し
	フォーム変数名を、ダブルクオートで囲んで表示し
	フォーム設定値が、空列？
	でなければ
		「 value=」を、表示し
		フォーム設定値を、ダブルクオートで囲んで表示し
	つぎに
	フォームデフォルト状態が、真？
	ならば
		「 checked」を、表示し
	つぎに
	「>」を、表示し、フォームラベルを、表示し
	「</label>」を、一行表示すること。

リストボックス作成開始とは				（変数名、表示項目数、複数選択？　→　・　）
		フォーム変数名は、文字列実体、長さ、１０２４バイト
		表示項目数は、変数
		複数項目選択？は、変数
	フォーム変数名と、表示項目数と、複数項目選択？に、入れる

	「<select name=」を、表示し
	フォーム変数名を、ダブルクオートで囲んで表示し
	表示項目数が、真？
	ならば
		「 size=」を、表示し
		表示項目数を、数値表示する
	つぎに
	複数項目選択？が、真？
	ならば
		「 multiple」を、表示し
	つぎに
	「>」を、一行表示すること。

リストボックス項目設定とは				（設定値、選択状態、項目名　→　・　）
		項目設定値は、文字列実体、長さ、１０２４バイト
		項目選択状態？は、変数
		項目名は、文字列実体、長さ、１０２４バイト
	項目設定値と、項目選択状態？と、項目名に、入れる
	
	「<label> <option」を、表示し
	「 value=」を、表示し
	項目設定値を、ダブルクオートで囲んで表示し
	項目選択状態？
	ならば
		「 selected」を、表示し
	つぎに
	「>」を、表示する
	項目名が、空列？
	でなければ
		項目名を、表示し
	つぎに
	「</label>」を、一行表示すること。

リストボックス作成終了とは				（　・　→　・　）
	「</select>」を、一行表示すること。

日付選択フィールド作成とは				（変数名、設定値、最小値、最大値　→　・　）
		フォーム変数名は、文字列実体
		フォーム設定値は、文字列実体
		フォーム最小値は、文字列実体
		フォーム最大値は、文字列実体
	フォーム変数名と、フォーム設定値と、フォーム最小値と、フォーム最大値に、入れる
	「<input type="date" name="」を、表示し、フォーム変数名を、表示し、「"」を、表示する
	フォーム設定値が、空列？
	でなければ
		「 value="」を、表示し、フォーム設定値を、表示し、「"」を、表示し
	つぎに
	フォーム最小値が、空列？
	でなければ
		「 min="」を、表示し、フォーム最小値を、表示し、「"」を、表示し
	つぎに
	フォーム最大値が、空列？
	でなければ
		「 max="」を、表示し、フォーム最大値を、表示し、「"」を、表示し
	つぎに
	「/>」を、一行表示すること。

時刻選択フィールド作成とは				（変数名、設定値、最小値、最大値　→　・　）
		フォーム変数名は、文字列実体
		フォーム設定値は、文字列実体
		フォーム最小値は、文字列実体
		フォーム最大値は、文字列実体
	フォーム変数名と、フォーム設定値と、フォーム最小値と、フォーム最大値に、入れる
	「<input type="time" name="」を、表示し、フォーム変数名を、表示し、「"」を、表示する
	フォーム設定値が、空列？
	でなければ
		「 value="」を、表示し、フォーム設定値を、表示し、「"」を、表示し
	つぎに
	フォーム最小値が、空列？
	でなければ
		「 min="」を、表示し、フォーム最小値を、表示し、「"」を、表示し
	つぎに
	フォーム最大値が、空列？
	でなければ
		「 max="」を、表示し、フォーム最大値を、表示し、「"」を、表示し
	つぎに
	「/>」を、一行表示すること。

日時選択フィールド作成とは				（変数名、設定値、最小値、最大値　→　・　）
		フォーム変数名は、文字列実体
		フォーム設定値は、文字列実体
		フォーム最小値は、文字列実体
		フォーム最大値は、文字列実体
	フォーム変数名と、フォーム設定値と、フォーム最小値と、フォーム最大値に、入れる
	「<input type="datetime-local" name="」を、表示し、フォーム変数名を、表示し、「"」を、表示する
	フォーム設定値が、空列？
	でなければ
		「 value="」を、表示し、フォーム設定値を、表示し、「"」を、表示し
	つぎに
	フォーム最小値が、空列？
	でなければ
		「 min="」を、表示し、フォーム最小値を、表示し、「"」を、表示し
	つぎに
	フォーム最大値が、空列？
	でなければ
		「 max="」を、表示し、フォーム最大値を、表示し、「"」を、表示し
	つぎに
	「/>」を、一行表示すること。

年月選択フィールド作成とは				（変数名、設定値、最小値、最大値　→　・　）
		フォーム変数名は、文字列実体
		フォーム設定値は、文字列実体
		フォーム最小値は、文字列実体
		フォーム最大値は、文字列実体
	フォーム変数名と、フォーム設定値と、フォーム最小値と、フォーム最大値に、入れる
	「<input type="month" name="」を、表示し、フォーム変数名を、表示し、「"」を、表示する
	フォーム設定値が、空列？
	でなければ
		「 value="」を、表示し、フォーム設定値を、表示し、「"」を、表示し
	つぎに
	フォーム最小値が、空列？
	でなければ
		「 min="」を、表示し、フォーム最小値を、表示し、「"」を、表示し
	つぎに
	フォーム最大値が、空列？
	でなければ
		「 max="」を、表示し、フォーム最大値を、表示し、「"」を、表示し
	つぎに
	「/>」を、一行表示すること。

		※※※	隠しフィールド　※※※

隠しフィールド作成とは					（変数名、設定値　→　・　）
		フォーム変数名は、文字列実体、長さ、１０２４バイト
		フォーム設定値は、文字列実体、長さ、１０２４バイト
	フォーム変数名と、フォーム設定値に、入れる
	「<input type="hidden" name=」を、表示し
	フォーム変数名を、ダブルクオートで囲んで表示し
	「 value=」を、表示し
	フォーム設定値を、ダブルクオートで囲んで表示し
	「>」を、一行表示すること。

		※※※　ボタン　※※※

データ送信ボタン作成とは				（ラベル文字列、変数名　→　・　）
	「<input type="submit"」を、表示し
	複写し、空列？
	ならば
		捨てる
	さもなければ
		「 name=」を、表示し、ダブルクオートで囲んで表示し
	つぎに
	「 value=」を、表示し
	複写し、空列？
	ならば
		捨て、「送　信」を
	つぎに
	ダブルクオートで囲んで表示し
	「>」を、一行表示すること。

送信ボタン作成とは						（変数名　→　・　）
	複写し、データ送信ボタン作成すること。

クラス付きデータ送信ボタン作成とは		（クラス名、ラベル文字列、変数名、→　・　）
	「<input type="submit"」を、表示し
	複写し、空列？
	ならば
		捨てる
	さもなければ
		「 name=」を、表示し、ダブルクオートで囲んで表示し
	つぎに
	「 value=」を、表示し
	複写し、空列？
	ならば
		捨て、「送　信」を
	つぎに
	ダブルクオートで囲んで表示し
	複写し、空列？
	でなければ
		「 class=」を、表示し、ダブルクオートで囲んで表示し
	つぎに
	「>」を、一行表示すること。

警告付きデータ送信ボタン作成とは		（ラベル文字列、変数名、警告文　→　・　）
	「<script>」を、一行表示し
	「function clickEvent() {」を、一行表示し
	「alert('」を、表示し、表示し、「');」を、一行表示し
	「}」を、一行表示し
	「</script>」を、一行表示し
	「<input type="submit" onclick="clickEvent()"」を、表示し
	複写し、空列？
	ならば
		捨てる
	さもなければ
		「 name=」を、表示し、ダブルクオートで囲んで表示し
	つぎに
	「 value=」を、表示し
	複写し、空列？
	ならば
		捨て、「送　信」を
	つぎに
	ダブルクオートで囲んで表示し
	「>」を、一行表示すること。

確認付きデータ送信ボタン作成は
	「送信」、「送信」、「送信します。よろしいですか？」で、警告付きデータ送信ボタン作成する。

データ送信ボタンとは					（ラベル文字列、変数名　→　ＨＴＭＬコード）
		データ送信ボタンラベル文字列は、文字列実体
		データ送信ボタン変数名は、文字列実体
		ＨＴＭＬコードは、文字列実体
	データ送信ボタン変数名と、データ送信ボタンラベル文字列に、入れる
	「<input type="submit" name="」を、ＨＴＭＬコードに、入れ
	データ送信ボタンラベル文字列が、空列？
	ならば
		「submit」を
	さもなければ
		データ送信ボタンラベル文字列を
	つぎに
	ＨＴＭＬコードに、追加し
	「" value="」を、ＨＴＭＬコードに、追加し
	データ送信ボタン変数名が、空列？
	ならば
		「submit」を
	さもなければ
		データ送信ボタン変数名を
	つぎに
	ＨＴＭＬコードに、追加し
	「">」を、ＨＴＭＬコードに、追加し
	ＨＴＭＬコードを、返す。

イメージボタン作成とは					（変数名、画像ファイル名　→　・　）
		フォーム変数名は、文字列実体、長さ、１０２４バイト
		画像ファイル名は、文字列実体、長さ、１０２４バイト
	フォーム変数名と、画像ファイル名に、入れる
	「<input type="image" name=」を、表示し
	フォーム変数名を、ダブルクオートで囲んで表示し
	「 src=」を、表示し
	画像ファイル名を、ダブルクオートで囲んで表示し
	「 border="0">」を、一行表示すること。

リセットボタン作成とは					（ラベル文字列　→　・　）
	「<input type="reset" value=」を、表示し
	複写し、空列？
	ならば
		捨て、「クリア」を
	つぎに
	ダブルクオートで囲んで表示し
	「>」を、一行表示すること。

戻るボタン作成とは						（ラベル文字列　→　・　）
	「<input type="button" value=」を、表示し
	複写し、空列？
	ならば
		捨て、「戻　る」を
	つぎに
	ダブルクオートで囲んで表示し
	「 onClick="history.back()">」を、一行表示すること。

進むボタン作成とは						（ラベル文字列　→　・　）
	「<input type=button value=」を、表示し
	複写し、空列？
	ならば
		捨て、「進　む」を
	つぎに
	ダブルクオートで囲んで表示し
	「 onClick="history.forward()">」を、一行表示すること。

リロードボタン作成とは					（ラベル文字列　→　・　）
	「<input type="button" value=」を、表示し
	複写し、空列？
	ならば
		捨て、「再読込」を
	つぎに
	ダブルクオートで囲んで表示し
	「 onClick="location.reload()">」を、一行表示すること。

印刷ボタン作成とは						（ラベル文字列　→　・　）
	「<input type="button" value=」を、表示し
	複写し、空列？
	ならば
		捨て、「印　刷」を
	つぎに
	ダブルクオートで囲んで表示し
	「 onClick="window.print()">」を、一行表示すること。

閉じるボタン作成とは					（ラベル文字列　→　・　）
	「<input type=button value=」を、表示し
	複写し、空列？
	ならば
		捨て、「閉じる」を
	つぎに
	ダブルクオートで囲んで表示し
	「 onClick="window.close()">」を、一行表示すること。

後ろへボタン作成とは					（ラベル文字列　→　・　）
	「<input type="button" value=」を、表示し
	複写し、空列？
	ならば
		捨て、「後ろへ」を
	つぎに
	ダブルクオートで囲んで表示し
	「 onClick="window.blur()">」を、一行表示すること。

		※※※　ファイルアップロード　※※※

ファイルアップロードフォーム作成とは	（起動CGIプログラム主ファイル名、変数名、設定値、文字数　→　・　）
		フォーム変数名は、文字列
		フォーム設定値は、文字列
		フォームフィールド文字数は、変数
	フォーム変数名と、フォーム設定値と、フォームフィールド文字数に、入れる

	フォーム作成中？
	ならば
		フォーム終了する				（フォーム作成中？は、クリアされる）
	つぎに
	「<form enctype="multipart/form-data" method="post" action="」を、表示し、表示し、「.cgi」を、表示し
	起動パラメータが、空列？
	でなければ
		'?'を、一文字表示し
		起動パラメータを、表示し
	つぎに
	「">」を、表示する
	「<input type="file" name=」を、表示し
	フォーム変数名を、ダブルクオートで囲んで表示し
	フォーム設定値が、空列？
	でなければ
		「 value=」を、表示し
		フォーム設定値を、ダブルクオートで囲んで表示し
	つぎに
	フォームフィールド文字数が、真？
	ならば
		「 size=」を、表示し
		フォームフィールド文字数を、数値表示し
	つぎに
	「>」を、一行表示する
※	「 onchange="upload();">」を、一行表示する
※	ここで改行し
	「ファイル送信」、「ファイル送信」、データ送信ボタン作成する。

		※※※　変数確認用　※※※

CGI変数の値を参照とは					（変数名　－－＞　値文字列）
	値を参照し、偽？
	ならば
		「変数が存在しません。」を
	つぎに
	一行表示すること。

CGI変数の値か空列を参照とは				（変数名　－－＞　値文字列）
	値か空列を参照し、一行表示する。
	
CGI変数の名前有り？とは					（変数名　－－＞　真偽）
	名前有り？
	ならば
		「変数名有り」
	さもなければ
		「変数名無し」
	つぎに
	一行表示する。

		※※※　フォームを簡単にする○○表示　※※※

※　○○フォーム作成	上級者向け	スタック渡し
※　○○フォーム表示	初心者向け	スタック渡しを省略して簡単にフォーム作成

一行テキスト入力フォーム表示とは
	「入力文字列」、０文字数、０文字幅、「」で、一行テキスト入力フォーム作成すること。

入力フォーム表示とは					（フォームラベル　→　・　）
		フォームラベルは、文字列実体
	フォームラベルに、入れる
	フォームラベルを、表示し、「：」を、表示し
	フォームラベル、０文字数、０文字幅、「」で、一行テキスト入力フォーム作成すること。

パスワード入力フォーム表示とは
	「パスワード」、０文字数、０文字幅、「」で、パスワード入力フォーム作成すること。

パスワードフォーム表示とは				（フォームラベル　→　・　）
		フォームラベルは、文字列実体
	フォームラベルに、入れる
	フォームラベルを、表示し、「：」を、表示し
	フォームラベル、０文字数、０文字幅、「」で、パスワード入力フォーム作成すること。

チェックボックス表示とは				（フォームラベル　→　・　）
		フォームラベルは、文字列実体
	フォームラベルに、入れる
	フォームラベル、０、０、フォームラベルで、チェックボックス作成すること。

ラジオボタン表示とは					（フォームラベル　→　・　）
		フォームラベルは、文字列実体
	フォームラベルに、入れる
	「選択」、フォームラベル、０、フォームラベルで、ラジオボタン作成すること。

日付選択表示とは						（変数名　→　・　）
	複写し、表示し、「：」を、表示し
	「」、「」、「」で、日付選択フィールド作成すること。

時刻選択表示とは						（変数名　→　・　）
	複写し、表示し、「：」を、表示し
	「」、「」、「」で、時刻選択フィールド作成すること。

日時選択表示とは						（変数名　→　・　）
	複写し、表示し、「：」を、表示し
	「」、「」、「」で、日時選択フィールド作成すること。

年月選択表示とは						（変数名　→　・　）
	複写し、表示し、「：」を、表示し
	「」、「」、「」で、年月選択フィールド作成すること。

データ送信ボタン表示とは
	「送信」、「送信」で、データ送信ボタン作成すること。

送信ボタン表示とは
	データ送信ボタン表示と、等価。

警告付きデータ送信ボタン表示とは
	「送信」、「送信」、「送信します。よろしいですか？」で、警告付きデータ送信ボタン作成する。

警告付き送信ボタン表示とは
	警告付きデータ送信ボタン表示と、等価。

確認付き送信ボタン表示とは
	警告付きデータ送信ボタン表示と、等価。

リセットボタン表示とは
	「」で、リセットボタン作成すること。

戻るボタン表示とは
	「」で、戻るボタン作成すること。

進むボタン表示とは
	「」で、進むボタン作成すること。

リロードボタン表示とは
	「」で、リロードボタン作成すること。

印刷ボタン表示とは
	「」で、印刷ボタン作成すること。

閉じるボタン表示とは
	「」で、閉じるボタン作成すること。

ファイルアップロードフォーム表示とは
	私のプログラム名・短縮、「ファイル名」、「」、０で、ファイルアップロードフォーム作成すること。

		※※※	前処理と後処理の間にメインとなる処理を書いていくだけ　※※※

メイン前処理とは
	「bgcolor="wheat"」を、ＢＯＤＹデータに、入れる
	私のプログラム名・短縮を、大文字変換する
	私のプログラム名・短縮で、ＨＴＭＬヘッダを出力する
	メイリオフォントにする
	メインフォーム開始する。

メイン後処理とは
	フォーム終了する
	フォント終了する
	ローカルホスト？
	ならば
		罫線を引く
		名前と値をモニタする
		起動引数をモニタする
		標準CGI変数をモニタする
	つぎに
	太字開始
		赤色切り替えし
			スタック検査する
		切替終了
	太字終了。
```
</details>

# 使い方
```
"htmlform.src"を、コンパイルする。
```
```
メインは
    メインの前処理する
    （ここにコードを書く）
    メインの後処理する。
```

# フォーム入力のサンプルプログラム
```Mind:cgi-input.src
※タイトル		Webアプリケーションフォーム入力サンプル
※リンク		cgilib
※作成者		@Mind-CLUB_2017(Qiita)

"htmlform.src"を、コンパイルする。

フォーム入力とは
	「アカウント」で、入力フォーム表示し
	「パスワード」で、パスワードフォーム表示し、ここで改行、ここで改行

	「鉛筆」で、チェックボックス表示し
	「消しゴム」で、チェックボックス表示し
	「時計」で、チェックボックス表示し
	「受験票」で、チェックボックス表示し、ここで改行、ここで改行

	「男性」で、ラジオボタン表示し
	「女性」で、ラジオボタン表示し、ここで改行、ここで改行
	
	「日時」で、日時選択表示、ここで改行、ここで改行
	
	確認付き送信ボタン表示する。

入力データ表示とは
	「アカウント：」を、表示し、「アカウント」の、その値を、表示する、ここで改行
	「パスワード：」を、表示し、「パスワード」の、その値を、表示する、ここで改行

	「鉛筆：」を、表示し、「鉛筆」の、その値を、表示する、ここで改行
	「消しゴム：」を、表示し、「消しゴム」の、その値を、表示する、ここで改行
	「時計：」を、表示し、「時計」の、その値を、表示する、ここで改行
	「受験票：」を、表示し、「受験票」の、その値を、表示する、ここで改行

	「選択：」を、表示し、「選択」の、その値を、表示する、ここで改行

	「日時：」を、表示し、「日時」の、その値を、表示する。

メインは
	メインの前処理し
		私のプログラム名・短縮を、中で一行表示
		「送信」の、その値が、空列？
		ならば								※送信ボタン押してない
			フォーム入力する
		さもなければ
			入力データ表示する
		つぎに
	メインの後処理する。
```

# 実行結果
![shot_240113_235342.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/50d0be26-609e-81bb-c1bd-bab0aac24f46.jpeg)
入力して「送信」をクリック。

![shot_240113_235423.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/7519284a-fc5f-5006-bce9-610ec006b648.jpeg)
localhostで動いている時だけ、名前と値のリスト、起動引数、標準CGI変数を表示します。

# おわりに
本ライブラリは10年以上前からWebアプリケーション作成時に書き足して今の形になっているので、現在では非推奨のタグも使われています。