IBM Books

解説書


Net.Data 言語環境変数

これらの変数を関数と一緒に使用すると、 言語環境が FUNCTION ブロックを処理する方法をカスタマイズするのに役立ちます。 変数にはそれぞれデフォルト値があります。 変数に新規の値を割り当てて、 デフォルト値をオーバーライドすることができます。

DATABASE


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

目的

データベース関数を呼び出したときにアクセスする、 データベースまたは ODBC データ・ソースを指定します。 複数のデータベースまた ODBC データ・ソースをアクセスするために、 この変数を 1 つのマクロ内で複数回変更することができます。

OS/400 オペレーティング・システム: この変数はオプションです。 デフォルトでは、Net.Data は DATABASE="*LOCAL" を指定します。 DTW_SQL 言語環境は、 ローカルのリレーショナル・データベースのディレクトリー項目を使用します。

Windows NT、OS/2、および UNIX オペレーティング・システム: データベース関数を呼び出す前にこの変数を定義します。 ただし、DTW_ORA (Oracle) 言語環境を使用しているときは例外です。 さらに、 同じ HTML ブロックから同じ言語環境を介して複数のデータベースにアクセスする場合は、 Live コネクションを使用しなければなりません。

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

DATABASE="dbname"

表 7. DATABASE の値
説明
dbname Net.Data が接続するデータベースの名前。

例 1: SQL 操作で CELDIAL データベースに接続することを指定する

%DEFINE DATABASE="CELDIAL"
 
%FUNCTION (DTW_SQL) getRpt() {
SELECT * FROM customer
%}
 
%HTML(report){
%INCLUDE "rpthead.htm"
@getRpt()
%INCLUDE "rptfoot.htm"
%}

関数 getRpt が呼び出されたとき、データベース CELDIAL がアクセスされます。

例 2: 前の DATABASE 定義を DTW_ASSIGN でオーバーライドする

%DEFINE DATABASE="DB2C1"
...
%HTML(monthRpt){
@DTW_ASSIGN(DATABASE, "DB2D1")
%INCLUDE "rpthead.htm"
@getRpt()
%INCLUDE "rptfoot.htm"
%}

DATABASE の前の値が何であったかにかかわらず、HTML ブロックはデータベース DB2D1 を照会します。

DB_CASE


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

目的

SQL コマンドで大文字小文字のどちらを使用するか指定し、 すべての文字を大文字または小文字のいずれかに変換します。 この変数が定義されていない場合、デフォルトでは SQL コマンドの文字を変換しません。

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

DB_CASE="UPPER"|"LOWER"

表 8. DB_CASE の値
説明
UPPER SQL コマンドのすべての文字を大文字に変換する。
LOWER SQL コマンドのすべての文字を小文字に変換する。

例 1: すべての SQL コマンドに大文字を指定する

%DEFINE DB_CASE="UPPER"

DB2PLAN


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




X



目的

ローカル DB2 サブシステムへの接続のためのプランを割り当てます。 この変数は、 Net.Data がアクセスするローカル DB2 サブシステムでの Net.Data SQL 言語環境のプラン名を指定します。

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

要件: この変数の値をマクロで有効にするには、 変数を SQL 言語環境の ENVIRONMENT ステートメントにリストする必要があります。

 DB2PLAN="plan_name"

表 9. DB2PLAN の値
説明
plan_name DB2 プランの名前。 名前は 8 文字以内です。

例 1: DEFINE ステートメントにプランを指定する

%DEFINE DB2PLAN="DTWGAV22"

DB2SSID


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




X



目的

ローカル DB2 サブシステムへの接続を確立します。 この変数は、Net.Data がアクセスするローカル DB2 サブシステムのサブシステム ID を指定します。 各マクロで許されるローカル・データベース接続は 1 つだけです。

要件: この変数の値をマクロで有効にするには、 変数を SQL 言語環境の ENVIRONMENT ステートメントにリストする必要があります。

 DB2PLAN="subsytem_id"

