Symfoware Server WebDBtoolsユーザーズガイド - FUJITSU -
目次 索引 前ページ次ページ

付録A WebScriptヒント集

A.1 WebScriptヒント集

WebScriptを利用する際に、ヒントとなる以下の項目について説明します。

変数の値の埋込みについ

WebScriptでは、変数の埋込みの手段として、以下の2つを提供しています。

◆ドル記号($)による置き換え

タグのパラメタまたはその一部として、変数の値を使用したい場合は、ドル記号で置き換えます。

<A HREF="$myURL">

◆<!REPLACE>タグ、<!HREPLACE>タグ

タグ以外の場所に、変数の値を使用する場合は、<!REPLACE>タグまたは<!HREPLACE>タグを用います。

<!SETVAR cost 5000>
宿舎までの交通費は<!HREPLACE cost>円です。

<!HREPLACE>タグは、STYLE=HTMLを指定した<!REPLACE>タグと同等です。通常の使用では、<!HREPLACE>タグを使用すれば十分で、<!REPLACE>タグを使用する必要はほとんどありません。
なお、タグ自身またはタグのパラメタ名の部分を、変数の値で置き換えることはできません。

大きなメモリ領域の代

大きなメモリ領域を、2つ以上の変数で参照したい場合があります。メモリの参照方法により、性能が変わります。以下に例を示します。

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

この3番目のデータ (先頭のデータを0番目と数えるものとします) を変数xに入れる場合、以下の2種類の方法があります。

(1) <!SETVAR x rslt[3]>
(2) <!SETVAR x rslt[3] REF>

(1)では、3件目のデータ全体が、xにコピーされます。各データのサイズが大きい場合は、性能が悪くなります。

(2)のようにREFパラメタを使用すると、データがコピーされません。xがrslt[3]の指しているデータを指すだけです。

したがって、(2)の方法が、よいことがわかります。

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

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

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

日本語文字列の受渡

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

検索結果数の取

<!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>

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2007