IBM Books

解説書


Net.Data レポート変数

これらの変数は、レポートをカスタマイズするのに役立ちます。 変数にはそれぞれデフォルト値があります。 変数に新規の値を割り当てて、 デフォルト値をオーバーライドすることができます。

ALIGN


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X X

目的

表処理変数 NLIST および VLIST で使用される前後のスペースを制御します。

パフォーマンスのヒント: ALIGN は必要な場合にだけ使用してください。 ALIGN を使用するときには、必要な埋め込みを計算するために、 Net.Data が表の中のすべての列の最大列長を判別する必要があるからです。 このプロセスは、パフォーマンスに悪影響を与える可能性があります。

YES に設定されている場合、ALIGN によって、 表示用に表処理変数を位置合わせするための埋め込みが提供されます。HTML リンクまたはフォーム・アクションに照会結果を組み込みたい場合、 デフォルト値の NO を使って、Net.Data がレポート変数に前後のスペースを付けないようにします。

DEFINE ステートメントまたは @DTW_ASSIGN() 関数を使用して、この変数の値を指定してください。

ALIGN="YES"|"NO"

表 2. ALIGN の値
説明
YES Net.Data はレポート変数に、表示用の位置合わせのためのスペースとともに前後のスペースを付加する。
NO Net.Data は前後のスペースを付加しない。 NO はデフォルト。

例 1: 各列をスペースで分離するために ALIGN 変数を使用する

%DEFINE ALIGN="YES"
<P>Your query was on these columns: $(NLIST)

DTW_DEFAULT_REPORT


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X X

目的

Net.Data が REPORT ブロックのない関数のためにデフォルト・レポートを生成するかどうかを判別します。 この変数を YES に設定すると、Net.Data はデフォルト・レポートを生成します。 NO に設定すると、Net.Data はデフォルト・レポートを生成しません。 デフォルト・レポートを生成しないことは、 たとえば関数呼び出しの結果を表変数で受け取って、 その結果を別の関数に渡して処理したい場合に役立ちます。

DEFINE ステートメントまたは @DTW_ASSIGN() 関数を使用して、この変数の値を指定してください。

DTW_DEFAULT_REPORT="YES"|"NO"|"MULTIPLE"

表 3. DTW_DEFAULT_REPORT の値
説明
YES Net.Data は REPORT ブロックのない関数のためにデフォルト・レポートを生成し、 結果をブラウザーに表示する。 YES はデフォルト。
NO Net.Data は REPORT ブロックのない関数のためのデフォルト・レポートを破棄する。
MULTIPLE Net.Data は、 複数の REPORT ブロックを持つ関数について、 REPORT ブロックに割り当てられていない結果セットまたは出力表のデフォルトのレポートを作成する。

例 1: Net.Data で生成されたデフォルト・レポートをオーバーライドする

%DEFINE DTW_DEFAULT_REPORT="NO"

DTW_HTML_TABLE


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X X

目的

結果の表をテキスト・タイプ形式で表示する代わりに HTML 表で表示します (つまり、PRE タグではなく TABLE タグを使います)。

生成された TABLE タグには、ボーダーおよびセル埋め込み指定が含まれます。

<TABLE BORDER CELLPADDING=2>

DEFINE ステートメントまたは @DTW_ASSIGN() 関数を使用して、この変数の値を指定してください。

DTW_HTML_TABLE="YES"|"NO"

表 4. DTW_HTML_TABLE の値
説明
YES 表データを、HTML 表タグを使って表示する。
NO 表データを、PRE タグを使ってテキスト形式で表示する。 NO はデフォルト。

例 1: SQL 関数の結果を HTML タグで表示する

%DEFINE DTW_HTML_TABLE="YES"
 
%FUNCTION(DTW_SQL){
SELECT NAME, ADDRESS FROM $(qTable)
%}

RPT_MAX_ROWS


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X X

目的

関数の REPORTS ブロックにおいて、またはデフォルト・レポートの生成中に (REPORT ブロックが指定されていない場合) 処理をする表内の行数を指定します。

データベース言語環境はこの変数を使用することにより、 戻される行数を制限し、これにより大きな結果セットに対するパフォーマンスが大幅に向上します。 この変数は START_ROW_NUM と使用して、 大きな結果セットを持つ照会をより小さい表に分割し、それぞれを自身の HTML ページに収めます。

OS/400、Windows NT、OS/2、および UNIX ユーザーの場合: この変数を言語環境に渡すには、 Net.Data 初期設定ファイルのデータベース言語環境の ENVIRONMENT ステートメントに IN 変数としてこの変数を組み込みます。 データベース言語環境ステートメントの詳細については、 Net.Data 管理およびプログラミングの手引き の構成の章を参照してください。

OS/390 ユーザーの場合: RPT_MAX_ROWS は、マクロで定義する際に、 暗黙的にデータベース言語環境に渡されます。

この変数の値は、DEFINE ステートメントを使って、または @DTW_ASSIGN() 関数で指定できます。

RPT_MAX_ROWS="ALL"|"0"|"number"

表 5. RPT_MAX_ROWS の値
説明
ALL 関数呼び出しで生成する表の中で表示する行数に制限がないことを示す。 すべての行が表示される。
0 表の中のすべての行を表示するように指定する。 この値は ALL を指定するのと同じ。
number 関数呼び出しで生成する表の中で表示する行の、最大行数を示す正整数。

FUNCTION ブロックに REPORT および ROW ブロックが含まれる場合、 この数字は ROW ブロックが実行される回数を指定する。

例 1: DEFINE ステートメントで RPT_MAX_ROWS を定義する

%DEFINE RPT_MAX_ROWS="20"

上記の方法では、関数が戻す行数を 20 行に制限します。