表 10. DB2SSID の値
説明
subsystem_id DB2 サブシステムの名前。 名前は 8 文字以内です。

例 1: DEFINE ステートメントにサブシステム ID を指定する

%DEFINE DB2SSID="DBNC"

DTW_APPLET_ALTTEXT


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

目的

アプレット言語環境で使用されている APPLET タグを認識しないブラウザーに、 HTML タグとテキストを表示します。

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

DTW_APPLET_ALTTEXT="HTML_text_and_tags"

表 11. DTW_APPLET_ALTTEXT の値
説明
HTML_text_and_tags APPLET タグを認識しないブラウザー用の HTML タグとテキスト。

例 1: Web ブラウザーの制約事項を示す代替テキスト

%DEFINE DTW_APPLET_ALTTEXT="<P>Sorry, your browser is not java-enabled."

DTW_EDIT_CODES


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





X


目的

DTW_SQL 言語環境の SQL 操作の結果として戻される NUMERIC、DECIMAL、INTEGER、および SMALLINT のデータ型を変換します。 変数 DTW_EDIT_CODES は、DTW_SQL LE が構築する表の結果の列に対応する文字ストリングです。 たとえば、その列がサポートされている型の 1 つである場合、 DTW_EDIT_CODES の中の 5 番目の文字は、結果セットの 5 つ目の列に適用します。 この単一の文字は、 Data Description Specification Reference で定義された、 サポートされるシステム提供編集コードのいずれかです。

たとえば DECIMAL(6,0) フィールドは通常、文字ストリング '112698' として表示されます。 その列に関して変数 DTW_EDIT_CODES で編集コード 'Y' を指定すると、 日付 '11/26/98' を表す文字ストリングとして、 結果表内の対応列が表示されます。

ヒント: 結果が数値でない文字 (コンマ、または通貨記号など) を含む文字ストリングになる列にユーザー提供の編集コードを適用すると、 Net.Data マクロ内の後続の処理のために文字ストリングがサーバーに送り戻された場合に、 構文エラーになります。 たとえば、後続の DTW_SQL 関数呼び出しで数値でない列値が数値の比較に使用されると、 構文エラーになります。

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

DTW_EDIT_CODES="edit_code"

表 12. DTW_EDIT_CODES の値
説明
edit_code SQL 言語環境が構築する、表の結果の列に対応する文字ストリングを指定する。

例 1:

@DTW_ASSIGN(DTW_EDIT_CODES "JJLJJ*******Y")

DTW_PAD_PGM_PARMS


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





X


目的

文字パラメーター (データ型 CHAR または CHARACTER) をプログラムまたはストアード・プロシージャーに渡す際、 ブランクで埋め込むかどうかを言語環境に対し指示します。

IN または INOUT パラメーターの場合、 指定された精度よりもパラメーター値の長さが短い場合、 パラメーター値の右にブランクが挿入され、パラメーター値の長さが精度と同じになるようにします。

OUT パラメーターの場合、パラメーター値は 精度 ブランクに設定されます。

プログラムまたはストアード・プロシージャーへの呼び出し後、 OUT および INOUT パラメーター値からすべての後書きブランクが削除されます。

すべてのユーザー・マクロに対して値を指定するためには、 Net.Data 初期設定ファイルの中でこの変数を設定します。マクロ中でこの変数を定義すると、値をオーバーライドすることができます。 DTW_PAD_PGM_PARMS がマクロで定義されていない場合は、 Net.Data 初期設定ファイルの中の値を使用します。

DTW_PAD_PGM_PARMS は、直接呼び出しおよび SQL 言語環境でサポートされます。

DTW_PAD_PGM_PARMS="YES"|"NO"

