PCオーガナイザーで
‘START ‘ + URL
を実行すると5250エミュレータからブラウザを起動することが
できることは以前にも紹介した。
STRPCO MONMSG IWS4010 STRPCCMD PCCMD('START HTTP://WWW.OFFICEQUATTRO.COM') PAUSE(*NO)
を実行するとブラウザが自動的に起動されて
㈱オフィスクアトロのホーム・ページが表示されるはずである。
さらにCGIを呼び出して実行するのであれば
STRPCCMD PCCMD('START HTTP://192.168.1.1/CGI-BIN/MYCGI.PGM")
のようにPCオーガナイザーを実行すればCGI: MYCGIが起動されて実行される。
次にCGIのパラメータを渡したいとして SHCODE=NV-CF1 を渡すのであれば
CGIの記述に ? 以下にパラメータを次のように付加すればよい。
HTTP://192.168.1.1/CGI-BIN/MYCGI.PGM?SHCODE=NV-CF1
ここまでは問題はない。
次に2番目のパラメータとして ZAIKO=90 というパラメータも付加したいと
する。
HTTPのURLの仕様によれば 2番目以降のパラメータは文字
&
で結合すればよいので
HTTP://192.168.1.1/CGI-BIN/MYCGI.PGM?SHCODE=NV-CF1&ZAIKO=90
>と記述すればよい。
実際にこのURL文字列をブラウザのURL欄に入力して実行すると正常に
実行される。
ところが STRPCCMD のときだけは正常な実行はできない。
原因を調べてみると
HTTPサーバー側では
HTTP://192.168.1.1/CGI-BIN/MYCGI.PGM?SHCODE=NV-CF1
とだけ入力されていて文字 & 以降はすべてクリヤーされる。
IBMマニュアルによるとSTRPCCMDで特殊文字を含む場合は
PCCMDを引用符で囲むようにとの注意書きはあったが一向に効果はない。
これはPCオーガナイザーのバグである可能性が高い。
&以降は切断されてしまうのである。
HTMLでは文字 &のエスケープ・シーケンスは & であるが
これも効果はなくPCオーガナイザーによって &以降は切断されてしまう。
もちろんこのような障害を回避する策はIBMマニュアルに記述はない。
正解は文字 & を
%26
としてエンコードすることである。
文字 & のASCIIコードは 0x26 であるのでこれをエンコードすれば
%26 として表現される。
エンコードされた文字はHTTPサーバー(弊社ではAlaska)によって
デコードされて元の文字 & に戻される。
& は %26とエンコードしていればPCオーガナイザーによって削除されて
しまうことはない。
よって
HTTP://192.168.1.1/CGI-BIN/MYCGI.PGM?SHCODE=NV-CF1%26ZAIKO=90
としてSTRPCOを投入すればよい。