IBM Books

解説書


マクロ言語構成要素

このセクションでは、Net.Data マクロで使用する言語構成要素について説明します。

それぞれの言語構成要素の説明には、 以下の情報が記載されていることがあります。

目的
Net.Data マクロで言語構成要素を使用する理由を定義します。

構文
言語構成要素の論理構造図を示します。

パラメーター
構文図のすべての要素を定義し、 ほかの言語構成要素の構文および例への相互参照を行います。

コンテキスト
Net.Data マクロ構造内のどこで言語構成要素を使用できるかを説明します。

制約事項
含むことのできる要素を定義し、 使用におけるすべての制約事項を指定します。

Net.Data マクロ内部でキーワード・ステートメントやブロックを使用するための簡単な例や説明を記載します。

マクロでは以下の構成要素を使用します。 構文と例については、それぞれの構成要素の説明を参照してください。

コメント・ブロック

目的

Net.Data マクロの機能を説明します。 COMMENT ブロックはマクロのどこででも使用できるため、 他の構文図ではこのブロックを記載しません。

COMMENT ブロックは、Net.Data 初期設定ファイルでも使用できます。

構文

>>-%{---text---%}----------------------------------------------><
 

text
1 行または複数行での任意のストリング。 Net.Data は、すべてのコメントの内容を無視します。

コンテキスト

コメントは、Net.Data マクロの Net.Data 言語構成要素間、 または Net.Data 初期設定ファイルのどこにでも配置することができます。

制約

どのようなテキストや文字でも使用できますが、 コメント・ブロックをネストすることはできません。

例 1: 基本のコメント・ブロック

%{
This is a comment block. It can contain any number of lines
and contain any characters. Its contents are ignored by Net.Data.
%}

例 2: FUNCTION ブロックのコメント

%function(DTW_REXX) getAddress(IN  name,   %{ customer name %}
                               IN  phone,  %{ customer phone number %}
                               OUT address %{ customer address %}
                              )
{
     ....
%}

例 3: HTML ブロックのコメント

%html(report) {
 
%{ run the query and save results in a table %}
@myQuery(resultTable)
 
%{ build a form to display a page of data %}
  <form method="POST" action="report">
 
%{ send the table to a REXX function to send the data output %}
@displayRows(START_ROW_NUM, submit, resultTable, RPT_MAX_ROWS)
 
%{ pass START_ROW_NUM as a hidden variable to the next invocation %}
  <input name="START_ROW_NUM" type="hidden" value="$(START_ROW_NUM)">
 
%{ build the next and previous buttons %}
%if (submit == "both" || submit == "next_only")
  <input name="submit" type="submit" value="next">
    %endif
%if (submit == "both" || submit == "prev_only")
  <input name="submit" type="submit" value="previous">
    %endif
</form>
%}

例 4: DEFINE ブロックのコメント

%define {
   START_ROW_NUM = "1"        %{ starting row number for output table %}
   RPT_MAX_ROWS = "25"        %{ maximum number of rows in the table  %}
   resultTable = %table       %{ table to hold query results          %}
%}
 

Example 5: Net.Data 初期設定ファイル中のコメント

%{ changes: removed RETURN_CODE parm and DTW_DEFAULT ENVIRONMENT statement %} 
...
ENVIRONMENT (DTW_SQL) dtwsql (IN LOCATION, DB2SSID, DB2PLAN, TRANSACTION_SCOPE)
ENVIRONMENT (DTW_ODBC) odbcdll (IN LOCATION, TRANSACTION_SCOPE)
ENVIRONMENT (DTW_PERL) perldll ()
ENVIRONMENT (DTW_REXX) rexxdll ()
ENVIRONMENT (DTW_FILE) filedll ()
ENVIRONMENT (DTW_APPLET) appldll ()
ENVIRONMENT (DTW_SYSTEM) sysdll ()

DEFINE ブロックまたはステートメント

目的

DEFINE セクションでは、マクロの宣言パーツに変数名を定義します。 このセクションは、 以下のとおりステートメントでもブロックでもかまいません。

変数定義は、二重引用符 ("") を使用して単一行にしたり、 大括弧とパーセント記号 ({ %}) を使って複数行にわたるようにすることができます。 変数を定義すると、 マクロのどこででもその変数を参照できるようになります。

構文

>>-%DEFINE----+----------------------------+-------------------->
              |             (1)            |
              '-(--+-STATIC---------+---)--'
                   |           (1)  |
                   '-TRANSIENT------'
 
>-----+-| define entry |--------------------------+------------><
      '-{--+------------------------------+---%}--'
           |  .------------------------.  |
           |  V                        |  |
           '----+-define entry------+--+--'
                '-include statement-'
 
define entry
 
                             .--------------------------.
                             V                          |
|---+-variable name--=--+-"-----+--------------------+--+---"---+-+->
    |                   |       +-string-------------+          | |
    |                   |       +-variable reference-+          | |
    |                   |       '-function call------'          | |
    |                   |    .--------------------------.       | |
    |                   |    V                          |       | |
    |                   +-{-----+--------------------+--+---%}--+ |
    |                   |       +-string-------------+          | |
    |                   |       +-variable reference-+          | |
    |                   |       +-function call------+          | |
    |                   |       '-new_line-----------'          | |
    |                   +-exec statement------------------------+ |
    |                   +-table statement-----------------------+ |
    |                   +-envvar statement----------------------+ |
    |                   +-| conditional variable |--------------+ |
    |                   '-| abbreviated conditional variable |--' |
    '-list statement----------------------------------------------'
 
>---------------------------------------------------------------|
 
conditional variable
 
|---variable name---?------------------------------------------->
 
           .--------------------------.
           V                          |
>-----+-"-----+--------------------+--+---"---+----------------->
      |       +-string-------------+          |
      |       +-variable reference-+          |
      |       '-function call------'          |
      |    .--------------------------.       |
      |    V                          |       |
      '-{-----+--------------------+--+---%}--'
              +-string-------------+
              +-variable reference-+
              '-function call------'
 
                .--------------------------.
                V                          |
>-------:--+-"-----+--------------------+--+---"---+------------|
           |       +-string-------------+          |
           |       +-variable reference-+          |
           |       '-function call------'          |
           |    .--------------------------.       |
           |    V                          |       |
           '-{-----+--------------------+--+---%}--'
                   +-string-------------+
                   +-variable reference-+
                   '-function call------'
 
abbreviated conditional variable
 
              .--------------------------.
              V                          |
|---?----+-"-----+--------------------+--+---"---+--------------|
         |       +-string-------------+          |
         |       +-variable reference-+          |
         |       '-function call------'          |
         |    .--------------------------.       |
         |    V                          |       |
         '-{-----+--------------------+--+---%}--'
                 +-string-------------+
                 +-variable reference-+
                 '-function call------'
 

注:

  1. STATIC および TRANSIENT は、永続的なマクロのキーワードです。 これらのマクロは、現在、OS/400 オペレーティング・システムだけで使用することができます。

%DEFINE
変数を定義するキーワード。

STATIC
変数の値が永続的なトランザクション内の複数のマクロ起動を通じて維持されることを指定するキーワード。 これは、永続的なマクロの場合のデフォルトです。

TRANSIENT
この変数の値が複数のマクロ起動を通じて維持されないことを指定するキーワード。 これは、非永続的なマクロの場合のデフォルトです。

define entry:

variable name
変数を識別する名前です。 構文情報については、変数名 を参照してください。

string
任意の順序の英字、数字、および句読点です。 ストリングが二重引用符内にある場合、改行文字は使用できません。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した Net.Data 組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

exec statement
EXEC ステートメントです。 変数の参照時または関数の呼び出し時に実行される外部プログラム名です。構文と例については、EXEC ブロックまたはステートメント を参照してください。

table statement
TABLE ステートメントです。 同一レコードまたは同一行の配列、 および各行のフィールドを記述する列名の配列が含まれている関連データの集合を定義します。 構文と例については、TABLE ステートメント を参照してください。

envvar statement
ENVVAR ステートメントです。 環境変数を参照します。 構文と例については、ENVVAR ステートメント を参照してください。

conditional variable
別の変数またはストリングの値に基づいて、変数の値を設定します。

abbreviated conditional variable
別の変数またはストリングの値に基づいて、変数の値を設定します。 条件変数の簡易形式です。

list statement
LIST ステートメントです。 値の区切りリストを作成するのに使用する変数を定義します。 構文と例については、LIST ステートメント を参照してください。

include statement
INCLUDE ステートメントです。 ファイルを読み取って Net.Data マクロに取り込みます。構文と例については、INCLUDE ステートメント を参照してください。

コンテキスト

DEFINE ブロックまたはステートメントは、IF ブロックの中か、 Net.Data マクロの宣言パーツのほかのすべてのブロックの外側に指定しなければなりません。

制約

例 1: 単純な変数の定義

%DEFINE var1 = "orders"
%DEFINE var2 = "$(var1).html"

実行時に変数参照 $(var2) は、orders.html と評価されます。

例 2: ストリング内部の引用符

%DEFINE hi = "say ""hello"""
%DEFINE empty = ""

表示されると、変数 hi の値は say "hello" となります。 変数 empty は空です。

例 3: 複数の変数の定義

%DEFINE{  DATABASE = "testdb"
          home = "http://www.software.ibm.com"
          SHOWSQL = "YES"
          PI = "3.14150"
%}

例 4: 変数の複数行にわたる定義

%DEFINE text = {This variable definition
            spans two lines
%}

例 5: この条件変数の例は、 結果の値が NULL 値を含まない場合に、 変数 var が引用符 ("") 内に結果の値を入れる方法を示したものです。