表 13. DTW_PAD_PGM_PARMS 値
説明
YES パラメーターをプログラムまたはストアード・プロシージャーに渡す前に、 すべての IN および INOUT 文字パラメーター値が左寄せされ、 パラメーターに定義された精度と同じになるようブランクが埋め込まれます。 プログラムまたはストアード・プロシージャーへの呼び出し後に、後書きブランクが削除されます。
NO パラメーターをプログラムまたはストアード・プロシージャーに渡す際、 文字パラメーター値に埋め込みは追加されません。値はヌルで終了します。 プログラムまたはストアード・プロシージャーへの呼び出し後に、後書きブランクは削除されません。

例 1: パラメーターをブランクで埋め込みます。

DTW_PAD_PGM_PARMS="YES"

DTW_SAVE_TABLE_IN


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

目的

SQL 言語環境が照会からの表データを保管するために使用する、表変数を指定します。 この表は後で、たとえば表データを分析する REXX プログラムなどで使用できます。

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

DTW_SAVE_TABLE_IN="table_name_var"

表 14. DTW_SAVE_TABLE_IN の値
説明
table_name_var SQL 言語環境が照会からの表データを保管するための表名。

例 1: REXX 呼び出しで使用される、事前定義された表変数

%DEFINE theTable = %TABLE(2)
%DEFINE DTW_SAVE_TABLE_IN = "theTable"
 
%FUNCTION(DTW_SQL) doQuery() {
SELECT MODNO, COST, DESCRIP FROM EQPTABLE
WHERE TYPE='MONITOR'
%}
 
%FUNCTION(DTW_REXX) analyze_table(myTable) {
  %EXEC{ anzTbl.cmd %}
%}
 
%HTML(doTable) {
@doQuery()
@analyze_table(theTable)
%}

REXX FUNCTION ブロックが REXX プログラム anzTbl.cmd を呼び出し、 このプログラムは表変数 theTable を使って表の中のデータを分析します。 変数 theTable は、前の SQL 関数呼び出しで戻されたものです。

DTW_SET_TOTAL_ROWS


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

目的

照会の結果セット内の行の合計数を TOTAL_ROWS に割り当てるように、 データベース言語環境に指定します。

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

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

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

パフォーマンス上のヒント: DTW_SET_TOTAL_ROWS を YES に設定すると、 合計行を判別するためにデータベース言語環境がすべての行を検索しなければならなくなるので、 パフォーマンスが影響を受けます。

DTW_SET_TOTAL_ROWS="YES"|"NO"

表 15. DTW_SET_TOTAL_ROWS の値
説明
YES 行の合計数の値を TOTAL_ROWS 変数に割り当てる。 重要: 照会から戻された行の数を判別するために変数 TOTAL_ROWS を参照したい場合は、 この値を設定しなければならない。
NO Net.Data は TOTAL_ROWS 変数を設定せず、 マクロで TOTAL_ROWS を参照することはできない。NO はデフォルト。

例 1: TOTAL_ROWS を使用するために DTW_SET_TOTAL_ROWS を定義する

%DEFINE DTW_SET_TOTAL_ROWS="YES"
 
...
 
%FUNCTION (DTW_SQL) myfunc() {
select * from MyTable
%report {
...
%row
...
%}
<P>Your query is limited to $(TOTAL_ROWS) rows. The query returned too many rows.
%}
%}

LOCATION


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




X



目的

リモート・データベース・サーバーへの接続を確立します。 変数は、ローカル DB2 サブシステムがリモート・サーバーを認識するための名前を指定します。 LOCATION の値は、通信データベース (CDB) の SYSIBM.SYSLOCATIONS 表に定義しなければなりません。 この変数がマクロ内で定義されていない場合、 マクロによって発行される SQL 要求はすべてローカル DB2 サブシステムで実行されます。

要件: この変数の値をマクロで有効にするには、 変数を SQL 言語環境の ENVIRONMENT ステートメントにリストする必要があります。

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

LOCATION="remote_dbase_name"

表 16. LOCATION の値
説明
remote_dbase_name CDB の SYSIBM.SYSLOCATIONS 表で定義されている、有効なリモート・データベース・サーバーの名前。 名前は 8 文字以内です。