例 2: 変数を HTML 形式で定義するために HTML 入力を使用する

Maximum rows to return (0 for no limit):
<INPUT TYPE="text" NAME="RPT_MAX_ROWS" SIZE=3>

上記の例の行は、アプリケーション・ユーザーが照会から受け取りたい行数を設定できるように、 FORM タグに置くことができます。

START_ROW_NUM


AIX HP-UX Linux OS/2 OS/390 OS/400 SCO SUN Win NT
X X X X X X X X X

目的

関数の REPORT ブロック中、またはデフォルト・レポートの生成中に (REPORT ブロックが指定されていない場合) 処理をする表内の開始行数を指定します。

データベース言語環境はこの変数を使用して、 結果セット内の処理を開始する行を決定します。大きな結果セットにおけるパフォーマンスを大幅に向上させるには、 この変数を RPT_MAX_ROWS と使用して、 大きな結果セットを持つ照会をより小さい表に分割します。

OS/400、Windows NT、OS/2、および UNIX ユーザーの場合: この変数を言語環境に渡すには、 Net.Data 初期設定ファイルのデータベース言語環境の ENVIRONMENT ステートメントに IN パラメーターとしてこの変数を組み込みます。 データベース言語環境ステートメントの詳細については、 Net.Data 管理およびプログラミングの手引き の構成の章を参照してください。

OS/390 ユーザーの場合: START_ROW_NUM は、マクロで定義する際に、 暗黙的にデータベース言語環境に渡されます。

DEFINE ステートメントまたは @DTW_ASSIGN() 関数を使用して、この変数の値を指定してください。

START_ROW_NUM="number"

表 6. START_ROW_NUM の値
説明
number レポートの表示を始める行番号を示す正整数。デフォルト値は 1 です。

初期設定ファイルの中のデータベース言語環境の ENVIRONMENT ステートメントで START_ROW_NUM が指定されている場合、 この数字が、データベース言語環境によって処理される結果セットの行数を指定する。

START_ROW_NUM が言語環境に渡されない場合、 この数字は、レポートを表示するために使用する Net.Data 表の行数を指定する。

例 1: HTML 形式の Next および Previous ボタンでスクロールする

%define {
  DTW_HTML_TABLE      = "YES"
  START_ROW_NUM       = "1"
  RPT_MAX_ROWS        = "10"
  totalSize           = ""
  includeNext         = "YES"
  includePrev         = "YES"
  includeLast         = "YES"
  includeFirst        = "YES"
%}
 
%function(DTW_SQL) myQuery(){
  select * from NETDATADEV.CUSTOMER
%}
 
%function(DTW_SQL) count(OUT size){
  select count(*) from NETDATADEV.CUSTOMER
  %report{
    %row{
      @DTW_ASSIGN(size,V1)
    %}
  %}
%}
 
%html(report) {
  %{ get the total number of records if we haven't already %}
  %if (totalSize == "")
    @count(totalSize)
    %endif
 
  %{ set START_ROW_NUM based on the button user clicked %}
  %if (totalSize <= RPT_MAX_ROWS)
    %{ there's only one page of data %}
    @DTW_ASSIGN(START_ROW_NUM, "1")
    @DTW_ASSIGN(includeFirst, "NO")
      @DTW_ASSIGN(includeLast, "NO")
    @DTW_ASSIGN(includeNext, "NO")
    @DTW_ASSIGN(includePrev, "NO")
  %elif (submit == "First Page" || submit == "")
    %{ first time through or user selected "First Page" button %}
    @DTW_ASSIGN(START_ROW_NUM, "1")
    @DTW_ASSIGN(includePrev, "NO")
    @DTW_ASSIGN(includeFirst, "NO")
  %elif (submit == "Last Page")
    %{ user selected "Last Page" button %}
    @DTW_SUBTRACT(totalSize, RPT_MAX_ROWS, START_ROW_NUM)
    @DTW_ADD(START_ROW_NUM, "1", START_ROW_NUM)
      @DTW_ASSIGN(includeLast, "NO")
    @DTW_ASSIGN(includeNext, "NO")
  %elif (submit == "Next")
    %{ user selected "Next" button %}
    @DTW_ADD(START_ROW_NUM, RPT_MAX_ROWS, START_ROW_NUM)
    %if (@DTW_rADD(START_ROW_NUM, RPT_MAX_ROWS) > totalSize)
      @DTW_ASSIGN(includeNext,"NO")
      @DTW_ASSIGN(includeLast, "NO")
    %endif
  %elif (submit == "Previous")
    %{ user selected "Previous" button %}
    @DTW_SUBTRACT(START_ROW_NUM, RPT_MAX_ROWS, START_ROW_NUM)
    %if (START_ROW_NUM <= "1" )
      @DTW_ASSIGN(START_ROW_NUM,"1")
      @DTW_ASSIGN(includePrev,"NO")
      @DTW_ASSIGN(includeFirst,"NO")
    %endif
    %endif
 
  %{ run the query to get the data %}
  @myQuery()
 
  %{ output the correct buttons at the bottom of the report %}
  <center>
  <form method="POST" action="report">
  <input name="START_ROW_NUM" type="hidden" value="$(START_ROW_NUM)">
  <input name="totalSize" type="hidden" value="$(totalSize)">
  %if (includeFirst == "YES" )
  <input name="submit" type="submit" value="First Page">
    %endif
  %if (includePrev == "YES" )
  <input name="submit" type="submit" value="Previous">
    %endif
  %if (includeNext == "YES" )
  <input name="submit" type="submit" value="Next">
    %endif
  %if (includeLast == "YES" )
  <input name="submit" type="submit" value="Last Page">
    %endif
</form>
  </center>
%}


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