%DEFINE var = ? "Hello! $(V)@MyFunc()"
%}

ENVVAR ステートメント

目的

DEFINE ブロックで変数を環境変数として定義します。 ENVVAR 変数を参照すると、Net.Data は同じ名前の環境変数の現行値を戻します。

構文

>>-%ENVVAR-----------------------------------------------------><
 

コンテキスト

ENVVAR ステートメントは、DEFINE ブロックまたはステートメントで指定することができます。

%ENVVAR
DEFINE ブロックで変数を環境変数として定義するためのキーワードです。 この変数は、マクロのどこででも環境変数の値を入手することができます。

制約

ENVVAR ステートメントにはその他の要素を含めることができません。

例 1: この例では、ENVVAR は、 参照時に環境変数 SERVER_SOFTWARE の現行値、 つまり Web サーバー名を戻す変数を定義します。

%DEFINE SERVER_SOFTWARE = %ENVVAR
 
%HTML(REPORT) {
The server is $(SERVER_SOFTWARE).
%}

EXEC ブロックまたはステートメント

目的

変数の参照時または関数の呼び出し時に実行される外部プログラムを指定します。

Net.Data がマクロ内で実行可能変数を見つけると、 参照された実行可能プログラムを以下の方法で探します。

  1. Net.Data 初期設定ファイルの中で EXEC_PATH を探します。 EXEC_PATH についての詳細は、 Net.Data 管理およびプログラミングの手引き の構成の章を参照してください。

  2. プログラムが見つからない場合、 Net.Data はシステムの PATH 環境変数で定義されているディレクトリーを探します。 実行可能プログラムが見つかると、Net.Data はそのプログラムを実行します。

許可のヒント: Net.Data が実行されるユーザー ID が、 EXEC ステートメントまたはブロックによって参照されるどのファイルについてもアクセス権限を持つようにしてください。詳しくは、 Net.Data 管理およびプログラミングの手引き の構成の章にある、 Net.Data ファイルへの Web サーバーのアクセス権限の指定に関するセクションを参照してください。

EXEC ステートメントおよびブロックは、 使用する場所に応じて 2 つの異なるコンテキストで使用し、 その構文も異なります。DEFINE ブロックでは EXEC ステートメントを使用し、 FUNCTION ブロックでは EXEC ブロックを使用します。

構文

DEFINE ブロックで使用する際の EXEC ステートメント構文 :

                 .--------------------------.
                 V                          |
>>-%EXEC------"-----+--------------------+--+---"--------------><
                    +-string-------------+
                    +-variable reference-+
                    '-function call------'
 

FUNCTION ブロックで使用する際の EXEC ブロック構文 :

                 .-------------------------.
                 V                         |
>>-%EXEC------{----+-string-------------+--+---%}--------------><
                   +-variable reference-+
                   '-function call------'
 

%EXEC
変数の参照時または関数の呼び出し時に実行される外部プログラム名を指定するキーワードです。 Net.Data が EXEC ステートメントで定義された変数参照を検出すると、 Net.Data は EXEC ステートメントが変数に宣言した内容を処理します。

string
任意の順序の英字、数字、および句読点です。 ストリングが二重引用符内にある場合、改行文字は使用できません。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した Net.Data 組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

コンテキスト

EXEC ブロックまたはステートメントは、 以下のコンテキストで検出することができます。

制約

EXEC ブロックまたはステートメントには、以下の要素を含めることができます。

以下の Net.Data に提供される言語環境では、 EXEC ステートメントがサポートされます。

例 1: 変数により参照される実行可能ファイル

%DEFINE mycall = %EXEC "MYEXEC.EXE $(empno)"
 
%HTML (report){
<P>Here is the report you requested:
<HR>$(mycall)
%}

この例では、変数 mycall を参照するたびに MYEXEC.EXE を実行します。

例 2: 関数により参照される実行可能ファイル

%FUNCTION(DTW_REXX) my_rexx_pgm(INOUT a, b, IN c, INOUT d){
 %EXEC{ mypgm.cmd this is a test %}
%}

この例は、 関数 my_rexx_pgm の呼び出し時に mypgm.cmd を実行します。

FUNCTION ブロック

目的

Net.Data がマクロから呼び出すサブルーチンを定義します。FUNCTION ブロックの実行可能ステートメントは、 言語環境により直接解釈されるインライン・ステートメントにしたり、 外部プログラムの呼び出しにすることができます。

Function ブロック内の EXEC ブロック

FUNCTION ブロック内部で EXEC ブロックを使用する場合、 その EXEC ブロックは、 FUNCTION ブロック内の唯一の実行可能ステートメントでなければなりません。 実行可能ステートメントを言語環境に渡す前に、 Net.Data は、初期設定ファイルの EXEC_PATH 構成ステートメントで判別されるパス名に、 EXEC ブロックのプログラムのファイル名を追加します。 結果ストリングは、実行される言語環境に渡されます。

言語環境が EXEC ブロックを処理するのに使用する方法は、 特定の言語環境により異なります。REXX、System、および Perl の Net.Data 提供言語環境だけが EXEC ブロックをサポートします。

言語ステートメント内での特殊文字の使用

Net.Data 言語構成要素構文に一致する文字が、 構文的に有効な組み込みプログラム・コード (たとえば、REXX または Perl) の一部として、 関数ブロックの言語ステートメント・セクションで使用されると、 それらの文字が誤って Net.Data 言語構成要素として解釈され、 マクロでエラーが生じたり、予測できない結果が生じたりすることがあります。