例 1: DEFINE ステートメントでリモート・データベース・ロケーションを定義する

%DEFINE LOCATION="QMFDJ00"

LOGIN


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

目的

データベース言語環境にユーザー ID を渡すことによって、 保護されたデータへのアクセスを提供します。 この変数は PASSWORD と一緒に使用して、DB2 の機密保護アルゴリズムを取り込みます。

OS/400 ユーザー: DATABASE 変数が定義されていない場合、 あるいは "*LOCAL" という値に設定されている場合には、 OS/400 は LOGIN と PASSWORD をともに無視します。 データベース・アクセスは、Net.Data が実行されているユーザー・プロファイルを介して経路指定されます。

機密保護のヒント: この値を Net.Data マクロにコーディングすることもできますが、 アプリケーション・ユーザーに HTML 形式でユーザー ID を入力させることをお勧めします。 さらに、Web サーバー ID のデフォルト値を使用すると、 機密保護要件に合わない可能性のあるアクセス・レベルを提供します。

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

LOGIN="database_user_id"

表 17. LOGIN の値
説明
database_user_id 有効なデータベース・ユーザー ID。 デフォルトでは、Web サーバーを開始したユーザー ID を使用します。

例 1: ユーザー ID DB2USER へのアクセスを制限する

%DEFINE LOGIN="DB2USER"

例 2: HTML 形式の入力行の使用

USERID&#58; <INPUT TYPE="text" NAME="LOGIN" SIZE=6>

この例は、アプリケーション・ユーザーが自分のユーザー ID を入力できるように、 HTML 形式の一部として含めることができる行を示します。

NULL_RPT_FIELD


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





X


目的

SQL の結果セットの中に戻される NULL 値を表すために、 ユーザーが DTW_SQL 言語環境に提供できるストリングを指定します。

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

NULL_RPT_FIELD="null_char"

表 18. NULL_RPT_FIELD の値
説明
null_char SQL の結果セットの中に戻される NULL 値を表すストリングを指定する。 デフォルトは空ストリング。

例 1: SQL 言語環境で NULL 値を表すストリングを指定する

%DEFINE NULL_RPT_FIELD = "++++"

PASSWORD


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

目的

データベース言語環境にパスワードを渡すことによって、 保護されたデータへのアクセスを提供します。 この変数は LOGIN と一緒に使用して、DB2 の機密保護アルゴリズムを取り込みます。

OS/400 ユーザー: DATABASE 変数が定義されていない場合、 あるいは "*LOCAL" という値に設定されている場合には、 OS/400 は LOGIN と PASSWORD をともに無視します。 データベース・アクセスは、Net.Data が実行されているユーザー・プロファイルを介して経路指定されます。

機密保護のヒント: この値を Net.Data マクロにコーディングすることもできますが、 アプリケーション・ユーザーに HTML 形式でパスワードを入力させることをお勧めします。

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

PASSWORD="password"

表 19. PASSWORD の値
説明
password データベース言語環境への自動アクセスを提供する、有効なパスワードを指定する。

例 1: パスワード NETDATA を持つアプリケーション・ユーザーへのアクセスを制限する

%DEFINE PASSWORD="NETDATA"

例 2: HTML 形式の入力行

PASSWORD&#58; <INPUT TYPE="password" NAME="PASSWORD" SIZE=8>

この例は、アプリケーション・ユーザーが自分のパスワードを入力できるように、 HTML 形式の一部として含めることができる行を示します。

SHOWSQL


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

目的

Web ブラウザーで使用される照会の SQL を隠すかまたは表示します。 テスト中に SQL を表示すると、Net.Data マクロをデバッグするのに特に便利です。SHOWSQL は、 Net.Data 構成ファイルで DTW_SHOWSQL が YES に設定されている場合のみです。DTW_SHOWSQL 構成変数に関する詳細は、 Net.Data 管理およびプログラミングの手引き の構成の章を参照してください。

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

