ピュアテキスト

プログラムの中にHTML文書を埋め込むことができます

説明

次のように <?HTML と ?>の間に書かれた部分はそのままの形で出力されます。
<?HTML
<H2>BMI計算結果</H2>
<B><BIG>$fName</BIG></B>さんの身長は $fHeight cm、体重は $fWeight kgです。<BR>
標準体重は ${fHeight * fHeight * 22 / 10000} です。<BR>
BMIの値は、$bmi です。  $himan <BR>
<IMG SRC="gauge.jpg" HEIGHT=55 WIDTH=500><BR>
<IMG SRC="bar.gif" HEIGHT=20 WIDTH=$bmi2 >
?>

このような書き方をピュアテキスト(pure text)と言います(ピュアドキュメントともいう)。
「<?HTML」と「?>」は行頭に書き、同じ行にコメントなどを書いてはいけません。また、<?HTMLは半角大文字で書かねばなりません。

ピュアテキストの中に $変数名 と書くことで、プログラムの中で使われている変数を出力することができます。また、${計算式} として式を埋め込むこともできます。変数はプログラムの中で宣言したすべての変数を利用することができます。しかし、[](配列のカッコ)は1つまでしか認識しません。すなわち、$abc[i]は正しく処理されますが、$abc[x[i]]は正しく処理されません。このような場合は、${abc[x[i]]}と書いてください。${式}は、"式"をそのまま一時ソースコードに出力します。簡単な計算ならば、ここで処理することができます。
"$"を出力したい場合は"$$"と"$"を2つ続けて書きます。

CGI はクライアントからの入力を受け取り処理を行い、クライアントに結果を返します。出力は標準出力 (stdout) にされ、ほとんどは HTML に従ったテキストです。
そこで、通常は printf などの関数で出力します。printf 関数の中では、" (ダブルコーテーション) を \" と改行を \n と書かねばなりません。また、printf と毎回書く必要があり、それらは通常インデント (入れ子) されてます。数行ならばそれほど気になりませんが、Java Script を出力するなど何行にもなる場合などは、ソースコードが非常に繁雑になり、間違いが混入したり、見通しの悪いものになります。このピュアテキストを利用することでこれらを解決することができます。ピュアテキストは簡単なことですが、作業効率があがります。

注意

  1. C++ for CGI はcoutを利用しています。出力にprintfは絶対に使用しないでください。
  2. 「<?HTML」と「?>」は行頭に書き、同じ行にコメントなどを書いてはいけません。
  3. HTMLは半角大文字で書かねばなりません。
  4. $変数に、"[]"(カッコ)は1重までです。
  5. $変数や${式}の前後は、半角で1文字ずつ開けてください。

使用例

ピュアテキストで記述する例
/* ピュアテキスト  gCGI["fName"]はフォームからのデータ */
<?HTML
<H2>BMI計算結果</H2>
$gCGI["fName"] さんの身長は $fHeight cm、体重は $fWeight kgです。<BR>
BMIの計算値は、$bmi です。<BR>
$himan<BR>
BMIは次の式で求めます。<BR>
BMI( $bmi ) = $fWeight kg / (${fHeight/100} m * ${fHeight/100} m)<BR>
<A HREF="bmi0.html">戻る</A>
?>
上記をprintf関数を使って出力する例(従来の方法、C++ for CGIでは利用しないでください)
printf("<H2>BMI計算結果</H2>\n");
printf("%s さんの身長は %f cm、体重は %f kgです。<BR>\n",gCGI["fName"].c_str(),fHeight,fWeight);
printf("BMIの計算値は、%f です。<BR>\n",bmi);
printf("%s<BR>\n",himan.c_str());
printf("BMIは次の式で求めます。<BR>\n");
printf("BMI( %f ) = %f kg / (%f m * %f m)<BR>\n",bmi,fWeight,fHeight/100,fHeight/100);
printf("<A HREF=\"bmi0.html\">戻る</A>\n");