たとえば、Perl 関数が COMMENT ブロックの区切り文字として %{ を使用する場合があります。 このマクロが実行されると、%{ という文字は COMMENT ブロックの先頭と解釈されます。 そして Net.Data は、COMMENT ブロックの終わりを探し、 この関数ブロックの終わりに達したときに COMMENT ブロックの終わりが見つかったものと判定します。 その後で Net.Data はさらに関数ブロックの終わりを探し、 それが見つからない場合には、エラーを発行します。

Net.Data 特殊文字を組み込みプログラム・コードの一部として使用し、 Net.Data によって特殊文字として解釈されないようにするためには、 以下の方法を使用してください。

たとえば、次の Perl 関数には、Perl 言語ステートメントの一部として、 COMMENT ブロックの区切り文字を表す文字 %{ が含まれています。

%function(DTW_PERL) func() {
  ...           
  for $num_words (sort bynumber keys %{ $Rtitles{$num} }) {
  &make_links($Rtitles{$num}{$num_words});          
  }            
  ...         
 %}   

Net.Data が %{ 文字を Net.Data の COMMENT ブロック区切り文字としてでなく、 Perl ソース・コードとして解釈するようにするには、 次のいずれかの方法でこの関数を書き直してください。

構文

>>-%FUNCTION--(--lang_env--)--function_name--| parm passing spec |-->
 
     .-;---------------------------------------------.
>----+-| returns spec |--{--| function body |----%}--+---------><
 
parm passing spec
 
|---(--+---------------------------------------------+---)------|
       |  .-,-------------------------------------.  |
       |  |      (1)                              |  |
       |  V .-IN-------.                          |  |
       '----+----------+---+-----------+---name---+--'
            +-OUT------+   '-datatype--'
            '-INOUT----'
 
returns spec
 
|---+----------------------+------------------------------------|
    '-RETURNS--(--name--)--'
 
function body
 
|---+-------------------------------+--------------------------->
    |  .--------------------------. |
    |  V                          | |
    +----inline statement block---+-+
    '-exec block--------------------'
 
>-----+-----------------------------------------------+---------|
      |  .---------------------.                      |
      |  V               (2)   |                      |
      +----report block--------+---+----------------+-+
      |                            '-message block--' |
      |                .--------------------------.   |
      |                V                          |   |
      '-message block-----+--------------------+--+---'
                          |              (2)   |
                          '-report block-------'
 

注:

  1. パラメーター・リストの先頭でパラメーター型を指定しない場合、 デフォルトのパラメーター型の IN が適用されます。 パラメーター型を指定していないパラメーターは、 パラメーター・リストで最新に指定された型を使用するか、 型がそれまでに指定されていない場合には型 IN を使用します。たとえば、 パラメーター・リスト (parm1, INOUT parm2, parm3, OUT parm4, parm5) において、 パラメーター parm1parm3、および parm5 にはパラメーター型が指定されていません。パラメーター parm1 の型は、 初期パラメーターが指定されていないため IN になります。 パラメーター parm3 の型は INOUT になりますが、 これは、指定された最新のパラメーター型が INOUT であるからです。同様に、パラメーター・リストで指定された最新の型が OUT であるため、 パラメーター parm5 の型は OUT です。

  2. 繰り返される report block は、次の場合に有効です。

%FUNCTION
Net.Data がマクロ・ファイルから呼び出すサブルーチンを指定するキーワードです。

lang_env
関数本体を処理する言語環境です。 詳しくは、Net.Data 管理およびプログラミングの手引き を参照してください。

function_name
定義されている関数の名前です。この名前は、 英字または下線で開始し、英字、数字、 あるいは下線文字を任意の組み合わせで含む英字または数字ストリングにすることができます。

parm passing spec:

IN
Net.Data が入力データを言語環境に渡すことを指定します。 IN はデフォルトです。

OUT
言語環境が出力データを Net.Data に戻すことを指定します。

INOUT
Net.Data が入力データを言語環境に渡し、 言語環境が出力データを Net.Data に戻すことを指定します。

datatype
パラメーターのデータ型を指定します。パラメーターのデータ型です。 ストアード・プロシージャーでサポートされるデータ型の詳細は、 Net.Data 解説書 の「付録 C. Net.DATA のオペレーティング・システムごとの参照」を参照してください。

name
英字または下線で開始し、英字、数値、 あるいは下線文字を任意の組み合わせで含んでいる英字または数値ストリングです。

returns spec:

RETURNS
関数が完了した後で、言語環境により割り当てられる関数値を含む変数を宣言します。

function body:

inline statement block
関数定義で指定された REXX、SQL、Perl などの 言語環境で構文的に有効なステートメントです。 使用している言語環境の説明は、 Net.Data 管理およびプログラミングの手引き を参照してください。 構文と使用法については、 プログラム言語のプログラミング解説書を参照してください。 インライン・ステートメント・ブロックを表すストリングには、 Net.Data 変数参照と関数呼び出しを含めることができます。 これらの変数参照と関数呼び出しは、 インライン・ステートメント・ブロック (プログラム) の実行前に評価されます。

exec block
EXEC ブロックです。 変数の参照時または関数の呼び出し時に実行される外部プログラム名です。 構文と例については、EXEC ブロックまたはステートメント を参照してください。

report block
REPORT ブロックです。 関数呼び出しの出力用の形式化指示です。 レポート用にヘッダーおよびフッター情報を使用することができます。構文と例については、REPORT ブロック を参照してください。

message block
MESSAGE ブロックです。 関数呼び出しが戻されるときの、 戻りコードの集合、関連メッセージ、および Net.Data が行うアクションです。 構文と例については、MESSAGE ブロック を参照してください。

コンテキスト

FUNCTION ブロックは、以下のコンテキストで検出することができます。

制約

以下の例は一般的なものであり、 すべての言語環境をカバーするわけではありません。 特定の言語環境での FUNCTION ブロックの使用についての詳細は、 Net.Data 言語環境解説書 を参照してください。

例 1: REXX サブストリング関数

%DEFINE lstring = "longstring"
%FUNCTION(DTW_REXX) substring(IN x, y, z) RETURNS(s) {
  s = substr("$(x)", $(y), $(z));
%}
%DEFINE a = {@substring(lstring, "1", "4")%} %{ assigns "long" to a %}

a が評価されると、@substring 関数呼び出しが検索され、 サブストリング FUNCTION ブロックが実行されます。 変数が FUNCTION ブロックの実行可能ステートメントで置換されてから、 テキスト・ストリングの s = substr("longstring", 1, 4) が REXX インタープリターに渡されて実行されます。 RETURNS 文節が指定してあるため、 a の評価において @substring 関数呼び出しの値は、 "long" (つまり s の値) に置き換えられます。

例 2: 外部 REXX プログラムの呼び出し

EXEC ステートメントは、REXX インタープリターが外部 REXX プログラム mypgm.cmd を実行するように REXX 言語環境 に命令します。 REXX 言語環境は、Net.Data 変数を REXX プログラムと共用できるため、 mypgm.cmd を実行する前に、 REXX 変数 ab、 および c に Net.Data 変数 wx、および y の値を割り当てることができます。 mypgm.cmd は、 変数 ab、 および c を REXX ステートメントで直接使用することができます。 プログラムが終了すると、REXX 変数 ab、 および d は REXX プログラムから取り出され、 これらの値は Net.Data 変数 wx、 および z に割り当てられます。 RETURNS 文節は my_rexx_pgm FUNCTION ブロックの定義で使用されていないため、 @my_rexx_pgm 関数呼び出しの値は、 ヌル・ストリング "" (戻りコードが 0 の場合) か、 REXX プログラムの戻りコードの値 (戻りコードがゼロ以外の場合) です。

例 3: SQL 照会およびレポート

%FUNCTION(DTW_SQL) query_1(IN x, IN y) {
   SELECT customer.num, order.num, part.num, status
   FROM customer, order, shippingpart
   WHERE customer.num = '$(x)'
      AND customer.ordernumber = order.num
      AND order.num = '$(y)'
      AND order.partnumber = part.num
 %REPORT{
     <P>Here is the status of your order:
     <P>$(NLIST)
<UL>
%ROW{
       <LI>$(V1)  $(V2)  $(V3)  $(V4)
     %}
</UL>
        %}
%}
%DEFINE customer_name="IBM"
%DEFINE customer_order="12345"
%HTML(REPORT) {
  @query_1(customer_name, customer_order)
%}

@query_1 関数呼び出しは、 SELECT ステートメントで $(x)IBM$(y)12345 に置き換えます。 SQL 関数 query_1 の定義では出力表変数を指定しないため、 デフォルトの表が使用されます (詳しくは、TABLE 変数ブロックを参照してください)。 REPORT ブロックで参照される NLIST および Vi 変数は、 デフォルトの表定義で定義されています。 REPORT ブロックで作成されるレポートは、 query_1 関数が呼び出される出力 HTML に置かれます。

例 4: Perl スクリプトを実行するシステム呼び出し

System 言語環境は、 C 言語の system() 関数呼び出しを使用して FUNCTION ブロックの実行可能ステートメントをオペレーティング・システムに渡すことによって、 これらの実行可能ステートメントを解釈します。 この方式では、REXX 言語環境が行うように、 Net.Data 変数を実行可能ステートメントへ直接渡したり取り出したりすることができません。 このため、System 言語環境は、以下のように変数の受け渡しと取り出しを行います。

@today 関数呼び出しが検出されると、 Net.Data は実行可能ステートメントで変数置換を行います。 この例では実行可能ステートメントに Net.Data 変数がないため、 変数置換は行われません。 実行可能ステートメントとパラメーターは System 言語環境に渡されます。 この言語環境は、名前付きパイプを作成し、環境変数 DTWPIPE をパイプ名に設定します。

次に、外部プログラムが C system() 関数呼び出しで呼び出されます。 外部プログラムは、書き込み専用としてパイプをオープンし、 パイプが標準ストリーム・ファイルであるかのように、 出力パラメーターの値をパイプに書き込みます。 外部プログラムは、STDOUT に書き込むことにより HTML 出力を生成します。 この例では、システム日付プログラムの出力が変数結果に割り当てられます。 これは、FUNCTION ブロックの RETURNS 文節で指定される変数です。 この変数結果の値は、HTML ブロックの @today() 関数呼び出しを置き換えます。

例 5: Perl 言語環境

%FUNCTION(DTW_PERL) today() RETURNS(result) {
  $date = `date`;
  chop $date;
  open(DTW, "> $ENV{DTWPIPE}") || die "Could not open: $!";
  print DTW "result = \"$date\"\n";
%}
%HTML(INPUT) {
  @today()
%}

ブロックの使用法を調べるため、この例と 例 4 を比較します。例 4 では、System 言語環境は Perl プログラムの解釈方法を理解していませんが、 言語環境は外部プログラムの呼び出し方法を理解しています。 EXEC ブロックは、 外部プログラムとして perl という名前のプログラムを呼び出すことを言語環境に命令します。 実際の Perl 言語ステートメントは、 外部 Perl プログラムによって解釈されます。 例 5 には EXEC ブロックがありません。これは、 Perl 言語環境が Perl 言語ステートメントを直接解釈することができるからです。

関数呼び出し (@)

目的

FUNCTION ブロック、MACRO_FUNCTION ブロック、 あるいは引き数を指定した組み込み関数を呼び出します。関数が組み込み関数ではない場合、 関数呼び出しを指定する前に、 あらかじめ Net.Data マクロでその関数を定義しておかなければなりません。

構文

>>-@function_name---(------------------------------------------->
 
>-----+-----------------------------------------------+--)-----><
      |  .-,----------------------------------------. |
      |  V                                          | |
      '----+-variable_name-----------------------+--+-'
           +-variable reference------------------+
           +-function call-----------------------+
           |    .-------------------------.      |
           |    V                         |      |
           '-"----+-string-------------+--+---"--'
                  +-variable reference-+
                  '-function call------'
 

@function_name
任意の既存の関数名です。 英字または下線で開始し、英字、数字、 あるいは下線文字を任意の組み合わせで含んでいる英字または数字ストリングです。

variable name
変数を識別する名前です。 構文情報については、変数名 を参照してください。

string
任意の順序の英字、数字、および句読点です (改行文字は除く)。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した Net.Data 組み込み関数を呼び出します。

コンテキスト

関数呼び出しは、以下のコンテキストで検出することができます。

制約

例 1: SQL 関数 formQuery の呼び出し

%FUNCTION(DTW_SQL) formQuery(){
SELECT $(queryVal) from $(tableName)
%}
 
%HTML (input){
<P>Which columns of $(tableName) do you want to see?
<FORM METHOD="POST" ACTION="report">
<INPUT NAME="queryVal" TYPE="CHECKBOX" VALUE="NAME">Name
<INPUT NAME="queryVal" TYPE="CHECKBOX" VALUE="MAIL">E-mail
<INPUT NAME="queryVal" TYPE="CHECKBOX" VALUE="FAX">FAX
<INPUT TYPE="SUBMIT" VALUE="Submit request">
%}
 
%HTML (report){
<P>Here are the columns you selected:
<HR>@formQuery()
%}

例 2: 入出力パラメーターを指定した REXX 関数の呼び出し

%FUNCTION(DTW_REXX) my_rexx_pgm(INOUT a, b, IN c, OUT d) {
 %EXEC{ mypgm.cmd this is a test %}
%}
%HTML(INPUT) {
 <P> Original variable values: $(w) $(x) $(z)
 <P> @my_rexx_pgm(w, x, y, z)
 <P> Modified variable values: $(w) $(x) $(z)
%}

例 3: 変数参照と関数呼び出しを使用し、 入力パラメーターを指定した REXX 関数の呼び出し

%FUNCTION(DTW_REXX) my_rexx_pgm(IN a, b, c, d, OUT e) {
  ...
%}
%HTML(INPUT){
 <p>  @my_rexx_pgm($(myA), @getB(), @retrieveC(), $(myD), myE)
%} 

例 4: INOUT パラメーターの使用方法を示したマクロ

%DEFINE a = "initial value of a"

%FUNCTION(DTW_REXX) func1(INOUT x) {
Say 'value at start of function:<br>
Say 'x =' x
Say '
<p>
'
x = "new value of a"
%REPORT {

<p>
value at start of report block:<br>
x = $(x)<br>
@dtw_assign(x, "newest value of a")
value at end of report block:<br>
x = $(x)<br>
%}
%}
%HTML(report) {
initial values:<br>
a = $(a)<br>
@func1(a)
value after function call:<br>
a = $(a)<br>
%}

出力結果:

initial values:
a = initial value of a
value at start of function:
x = initial value of a 
value at start of report block:
x = new value of a
value at end of report block:
x = newest value of a
value after function call:
a = newest value of a

HTML ブロック

目的

Web ページの表示方法を定義します。実行する HTML ブロックの名前は、 Net.Data の起動時に URL に指定されます。 HTML ブロックには、ほとんどの Net.Data マクロ言語ステートメント、 および HTML や Javascript などの有効な表示ステートメントを含むことができます。

構文

>>-%HTML----(--name--)------------------------------------------>
 
         .-----------------------------.
         V                             |
>-----{-----+-----------------------+--+---%}------------------><
            +-exec_sql statement----+
            +-variable reference----+
            +-if block--------------+
            +-function call---------+
            +-HTML statement--------+
            +-include statement-----+
            +-include_url statement-+
            '-while block-----------'
 

%HTML
クライアントのブラウザーに表示される HTML タグとテキストが入ったブロックを指定するキーワードです。

name
英字または下線で開始し、 英字、数字、あるいは下線文字 (ピリオドを含む) を任意の組み合わせで含んでいる英字または数字ストリングです。

exec_sql statement
互換性のためにサポートされている DB2WWW リリース 1 の言語要素です。 付録 B. DB2 WWW Connection または DB2 World Wide Web リリース 1 の資料を参照してください。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

if block
IF ブロックです。 条件付きストリング処理を行います。条件リストのストリング値が整数を表すストリングであり、 しかもこれらのストリングの先頭または末尾に空白文字がない場合、 これらの値は比較のための数値として処理されます。これらの値の先頭に、 プラス (+) または マイナス (-) 記号を 1 つ付けることができます。構文と例については、IF ブロック を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した Net.Data 組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

HTML statements
クライアントのブラウザー用に形式化される HTML タグだけでなく、 任意の英字または数字を組み込みます。

include statement
INCLUDE ステートメントです。 ファイルを読み取って Net.Data マクロに取り込みます。構文と例については、INCLUDE ステートメント を参照してください。

include_url statement
INCLUDE_URL ステートメントです。 別のファイルを読み取って、 ステートメントが指定された Net.Data Web マクロに取り込みます。 指定されたファイルは、ローカルまたはリモート・サーバーに存在します。 構文と例については、INCLUDE_URL ステートメント を参照してください。

while block
WHILE ブロックです。 条件付きストリング処理を伴うループを実行します。 構文と例については、WHILE ブロック を参照してください。

コンテキスト

HTML ブロックは、以下のコンテキストで検出することができます。

制約

HTML ブロックには、以下の要素を含めることができます。

例 1: ヘッダーおよびフッター用の組み込みファイルを指定した HTML ブロック

%HTML(example1){
%INCLUDE"header.html"
<P>You can put <EM>any</EM> HTML in an HTML block.
An SQL function call is made like this:
@xmp1()
%INCLUDE"footer.html"
%}

例 2: ピリオドを含む名前の HTML ブロック

%HTML(my.report){
%INCLUDE"header.html"
<P>You can put <EM>any</EM> HTML in an HTML block.
An SQL function call is made like this:
@xmp1()
%INCLUDE"footer.html"
%}

IF ブロック

目的

条件付きストリング処理を行います。IF ブロックにより、1 つまたは複数の条件を処理することができ、 続いて条件テストの結果に基づいて、 ステートメントのブロックを処理することができます。 IF ブロックは、Net.Data マクロの宣言パーツ、HTML ブロック、 MACRO_FUNCTION ブロック、REPORT ブロック、WHILE ブロック、ROW ブロックで使用することも、 別の IF ブロックの内部でネストさせることもできます。

条件リストのストリング値が整数を表すストリングであり、 しかもこれらのストリングの先頭または末尾に空白文字がない場合、 これらの値は比較のための数値として処理されます。これらの値の先頭に、 プラス (+) または マイナス (-) 記号を 1 つ付けることができます。

制約事項: Net.Data は非整数の数値比較をサポートしません。 例、浮動小数点数。

ネストされた IF ブロック: IF ブロック構文の規則は、 マクロにおけるブロックの位置によって決定されます。IF ブロックが、 宣言パーツのほかのすべてのブロックの外側にある IF ブロックの内部でネストされている場合、 ネストされた IF ブロックは、 外側のブロックが使用することのできる要素をすべて使用できます。IF ブロックが、IF ブロックの中の別のブロック内でネストされている場合、 そのネストされた IF ブロックが入っているブロックの構文規則に従います。

以下の例では、 ネストされた IF ブロックは、 HTML ブロック内で使用される規則に従わなければなりません。

%IF block
...
  %HTML block
...
     %IF block

IF ブロックは最大 1024 までネストできます。

構文

>>-%IF--| condition list |-------------------------------------->
 
>-----| statement_block |--| else_if spec |--%ENDIF------------><
 
condition list
 
|---(--+-(--condition list--)----------------+---)--------------|
       +-condition list--&&--condition list--+
       +-condition list--||--condition list--+
       +-!--condition list-------------------+
       +-| condition |-----------------------+
       '-| term |----------------------------'
 
statement_block
 
    .---------------------------------.
    V                                 |
|------+---------------------------+--+-------------------------|
       |              (1)          |
       +-define block--------------+
       |                  (1)      |
       +-define statement----------+
       |                    (2)    |
       +-exec_sql statement--------+
       |                (1)        |
       +-function block------------+
       +-function call-------------+
       |            (1)            |
       +-HTML block----------------+
       |                (2)        |
       +-HTML statement------------+
       +-if block------------------+
       +-include statement---------+
       +-include_url statement-----+
       |                      (1)  |
       +-macro_function block------+
       |               (1)         |
       +-message block-------------+
       |        (2)                |
       +-string--------------------+
       |                    (2)    |
       +-variable reference--------+
       |             (2)           |
       '-while block---------------'
 
condition
 
|---term--+-<--+---term-----------------------------------------|
          +->--+
          +-<=-+
          +->=-+
          +-!=-+
          '-==-'
 
term
 
|---+-variable_name-----------------------+---------------------|
    +-variable reference------------------+
    +-function call-----------------------+
    |    .-------------------------.      |
    |    V                         |      |
    '-"----+-string-------------+--+---"--'
           +-variable reference-+
           '-function call------'
 
else_if spec
 
|---+---------------------------------------------------------------+->
    |     .----------------------------------------------------.    |
    |     V                                                    |    |
    '--+----%ELIF--(--condition_list--)--| statement_block |---+-+--'
       '-%ELSE--| statement_block |------------------------------'
 
>---------------------------------------------------------------|
 

注:

  1. この言語構成要素が有効であるのは、 IF ブロックがマクロの宣言パーツのほかのすべてのブロックの外側にあるときです。

  2. この言語構成要素が有効であるのは、 IF ブロックが、HTML ブロック、MACRO_FUNCTION ブロック、REPORT ブロック、ROW ブロック、 または WHILE ブロックに入っているときです。

%IF
条件付きストリング処理を指定するキーワードです。

condition list
条件と条件の値を比較します。 条件リストは、ブール演算子を使って接続することができます。 条件リストは、別の条件リスト内でネストすることができます。

statement_block
有効な Net.Data マクロ構成要素は以下のとおりです。 図の注および制約事項を参照して、 マクロ構成要素が有効になるコンテキストを判別してください。

define statement
DEFINE ブロックまたはステートメントです。 変数を定義して、構成変数を設定します。 変数名は、文字または下線 (_) で開始し、 任意の英数字または下線を含む必要があります。 構文と例については、DEFINE ブロックまたはステートメント を参照してください。

exec_sql statement
互換性のためにサポートされている DB2WWW リリース 1 の言語要素です。 付録 B. DB2 WWW Connection または DB2 World Wide Web リリース 1 の資料を参照してください。

function block
Net.Data マクロから呼び出すことのできるサブルーチンを指定するキーワードです。 FUNCTION ブロックの実行可能ステートメントは、 言語環境により直接解釈される言語ステートメントを含んだり、 外部プログラムの呼び出しを指示することができます。 構文と例については、FUNCTION ブロック を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した Net.Data 組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

HTML block
クライアントのブラウザー用に形式化される HTML タグだけでなく、 任意の英字または数字を組み込みます。

HTML statement
任意の英字や数字と、 クライアントのブラウザー用に形式化される HTML タグを組み込みます。

if block
IF ブロックです。 条件付きストリング処理を行います。条件リストのストリング値が整数を表すストリングであり、 しかもこれらのストリングの先頭または末尾に空白文字がない場合、 これらの値は比較のための数値として処理されます。これらの値の先頭に、 プラス (+) または マイナス (-) 記号を 1 つ付けることができます。

include statement
INCLUDE ステートメントです。 ファイルを読み取って Net.Data マクロに取り込みます。構文と例については、INCLUDE ステートメント を参照してください。

include_url statement
INCLUDE_URL ステートメントです。 別のファイルを読み取って、 ステートメントが指定された Net.Data Web マクロに取り込みます。 指定されたファイルは、ローカルまたはリモート・サーバーに存在します。 構文と例については、INCLUDE_URL ステートメント を参照してください。

macro_function block
Net.Data マクロから呼び出すことのできるサブルーチンを指定するキーワードです。 MACRO_FUNCTION ブロックの実行可能ステートメントには、 Net.Data マクロ言語ソース・ステートメントを含めることができます。 構文と例については、MACRO_FUNCTION ブロック を参照してください。

message block
MESSAGE ブロックです。 関数呼び出しが戻されるときの、 戻りコードの集合、関連メッセージ、および Net.Data が行うアクションです。 構文と例については、MESSAGE ブロック を参照してください。

string
任意の順序の英字、数字、および句読点です。 ストリングが条件リストの条件に含まれている場合、 そのストリングには、改行文字以外のすべての文字を含めることができます。 ストリングが実行可能ブロックのコードに含まれている場合、 そのストリングには、改行文字を含むすべての文字を含めることができます。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

while block
WHILE ブロックです。 条件付きストリング処理を伴うループを実行します。 構文と例については、WHILE ブロック を参照してください。

condition
比較演算子を使用した、2 つの条件の間の比較です。 以下の両方の条件が当てはまる場合、IF 条件は数値比較として処理されます。

どちらかの条件が当てはまらない場合、標準のストリング比較が行われます。

term
変数名、ストリング、変数参照、または関数呼び出しです。

%ELIF
代替処理パスを開始するキーワードのことで、 このキーワードには、 条件リストとほとんどの Net.Data マクロ・ステートメントを含めることができます。

%ENDIF
%IF ブロックをクローズするキーワードです。

%ELSE
ほかのすべての条件リストが満たされない場合、 関連ステートメントを実行するキーワードです。

コンテキスト

IF ブロックは、以下のコンテキストで検出することができます。

制約

IF ブロックが Net.Data マクロの宣言パーツのほかのすべてのブロックの外側にあるときには、 IF ブロックに以下の要素を含めることができます。

IF ブロックが、Net.Data マクロの HTML ブロック、MACRO_FUNCTION ブロック、 REPORT ブロック、ROW ブロック、または WHILE ブロックに入っているときには、 IF ブロックに以下の要素を含めることができます。

IF ブロックは最大 1024 までネストできます。

例 1: Net.Data マクロの宣言パーツにある IF ブロック

%DEFINE a = "1"
%DEFINE b = "2"
...
%IF ($(DTW_HTML_TABLE) == "YES")
  %define OUT_FORMAT = "HTML"
%ELSE
  %define OUT_FORMAT = "CHARACTER"
  %ENDIF
 
%HTML(REPORT) {
 ...
%}
 

例 2: HTML ブロック内にある IF ブロック

%HTML(REPORT) {
@myFunctionCall()
%IF ($RETURN_CODE) == $(failure_rc))
   <P> The function call failed with failure code $(RETURN_CODE).
%ELIF ($(RETURN_CODE) == $(warning_rc))
   <P> The function call succeeded with warning code $(RETURN_CODE).
%ELIF ($(RETURN_CODE) == $(success_rc))
   <P>The function call was successful.
%ELSE
   P>The function call returned with unknown return code $(RETURN_CODE).
  %ENDIF
%}
 

例 3: 数値比較

%IF (ROW_NUM < "100")
    <p>The table is not full yet...
%ELIF (ROW_NUM == "100")
    <p>The table is now full...
%ELSE
    <p>The table has overflowed...
  %ENDIF
 

暗黙の表変数 ROW_NUM は常に整数値を戻し、 比較対象の値も整数であるため、数値比較が行われます。

例 4: ネストされた IF ブロック

%IF (MONTH == "January")
  %IF (DATE = "1")
    HAPPY NEW YEAR!
%ELSE
    Ho hum, just another day.
  %ENDIF
  %ENDIF
 

INCLUDE ステートメント

目的

ファイルを読み取って、 ステートメントが指定された Net.Data マクロに取り込みます。

Net.Data は、 初期設定ファイルの INCLUDE_PATH ステートメントで指定したディレクトリーを検索して、 組み込みファイルを見つけます。

ほとんどの高水準言語で使用するのと同じ方法で、 組み込みファイルを使用することができます。 組み込みファイルでは、共通ヘッダーおよびフッターを挿入したり、 共通の変数の集合を定義したり、 FUNCTION ブロック定義の共通サブルーチン・ライブラリーを Net.Data マクロに取り込むことができます。

Net.Data は、マクロを処理しているときに一度だけ INCLUDE ステートメントを実行し、 マクロ内の INCLUDE ステートメントのロケーションに組み込みファイルの内容を挿入します。 組み込みファイルの名前の変数参照が解決されるのは、 INCLUDE ステートメントを最初に実行するときで、 組み込みファイルの内容を実行するときではありません。

INCLUDE ステートメントが ROW ブロックまたは WHILE ブロック内にあるときには、 Net.Data は INCLUDE ステートメントを繰り返し実行しません。 Net.Data は、最初に ROW ブロックまたは WHILE ブロックを実行するときに、 INCLUDE ステートメントを実行し、 組み込みファイルの内容をブロックに取り込み、 その後、組み込みファイルの内容をもつ ROW ブロックまたは WHILE ブロックを繰り返し実行します。

許可のヒント Net.Data が実行されるユーザー ID が、 INCLUDE ステートメントによって参照されるどのファイルについてもアクセス権限を持つようにしてください。 詳しくは、 Net.Data 管理およびプログラミングの手引き の構成の章にある、 Net.Data ファイルへの Web サーバーのアクセス権限の指定に関するセクションを参照してください。

ヒント : ローカル Web サーバーから HTML ファイルを組み込みたい場合には、 INCLUDE_URL の例 3 に示すように INCLUDE_URL 構成要素を使用してください。 表示されている構文を使用することにより、 すでに Web サーバーに認識されているディレクトリーを指定するために、 Net.Data 初期設定ファイルの INCLUDE_PATH を更新する必要はありません。

構文

                  .-------------------------.
                  V                         |
>>-%INCLUDE----"----+-string-------------+--+---"--------------><
                    '-variable reference-'
 

%INCLUDE
ファイルを読み取って Net.Data マクロに取り込むことを示すキーワードです。

name
英字または下線で開始し、英字、数値、 あるいは下線文字を任意の組み合わせで含んでいる英字または数値ストリングです。

string
任意の順序の英字、数字、および句読点です (改行文字は除く)。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

コンテキスト

INCLUDE ステートメントは、以下のコンテキストで検出することができます。

制約

INCLUDE ステートメントには、以下の要素を含めることができます。

ストリング内での関数呼び出しは許可されません。

INCLUDE ステートメントは最大 10 までネストできます。

例 1: HTML ブロック内の INCLUDE ステートメント

%HTML(start){
%INCLUDE "header.hti"
...
%}

例 2: REPORT ブロック内の INCLUDE ステートメント

%REPORT {
  %INCLUDE "report_header.txt"
%ROW {
    %INCLUDE "row_include.txt"
  %}
  %INCLUDE "report_footer.txt"
%}

例 3: INCLUDE ステートメント内の変数参照

%define library = "/qsys.lib/mylib.lib/"
%define filename = "macros.file/incfile.mbr"
 
%include "$(library)$(filename)"

INCLUDE_URL ステートメント

目的

別のファイルを読み取って、 ステートメントが指定された Net.Data 生成の出力に取り込みます。 指定されたファイルは、ローカルまたはリモート・サーバーに存在します。

INCLUDE_URL ステートメントを使用すると、 アプリケーション・ユーザーがサブミット・ボタンを選択しなくても、 別のマクロから 1 つのマクロを呼び出すことができます。

Net.Data は、マクロを処理しているときに一度だけ INCLUDE_URL ステートメントを実行し、 マクロ内の INCLUDE_URL ステートメントのロケーションに組み込みファイルの内容を挿入します。 組み込みファイルの名前の変数参照が解決されるのは、 INCLUDE_URL ステートメントを最初に実行するときで、 組み込みファイルの内容を実行するときではありません。

INCLUDE_URL ステートメントが ROW ブロックまたは WHILE ブロック内にあるときには、 Net.Data は INCLUDE_URL ステートメントを繰り返し実行しません。 Net.Data は、最初に ROW ブロックまたは WHILE ブロックを実行するときに、 INCLUDE_URL ステートメントを実行し、 組み込みファイルの内容をブロックに取り込み、 その後、組み込みファイルの内容をもつ ROW ブロックまたは WHILE ブロックを繰り返し実行します。

構文

                       .-------------------------.
                       V                         |
>>-%INCLUDE_URL---"------+-string-------------+--+--"----------><
                         '-variable reference-'
 

%INCLUDE_URL
ローカルまたはリモート・サーバーからファイルを読み取って、 そのファイルを Net.Data マクロに取り込むことを示すキーワードです。

string
任意の順序の英字、数字、および句読点です (改行文字は除く)。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

コンテキスト

INCLUDE_URL ステートメントは、以下のコンテキストで検出することができます。

制約

INCLUDE_URL ステートメントには、以下の要素を含めることができます。

OS/390 では、INCLUDE_URL ファイルは最大 256 KB とすることができます。 他のオペレーティング・システムでは制限はありません。

INCLUDE_URL ステートメントを使用する場合、 現行のマクロ・ファイルを再帰的に呼び出してマクロ要求の無限シーケンスを開始しないようにしてください。

INCLUDE_URL は、OS/400 環境ではサポートされていません

例 1: 別のサーバーからの HTML ファイルの組み込み

  %include_url "http://www.ibm.com/path/myfile.html"

例 2: サーバー名を呼び出すことによる、 リモート・サーバーからの HTML ファイルの組み込み

 %include_url "myserver/path/myfile.html"

ここで、myserver はサーバー名です。

例 3: ローカル Web サーバーからの HTML ファイルの組み込み

 %include_url "/path/myfile.html"

ヒント : この方法を使うことにより、 すでに Web サーバーに認識されているディレクトリーを指定するために、 Net.Data 構成ファイルの INCLUDE_URL パスを更新する必要はありません。 string がスラッシュで始まっていない 場合、 Net.Data は、ストリングがサーバー名であると推定し、 対応する名前のサーバーからファイルを取り出そうとします。

例 4: リモート・サーバーからのほかの Net.Data マクロの組み込み

 %REPORT{
<P>Current hot pick as of @DTW_rTIME():
%include_url "http://www.ibm.com/cgi-bin/db2www/hotpic.mac/report?custno=$(custno)"

この例では、マクロ hotpic.mac が呼び出され、custno が変数として送られます。string がスラッシュで始まっている場合、 Net.Data は、ローカル Web サーバーから INCLUDE ファイルを取り出します。

LIST ステートメント

目的

値の区切りリストを作成します。 一部の WHERE または HAVING 文節に見られるように、 複数の項目を指定して SQL 照会を作成するときに、 LIST ステートメントを使用することができます。

構文

             .--------------------------.
             V                          |
>>-%LIST--"-----+--------------------+--+---"----variable name--><
                +-string-------------+
                +-variable reference-+
                '-function call------'
 

%LIST
値の区切りリストを作成するのに使用する変数を指定するキーワードです。

string
任意の順序の英字、数字、および句読点です (改行文字は除く)。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した Net.Data 組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

variable name
変数を識別する名前です。 構文情報については、変数名 を参照してください。

コンテキスト

LIST ステートメントは、以下のコンテキストで検出することができます。

制約

LIST ステートメントには、以下の要素を含めることができます。

例 1: 変数のリスト

 %DEFINE{
DATABASE="custcity"
%LIST " OR " conditions
conditions="cond1='Sao Paolo'"
conditions="cond2='Seattle'"
conditions="cond3='Shanghai'"
whereClause=conditions ? "WHERE $(conditions)" : ""
%}

MACRO_FUNCTION ブロック

目的

Net.Data マクロから呼び出すことのできるサブルーチンを定義します。 MACRO_FUNCTION ブロックの実行可能ステートメントは、 Net.Data マクロ言語ソース・ステートメントでなければなりません。

構文

>>-%MACRO_FUNCTION--function_name--| parm passing spec |-------->
 
                       (4)
>-----| returns spec |-------{--| function body |----%}--------->
 
      .--------------------------.
      V                          |
>--------+--------------------+--+--%}-------------------------><
         |              (3)   |
         '-report block-------'
 
parm passing spec
 
|---(--+-----------------------------+---)----------------------|
       |  .-,---------------------.  |
       |  |      (1)              |  |
       |  V .-IN-------.          |  |
       '----+----------+---name---+--'
            +-OUT------+
            '-INOUT----'
 
returns spec
 
     (4)
|----------+----------------------+-----------------------------|
           '-RETURNS--(--name--)--'
 
function body
 
    .----------------------------------.
    V                                  |
|------+----------------------------+--+------------------------|
       +-exec_sql statement---------+
       +-variable reference---------+
       +-if block-------------------+
       +-function call--------------+
       +-HTML statement-------------+
       +-include statement----------+
       |                       (2)  |
       +-include_url statement------+
       '-while block----------------'
 

注:

  1. パラメーター・リストの先頭でパラメーター型を指定しない場合、 デフォルトのパラメーター型の IN が適用されます。 パラメーター型を指定していないパラメーターは、 パラメーター・リストで最新に指定された型を使用するか、 型がそれまでに指定されていない場合には型 IN を使用します。 たとえば、 パラメーター・リスト (parm1, INOUT parm2, parm3, OUT parm4, parm5) において、 パラメーター parm1parm3、および parm5 にはパラメーター型が指定されていません。 パラメーター parm1 の型は、 初期パラメーターが指定されていないため IN になります。 パラメーター parm3 の型は INOUT になりますが、 これは、指定された最新のパラメーター型が INOUT であるからです。 同様に、パラメーター・リストで指定された最新の型が OUT であるため、 パラメーター parm5 の型は OUT です。

  2. OS/400 では INCLUDE_URL ステートメントをサポートしません。

  3. MACRO_FUNCTION ブロックにおける REPORT ブロックは、 OS/400、OS/2、Windows NT および UNIX でサポートされます。

  4. RETURNS ステートメントは、 OS/400 のみのサポートです。

%MACRO_FUNCTION
Net.Data マクロから呼び出すことのできるサブルーチンを指定するキーワードです。 MACRO_FUNCTION ブロックの実行可能ステートメントには、 Net.Data が直接解釈する言語ステートメントを含めなければなりません。

function_name
定義されている関数の名前です。 英字または下線で開始し、英字、数字、 あるいは下線文字を任意の組み合わせで含んでいる英字または数字ストリングです。

parm passing spec:

IN
Net.Data が入力データを言語環境に渡すことを指定します。 IN はデフォルトです。

OUT
言語環境が出力データを Net.Data に戻すことを指定します。

INOUT
Net.Data が入力データを言語環境に渡し、 言語環境が出力データを Net.Data に戻すことを指定します。

name
英字または下線で開始し、英字、数値、 あるいは下線文字を任意の組み合わせで含んでいる英字または数値ストリングです。name は、Net.Data 表または結果セットを表すことができます。

returns spec:

RETURNS
関数が完了した後で、関数値を含む変数を宣言します。

function body:

exec_sql
互換性のためにサポートされている DB2WWW リリース 1 の言語要素です。 付録 B. DB2 WWW Connection または DB2 World Wide Web リリース 1 の資料を参照してください。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

if block
IF ブロックです。 条件付きストリング処理を行います。条件リストのストリング値が、 先頭または末尾に空白文字がない整数を表す場合、 これらの値は比較のための数値として処理されます。 これらの値の先頭に、 プラス (+) または マイナス (-) 記号を 1 つ付けることができます。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した Net.Data 組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

HTML statement
クライアントのブラウザー用に形式化される HTML タグだけでなく、 任意の英字または数字を組み込みます。

include statement
INCLUDE ステートメントです。 ファイルを読み取って Net.Data マクロに取り込みます。 構文と例については、INCLUDE ステートメント を参照してください。

include_url statement
INCLUDE_URL ステートメントです。 別のファイルを読み取って、ステートメントが指定された Net.Data マクロに取り込みます。指定されたファイルは、ローカルまたはリモート・サーバーに存在します。 構文と例については、INCLUDE_URL ステートメント を参照してください。

while block
WHILE ブロックです。 条件付きストリング処理を伴うループを実行します。 構文と例については、WHILE ブロック を参照してください。

report block
REPORT ブロックです。 関数呼び出しの出力用の形式化指示です。 レポート用にヘッダーおよびフッター情報を使用することができます。構文と例については、REPORT ブロック を参照してください。

コンテキスト

MACRO_FUNCTION ブロックは、以下のコンテキストで検出することができます。

制約

MACRO_FUNCTION ブロックには、以下の要素を含めることができます。

例 1: メッセージ処理を指定するマクロ関数

%MACRO_FUNCTION setMessage(IN rc, OUT message) {
%IF (rc == "0")
  @dtw_assign(message, "Function call was successful.")
%ELIF (rc == "-1")
  @dtw_assign(message, "Function failed, out of memory.")
%ELIF (rc == "-2")
  @dtw_assign(message, "Function failed, invalid parameter.")
  %ENDIF
%}

例 2: ヘッダー情報を指定するマクロ関数

%MACRO_FUNCTION setup(IN browserType) {
%{ call this function at the top of each HTML block in the macro %}
%INCLUDE "header_info.html"
@dtw_rdate()
%IF (browserType == "IBM")
  @setupIBM()
%ELIF (browserType == "MS")
  @setupMS()
%ELIF (browserType == "NS")
  @setupNS()
%ELSE
  @setupDefault()
  %ENDIF
%}
 

MESSAGE ブロック

目的

関数からの戻りコードに基づいて、 表示するメッセージと行うアクションを指定します。

戻りコードのセットと、それらのコードに対応するメッセージとアクションとを MESSAGE ブロックに定義します。 関数呼び出しが完了すると、Net.Data は、 その戻りコードと MESSAGE ブロックで定義された戻りコードとを比較します。 関数の戻りコードが MESSAGE ブロックの戻りコードと一致すると、 Net.Data はメッセージを表示してアクションを評価して、 Net.Data マクロの処理を続行するか終了するかを判別します。

MESSAGE ブロックは、その効力範囲をグローバルにすることも、 1つの FUNCTION ブロック対象にローカルにすることもできます。 MESSAGE ブロックが最外部のマクロ・レイヤーで定義してある場合、 そのブロックの効力範囲はグローバルであると考えられます。 複数のグローバル MESSAGE ブロックが定義されている場合、 処理された最新のブロックだけがアクティブであると考えられます。 MESSAGE ブロックが FUNCTION ブロック内で定義されている場合、 そのブロックの効力範囲は、 定義されている FUNCTION ブロック対象にローカルとなります。 戻りコードの処理規則については、 Net.Data 管理およびプログラミングの手引き の MESSAGE ブロックのセクションを参照してください。

構文

>>-%MESSAGE--{-------------------------------------------------->
 
      .--------------------------------------------------------------------------------------.
      V                                                                                      |
>--------+--------------------------------------------------------------------------------+--+>
         '--+-| return code spec |--+--:---| message text spec |----+------------------+--'
            '-| SQLSTATE |----------'                               '-| action spec |--'
 
>----%--}------------------------------------------------------><
 
return code spec
 
|---+-DEFAULT---------------+-----------------------------------|
    +-+DEFAULT--------------+
    +- -DEFAULT-------------+
    +-+----+---msg_code-----+
    | +- --+                |
    | '-+--'                |
    +-include statement-----+
    '-include_url statement-'
 
SQLSTATE
 
|---SQLSTATE--:------state_id-----------------------------------|
 
message text spec
 
          .--------------------------.
          V                          |
|----+-"-----+--------------------+--+---"---+------------------|
     |       +-string-------------+          |
     |       +-variable reference-+          |
     |       +-function call------+          |
     |       '-(new_line)---------'          |
     |    .--------------------------.       |
     |    V                          |       |
     +-{-----+--------------------+--+---%}--+
     |       +-string-------------+          |
     |       +-variable reference-+          |
     |       '-function call------'          |
     +-include statement---------------------+
     '-include_url statement-----------------'
 
action spec
 
         .-EXIT-----.
|---+-:--+----------+--------+----------------------------------|
    |    '-CONTINUE-'        |
    +-include statement------+
    '-include_url statement--'
 

%MESSAGE
関数呼び出しが戻されるときの、戻りコードの集合、関連メッセージ、 および Net.Data が行うアクションを定義するブロック用のキーワードです。

return code spec
正または負の整数です。 Net.Data RETURN_CODE 変数の値が return code spec 値に一致すると、 メッセージ・ステートメントの残りの情報を使用して、関数呼び出しを処理します。 MESSAGE ブロックで特に入力されない戻りコードのメッセージを指定することもできます。

+DEFAULT
デフォルトの正のメッセージ・コードを指定するのに使用するキーワードです。 Net.Data は、RETURN_CODE がゼロ (0) よりも大きく、 しかも完全に一致するコードが指定されていない場合に、 このメッセージ・ステートメントの情報を使用して関数呼び出しを処理します。

-DEFAULT
デフォルトの負のメッセージ・コードを指定するのに使用するキーワードです。 Net.Data は、RETURN_CODE がゼロ (0) よりも小さく、 しかも完全に一致するコードが指定されていない場合に、 このメッセージ・ステートメントの情報を使用して関数呼び出しを処理します。

DEFAULT
デフォルトのメッセージ・コードを指定するキーワードです。 Net.Data は、以下のすべての条件が満たされた場合に、 このメッセージ・ステートメントの情報を使用して、関数呼び出しを処理します。

  • RETURN_CODE がゼロではなく、ゼロより大きいか小さい

  • 戻りコードに完全に一致するものが指定されていない

  • RETURN_CODE がゼロより大きいか小さいときのために、 +DEFAULT や -DEFAULT 値が指定されていない

msg_code
処理中に起こる可能性のあるエラーと警告を指定するメッセージ・コードです。 0 から 9 までの値の数字のストリングです。

SQLSTATE
アプリケーション・プログラムに共通エラー条件用の共通コードを提供するキーワードです。 SQLSTATE 値は SQL 標準に含まれている SQLSTATE 指定に基づいていて、 コード体系は IBM のすべての SQL の設定で同じです。

state_id
SQLSTATE です。 ccsss 形式をとる 5 文字 (バイト) の英数字です。cc はクラス、sss はサブクラスを表します。

message text spec
RETURN_CODE が現行メッセージ・ステートメントの return_code 値と一致した場合に、 Web ブラウザーに送られるストリングです。

string
任意の順序の英字、数字、および句読点です。 ストリングが二重引用符内にある場合、改行文字は使用できません。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した Net.Data 組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

action spec
RETURN_CODE が現行メッセージ・ステートメントの return_code 値と一致した場合に、 Net.Data が行うアクションを決定します。

EXIT
指定されたメッセージ・コードに対応するエラーまたは警告が生じたときに、 マクロを即時に終了することを指定するキーワードです。 この値がデフォルトです。

CONTINUE
指定されたメッセージ・コードに対応するエラーまたは警告が生じたときに、 処理を続行することを指定するキーワードです。

include statement
INCLUDE ステートメントです。 ファイルを読み取って Net.Data マクロに取り込みます。 INCLUDE ステートメントは、MESSAGE のどこででも指定することができます。 構文と例については、INCLUDE ステートメント を参照してください。

include_url statement
INCLUDE_URL ステートメントです。 別のファイルを読み取って、ステートメントが指定された Net.Data マクロに取り込みます。指定されたファイルは、ローカルまたはリモート・サーバーに存在します。 構文と例については、INCLUDE_URL ステートメント を参照してください。

コンテキスト

MESSAGE ブロックは、以下のコンテキストで検出することができます。

制約

MESSAGE ブロックには、以下の要素を含めることができます。

OS/390、OS/2、Windows NT、および UNIX オペレーティング・システムの場合: SQL 関数内部から SQL 関数を呼び出すことはできません。

例 1: ローカル MESSAGE ブロック

%{ local message block inside a FUNCTION block %}
%FUNCTION(DTW_REXX) my_function() {
  %EXEC { my_command.cmd %}
 %MESSAGE{
-601: {<H3>The table has already been created, please go back and enter your name.</H3>
<P><a href="input">Return</a>
%}
default: "<H3>Can't continue because of error $(RETURN_CODE)</H3>"%}      : exit
  %}

例 2: グローバル MESSAGE ブロック

%{ global message block %}
  %MESSAGE {
     -100     : "Return code -100 message"   : exit
      100     : "Return code 100 message"    : continue
   +default : {
This is a long message that spans more
than one line. You can use HTML tags, including
links and forms, in this message. %}   : continue
%}
 
%{ local message block inside a FUNCTION block %}
%FUNCTION(DTW_REXX) my_function() {
  %EXEC { my_command.cmd %}
  %MESSAGE {
     -100     : "Return code -100 message"   : exit
      100     : "Return code 100 message"    : continue
     -default : {
This is a long message that spans more
than one line. You can use HTML tags, including
links and forms, in this message. %}   : exit
  %}

例 3: INCLUDE ステートメントを含む MESSAGE ブロック

 %message {
   %include "rc1000.msg"
   %include "rc2000.msg"
   %include "defaults.msg"
 %}                         

REPORT ブロック

目的

関数呼び出しからの出力を形式化します。 表名パラメーターを入力すると、 指定された表でレポートがデータを使用するのを指定することができます。 そうしないと、レポートは、 関数パラメーター・リストで最初に検出された出力表で生成されます。 また、リストに表名がない場合、 レポートはデフォルトの表データで生成されます。

構文

>>-%REPORT----+-------------+--{-------------------------------->
              '-(--name--)--'
 
      .-----------------------------.
      V                             |
>--------+-----------------------+--+---+-----------+----------->
         +-string----------------+      '-row block-'
         +-if block--------------+
         +-variable reference----+
         +-function call---------+
         +-HTML statements-------+
         +-include statement-----+
         +-include_url statement-+
         '-while block-----------'
 
      .-----------------------------.
      V                             |
>--------+-----------------------+--+--%}----------------------><
         +-string----------------+
         +-if block--------------+
         +-variable reference----+
         +-function call---------+
         +-HTML statements-------+
         +-include statement-----+
         +-include_url statement-+
         '-while block-----------'
 

%REPORT
関数呼び出しの出力用の形式化指示を指定するキーワードです。 レポート用にヘッダーおよびフッター情報を使用することができます。

name
この値は、Net.Data 表または結果セットを表します。 詳細については、 Net.Data 管理およびプログラミングの手引き の Report ブロックのセクションを参照してください。

string
任意の順序の英字、数字、および句読点です。

if block
IF ブロックです。 条件付きストリング処理を行います。条件リストのストリング値が、 先頭または末尾に空白文字がない整数を表す場合、 これらの値は比較のための数値として処理されます。 これらの値の先頭に、 プラス (+) または マイナス (-) 記号を 1 つ付けることができます。 構文と例については、IF ブロック を参照してください。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した Net.Data 組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

HTML statements
クライアントのブラウザー用に形式化される HTML タグだけでなく、 任意の英字または数字を組み込みます。

include statement
INCLUDE ステートメントです。 ファイルを読み取って Net.Data マクロに取り込みます。 構文と例については、INCLUDE ステートメント を参照してください。

include_url statement
INCLUDE_URL ステートメントです。 別のファイルを読み取って、ステートメントが指定された Net.Data マクロに取り込みます。指定されたファイルは、ローカルまたはリモート・サーバーに存在します。 構文と例については、INCLUDE_URL ステートメント を参照してください。

row block
ROW ブロックです。 関数呼び出しから戻されるデータの行ごとに、 HTML 形式化データを 1 度表示します。 構文と例については、ROW ブロック を参照してください。

while block
WHILE ブロックです。 条件付きストリング処理を伴うループを実行します。 構文と例については、WHILE ブロック を参照してください。

コンテキスト

REPORT ブロックは、以下のコンテキストで検出することができます。

制約

REPORT ブロックには、以下の要素を含めることができます。

OS/390 の場合: REPORT ブロックは、MACRO_FUNCTION ブロックでは使用できません。

例 1: 名前と場所のリストを表示する 2 列の HTML 表

%FUNCTION(DTW_SQL) mytable() {
 %REPORT{
<H2>Query Results</H2>
<P>Select a name for details.
<TABLE BORDER=1>
<TR><TD>Name</TD><TD>Location</TD>
%ROW{
<TR>
<TD>
<a href="/cgi-bin/db2www/name.mac/details?name=$(V1)&location=$(V2)">$(V1)</a></TD>
<TD>$(V2)</TD>
 %}
</TABLE>
%}

表の名前を選択すると、 name.mac Net.Data マクロの details HTML ブロックが呼び出され、 URL のパーツとして 2 つの値が送信されます。 この例では、name.mac で値を使用すると、 名前に関する詳細をルックアップすることができます。

ROW ブロック

目的

関数呼び出しから戻されるそれぞれの表行を処理します。 Net.Data は、 それぞれの行ごとに ROW ブロック内のステートメントを 1 度処理します。

構文

              .-----------------------------.
              V                             |
>>-%ROW--{-------+-----------------------+--+--%}--------------><
                 +-string----------------+
                 +-if block--------------+
                 +-variable reference----+
                 +-function call---------+
                 +-HTML statements-------+
                 +-include statement-----+
                 +-include_url statement-+
                 '-while block-----------'
 

%ROW
関数呼び出しから戻されるデータの行ごとに、 HTML 形式化データを 1 度表示することを指定するキーワードです。

string
任意の順序の英字、数字、および句読点です。

if block
IF ブロックです。 条件付きストリング処理を行います。条件リストのストリング値が整数を表すストリングであり、 しかもこれらのストリングの先頭または末尾に空白文字がない場合、 これらの値は比較のための数値として処理されます。これらの値の先頭に、 プラス (+) または マイナス (-) 記号を 1 つ付けることができます。 構文と例については、IF ブロック を参照してください。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

HTML statements
クライアントのブラウザー用に形式化される HTML タグだけでなく、 任意の英字または数字を組み込みます。

include statement
INCLUDE ステートメントです。 ファイルを読み取って Net.Data マクロに取り込みます。 構文と例については、INCLUDE ステートメント を参照してください。

include_url statement
INCLUDE_URL ステートメントです。 別のファイルを読み取って、ステートメントが指定された Net.Data マクロに取り込みます。 指定されたファイルは、ローカルまたはリモート・サーバーに存在します。 構文と例については、INCLUDE_URL ステートメント を参照してください。

while block
WHILE ブロックです。 条件付きストリング処理を伴うループを実行します。 構文と例については、WHILE ブロック を参照してください。

コンテキスト

ROW ブロックは、以下のコンテキストで検出することができます。

制約

ROW ブロックには、以下の要素を含めることができます。

例 1: 名前と場所のリストを表示する 2 列の HTML 表

%REPORT{
<H2>Query Results</H2>
<P>Select a name for details.
<TABLE BORDER=1>
<TR><TD>Name</TD><TD>Location</TD>
 
%ROW{
<TR>
<TD>
<a href="/cgi-bin/db2www/name.mac/details?name=$(V1)&location=$(V2)">$(V1)</a></TD>
<TD>$(V2)</TD>
%}
 
</TABLE>
%}

表の名前を選択すると、 name.mac Net.Data マクロの details HTML ブロックが呼び出され、 URL のパーツとして 2 つの値が送信されます。 この例では、name.mac で値を使用すると、 名前に関する詳細をルックアップすることができます。

TABLE ステートメント

目的

関連データの集合である変数を定義します。 変数には行および列のセットが含まれ、 これにはそれぞれの行のフィールドを説明する列見出し行が含まれます。 表ステートメントは、DEFINE ステートメントまたはブロックでしか指定できません。

TABLE 変数を参照する際、Net.Data は、 表の内容をプレーンの文字表、または HTML 表 (DTW_HTML_TABLE 変数を YES に設定した場合) のいずれかに表示します。

構文

>>-%TABLE--| upper limit |-------------------------------------><
 
upper limit
 
|---+--------------------+--------------------------------------|
    '-(--+-number-+---)--'
         '-ALL----'
 

%TABLE
同一レコードまたは同一行の配列、 および各行のフィールドを記述する列名の配列が含まれている関連データの集合の定義を指定するキーワードです。

upper limit
表に入れることのできる行数。 upper limit 値を指定しないと、表に含めることのできる行数は無制限になります。

number
0 から 9 までの値の数字のストリングです。 0 の値により、表の行数を無制限にすることができます。

ALL
表の行数を無制限にすることができるキーワードです。

コンテキスト

TABLE ステートメントは、以下のコンテキストで検出することができます。

制約

TABLE ステートメントには、以下の要素を含めることができます。

例 1: 上限を 30 行に指定した Net.Data 表

%DEFINE myTable1=%TABLE(30)

例 2: デフォルトであるすべての行を使用する Net.Data 表

%DEFINE myTable2=%TABLE

例 3: すべての行を指定した Net.Data 表

%DEFINE myTable3=%TABLE(ALL)

WHILE ブロック

目的

条件付きストリング処理に基づいて、ループ構成要素を提供します。 WHILE ブロックは、HTML ブロック、REPORT ブロック、ROW ブロック、 IF ブロック、および MACRO_FUNCTION ブロックで使用することができます。 条件リストのストリング値が整数を表し、 しかもストリングの先頭または末尾に空白文字がない場合、 これらの値は比較のための数値として処理されます。 また、値の先頭にはプラス (+) または マイナス (-) 記号を 1 つ付けることができます。

構文

>>-%WHILE--| condition list |---{------------------------------->
 
      .-----------------------------.
      V                             |
>--------+-----------------------+--+--%}----------------------><
         +-exec_sql statement----+
         +-function call---------+
         +-HTML statement--------+
         +-if block--------------+
         +-include statement-----+
         +-include_url statement-+
         +-while block-----------+
         +-variable reference----+
         '-string----------------'
 
condition list
 
|---(--+-(--condition list--)----------------+---)--------------|
       +-condition list--&&--condition list--+
       +-condition list--||--condition list--+
       +-!--condition list-------------------+
       +-| condition |-----------------------+
       '-| term |----------------------------'
 
condition
 
|---term--+-<--+---term-----------------------------------------|
          +->--+
          +-<=-+
          +->=-+
          +-!=-+
          '-==-'
 
term
 
|---+-variable_name-----------------------+---------------------|
    +-variable reference------------------+
    +-function call-----------------------+
    |    .-------------------------.      |
    |    V                         |      |
    '-"----+-string-------------+--+---"--'
           +-variable reference-+
           '-function call------'
 

%WHILE
ループ処理を指定するキーワードです。

condition list
条件と条件の値を比較します。 条件リストは、ブール演算子を使って接続することができます。 条件リストは、別の条件リスト内でネストすることができます。

condition
比較演算子を使用した、2 つの条件の間の比較です。 以下の両方の条件が当てはまる場合、IF 条件は数値比較として処理されます。

どちらかの条件が当てはまらない場合、標準のストリング比較が行われます。

term
変数名、ストリング、変数参照、または関数呼び出しです。

exec_sql statement
互換性のためにサポートされている DB2WWW リリース 1 の言語要素です。 付録 B. DB2 WWW Connection または DB2 World Wide Web リリース 1 の資料を参照してください。

function call
1 つまたは複数の FUNCTION または MACRO_FUNCTION ブロックか、 引き数を指定した組み込み関数を呼び出します。構文と例については、関数呼び出し (@) を参照してください。

HTML statement
クライアントのブラウザー用に形式化される HTML タグだけでなく、 任意の英字または数字を組み込みます。

if block
IF ブロックです。 条件付きストリング処理を行います。 条件リストのストリング値が、 先頭または末尾に空白文字がない整数を表す場合、 これらの値は比較のための数値として処理されます。 これらの値の先頭に、 プラス (+) または マイナス (-) 記号を 1 つ付けることができます。 構文と例については、IF ブロック を参照してください。

include statement
INCLUDE ステートメントです。 ファイルを読み取って Net.Data マクロに取り込みます。構文と例については、INCLUDE ステートメント を参照してください。

include_url statement
INCLUDE_URL ステートメントです。 別のファイルを読み取って、 ステートメントが指定された Net.Data Web マクロに取り込みます。 指定されたファイルは、ローカルまたはリモート・サーバーに存在します。 構文と例については、INCLUDE_URL ステートメント を参照してください。

while block
WHILE ブロックです。 条件付きストリング処理を伴うループを実行します。 構文と例については、WHILE ブロック を参照してください。

variable reference
変数を戻します。$ と () を使って指定します。たとえば、VAR='abc' の場合、 $(VAR) は値 'abc' を戻します。構文情報については、変数参照 を参照してください。

string
任意の順序の英字、数字、および句読点です。 ストリングが条件リストの条件に含まれている場合、 そのストリングには、改行文字以外のすべての文字を含めることができます。

variable name
変数を識別する名前です。 構文情報については、変数名 を参照してください。

コンテキスト

WHILE ブロックは、以下のコンテキストで検出することができます。

制約

WHILE ブロックには、以下の要素を含めることができます。

例 1: 表に行を生成する WHILE ブロック

%DEFINE loopCounter = "1"
 
%HTML(build_table) {
%WHILE (loopCounter <= "100") {
  %{ generate table tag and column headings %}
  %IF (loopCounter == "1")
     <TABLE BORDER>
  <TR>
     <TH>Item #
     <TH>Description
  </TR>
  %ENDIF
 
  %{ generate individual rows %}
  <TR>
  <TD>
  <TD>$(loopCounter)
  <TD>@getDescription(loopCounter)
  </TR>
 
  %{ generate end table tag %}
  %IF (loopCounter == "100")
     </TABLE>
  %ENDIF
 
  %{ increment loop counter %}
  @dtw_add(loopCounter, "1", loopCounter)
%}
%}
 
 
 


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]