• 検索結果がありません。

WebScript ヒント集

ドキュメント内 WebDBtoolsユーザーズガイド (ページ 168-171)

第9章 環境パラメタ

A.1 WebScript ヒント集

付録 A WebScript ヒント集

WebScriptを利用する場合に、ヒントとなる項目について説明します。

共有セションでの情報の受け渡し

共有セションでは、グローバル変数の参照はできません。共有セションで、あるアクセスから次のアクセスへ情報を受け 渡したい場合には、別の方法を用いることが必要です。このために、便利な方法が、Cookieを用いることです。

Cookieを使用する例は、“3.6.11 共有セション”を参照してください。

日本語文字列の受渡し

正しく動作させるために、以下の指針に従ってください。

・ <A>タグのパラメタHREFにWebScriptコマンドを指定し、パラメタを指定した場合、そのパラメタの値をURLencode関

数にて変換してください。

・ <FORM>タグのパラメタMETHODにPOSTを指定した場合のパラメタの値は、ブラウザが自動的にエンコードを行い

ます。

検索結果数の取得

<!DO>タグを使用して検索する場合、検索結果数を取得するには、取得した結果のリストに対し、listlen関数を実行して

ください。

<!DO "SELECT * FROM SCM.TBL1 WHERE ..." RESULT=rslt>

全部で<!HREPLACE 'listlen(rslt)'>件のデータが検索されました。

<!FOREACH>と<!FOR>について

リストの全要素をループする方法は、以下の2つです。

【方法1】

<!FOREACH list x>

... xを使った処理 ...

<!/FOREACH>

【方法2】

<!FOR i 0 'listlen(list)-1'>

... list[i]を使った処理 ...

<!/FOR>

2つの方法は、ほとんど変わりませんが、方法1の場合、ループの中でxの値を変更すると、対応するlistの要素の値も変 更されます。

<!FOREACH>タグは、リストのループに対する最適化処理を行っています。リストのサイズが大きい場合は、方法1の方 が速く処理できることがあります。

パッケージについて

WebScriptでは、グローバル変数はパッケージに属しています。明示的にパッケージを指定しなくても、デフォルトのパッ ケージ("")に属しますが、できるだけアプリケーションを表すパッケージを使用するようにしてください。

たとえば、エンドユーザが、個別セション内で2つのアプリケーション「appA」と「appB」を共に使うことを考えます。両方の アプリケーションで、デフォルトのパッケージを使用している場合、2つのアプリケーションで同じグローバル変数名を使用 すると、変数が衝突して、予期しない動作を引き起こす可能性があります。

アプリケーションappAでは、すべてのフォーマットファイルのヘッダ部分で

<!PACKAGE "appA">

と宣言し、アプリケーションappBでは

<!PACKAGE "appB">

と宣言しておけば、同じグローバル変数名が使われた場合も、衝突する心配はありません。

可変キー値について

WebScript言語では、リストのキーの値に、定数文字列しか指定できません。大抵のアプリケーションでは、この定数文字 列の指定で十分です。もし、キー値を可変にする必要がある場合は、$を使用して変数を置き換えます。

<!DO "SELECT * FROM SCM.TBL1 WHERE ..." RESULT=rslt>

列 $QUERY::cNameの値は以下のとおりです。

<UL>

<!FOREACH rslt t>

<LI><!REPLACE 't{$QUERY::cName}'></LI>

<!/FOREACH>

</UL>

付録 B WebScript フォーマットファイル解釈の詳細

WebScriptフォーマットファイルの解釈の詳細について、説明します。

ドキュメント内 WebDBtoolsユーザーズガイド (ページ 168-171)