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

第7章 WebScript言語> 7.3 変数

7.3.2 パッケージ

グローバル変数およびシステム変数は、どれか1つの「パッケージ」に属します。同じ名前をもつ変数でも、属するパッケージが異なれば、それらは異なる変数として取り扱われます。

■パッケージに属する変数の指

パッケージ(package)に属する変数varを指定するには、「::」を用いて「package::var」と表記します。
指定した名前のパッケージが存在しない場合は、エラーになります。
パッケージ名に関する規約については、“命名規約”を参照してください。

■変数の特定方

パッケージによって修飾されない変数名varが指定された場合、どの変数が参照されるかのルールについて、以下に示します。

■カレントパッケー

任意の時点で、「カレントパッケージ」と呼ばれるパッケージが定まっています。パッケージ名を指定しないでグローバル変数を指定した場合は、カレントパッケージに属する変数が参照されます。

フォーマットファイルの解釈がスタートするときのカレントパッケージは、「""(空文字)」です。カレントパッケージは、<!PACKAGE>タグによって変更することができます。

■パッケージ参照の

以下のex1.html、ex2.html、ex3.htmlおよびex4.htmlはフォーマットファイルです。

【ex1.html】

<HEAD>
<TITLE>Package Example 1</TITLE>
<!PACKAGE "mypkg">
</HEAD>
<BODY>
<!VAR abc SCOPE="GLOBAL" VALUE="global-abc">
    :
<!HREPLACE 'abc'> → 表示は「global-abc」です。
    :

【ex2.html】(同じパッケージからの呼び出し)

<HEAD>
<TITLE>Package Example 2</TITLE>
<!PACKAGE "mypkg">
</HEAD>
<BODY>
<!HREPLACE 'abc'> → まずローカル変数abcを参照しようとしますが定義されて
                      いないので、ex1.htmlで宣言されたグローバル変数abcが
                      採用されます。
                      表示は「global-abc」です。
    :
(ローカル変数abcの値を宣言する)
<!VAR abc VALUE="local-abc" SCOPE="LOCAL">
ローカル変数abcは、ex1.htmlで宣言したグローバル変数abcとは違うものになります。
    :
<!HREPLACE 'abc'> → パッケージ名による修飾がないので、ローカル変数abcを
                      参照します。表示は「local-abc」です。

ex1.htmlで宣言したグローバル変数を参照したい場合は、パッケージ名で修飾します。
<!HREPLACE 'mypkg::abc'> → これはグローバル変数のabcなので、表示は「global-abc」
                            となります。
    :

【ex3.html】(別パッケージからの呼び出し)

<HEAD>
<TITLE>Package Example 3</TITLE>
<!PACKAGE "anotherpkg">
(ex1.htmlとは別のパッケージを宣言)
</HEAD>
<BODY>
<!VAR abc VALUE="another-abc" SCOPE="GLOBAL">
<!HREPLACE 'abc'> → このフォーマットファイルのローカル変数abcを参照しよう
                      としますがローカル変数abcは宣言されていないので、カ
                      レントパッケージのグローバル変数abcを参照します。
                      表示は「another-abc」です。

カレントパッケージ以外のグローバル変数を参照する方法は以下のとおりです。
<!HREPLACE 'mypkg::abc'> → これはmypkgパッケージのグローバル変数abcを指します。
                            表示は「global-abc」です。
    :

【ex4.html】(パッケージ指定のない場合)

<HEAD>
<TITLE>Package Example 4</TITLE>
<!----- PACKAGE宣言なし ----->
</HEAD>
<BODY>
<!VAR abc VALUE="global-non-abc" SCOPE="GLOBAL">
<!VAR abc VALUE="local-non-abc" SCOPE="LOCAL">
<!HREPLACE 'abc'> → ローカル変数abcを指します。
                     表示は「local-non-abc」です。

グローバル変数abcを指すためには、パッケージで修飾しなければ
なりませんが、パッケージ名が宣言されていないので、デフォルトの
パッケージである空文字列で修飾します。
<!HREPLACE '::abc'> → グローバル変数abcを参照します。
                       表示は「global-non-abc」です。

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

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