Web開発のための基礎知識

デコード と パース

あなたがもしCGIを自力で開発したとしたら HTTPサーバーから受け取る値はやはり 「%2F」
なってしまいます。従って自分自身のCGI の中では「%2F」を 「/」 に変換して戻さなくてはなりません。
この作業のことを 「デコード」 と呼びます。つまりコード化された文字のコード解除というわけです。
さらにパラメータどうしは 「&」 で結ばれていますので、それぞれを

@TEMPLATE = ... , @FORMAT= ... 

の文字列を読み取ってフィールド @TEMPLATE@FORMAT に保管しなければなりません。
この作業のことを 「パース」 と呼びます。

幸いHTTPサーバーから受け取るこれらの値は既に EBCDIC に変換されてはいますが、漢字の場合は
ASCII の漢字コードに分解されて 2F3C などのような表示になっています。
これを正しい2バイトの漢字に組み立て直したとしても、それは ASCII漢字コードですから更にそれを
API: QDCXLATE などを使って EBCDICの漢字に変換してやる必要 があります。
また入力値が漢字かどうかをどのように判定しますか?
シフト文字の挿入も必要になってきます。

後で CGI のサンプルをいくつか示しますが、このように考えてくると CGI によって入力値を正しく
受け取ることはとてもタフな仕事になります。
普通にこれらのことを処理しようと思えば、入力値を受け取るだけであるにしても気の遠くなるような
作業が必要になることが想像して頂けましたでしょうか?
IBM オリジナルHTTPサーバーの漢字入力に問題があるのはこの 漢字変換の処理の部分 です。
なるほどこれではバグが発生するのも無理かないかもしれません。

しかし EnterpriseServer「RPGエンジン」 をバインドすればこれらの複雑な作業は
一切無くなります ので心配は無用です。
ただし今回は学習のためですから原理を理解するためにも少しは苦労が必要です。
CGI の入門サンプルについては後で詳しく解説します。