SHOWSQL="YES"|"NO"

表 20. SHOW_SQL の値
説明
YES データベースに送信される照会の SQL を表示する。
NO データベースに送信される照会の SQL を隠す。 NO はデフォルト。

例 1: すべての SQL 照会を表示する。

構成ファイル中、以下を行います。

DTW_SHOWSQL YES

マクロ中、以下を行います。

%DEFINE SHOWSQL="YES"

例 2: HTML 形式の入力を使って、 SQL を表示すべきか否かを指定する。

構成ファイル中、以下を行います。

DTW_SHOWSQL YES

マクロ中、以下を行います。

SHOWSQL: <INPUT TYPE="radio" NAME="SHOWSQL" VALUE="YES"> Yes
         <INPUT TYPE="radio" NAME="SHOWSQL" VALUE="" CHECKED> No

SQL_STATE


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

目的

データベースから戻された SQL 状態値をアクセスまたは表示します。

この変数は事前定義変数であり、その値を変更することはできません。 この変数は変数参照として使用してください。

例 1: REPORT ブロックで SQL 状態を表示する

%FUNCTION (DTW_SQL) val1() {
 select * from customer
%REPORT {
 ...
%ROW {
 ...
%}
 SQLSTATE=$(SQL_STATE)
%}
 

TRANSACTION_SCOPE


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 が各 SQL コマンドの後、または HTML ブロックのすべての SQL コマンドが正常に終了した後のどちらで COMMIT を出すかを決定する、 SQL コマンドのトランザクション効力範囲を指定します。 コミットの前にすべての SQL コマンドが正常に終了する必要があると指定した場合、 SQL コマンドが 1 つでも失敗すると、 そのブロックで同じデータベースに対してそれ以前に実行されたすべての SQL がロールバックされます。

TRANSACTION_SCOPE 変数を有効とするには、 Net.Data 構成ファイルの ENVIRONMENT ステートメントにこの変数を組み込みます。これで、 この変数の値は、DEFINE ステートメントを使って、または @DTW_ASSIGN() 関数で指定できます。

整合性の考慮事項: OS/400 と OS/390 以外のオペレーティング・システムでは、 以下の条件がすべて満たされる場合、 データベースへの更新が失敗したという応答を受け取ると、 同じ HTML ブロックでアクセスされる他のデータベースへの更新がコミットされても、 失敗した更新はロールバックされる可能性があります。

OS/400 で、または IBM の DataJoiner を使って、Net.Data から複数のデータベースにアクセスしている場合、 Net.Data から更新すると、複数データベースの更新が調整され、整合性が保たれます。

OS/400 および OS/390 では、TRANSACTION_SCOPE = "MULTIPLE" を指定すると、 1 つの HTML ブロックから出されたすべての IBM データベース更新が一緒にコミットまたはロール・バックされます。

OS/400 以外のオペレーティング・システムでは、REXX、Perl、および Java 言語環境は、 独自の別々のオペレーティング・システム・プロセスで実行します。 したがって、 これらの言語環境から発行されたデータベース更新はすべて、 Net.Data の TRANSACTION_SCOPE 値に関係なく、 Net.Data マクロで発行されたデータベース更新とは別々にコミットまたはロールバックされます。

TRANSACTION_SCOPE="SINGLE"|"MULTIPLE"

表 21. TRANSACTION_SCOPE の値
説明
SINGLE Net.Data は、HTML ブロック内のそれぞれの SQL コマンドが正常に終了した後で COMMIT を発行する。
MULTIPLE Net.Data は、HTML ブロック内のすべての SQL コマンドが正常に終了した後でのみ COMMIT を発行する。 MULTIPLE はデフォルト。

例 1: 各トランザクションの後で COMMIT を発行するように指定する

%DEFINE TRANSACTION_SCOPE="SINGLE"


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