5 OLAP DMLオプション

この章のトピックは、次のとおりです:

その他のOLAP DMLリファレンス項目については、「OLAP DMLプロパティ」「OLAP DMLファンクション: AからK」「OLAP DMLファンクション: L - Z」「OLAP DMLコマンド: AからG」および「OLAP DMLコマンド: HからZ」を参照してください。

オプションの概要

OLAP DMLオプションは、特殊なタイプのアナリティック・ワークスペース・オブジェクトで、Oracle OLAPによってデータがどのように計算またはフォーマットされるのか、あるいはどのOracle OLAP演算がアクティブ化されるのかなど、いくつかの特性を指定します。オプションには、読取り専用オプションと、値を指定できる読取り/書込みオプションがあります。読取り/書込みオプションには、デフォルト値があります。

SET(=)コマンドを使用すると、オプションの値を事前定義された変数に取得したり、読取りオプションや書込みオプションに新しい値を指定したりできます。SHOWコマンドを使用すると、オプションの値を表示できます。

カテゴリ別のオプション

アナリティック・ワークスペースのオプション

グローバリゼーション・サポート

複数言語サポート・オプション

集計オプション

割当てオプション

モデル・オプション

コンパイル・オプション

エラー・オプション

デバッグ・オプション

SQLの埋込みオプション

ファイルの読取りと書込みのオプション

EIFオプション

レポートのオプション

NA値オプション

日付のみのデータ型オプション

日時オプション

数値オプション

RANKファンクションの監視オプション

ALLOCERRLOGFORMAT

ALLOCERRLOGFORMATオプションは、ALLOCATEコマンドにERRORLOG引数で指定するエラー・ログの内容および書式を設定するオプションです。

構文

ALLOCERRLOGFORMAT = text

パラメータ

text

ALLOCMAPコマンドのERRORLOG文で指定するエラー・ログの内容および書式を決定する文字。書式設定文字の前にINTEGER値を指定することで、エラー・ログに含まれるオブジェクトの文字数を指定できます。書式設定文字としてエスケープ・シーケンスを指定できます。有効なエスケープ・シーケンスについては、エスケープ・シーケンスを参照してください。次の表にエラー・ログの内容を指定する文字を示します。ALLOCERRLOGFORMATのデフォルト値は次のとおりです。

'%8p %8y %8z %e (%n)'

表5-1 ALLOCATEのエラー・ログの内容を指定する文字

文字 指定される出力

b

処理中の基礎オブジェクト

c

処理中のディメンションの子ノード

d

処理中のディメンションの名前

e

検出したエラーの説明

n

検出したエラーのエラー・コード

p

処理中のディメンションの親ノード

r

上位から下位へ順に割り当てられるリレーションの名前

s

処理中のソース・オブジェクト

t

処理中のターゲット・オブジェクト

n

割当てを受け取る子セルの基礎値

y

割り当てられる親セルのソース値

z

割り当てられる親セルの基礎値

例5-1 ALLOCERRLOGFORMATオプションの設定

この例では、ALLOCERRLOGFORMATオプションを設定し、生成された結果が最後の行に表示されています。

ALLOCERRLOGFORMAT = '%8p %8y %8z %e (%n)'
SHOW ALLOCERRLOGFORMAT
%8p %8y %8z %e (%n) 

ALLOCERRLOGHEADER

ALLOCERRLOGHEADERオプションは、ALLOCATEコマンドにERRORLOG引数で指定するエラー・ログの列ヘッダーを設定するオプションです。エラー・ログの他の書式を指定するには、ALLOCERRLOGFORMATオプションを使用します。

構文

ALLOCERRLOGHEADER = text

パラメータ

text

ALLOCATEコマンドで指定するエラー・ログの1行目である列ヘッダーの内容および書式を決定する文字。(使用できる文字のリストは、ALLOCERRLOGFORMATを参照してください。)

このオプションの値としてNAを指定すると、ALLOCATEはエラー・ログにヘッダーを書き込みません。ALLOCERRLOGHEADERのデフォルト値は次のとおりです。

'Dim      Source   Basis\n%-8d %-8v %-8b Description\n
-------- -------- -------- -----------'

例5-2 ALLOCERRLOGHEADERオプションの設定

次の文は、ALLOCATE文によって指定されるエラー・ログのヘッダーを定義し、ALLOCERRLOGHEADERオプションの値を表示します。

ALLOCERRLOGHEADER = 'Dim      Source   Basis\n %-8d %-8v %-8b Description \n
-------- -------- -------- -----------'
SHOW ALLOCERRLOGHEADER

この文によって生成される結果は、次のとおりです。

Dim      Source   Basis
%-8d %-8s %-8b Description 
-------- -------- -------- -----------

ソース・オブジェクトと基礎オブジェクトの両方にbudgetという名前の変数がある割当て演算で、divisionディメンションの上位から下位へ順に割当てを行う際にデッドロックが検出されると、エラー・ログに次のようなエントリが生成されます。

 
Dim      Source   Basis
Division Budget   Budget  Description 
-------- -------- -------- -----------
Accdiv   650000    NA      A deadlock occurred allocating data (5) 

AWWAITTIME

AWWAITTIMEオプションは、AW ATTACHコマンドでWAITキーワードを使用した場合、アナリティック・ワークスペースにアクセスできるようになるまでの待機秒数を指定するオプションです。AWWAITTIMEのデフォルト値は20秒です。

データ型

INTEGER

構文

AWWAITTIME = seconds

パラメータ

seconds

アナリティック・ワークスペースが使用可能になるまでの待機秒数。デフォルト値は20秒です。

使用上の注意

ワークスペースの共有

使用しているユーザーIDに適切なアクセス権があり、かつ読取り/書込み排他アクセス権を持つユーザーが存在しない場合は、他のユーザーが使用している場合でも、アナリティック・ワークスペースに対する読取り専用アクセス権を取得できます。他のユーザーに読取り/書込みアクセス権があり、ワークスペースをコミットした場合、ワークスペース・ビューは変更されないため、変更内容を参照する場合は、ワークスペースをデタッチし、再アタッチする必要があります。

例5-3 待機秒数を60秒に指定する

アナリティック・ワークスペースをアタッチする際、60秒の待機時間が必要だとします。この場合、次の文を発行して、AWWAITTIMEオプションの値を再設定します。

AWWAITTIME = 60

BADLINE

BADLINEオプションは、プログラム、モデルまたは入力ファイルの実行時に、Oracle OLAPがエラーの原因となる行を現行の出力ファイルに記録するかどうかを制御するオプションです。

関連項目:

PROGRAMMODELおよびINFILE

データ型

BOOLEAN

構文

BADLINE = {YES|NO}

パラメータ

YES

プログラム、モデルまたは入力ファイルの実行時にエラーが発生すると、Oracle OLAPは、エラーが発生したプログラム、モデルまたはファイルの名前とエラーが発生した行を現行の出力ファイルに記録します。エラー・メッセージが出力ファイルに記録されると、BADLINE情報がエラー・メッセージの直後に表示されます。

NO

(デフォルト)プログラム、モデルまたは入力ファイルにエラーが発生した場合、Oracle OLAPはエラーを現行の出力ファイルに記録しません。

例5-4 BADLINEオプションの使用

testという簡単なプログラムで、変数myint1を0(ゼロ)で除算します。

DEFINE test PROGRAM
PROGRAM
VARIABLE myint1 INTEGER
VARIABLE myint2 INTEGER
myint1 = 0
myint2 = 250/myint1
END

DIVIDEBYZEROオプションをNOに設定してプログラムを実行すると、ゼロでは除算ができないため、エラーが発生します。BADLINEYESに設定すると、現行の出力ファイルに次のメッセージが記録されます。

ERROR: (MXXEQ01) A division by zero was attempted. Set DIVIDEBYZERO to
YES if you want NA to be returned as the result of division by zero.
In DEMO!TEST PROGRAM:
myint2 = 250/myint1

例5-5 プログラム行のエラー検出

testという簡単なプログラムで、変数myint10(ゼロ)で除算します。

DEFINE test PROGRAM
PROGRAM
VARIABLE myint1 INTEGER
VARIABLE myint2 INTEGER
myint1 = 0
myint2 = 250/myint1
END

このプログラムを実行すると、ゼロでは除算できない(DIVIDEBYZEROがNOに設定されている)ため、エラーが発生します。

BADLINEをNOに設定すると、現行の出力ファイルにはエラーのみが記録されます。

ERROR: (MXXEQ01) A division by zero was attempted.  (If you want NA to
be returned as the result of a division by zero, set the DIVIDEBYZERO
option to YES.)
 

BADLINEをYESに設定すると、エラーが発生する行と、エラーが発生するプログラムの名前が現行の出力ファイルに記録されます。

ERROR: (MXXEQ01) A division by zero was attempted.  (If you want NA to
be returned as the result of a division by zero, set the DIVIDEBYZERO
option to YES.)
In TESTBAD PROGRAM:
myint2 = 250/myint1
In EDDE.RUNCMD PROGRAM:

BMARGIN

BMARGINオプションは、出力ページの下余白を作成するための空白の行数を定義するオプションです。BMARGINは、PAGINGがYESに設定されている場合にのみ有効で、REPORTやDESCRIBEなどの文の出力に対してのみ適用されます。BMARGINオプションは、通常、レポート・プログラムの初期化部分で設定されます。

データ型

INTEGER

構文

BMARGIN = n

パラメータ

n

レポートの下余白に割り当てる行数を指定するINTEGER式。デフォルト値は1です。

使用上の注意

ファイルへのBMARGINの設定

あるファイルに対してBMARGINを設定するには、最初にOUTFILE文で現行の出力ファイルの名前を指定して対象のファイルを現行の出力ファイルにしてから、BMARGINを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、BMARGINによって、そのファイルのデフォルト値である1が返されます。

BMARGINをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILE文が介在している場合でも、新しい値はリセットするまで有効です。つまり、BMARGINの値はデフォルトの出力ファイルに対して自動的に保存されます。

例5-6 レポート・ページの下余白の設定

レポート・ページの下部に注釈を付けるとします。5行分の広めの下余白を設定します。レポート・プログラムの初期化セクションに次の文を含めます。

BMARGIN = 5

CALENDARWEEK

CALENDARWEEKオプションは、週の番号を実際の暦年と整合させるかどうかを決定するオプションです。

注意:

このファンクションは、WEEK型のディメンションでのみ使用できます。

データ型

BOOLEAN

構文

CALENDARWEEK = {YES|NO}

パラメータ

YES

(デフォルト)週の番号を暦年と整合させるよう指定します。たとえば、WEEK型のディメンションを定義した場合、Oracle OLAPでは、暦年の最初の週が週1、暦年の2番目の週が週2となるように、WEEKディメンションの値に番号が付けられます。週の番号は、WEEKディメンションの定義で指定されている開始日または終了日にかかわらず、暦年の週と整合します。

NO

週の番号を暦年と整合させないよう指定します。そのかわりに、週の番号は、WEEKディメンションの定義で指定されている日付と整合するように付けられます。たとえば、WEEK型のディメンションを開始日と終了日を指定して定義すると、このディメンションの値には、ディメンション定義の日付に対応する週が週1、次の週が週2となるように番号が付けられます。

使用上の注意

会計年度

CALENDARWEEKをNOに設定すると、週の番号1は、DEFINE DIMENSION文で指定した日付で始まる週または終わる週に割り当てられます。次に、この週の番号は、最初の週の開始日が暦年の1月1日以降の会計年度に割り当てられます。たとえば、開始日が02Jan1996(終了日が08Jan1996)のWEEK型のディメンションを定義すると、開始日が02Jan1996の週が会計年度1997の週1とみなされます。これとは対照的に、ディメンションの開始日を02Jan1995から 01Jan1996の間と指定した場合、この日に始まる週は、会計年度1996の週1になります。

例5-7 週の番号と暦年との整合

次の文によって、WEEK型のディメンションとその終了日が定義され、そのディメンションに値が追加されてレポートが生成されます。

DEFINE week dimension WEEK ENDING '18Jan97'
MAINTAIN week ADD '21Dec96' '25Jan97'
REPORT W 22 CONVERT(week DATE)

これらの文によって生成される出力は次のとおりです。

WEEK             CONVERT(WEEK DATE)
-------------- --------------------
w51.96         21Dec96
w52.96         28Dec96
w1.97          04Jan97
w2.97          11Jan97
w3.97          18Jan97
w4.97          25Jan97

例5-8 週の番号と指定した終了日との整合

次の文によって、CALENDARWEEKオプションがNOに設定され、週の番号は、例5-7でのweekディメンションの定義で指定されている終了日と整合します。

CALENDARWEEK = NO
REPORT W 22 CONVERT(week date)

これらの文によって生成される出力は次のとおりです。

WEEK             CONVERT(WEEK DATE)
-------------- --------------------
w50.97         21Dec96
w51.97         28Dec96
w52.97         04Jan97
w53.97         11Jan97
w1.98          18Jan97
w2.98          25Jan97

COLWIDTH

COLWIDTHオプションは、レポート出力におけるデフォルトのデータ列幅を制御するオプションです。ROWコマンドおよびHEADINGコマンドからの出力では、COLWIDTHは最初の列以外のすべての列に影響します。REPORTコマンドからの出力では、COLWIDTHは、すべてのデータ列、およびコンポジットまたは結合ディメンションのラベル列に影響します。

注意:

個々の列では、COLWIDTHの値は常に、HEADING、REPORTまたはROWコマンドのWIDTH属性に優先されます。

データ型

INTEGER

構文

COLWIDTH = n

パラメータ

n

必要な列幅を文字数で指定するINTEGER式。COLWIDTHには1から4,000までの値を設定できます。デフォルト値は10です。

注意:

レポートにおける行の最大幅は4,000文字です。したがって、レポート内のすべての列の合計幅が4,000文字以内である必要があります。

例5-9 レポートのデフォルト列幅の設定

6か月間の売上数量を参照するとします。データ値は大きくないため、データ列の幅には10文字も必要ありません。そこで、COLWIDTHを設定して、デフォルトの列幅を狭めます。

LIMIT district TO 'Atlanta'
LIMIT month TO 'Oct95' TO 'Mar96'
COLWIDTH = 6
REPORT ACROSS month: units

これらの文によって生成される出力は次のとおりです。

DISTRICT: ATLANTA
               ------------------UNITS------------------
               ------------------MONTH------------------
PRODUCT        Oct95  Nov95  Dec95  Jan96  Feb96  Mar96
-------------- ------ ------ ------ ------ ------ ------
Tents             503    345    259    279    305    356
Canoes            317    282    267    281    309    386
Racquets        1,365  1,270  1,357  1,125  1,304  1,263
Sportswear      3,065  2,327  1,955  2,591  2,829  3,137
Footwear        3,445  3,247  2,831  3,089  3,282  3,475

COMMAS

COMMASオプションは、数値の出力における3桁区切り(千桁および百万桁など)の使用を制御するオプションです。区切り文字は通常カンマですが、NLS_TERRITORYの設定によっては異なる場合があります。3桁区切りに使用されている現行の文字を記録するには、THOUSANDSCHARオプションを使用します。COMMASオプションは、数値の出力に3桁区切りを表示するかどうかを制御するものです。

COMMASは、ROW、HEADING、REPORT、SHOWなど、出力を生成するすべてのコマンドに影響します。

注意:

HEADING、REPORTまたはROWコマンドのCOMMA属性およびNOCOMMA属性を使用することで、COMMAの設定を無効にできます。

データ型

BOOLEAN

構文

COMMAS = {NO|YES}

パラメータ

NO

数値の出力に3桁区切りは使用されません。

YES

(デフォルト)数値の出力に3桁区切りが使用されます。

例5-10 カンマを使用しない数値データの表示

販売された商品の原価を、データ値にカンマを使用せずに参照するとします。この場合、レポートを生成する前に、COMMASをNOに設定します。

COMMAS = NO
LIMIT line TO 'Cogs'
LIMIT month TO 'Jan96' 'Feb96'
REPORT DOWN division ACROSS month: DECIMAL 0 actual

これらの文によって生成される出力は次のとおりです。

LINE: COGS
               -----ACTUAL------
               ------MONTH------
DIVISION       Jan96      Feb96
-------------- -------- ----------
Camping          368044     385120
Sporting         287558     315299
Clothing         567767     610727 

COMPILEMESSAGE

COMPILEMESSAGEオプションは、COMPILEコマンドの実行中、Oracle OLAPによって現行の出力ファイルにnon-irrecoverableエラー・メッセージを送信するかどうかを指定するオプションです。non-irrecoverableエラー・メッセージとは、プログラムによるコンパイルを妨げないエラーを通知するメッセージを指します。

関連項目:

オブジェクトのコンパイルの詳細は、COMPILEを参照してください。

データ型

BOOLEAN

構文

COMPILEMESSAGE = {YES|NO}

パラメータ

YES

(デフォルト)COMPILEコマンドの実行中、Oracle OLAPによりnon-irrecoverableエラー・メッセージを記録します。

NO

COMPILEコマンドの実行中、Oracle OLAPによりnon-irrecoverableエラー・メッセージを送信しません。

例5-11 コンパイル中のエラー・メッセージの抑止

次の文で、COMPILEコマンドの実行中、Oracle OLAPによりnon-irrecoverableエラー・メッセージを送信しないように指定します。

COMPILEMESSAGE = NO

COMPILEWARN

COMPILEWARNオプションは、プログラムまたはモデルなどのコンパイル可能なオブジェクトを自動コンパイル中に、Oracle OLAPによって現行の出力ファイル内に警告メッセージを記録するかどうかを制御するオプションです。(COMPILEコマンドを使用してオブジェクトを明示的にコンパイルする場合は、COMPILEWARNメッセージは表示されません。)

次の場合、コンパイル可能なオブジェクトが自動でコンパイルされます。

  • 編集後、最初に実行するとき。

  • アナリティック・ワークスペースを更新およびコミットした後、前のセッションでオブジェクトがコンパイルされている場合、そのオブジェクトをセッション内で最初に実行するとき。

  • コードで参照しているアナリティック・ワークスペース・オブジェクトが削除されるか、名前が変更された後。コード内でオブジェクト名が再定義されていないと、エラー・メッセージが表示されます。

  • コードが別のアナリティック・ワークスペースのオブジェクトを参照している場合で、現在アタッチされているアナリティック・ワークスペース内のオブジェクトが、コードが前回コンパイルされた際に使用可能だったオブジェクトと同じオブジェクト型(変数、リレーションなど)、データ型(INTEGERTEXTなど)またはディメンションではないとき。

データ型

BOOLEAN

構文

COMPILEWARN = {YES|NO}

パラメータ

YES

コンパイル可能なオブジェクトを自動コンパイル中であることを警告するメッセージを記録します。メッセージには、コンパイルが必要な理由が示されます。

NO

(デフォルト)オブジェクトを自動コンパイル中であることを警告するメッセージを記録しません。

例5-12 コンパイル警告の表示を指定した場合

COMPILEWARNをYESに指定した場合、do_reportプログラムを編集したすぐ後に実行すると、現行の出力ファイル内のdo_report出力の前に次のメッセージが記録されます。

DO_REPORT is being automatically compiled. 

DATEFORMAT

DATEFORMATオプションは、日付のみのデータ型の値の表示や、日付のみの値からテキスト値への変換に使用するテンプレートを保持します。テンプレートには、日付の4つの構成要素(日、月、年、曜日)についての書式指定を含めることができます。また、追加のテキストを含めることもできます。

データ型

TEXT

構文

DATEFORMAT = template

パラメータ

template

日付を表示するためのテンプレートを指定するTEXT式。テンプレート内の各構成要素は、左の山カッコと右の山カッコで囲む必要があります。構成要素の前後または構成要素間には、別のテキストを入れることが可能です。デフォルトのテンプレートは、'<DD><MTXT><YY>'です。

次の表に、各構成要素の有効な書式を記載します。表には、1990年3月1日および2051年11月12日の2つの表示例が示されています。

次の表に、曜日についての有効な書式を記載します。

表5-2 日にち用のDATEFORMATテンプレート

書式 意味 1990年3月1日 2051年11月12日

<D>

1桁または2桁

1

12

<DD>

2桁

01

12

<DS>

空白詰め、2桁

1

12

<DT>

序数、大文字

1ST

12TH

<DTL>

序数、小文字

1st

12th

次の表に、週についての有効な書式を記載します。表には、1990年3月1日および2051年11月12日の2つの表示例が示されています。

表5-3 曜日用のDATEFORMATテンプレート

書式 意味 1990年3月1日 2051年11月12日

<W>

数値

4

1

<WT>

頭文字、大文字

W

S

<WTXT>

先頭の3文字、大文字

WED

SUN

<WTXTL>

先頭の3文字、小文字

Wed

Sun

<WTEXT>

完全名、大文字

WEDNESDAY

SUNDAY

<WTEXTL>

完全名、小文字

Wednesday

Sunday

<WTXT><WTXTL><WTEXT>または<WTEXTL>の書式を指定する場合、DAYNAMESに値が設定されていると、表示される値が次のような影響を受けることに注意してください。

  • DAYNAMESに名前がすべて小文字で入力されている場合、名前全体が大文字に変換されます。そうでない場合は、最初の文字が大文字に変換され、2番目以降の文字は元のままです。

  • DAYNAMESに名前がすべて大文字で入力されている場合、2番目以降の文字が小文字に変換されます。そうでない場合は、名前全体がDAYNAMESの指定のまま維持されます。

次の表に、月についての有効な書式を記載します。表には、1990年3月1日および2051年11月12日の2つの表示例が示されています。

表5-4 月用のDATEFORMATテンプレート

書式 意味 1990年3月1日 2051年11月12日

<M>

1桁または2桁

1

11

<MM>

2桁

03

11

<MS>

空白詰め、2桁

3

11

<MT>

頭文字、大文字

M

N

<MTXT>

先頭の3文字、大文字

MAR

NOV

<MTXTL>

先頭の3文字、小文字

Mar

Nov

<MTXT>または<MTXTL>の書式を指定する場合、MONTHNAMESに値が指定されていると、表示される値が次のような影響を受けることに注意してください。

  • MONTHNAMESに名前がすべて小文字で入力されている場合、名前全体が大文字に変換されます。そうでない場合は、最初の文字が大文字に変換され、2番目以降の文字は元のままです。

  • MONTHNAMESに名前がすべて大文字で入力されている場合、2番目以降の文字が小文字に変換されます。そうでない場合は、名前全体がMONTHNAMESの指定のまま維持されます。

次の表に、年についての有効な書式を記載します。表には、1990年3月1日および2051年11月12日の2つの表示例が示されています。

表5-5 年用のDATEFORMATテンプレート

書式 意味 1990年3月1日 2051年11月12日

<YY>

2桁または4桁

90

2051

<YYYY>

4桁

1990

2051

使用上の注意

DATEFORMATテンプレートで山カッコをテキストとして指定する方法

テンプレート内に追加テキストとして山カッコを含めるには、テキストとして含める各山カッコに対し2つの山カッコを指定してください(たとえば、日付全体を山カッコで囲んで表示するには、 '<<<D><M><YY>>>'と指定します)。

月名と曜日名

MT、MTXT、MTXTL、MTEXTおよびMTEXTL書式の月の構成要素に使用される名前は、MONTHNAMESオプションの現行の設定から読み取ります。WT、WTXT、WTXTL、WTEXTおよびWTEXTL書式で曜日の構成要素に使用される名前は、DAYNAMESオプションの現行の設定からのものです。

日にちと月の略称の指定

DAYABBRLENおよびMONTHABBRLENオプションを設定することで、曜日名および月名について、様々な長さの略称を使用できます。

DATEFORMATの有効範囲外の年

YY書式を指定した場合、1950から2049年の範囲を超える年は4桁で表示されます。

日付のみの値からテキスト値への自動変換

テキスト・データ型が予期されるときに日付のみのデータ型を使用した場合。Oracle OLAPではDATEFORMATオプションの日付テンプレートも使用して、自動的に日付をテキスト値に変換します。現行のDATEFORMATテンプレートを上書きする場合は、date-format引数を指定したCONVERTファンクションを使用することによって、日付の結果をテキストに変換できます。

いったん日付のみの値がテキスト変数に保存されると、DATEFORMATテンプレートはその値の表示書式として使用されなくなり、それ以降、DATEFORMATが変更されてもその値には適用されません。

日付のみのディメンション値

DATEFORMATオプションでは、DAY、WEEK、MONTH、QUARTERおよびYEARディメンションの日付のみの値を表示する方法は指定されません。これらの値の表示方法は、ディメンション定義に付加されているVNF(値名書式)によって、またはDAY、WEEK、MONTH、QUARTER、YEARディメンションのデフォルトの規則によって制御されます(「日付のみのディメンション値」の「DWMQYディメンションに対するデフォルトのVNF」表を参照)。

例5-13 日付の書式の変更

次の文により、日付のみの変数を定義して、値を1997年3月24日に設定し、日付書式を日、月、年の順序でそれぞれ2桁で表示するように設定して、結果を現行の出力ファイルに送信します。

DEFINE datevar VARIABLE DATE
datevar = '24Mar97'
DATEFORMAT = '<DD>/<MM>/<YY>'
SHOW datevar

これらの文によって生成される出力は次のとおりです。

24/03/97

次の文で、日付の書式を月(テキスト)、日(2桁)、年(4桁)に変更し、結果を現行の出力ファイルに送信します。

DATEFORMAT = '<MTEXTL> <D>, <YYYY>'
SHOW DATEVAR

これらの文によって生成される出力は次のとおりです。

March 24, 1997

次の文で、日付の書式を曜日(テキスト)、月(テキスト)、日(1または2桁)、年(4桁)に変更し、結果を現行の出力ファイルに送信します。

DATEFORMAT = '<WTEXTL> <MTEXTL> <D>, <YYYY>'
SHOW DATEVAR

これらの文によって生成される出力は次のとおりです。

Monday March 24, 1997

例5-14 日付の書式にテキストを含める

次の文では、アナリティック・ワークスペースのスタートアップ・メッセージに追加のテキストを含めるために、DATEFORMATオプションを保存してから変更します。

PUSH DATEFORMAT
DATEFORMAT = 'Hello.  Today is <wtextl>, the <dtl> -
OF <MTEXTL>.'
SHOW TODAY
POP DATEFORMAT

今日の日付が1997年5月30日の場合、プログラムが起動された際に次の出力が現行の出力ファイルに送信されます。

Hello.  Today is Friday, the 30th of May.

DATEORDER

DATEORDERオプションは、アナリティック・ワークスペース内の日付のみの値の構成要素の解釈があいまいな場合に使用される、月、日、年の順序を示す3文字を保存するオプションです。解釈があいまいな日付のみの値が入力されたり、TEXT値から日付のみの値への変換が行われる場合は常に、このDATEORDERが自動で参照されます。日付の値については、日付のみのデータ型を参照してください。

データ型

ID

構文

DATEORDER = order

パラメータ

order

'MDY''DMY''YMD''YDM''MYD''DYM'のいずれかのテキスト式。各文字は、それぞれ日付の構成要素を表します。Mは月を、Dは日を、Yは年を表す文字です。デフォルトの日付順序は'MDY'です。

使用上の注意

あいまいな日付

明確な日付のみの値が入力される場合、または日付として1つの解釈しかあり得ないテキスト値を変換する場合は、DATEORDERオプションの関与なしに処理が行われます。たとえば、03-24-97では、97は年としてしか引用できません。残りの値については、24は月としては引用できないため日と解釈されます。残されたのは03のみですが、これは月のはずです。しかし、値3-5-97のように解釈があいまいな場合は、各構成要素の意味を解釈するためにDATEORDERの現行の値が使用されます。

DATEORDERとテキストから日付のみへの変換

日付のみの値が予期される箇所にテキスト値を使用するか、日付のみの変数にテキスト値を保存する際は、テキスト値は日付のみの入力値で説明されているスタイルに従っている必要があります。Oracle OLAPでは、テキスト値を日付のみの値に自動で変換します。テキスト値の意味があいまいな場合は、値の解釈にはDATEORDERの現行の設定が使用されます。

テキスト値から日付のみの値への変換に際し、現行のDATEORDER設定を上書きするには、CONVERTファンクションをdate-order引数とともに使用します。

必須の日付構成要素

ある日付値を、MAINTAIN文を使用してDAY、WEEK、MONTH、QUARTERまたはYEARディメンションに、あるいはLIMITコマンドを使用して値セットに、割り当てる必要があるとします。値を日付のみの式またはテキスト・リテラルの形式で指定した場合、Oracle OLAPではDATEORDERオプションを使用して値を解釈します。テキスト・リテラルを指定する際は、日付の有効な入力スタイルを使用できます。ただし、指定する必要があるのは、特定の型のディメンションまたは使用する値セット内の時間間隔を識別するために必要な日付構成要素のみです。たとえば、MONTHディメンションまたはその値セットでは、30jun97などの完全な日付を指定することもできますが、jun97または0697などの必須の構成要素のみを指定することもできます。

DWMQYディメンションのフェーズ

DATEORDERオプションは、DAY、WEEK、MONTH、QUARTERおよびYEARディメンションに対するDEFINE DIMENSION文へのphase引数の解釈に使用されます。

例5-15 日付の順序の変更

次の文では、ある値を定義して日付のみの変数に割り当て、日付の書式と順序を指定して、結果を現行の出力ファイルへ送信します。

DEFINE datevar VARIABLE DATE
dATEFORMAT = '<MTXT> <D>, <YYYY>'
DATEORDER = 'MDY'
DATEVAR = '3 5 1997'
SHOW DATEVAR

これらの文によって生成される出力は次のとおりです。

MAR 5, 1997

次の文では、日付の順序を変更し、それにより、日付のみの変数の同じ値の解釈方法も変更されます。

DATEORDER = 'DMY'
SHOW DATEVAR

これらの文によって生成される出力は次のとおりです。

MAY 3, 1997

DAYABBRLEN

DAYABBRLENオプションは、DAYNAMESオプションに保存されている曜日名の略称に使用する文字数を指定するオプションです。DATEFORMATテキスト・オプションで<WT><WTXT>および<WTXTL>書式を指定する場合は、特定の曜日名の略称として使用する文字数を指定できます。

データ型

TEXT

構文

DAYABBRLEN = specification [;|, specification]...

ここで、specificationは次の形式のテキスト式です。

     startpos [- endpos] : length

それぞれ略称の長さが違う、様々な曜日グループを定義できます。これを行うには、構文で示すように各グループをカンマまたはセミコロンで区切ります。

パラメータ

startpos [- endpos]

lengthによって略称の長さを定義する、最初と最後の曜日を示す数字。これらの数字で表される位置は、DAYNAMESオプションの対応するテキスト行に適用されます。これらの範囲の値は、必要に応じてendpos [-startpos]のように逆の順序でも指定できます。

DAYNAMESオプションには7行より多くの行がある可能性があるため、DAYABBRLENの設定では、startposおよびendposに7より大きい数を指定できます。startposまたはendposのどちらもDAYNAMESオプション内に対応するテキスト値がないような範囲を指定した場合は、Oracle OLAPにはその範囲に対する略称のテキスト値はありません。その後、曜日名のリストを変更してstartposが有効になった場合は、指定された略称が適用されます。

length

曜日名の略称の文字数(バイトではなく)による長さを指定する数値。DAYNAMESオプションの特定の位置に略称の長さを指定しないか、特定の位置に明示的にゼロを設定すると、<WT>の場合は1文字のデフォルトの略称、<WTXT>および<WTXTL>の場合は3文字のデフォルトの略称が使用されます。フルネーム指定の<WTEXT>および<WTEXTL>が指定されている場合は、略称は使用されません。

使用上の注意

あいまいな曜日名

'T'がTuesday(火曜日)またはThursday(木曜日)を意味するなど、あいまいな名前を解釈するには、DAYABBRLENを使用できます。TuesdayのDAYABBRLENの設定が1で、ThursdayのDAYABBRLENの設定が2であった場合、'T'は常にTuesdayに一致し、Thursdayと一致させるには少なくとも'Th'が必要です。この解釈は週内のTuesdayとThursdayの順序には関係がなく、2つの曜日の順序が反対でも同じように機能します。一方、どちらのDAYABBRLENも2であった場合には、'T'はどちらの曜日にも一致せず、一致させるには少なくとも'Tu'または'Th'を入力する必要があります。

例5-16 曜日の略称の指定

次のDAYABBRLEN設定では、最初の5つの曜日には1文字の略称が、最後の2つの曜日には2文字の略称が使用されます。

DAYABBRLEN = '1-5:1, 6-7:2'
DATEFORMAT = '<WTXT> <MTXT> <D>, <YYYY>'
SHOW CONVERT ('2 august 2005' DATE)

これらの文により、次の結果が返されます。ここでは、Tuesdayが1文字に略されています。

T AUGUST 2, 2005

DAYNAMES

DAYNAMESオプションは、有効な曜日名のリストを保存するオプションです。これらの曜日名は、日付のみの型の値を表示する際または日付のみの値をテキストに変換する際に使用されます。

<WT><WTXT><WTXTL><WTEXT><WTEXTL>のいずれかの書式を使用して日付を表示または変換する際に、DAYNAMESリストが参照されます。これらの書式は、DATEFORMATオプションで指定します。曜日名のセットが複数ある場合、Oracle OLAPでは、文字数および大文字の使用パターンがDATEFORMATの指定と最も近いシノニムを選択します。

データ型

TEXT

構文

DAYNAMES = name-list

パラメータ

name-list

7つの曜日名がリストされた複数行のテキスト式。名前はそれぞれ別の行に格納されます。どの曜日を最初の曜日とするかにかかわらず、リストは日曜日の名前から始める必要があります。デフォルト値は、英語の曜日名(大文字)のリストです。リストには複数の名前のセット(7つの曜日名で1セット)を含めることができます。8番目の名前は1番目の名前のシノニムであり、9番目の名前は2番目の名前のシノニムであるというように続きます。

例5-17 曜日名の指定

次の文では、DAYNAMESをフランス語の曜日名に設定し、出力を現行の出力ファイルに送信します。

DAYNAMES = 'dimanche\nlundi\n-
mardi\nmercredi\njeudi\nvendredi\nsamedi'
SHOW DAYNAMES

これらの文によって生成される出力は次のとおりです。

dimanche
lundi
mardi
mercredi
jeudi
vendredi
samedi

DECIMALCHAR

(読取り専用)DECIMALCHARオプションは、NLS_NUMERIC_CHARACTERSオプションに指定された値になります。

DECIMALCHARは、Oracle OLAPによる出力での数値書式にのみ影響します。入力する数値の書式には、小数点としてピリオド(.)が使用されます。別の小数点を使用するには、値を一重引用符で囲み、TO_NUMBERファンクションでテキストから有効な数値に変換します。

データ型

ID

構文

DECIMALCHAR

例5-18 小数点と3桁区切りの確認

この例内の文で、DECIMALCHARおよびTHOUSANDSCHARの値を確認できます。

  • 次の文では、出力としてカンマなどが示されます。

    SHOW THOUSANDSCHAR
    
  • 次の文では、出力としてピリオドなどが示されます。

    SHOW DECIMALCHAR
    
  • これらの値を使用した場合、次の文によって、文の下にあるような出力が生成されます。

    SHOW TOTAL(sales)
    63,181,743.50 
    

DECIMALOVERFLOW

DECIMALOVERFLOWオプションは、算術演算の結果が有効範囲外となる場合に、その結果を制御するオプションです。10進数は、仮数および指数として格納されます。計算の結果が非常に大きく、10進表現の指数部分では表しきれない場合、10進オーバーフローが発生します。

データ型

BOOLEAN

構文

DECIMALOVERFLOW = YES|NO

パラメータ

YES

オーバーフローを許可します。オーバーフローを生成する計算がエラーなしで実行され、計算の結果はNAになります。

NO

(デフォルト)オーバーフローを許可しません。オーバーフローが発生する計算は実行が停止され、エラー・メッセージが表示されます。

によって、次の結果が生成されます。

NA

例5-19 DECIMALOVERFLOWの影響

この例では、DECIMALOVERFLOWオプションの値を変更した場合の影響を示します。

DECIMALOVERFLOWをデフォルト値のNOに設定したままで、次のようなSHOW文を実行すると、エラーが発生します。

SHOW 1000000.0 ** 133

DECIMALOVERFLOWの値をYESに変更して同じ文を実行すると、エラーは起こらず、演算の結果としてNAが返されます。次の文により

DECIMALOVERFLOW = YES
SHOW 1000000.0 ** 133

DECIMALS

DECIMALSオプションは、数値出力に表示する小数点以下の桁数を制御します。値は、指定された小数桁数に収まるように丸められます。(ただし、DECIMALSの設定は、出力のINTEGER値の書式には影響しません。HEADING、REPORTまたはROWコマンドで明示的にDECIMAL属性を適用しないかぎり、INTEGER値には小数桁は表示されません。)

データ型

INTEGER

構文

DECIMALS = n

パラメータ

n

DECIMAL値およびSHORTDECIMAL値のすべての出力における小数点以下の桁数を指定するINTEGER式で、nには、0から40までの任意の数字または255になります。(DECIMALSを255に設定すると、SHORTDECIMALとDECIMALの両方のデータ型について値の書式を指定できます。例5-21を参照してください。デフォルト値は2です。

例5-20 小数桁なしでのデータの表示

数値の出力に小数桁を表示しないようにするには、レポートを生成する前に、DECIMALSオプションを0(ゼロ)に設定します。

DECIMALS = 0
LIMIT line TO 'COGS'
LIMIT month TO 'Jan96' 'Feb96'
REPORT DOWN division ACROSS month: budget

これらの文によって生成される出力は次のとおりです。

LINE: COGS
               -------BUDGET--------
               --------MONTH--------
DIVISION         Jan96      Feb96
-------------- ---------- ----------
Camping           355,933    385,308
Sporting          279,773    323,982
Clothing          528,370    546,468

例5-21 最適表示書式と小数2桁表示との比較

この例では、DECIMALSを2に設定した場合とDECIMALSを255(最適表示書式)に設定した場合の結果を比較します。

OLAP DML文

DECIMALS = 2
SHOW JOINCHARS(1.1 'A')

によって、次の出力が生成されます。

1.10A

OLAP DML文

DECIMALS = 255
SHOW JOINCHARS(1.1 'A')

によって、次の出力が生成されます。

1.1A

DEFAULTAWSEGSIZE

DEFAULTAWSEGSIZEオプションは、データベース・セッションで作成されるアナリティック・ワークスペースの、デフォルトの最大セグメント・サイズを保存するオプションです。この設定は、そのセッションでのみ有効です。新しいセッションごとに、DEFAULTAWSEGSIZEはデフォルト値に戻ります。

ヒント:

既存のワークスペースで、新規セグメントの最大サイズを変更するには、AWコマンドをSEGMENTSIZEキーワードとともに使用します。新規セグメントについての現行の最大サイズを確認するには、AWファンクションをSEGMENTSIZEキーワードとともに使用します。

構文

DEFAULTAWSEGSIZE = n

パラメータ

n

バイト数。

例5-22 セッションの最大セグメント・サイズの表示

次の文により、ワークスペースの現行の最大セグメント・サイズが表示されます。

SHOW DEFAULTAWSIZE

例5-23 セッションの最大セグメント・サイズの設定

次の文により、最大セグメント・サイズが約1/2GBに設定されます。

DEFAULTAWSIZE = 536870910 

DIVIDEBYZERO

DIVIDEBYZEROオプションは、ゼロで除算した結果を制御します。(ゼロによる除算には、0 ** -2など、ゼロの負の累乗も含まれます。)

データ型

BOOLEAN

構文

DIVIDEBYZERO = YES|NO

パラメータ

YES

ゼロによる除算を許可します。ゼロによる除算を含む文がエラーなしで実行されますが、ゼロによる除算の実行結果はNAです。ディメンション化された変数または式で除算する場合、DIVIDEBYZEROをYESに設定すると、いくつかの計算にゼロによる除算が含まれている場合は、大半の式の値について結果を求めることができます。

NO

(デフォルト)ゼロによる除算を禁止します。ゼロによる除算を含む文を実行すると、実行が停止してエラー・メッセージが生成されます。

例5-24 DIVIDEBYZEROの影響

この例では、DIVIDEBYZEROオプションの値を変更した場合の影響を示します。

次のようなSHOW文を、DIVIDEBYZEROオプションのデフォルト値であるNOを変更しないで実行すると、Oracle OLAPでは100が0で除算され、エラー・メッセージが生成されます。

SHOW 100 / 0

DIVIDEBYZEROの設定をYESに変更すると、同じ文がエラーなしで実行され、除算の結果としてNAが出力されます。次の文により

DIVIDEBYZERO = YES
SHOW 100 / 0

によって、次の結果が生成されます。

NA

DSECONDS

(読取り専用)DSECONDSオプションは、経過時間をDECIMAL値として返すオプションです。OracleがインストールされているのがUNIXである場合、DSECONDSオプションが返すのは、Oracleが開始されてからの経過時間(秒)になります。OracleがインストールされているのがWindowsである場合、DSECONDSオプションが返すのは、Oracleがインストールされているコンピュータが起動してからの経過時間(秒)になります。プログラムの動作速度向上に役立てるため、DSECONDSは、プログラムの実行中に経過する時間を調べる目的で使用できます。

注意:

経過時間をINTEGER値として取得する方法は、SECONDSオプションを参照してください。

データ型

DECIMAL

構文

DSECONDS

例5-25 DSECONDSによるプログラムの時間測定

次のプログラムを実行すると、プログラム開始時のDSECONDSの値がt1という変数に書き込まれ、次にt1とプログラム実行後のDSECONDSの値との差が表示されます。

DEFINE prodsummary PROGRAM
PROGRAM
VARIABLE t1 DECIMAL
t1 = dseconds
LIMIT product TO ALL
BLANK
FOR product
DO
  ROW WIDTH 16 name.product ACROSS month Jun96: DECIMAL 0 LSET -
   '$'WIDTH 18 <RSET ' (Actual)' sales rset ' (Plan)' sales.plan>
DOEND
BLANK
ROW WIDTH 35 LSET 'The program took ' rset ' seconds.' -
 (dseconds - t1)
END

このプログラムを実行すると、次の結果が生成されます。

3-Person Tents     $95,121 (actual)     $80,138 (plan)
Aluminum Canoes   $157,762 (actual)    $132,931 (plan)
Tennis Racquets    $97,174 (actual)     $84,758 (plan)
Warm-up Suits      $79,630 (actual)     $73,569 (plan)
Running Shoes     $153,688 (actual)    $109,219 (plan)
 
      The program took .20 seconds.

ECHOPROMPT

ECHOPROMPTオプションは、入力行とエラー・メッセージを現行の出力ファイルにエコー出力するかどうかを指定するオプションです。ECHOPROMPTをYESに設定し、DBGOUTFILEでデバッグ・ファイルを指定すると、入力行とエラー・メッセージのエコー出力先は、現行の出力ファイルではなくデバッグ・ファイルになります。

データ型

BOOLEAN

構文

ECHOPROMPT = {YES|NO}

パラメータ

YES

入力行とエラー・メッセージは、現行の出力ファイルまたはDBGOUTFILEで指定されたデバッグ・ファイルにエコー出力されます。

NO

(デフォルト)入力行とエラー・メッセージは、現行の出力ファイルとデバッグ・ファイルのいずれにも表示されません。

例5-26 ECHOPROMPTの使用

出力の格納先にするディスク・ファイルに、すべての入力行およびエラー・メッセージを格納するとします。まずECHOPROMPTをYESに設定してから、OUTFILE文を発行し、出力をディスク・ファイルに送ります。次の文では、ディスク・ファイルの格納先がカレント・ディレクトリ・オブジェクトになります。

ECHOPROMPT = YES
OUTFILE 'newcalc.dat' 

EIFBYTES

(読取り専用)EIFBYTESオプションは、最後に実行されたIMPORT(EIF)コマンドによって読み取られたか、最後に実行されたEXPORT(EIF)コマンドによって書き込まれたバイトの数を保持するオプションです。

データ型

INTEGER

構文

EIFBYTES

例5-27 バイト数の確認

demoワークスペースのディメンションをエクスポートしたときにEIFファイルにエクスポートされた情報のバイト数を確認するには、次の文を使用します。

LIMIT name TO OBJ(TYPE) EQ 'DIMENSION'
EXPORT ALL TO EIF FILE 'myfile.eif'
SHOW EIFBYTES

SHOW文によって生成される出力は、次のとおりです。

2,038

EIFEXTENSIONPATH

EIFEXTENSIONPATHオプションは、EIF拡張ファイルの作成場所を指定するディレクトリ・オブジェクトのリストを格納するオプションです。

データ型

TEXT

構文

EIFEXTENSIONPATH = path-expression

パラメータ

path-expression

1つ以上のディレクトリ・オブジェクト名が格納されているテキスト式。複数の別名を指定する場合は、それぞれを別の行に入力する必要があります。複数の別名は、EIF拡張ファイルの格納に使用する順に指定します。

使用上の注意

拡張ファイルが作成される条件

EIFファイルのサイズが、EXPORT(EIF)コマンドに対してFILESIZE引数で指定したEIFファイルのサイズを超えるか、現行のディスクまたは場所に空き領域がなくなると、EIF拡張ファイルが作成されます。

EIFEXTENSIONPATHで指定された場所は、新しい拡張ファイルの作成前に、十分なディスク領域があるかどうかが確認されます。必要なディスク領域のサイズは、EXPORT(EIF)のFILESIZEに指定されているサイズです。FILESIZEに値が指定されていない場合は、80K以上のディスク領域(FILESIZEによって許容される最小サイズ)の有無が確認されます。ディスク領域が不十分な場合は、十分なディスク領域が確保されている場所が見つかるまでリストの確認が続行されます。

EIFEXTENSIONPATHにおける複数のパス

EIFEXTENSIONPATHに複数のディレクトリ・オブジェクトが含まれる場合、最初の拡張ファイルは、リストの最初の別名に作成されます。2番目の拡張ファイルは、リストの2番目の別名に作成されます(以降同様)。リストの末尾に到達すると、この処理はもう一度先頭から開始されます。EIFEXTENSIONPATHに含まれるディレクトリ・オブジェクトが1つの場合は、すべての拡張ファイルがこの場所に作成されます。

例5-28 拡張ファイルの場所の設定

次の文を実行すると、EIF拡張ファイルの作成先としてeifextディレクトリ・オブジェクトが設定されます。

EIFEXTENSIONPATH = 'eifext' 

EIFNAMES

EIFNAMESオプションは、最後に実行されたIMPORT(EIF)コマンドによってインポートされたすべてのオブジェクトの名前のリストを保持するオプションです。

データ型

TEXT

構文

EIFNAMES

インポートした内容の確認

units変数とproductset値セットを、demoアナリティック・ワークスペースからmyfile.eifというファイルにエクスポートしたとします。ファイルの内容を新しいワークスペースにインポートしたら、EIFNAMESオプションを使用して、インポートしたばかりのオブジェクトの名前を参照できます。

次の文により

AW CREATE mytest
IMPORT ALL FROM EIF FILE 'myfile.eif'
SHOW EIFNAMES

によって、次の出力が生成されます。

DISTRICT
PRODUCT
MONTH
UNITS
PRODUCTSET 

EIFSHORTNAMES

EIFSHORTNAMESオプションは、EIFオーバーフロー(拡張)ファイル名の拡張子の構造を制御するオプションです。

データ型

BOOLEAN

構文

EIFSHORTNAMES = YES|NO

パラメータ

YES

EIFオーバーフロー(拡張)ファイル名の拡張子をxxに設定します。それぞれxには、aからzまでの小文字が自動的に割り当てられます。

NO

(デフォルト)EIFオーバーフロー(拡張)ファイル名の拡張子をfilename.ennnに設定しますが、ここでnnnは、001から始まる3桁の数字で、ワークスペース拡張ファイル名と区別するために付けられます。たとえば、EIFファイルの名前がexport.eifの場合、拡張ファイルの名前は、export.e001export.e002などになります。

例5-29 ファイル名の拡張子の3文字への制限

次の文を実行すると、EIF拡張ファイル名のファイル拡張子が、xxの書式に指定されます。

EIFSHORTNAMES = YES

EIFTYPES

EIFTYPESオプションは、EIFNAMESオプションによって生成されるリストに含まれるオブジェクト型のリストを保持するオプションです。各型の列記順序は、これに対応するオブジェクト名がEIFNAMESリスト内で列記されている順序と同じです。

データ型

TEXT

構文

EIFTYPES

例5-30 インポートした内容の確認

units変数とproductset値セットを、demoというアナリティック・ワークスペースからmyfile.eifというファイルにエクスポートしたとします。ファイルの内容を新しいワークスペースにインポートしたら、EIFNAMESオプションとEIFTYPESオプションを使用して、インポートしたばかりのオブジェクトの名前とオブジェクト型を参照できます。

次の文により、ワークスペースの作成とオブジェクトのインポートを実行します。

AW CREATE mytest
IMPORT ALL FROM EIF FILE 'myfile.eif'

次の文により、インポートしたオブジェクトの名前を現行の出力ファイルに送ります。

SHOW EIFNAMES

生成される出力は次のとおりです。

DISTRICT
PRODUCT
MONTH
UNITS
PRODUCTSET

次の文により、インポートしたオブジェクト型を現行の出力ファイルに送ります。

SHOW EIFTYPES

生成される出力は次のとおりです。

DIMENSION
DIMENSION
DIMENSION
VARIABLE
VALUESET 

EIFUPDBYTES

EIFUPDBYTESオプションは、IMPORT(EIF)コマンドをそのUPDATEキーワードとともに使用するときに、更新の頻度を制御するオプションです。EIFUPDBYTESの値が有効なのは、このコマンドでUPDATEキーワードが指定されている場合に限られます。

データ型

INTEGER

構文

EIFUPDBYTES = n

パラメータ

n

1回のインポート時に、更新と更新の間に読み取るデータの最小バイト数を指定するINTEGER式。EIFUPDBYTESの値として0を指定すると、アナリティック・ワークスペース・オブジェクトがインポートされるたびに更新が実行されます。EIFUPDBYTESの値として0より大きい値を指定すると、指定したバイト数のデータがインポートされるたびに更新が実行されます。デフォルトは0(ゼロ)です。

例5-31 更新頻度の削減

次の例では、IMPORT(EIF)コマンドのUPDATEキーワードにより、更新の実行頻度は定期的になります。EIFUPDBYTESを設定することにより、更新頻度を抑えることができます。

EIFUPDBYTES = 500000
IMPORT ALL FROM EIF FILE 'finance.eif' UPDATE 

EIFVERSION

EIFVERSIONオプションは、OLAP ServerまたはOracle OLAPの異なるリリース間でデータをコピーするときに、EXPORT(EIF)コマンドおよびIMPORT(EIF)コマンドとともに使用します。データのエクスポート元となるリリースのことをソースと呼びます。データのインポート先となるリリースのことをターゲットと呼びます。

EXPORTコマンドを使用してデータをEIFファイルにエクスポートする前に、EIFVERSIONオプションを使用してターゲットの内部リリースまたはビルド番号を指定します。その後、EXPORTを使用してデータをソースからEIFファイルにコピーすると、データのフォーマットはターゲットがインポート可能なフォーマットになります。通常、EIFファイルからデータをインポートする場合、EIFVERSIONで指定したEIFファイルのリリース番号より後のリリース番号を持つターゲットにインポートできます。ただし、EIFVERSIONの値をデフォルト(現行のプロセスのリリース番号)より低い値に設定し、以前のリリースでは処理できないデータをエクスポートしようとすると、エラーが発生します。たとえば、aggmapを以前のリリースのOLAP Server 6.2にエクスポートしようとすると、OLAP Server 6.2ではaggmapを処理できないため、エラーが発生します。

EVERSIONファンクションを使用すると、ターゲットの内部リリースやビルド番号を判別できます。

構文

EIFVERSION = n

パラメータ

n

OLAP ServerまたはOracle OLAPプロセスの内部リリースまたはビルド番号。これは、データのインポート先にするターゲットのことです。

デフォルトでは、EIFVERSIONは現行のプロセスの内部リリースやビルド番号に設定されます。

例5-32 異なるリリース間でのエクスポートおよびインポート

この例では、Oracle OLAPからEIFファイルにデータをエクスポートし、次にOLAP Server 6.2でこのデータをインポートする場合のEIFVERSIONの使用方法を示します。

次の文(ターゲットのOLAP Server 6.2から発行)を実行すると、

SHOW EVERSION

次のリリース情報およびビルド情報が返されます。

Module Mgr, Version: 6.2.0.0.0, Build: 60232
OES Kernel, Version: 6.2.0.0.0, Build: 60232

次の文を実行すると、(60232より後のビルド番号を持つ)Oracle OLAPから、OLAP Server 6.2で読取り可能なEIFファイルにデータがエクスポートされます。

EIFVERSION = 60232
EXPORT ALL TO EIF FILE 'myeif.eif' 

ERRNAMES

ERRNAMESオプションは、ERRORTEXTオプションの値にエラーの名前(つまり、ERRORNAMEオプションの値)およびエラー・メッセージのテキストを格納するかどうかを制御するオプションです。

データ型

BOOLEAN

構文

ERRNAMES = {NO|YES}

パラメータ

NO

ERRORTEXTにはエラー・メッセージのテキストのみが格納されます。

YES

(デフォルト)ERRORTEXTにはエラー・メッセージの名前とテキストが格納されます。

例5-33 ERRNAMESの設定に応じたERRORTEXTの値

次のプログラムを実行するとします。

VARIABLE myint INTEGER
myint = 35/0
SHOW ERRORTEXT

ERRNAMESの値をYESに設定すると、プログラムからはERRORTEXTの値として次の内容が返されます。

ERROR: (MXXEQ01) A division by zero was attempted.  (If you want NA to
  be returned as the result of a division by zero, set the DIVIDEBYZERO
  option to YES.)

ERRNAMESの値をNOに設定すると、プログラムからはERRORTEXTの値として次の内容が返されます。

ERROR: A division by zero was attempted.  (If you want NA to be
  returned as the result of a division by zero, set the DIVIDEBYZERO
  option to YES.)

ERRORNAME

ERRORNAMEオプションは、プログラムまたはOLAP DML文を実行したときに発生した最初のエラーの名前を保持するオプションです。

データ型

TEXT

構文

ERRORNAME

使用上の注意

ERRORNAMEとSIGNAL

独自のエラー条件をプログラム内に作成するには、SIGNALコマンドを使用します。SIGNALを使用すると、ERRORNAMEおよびERRORTEXTは、指定した値に設定されます。

特別な名前PRGERRをSIGNALコマンドとともに使用すると、エラーが発生したコール側プログラムと通信できます。SIGNAL PRGERRコマンドは、ERRORNAMEを空白値に設定し、別のエラー・メッセージを表示することなく、エラー条件をコール側プログラムに渡します。SIGNALを使用して、ネストしたプログラムの連鎖を経由してOracle OLAPエラーを渡す方法については、TRAPコマンドを参照してください。

例5-34 TRAPでのERRORNAMEの使用

TRAPコマンドを使用してエラーを処理するレポート・プログラムでは、SIGNALコマンドを使用することにより、現行の出力ファイルに適切なエラー名を送ることができます。

DEFINE myreport PROGRAM
LD Monthly Report
PROGRAM
TRAP ON CLEANUP NOPRINT
PUSH month DECIMALS LSIZE PAGESIZE
LIMIT month TO LAST 1
   ...
POP month DECIMALS LSIZE PAGESIZE
RETURN
CLEANUP:
POP month DECIMALS LSIZE PAGESIZE
SIGNAL ERRORNAME ERRORTEXT
END

ERRORTEXT

ERRORTEXTオプションは、プログラムまたは文を実行したときに表示された最初のエラー・メッセージのテキストを保持するオプションです。メッセージがERRORTEXTに置かれているエラーの名前は、ERRORNAMEオプションに格納されています。

関連項目:

ERRORNAMEオプション、ERRNAMESオプション、TRAPコマンド

データ型

TEXT

構文

ERRORTEXT

例5-35 SIGNALコマンドでのERRORTEXT

TRAPコマンドを使用してエラーを処理するレポート・プログラムでは、SIGNALコマンドを使用することにより、現行の出力ファイルに適切なエラーメッセージを送ることができます。

DEFINE myreport PROGRAM
LD Monthly Report
PROGRAM
TRAP ON CLEANUP NOPRINT
PUSH month DECIMALS LSIZE PAGESIZE
LIMIT month TO LAST 1
   ...
POP month DECIMALS LSIZE PAGESIZE
RETURN
CLEANUP:
POP month DECIMALS LSIZE PAGESIZE
SIGNAL ERRORNAME ERRORTEXT
END

ESCAPEBASE

ESCAPEBASEオプションは、CONVERTファンクションのINFILEキーワードによって生成されるエスケープ文字のタイプを指定するオプションです。

構文

ESCAPEBASE = 'escape-type

パラメータ

escape-type

10進数のエスケープ文字の場合は'd'を指定し、16進数のエスケープ文字の場合は'x'を指定します。

デフォルトのエスケープ・タイプは10進です。このタイプでは、文字のINTEGER値が次の形式で生成されます。

 '\dnnn'

16進のエスケープは、文字のINTEGER値を次の形式にしたものです。

 '\xnn'

ESCAPEBASEをCONVERTとともに使用し、テキスト値をエスケープ・シーケンスに変換する例は、例7-50を参照してください。

EXPTRACE

EXPTRACEオプションは、PRGTRACEオプションがYESに設定されている場合に、EXPRESSというアナリティック・ワークスペース内のOLAP DMLプログラムをトレースするかどうかを制御するためのオプションです。EXPRESSアナリティック・ワークスペースは常にアタッチされており、主に、OLAP DML文として記述されるOLAP DMLプログラムとその他の「補助的な」OLAP DMLプログラムで構成されています。

データ型

BOOLEAN

構文

EXPTRACE = {YES|NO}

パラメータ

YES

OLAP DML文として記述されたOLAP DMLプログラムを含むすべてのプログラムがトレースされます。

NO

(デフォルト)OLAP DML文として記述されたOLAP DMLプログラムはトレースされません。それ以外のプログラムについてはトレースされます。

使用上の注意

OLAP DML文として記述されたOLAP DMLプログラムを識別する方法

一部のOLAP DML文は、OLAP DMLプログラムとして実装されています。これらのプログラムには、EXPTRACEを使用できます。これらのプログラムのリストを現行の出力ファイルに出力するには、次の文を発行します。

SHOW AW(PROGRAM 'express')

例5-36 システムDMLプログラムのトレース

次の文を発行すると、ユーザー定義のプログラムの他にLISTNAMESやALLSTATなどのシステムDMLプログラムがトレースされます。

PRGTRACE = YES
EXPTRACE = YES 

INF_STOP_ON_ERROR

INF_STOP_ON_ERRORオプションでは、INFILE文の実行中にエラーが発生した場合のOracle OLAPの動作を指定します。

構文

INF_STOP_ON_ERROR = {YES|NO}

パラメータ

YES

エラーが発生した場合、エラーをレポートし、ファイルからの読取りを停止します。

NO

エラーが発生した場合、エラーをレポートし、ファイルからの読取りを続行します。

例5-37 DBMS_EXECUTEでのINF_STOP_ON_ERRORの使用方法

myawという名前のアナリティック・ワークスペースをデタッチする次のOLAP DML文を含むattachmyaw.infというファイルがあるとします。

AW DETACH myaw

SQLアプリケーションにより、attachmyaw.infinfileファイルを読み取るためのINFILE文を含むDBMS_AW.EXECUTE文が発行される際、myawワークスペースがアタッチされていないとします。

INF_STOP_ON_ERRオプションがNOに設定されている場合は、「Analytic workspace MYAW is not attached」というエラーがレポートされても、Oracle OLAPではそのままファイルの読取りが続行され、DBMS_AW.EXECUTEプロシージャは完了するまで正常に実行されます。

DBMS_AW.EXECUTE('INF_STOP_ON_ERR = NO '); 
DBMS_AW.EXECUTE('INFILE attachmyaw.inf'); 
 
The current directory is MYDIR. 
ERROR: (ORA-34344) Analytic workspace MYAW is not attached. 
ERROR: (ORA-34344) Analytic workspace MYAW is not attached. 

PL/SQL procedure successfully completed. 

INF_STOP_ON_ERRオプションがYESに設定されている場合は、「Analytic workspace MYAW is not attached」というエラーがレポートされると、Oracle OLAPではファイルの読取りが中止され、DBMS_AW.EXECUTEプロシージャは中断されます。

DBMS_AW.EXECUTE('INF_STOP_ON_ERR = YES '); 
DBMS_AW.EXECUTE('INFILE attachmyaw.inf'); 
    
The current directory is MYSPL. 
DECLARE 
  * 
ERROR at line 1: 
ORA-35166: (ORA-34344) Analytic workspace MYAW is not attached. 
ORA-06512: at "SYS.DBMS_AW", line 27 
ORA-06512: at "SYS.DBMS_AW", line 115 
ORA-06512: at line 8 

LCOLWIDTH

LCOLWIDTHオプションは、レポートのラベル列のデフォルト幅を制御します。ROWコマンドおよびHEADINGコマンドからの出力に対して、LCOLWIDTHは最初の列に影響します。REPORTコマンドからの出力に対して、最初の列がコンポジットまたは結合ディメンションのベース・ディメンションを表すデータ列または列のセットの一部である場合を除き、LCOLWIDTHは最初の列に影響します。

注意:

個々の列では、LCOLWIDTHの値は常にHEADING、REPORTまたはROWコマンドのWIDTH属性によって変更されます。

関連項目:

COLWIDTH

データ型

INTEGER

構文

LCOLWIDTH = n

パラメータ

n

必要な列幅を文字数で指定するINTEGER式。LCOLWIDTHは、1から4000までの任意の値を設定できます。デフォルト値は14です。

注意:

レポートにおける行の最大幅は4,000文字です。したがって、レポートのすべての列を合せた幅は4,000文字を超えることができません。

例5-38 デフォルト列幅の設定

6か月間の売上数量を参照するとします。最も長い製品名は10文字なので、ラベル列にデフォルト幅の14文字は必要ありません。また、販売数量も多くないので、データ列に10文字の幅は必要ありません。LCOLWIDTHおよびCOLWIDTHを設定して、デフォルト列幅を小さくします。

LIMIT district TO 'Atlanta'
LIMIT month TO 'Oct95' TO 'Mar96'
LCOLWIDTH = 10
COLWIDTH = 6
REPORT ACROSS month: units

これらの文によって生成される出力は次のとおりです。

DISTRICT: ATLANTA
            ------------------UNITS------------------
            ------------------MONTH------------------
PRODUCT     Oct95  Nov95  Dec95  Jan96  Feb96  Mar96
---------- ------ ------ ------ ------ ------ ------
Tents         503    345    259    279    305    356
Canoes        317    282    267    281    309    386
Racquets    1,365  1,270  1,357  1,125  1,304  1,263
Sportswear  3,065  2,327  1,955  2,591  2,829  3,137
Footwear    3,445  3,247  2,831  3,089  3,282  3,475

LIKECASE

LIKECASEオプションは、LIKE演算子で大文字と小文字を区別するかどうかを制御します。

ヒント:

LIKENLオプションは、LIKE演算子が改行文字を認識するかどうかを制御します。

データ型

BOOLEAN

構文

LIKECASE = {YES|NO}

パラメータ

YES

(デフォルト)LIKE演算子で大文字と小文字を区別することを指定します。

NO

LIKE演算子で大文字と小文字を区別しないことを指定します。

例5-39 LIKECASEの影響

次の文は、LIKECASEオプションの使用方法を示します。

LIKECASE = YES
SHOW 'oracle' LIKE 'Oracle%'

このSHOW文の出力は次のとおりです。

NO

次のSHOW文

SHOW 'ORACLE' LIKE '%orc%'

によって、次の出力が生成されます。

NO

次の文により

LIKECASE = NO
SHOW 'ORACLE' like 'orc%'

によって、次の出力が生成されます。

YES

LIKEESCAPE

LIKEESCAPEオプションによって、LIKE演算子にエスケープ文字を指定できます。

データ型

ID

構文

LIKEESCAPE = char

パラメータ

char

LIKEのテキスト比較でエスケープ文字として使用する文字を指定するテキスト式。デフォルトのエスケープ文字はありません。

LIKEのエスケープ文字は、LIKEのテキスト比較で使用されるLIKEの引数を受け入れるLISTNAMESプログラムに影響します。

使用上の注意

エスケープ文字の使用

LIKEのエスケープ文字によって、LIKE演算子のワイルドカード文字を含むテキスト式を検索できます。LIKE演算子のワイルドカード文字には、1文字と一致するアンダースコア(_)と、ゼロ文字以上の文字列と一致するパーセント文字(%)があります。

テキスト比較にアンダースコアまたはパーセント文字を含めるには、最初にLIKEESCAPEオプションによってエスケープ文字を指定します。その後に、LIKEの式で、指定したLIKEESCAPE文字をアンダースコアまたはパーセント文字の前に付けます。

バックスラッシュ(\)はOLAP DMLの標準のエスケープ文字なので、LIKEのエスケープ文字としてバックスラッシュを使用しない場合があります。そのため、2つのバックスラッシュによって、LIKEESCAPEが2番目のバックスラッシュをリテラル文字として扱うように示す必要があります。

例5-40 LIKE演算子でのエスケープ文字の使用

この例は、エスケープ文字を指定する方法、およびそれをLIKE演算子で使用する方法を示します。

次のテキスト値を含むprodstatという名前の変数があるとします。

DEFINE prodstat TEXT <product>
prodstat(product 'Tents') = - 
'What are the results of the fabric testing?'
prodstat(product 'Canoes') = -
'How has the flooding affected distribution?'
prodstat(product 'Racquets') = -
'The best-selling model is Whack_it!'
prodstat(product 'Sportswear') = -
'90% of the stock is ready to ship.'
prodstat(product 'Footwear') = -
'When are the new styles going to be ready?'

prodstat変数のセルに含まれるテキストで特定の文字を検索するfindescharという名前の次のプログラムがあります。このプログラムはLIKE演算子を使用します。

ARGUMENT findstring TEXT
FOR product
   IF prodstat LIKE findstring
   THEN SHOW JOINCHARS(product ' - ' prodstat)

パーセント文字(%)またはアンダースコア(_)を含むテキスト値をプログラムで検索できるようにするために、LIKEESCAPEオプションを使用してエスケープ文字を指定する必要があります。エスケープ文字に疑問符(?)を使用するとします。エスケープ文字を疑問符に設定する前は、次の文によって、疑問符を含むテキストが検索されます。

CALL findeschar('%?%') "Find any text that contains a question mark.

この文によって生成される出力は、次のとおりです。

Tents - What are the results of the fabric testing?
Canoes - How has the flooding affected distribution?
Footwear - When are the new styles going to be ready?

次の文は、エスケープ文字として疑問符(?)を指定し、FINDESCHARプログラムをコールします。

LIKEESCAPE = '?'
CALL findeschar('%?%') "Find any text that ends with a percent character.

パーセント文字で終わるテキスト値がprodstatにないため、この文によって検索されるテキストはありません。パーセント文字を含むテキストを検索するには、次の文のように、ワイルドカード文字をもう1つ追加します。LIKEESCAPEは、最初のパーセント文字をゼロ文字以上と一致するワイルドカードとして解釈し、2番目のパーセント文字をリテラルのパーセント文字(%)として解釈し(前に疑問符のエスケープ文字があるため)、3番目のパーセント文字をもう1つのワイルドカード文字として解釈します。この結果、LIKEESCAPEは、前後にゼロ文字以上あるパーセント文字を検索します。

CALL findeschar('%?%%') "Find any text that contains a percent character.

この文によって生成される出力は、次のとおりです。

Sportswear - 90% of the stock is ready to ship.

次の文は、アンダースコアを含むテキストを検索します。

CALL findeschar('%?%') "Find any text that contains an underscore.

この文によって生成される出力は、次のとおりです。

Racquets - The best-selling model is Whack_it!

次の文は、エスケープ文字を二重にして、エスケープ文字を含むテキストを検索します。

CALL findeschar('%??%') "Find any text that contains a question mark.

この文によって生成される出力は、次のとおりです。

Tents - What are the results of the fabric testing?
Canoes - How has the flooding affected distribution?
Footwear - When are the new styles going to be ready?

例5-41 LISTNAMESプログラムでのエスケープ文字の使用

この例は、LIKE引数のワイルドカード文字を含むオブジェクトの名前を検索する方法を示します。次の文は、LIKEESCAPEオプションを使用してエスケープ文字を指定し、アンダースコアを含む2つのオブジェクト名を定義し、名前にアンダースコアが含まれるディメンションをリスト表示します。

LIKEESCAPE = '?'
DEFINE my_textdim DIMENSION TEXT
DEFINE my_intdim DIMENSION INTEGER
LISTNAMES DIMENSION LIKE '%?%'

この文によって生成される出力は、次のとおりです。

3 DIMENSIONs
----------------
MY_INTDIM
MY_TEXTDIM
_DE_LANGDIM

LIKENL

LIKENLオプションは、テキスト値がテキスト・パターンと似ているかどうかを判定する際に、LIKE演算子がテキスト式の各行の間にある改行文字を認識するかどうかを制御します。(OLAP DMLの改行文字の表記は\nです。)

LIKENLオプションは、LIKE演算子で比較する両方のテキスト式に適用されます。

データ型

BOOLEAN

構文

LIKENL = {YES|NO}

パラメータ

YES

(デフォルト)LIKE演算子でテキスト式の行の最後にある改行文字を認識するように指定します。

NO

LIKE演算子でテキスト式の行の最後にある改行文字を無視するように指定します。比較する両方の式で、改行文字が無視されます。

例5-42 LIKENLの影響

次の文は、LIKENLオプションの使用方法を示しています。

  • 次の文

    SHOW textvar
    

    によって、次の出力が生成されます。

    Hello
    world
    
  • 次の文により

    LIKENL = YES
    SHOW textvar LIKE '%low%'
    

    によって、次の出力が生成されます。

    NO
    
  • 次の文

    SHOW '	Hello\nworld' LIKE '%\n%'
    

    によって、次の出力が生成されます。

    YES
    
  • 次の文

    SHOW 'Hello\nworld' LIKE '%low%'
    

    によって、次の出力が生成されます。

    NO
    
  • 次の文により

    LIKENL = NO
    SHOW textvar LIKE '%low%'
    

    によって、次の出力が生成されます。

    YES
    
  • 次の文

    SHOW 'Hello\nworld' LIKE '%\n%' 
    

    によって、次の出力が生成されます。

    YES
    
  • 次の文

    SHOW 'Hello\nworld' LIKE '%low%'
    

    によって、次の出力が生成されます。

    YES

LIMIT.SORTREL

LIMIT.SORTRELオプションは、ディメンションを関連ディメンションに制限する際に、ソートを行うかどうかを制御するオプションです。

データ型

BOOLEAN

構文

LIMIT.SORTREL = {YES|NO}

パラメータ

YES

(デフォルト)ディメンションを関連ディメンションに制限する際に、Oracle OLAPによってソートが実行されます。

NO

ディメンションを関連ディメンションに制限する際に、Oracle OLAPによってソートは実行されません。

使用上の注意

ソートの説明

通常、ディメンションを関連ディメンションに制限すると、制限されるディメンションの値は、関連ディメンションの順序に従って配置されます。関連ディメンションの値に関連する最初のディメンションの値が複数の場合、値は、最初のディメンションのデフォルト・ステータスの順序でソートされます。LIMIT.SORTRELで抑制するのはこのソートです。

LIMIT.SORTRELがNOの場合の出力リスト

LIMIT.SORTRELをNOに設定すると、指定した任意のディメンションの値に対するリストが論理的な順序で出力されない場合があります。

例5-43 効率的な処理

productという大きなディメンションでディメンション化されている変数で計算を実行するとします。productディメンションには、カテゴリ、ベンダー、ブランドなど、製品階層のすべてのレベルが組み込まれています。productproductlevelの間の関係を使用して、一度に1レベルずつ計算を実行するとします。この計算では、ディメンション値の順序は重要でなく、さらにproductを関連ディメンションで制限しているため、処理の効率がより向上するLIMIT.SORTRELを使用して不要なソートを抑制します。

LIMIT.SORTREL = NO

LIMITSTRICT

LIMITSTRICTオプションはBOOLEANオプションです。存在しない値が、LIMITコマンド、LIMITファンクションまたはQDRの値のリストに含まれている際のOracle OLAPの動作がこのオプションにより決まります。

構文

LIMITSTRICT = YES | NO

パラメータ

YES

(デフォルト)存在しない値が、LIMITコマンド、LIMITファンクションまたはQDRの値のリストに含まれている場合、Oracle OLAPでは制限の実行が停止され、エラーが発生します。

NO

存在しない値が、LIMITコマンド、LIMITファンクションまたはQDRの値のリストに含まれている場合、Oracle OLAPは、指定した値をNA値として処理しながら制限を実行します。

例5-44 LIMITSTRICTをYESに設定することによる制限

次のような定義と値を持つ2つのディメンション(prodyear)および1つの変数(sales)があるとします。

DEFINE prod DIMENSION TEXT
DEFINE year DIMENSION TEXT
DEFINE sales VARIABLE INTEGER <prod year>
 
PROD
--------------
Radios
TVs
 
YEAR
--------------
2003
2004
 
               --------SALES--------
               --------PROD---------
YEAR             Radios      TVs
-------------- ---------- ----------
2003                2,459      3,534
2004                3,366      3,018
 

LIMITSTRICTをYESに設定すると、'IDontExist'の存在しないprod値による制限の要求は、無効な値による制限の要求として処理されます。

  • prodを存在しない値に制限すると、ORA-34706エラー・メッセージが表示され、prodのステータスにある値は変更されません。

     
    ->LIMIT prod to 'Idontexist'
    ORA-34706: Idontexist is not a valid TESTLIMITSTRICT!PROD.
     
    ->REPORT prod
     
    PROD
    --------------
    Radios
    TVs
     
  • prodを、存在しない値が含まれる値のリストに制限すると、ORA-34706エラー・メッセージが表示され、prodのステータスにある値は変更されません

    ->LIMIT prod to 'Idontexist' 'Radios'
    ORA-34706: Idontexist is not a valid TESTLIMITSTRICT!PROD.
     
    ->REPORT prod
    
    PROD
    --------------
    Radios
    TVs
    
  • salesに対して、QDR内の存在しないprod値を指定した場合も、ORA-34706エラー・メッセージが表示されます。

    ->REPORT sales (year '2004'prod 'IDontExist')
    ORA-34706: IDontExist is not a valid TESTLIMITSTRICT!PROD.

例5-45 LIMITSTRICTをNOに設定することによる制限

例5-44で説明した2つのディメンション(prodyear)および1つの変数(sales)があるとします。

LIMITSTRICTをNOに設定すると、'IDontExist'の存在しないprod値による制限の要求は、NA値による制限の要求として処理されます。

  • prodを存在しない値に制限すると、ORA-35654エラー・メッセージが表示され、prodのステータスにある値は変更されません。

    ->LIMIT prod to 'Idontexist'
    ORA-35654: The status of the TESTLIMITSTRICT!PROD dimension cannot be set to null.
    
    ->REPORT prod
    PROD
    --------------
    Radios
    TVs
  • prodを、存在しない値を含む値のリストに制限すると、エラー・メッセージは表示されません。この場合、prodは、既存の値に制限されます。

    ->LIMIT prod to 'Idontexist' 'Radios'
     
    ->REPORT prod
    
    PROD
    --------------
    Radios
    
  • salesに対して、QDR内の存在しないprod値を指定すると、エラー・メッセージは表示されません。この場合、salesのレポートにNA値が表示されます。

    ->REPORT sales (year '2004'prod 'IDontExist')
    ----------        NA

LINENUM

LINENUMオプションは、出力の現行の行数を示すオプションです。出力行が生成されるごとに、値が自動的に増加します。LINENUMオプションは、PAGINGの設定がYESの場合にのみ有効であり、REPORTやLISTNAMESなどのコマンドからの出力に対してのみ適用されます。

関連項目:

RECNO

データ型

INTEGER

構文

LINENUM = n

パラメータ

n

INTEGER式。通常は、LINENUMを明示的に設定する必要はありませんが、現行の値を確認する必要のある場合のみ設定します。

使用上の注意

新しいページの開始

PAGINGをYESに設定すると、出力に各行が生成されるたびにLINENUMが1ずつ増加します。LINENUMがPAGESIZEからBMARGINを引いた値と等しくなると、新しいページが自動的に作成されます。

新しいページの最初の行で、LINENUMは自動的に1にリセットされます。

LINENUMとPAGESIZEの比較

PAGESIZEにはページ下の余白の行も含まれるため、BMARGINに0(ゼロ)よりも大きい数字が設定されている場合は、LINENUMがPAGESIZEに到達することはありません。

LINENUMでのPAGINGの効果

PAGINGをNO(デフォルト)に設定すると、LINENUMオプションの値は出力行の生成数に応じて増加します。PAGINGをYESに設定すると、LINENUMは1に設定され、現行ページの行数のカウントが開始されます。

LINENUMでのOUTFILEの効果

OUTFILE文を使用して出力をファイルに送信すると、LINENUMはそのファイルに対して1に設定されます。OUTFILEでEOFキーワードを使用して出力をデフォルトの出力ファイルにリダイレクトすると、LINENUMの値は、デフォルトの出力ファイルに対して最後に保持していた値になります。

出力のLINENUMの送信

LINENUMの値を含む出力を生成し、この出力によって新しいページが作成されると、出力が単一行から構成されている場合、LINENUMの値は1として記録されます。ただし、出力が複数行の値で構成されている場合は、LINENUMの値がPAGESIZEより大きい値として記録されることもあります。

例5-46 一定したヘッダー・サイズの保持

ページごとにヘッダーが1行になる場合と2行になる場合があるとします。この違いにかかわらず、ヘッダー下の定位置にページの左端から右端まで線を引くとします。レポート・プログラムで使用するページ・ヘッダー・プログラムに、次の文を含めます。

WHILE LINENUM LT 5
BLANK
ROW W LSIZE ROW CENTER '--------------------------------'

LINESLEFT

(読取り専用)LINESLEFTオプションは、現行ページの残りの行数を保持するオプションです。LINESLEFTオプションは、PAGINGの設定がYESの場合にのみ有効であり、REPORTやLISTNAMESなどのコマンドからの出力に対してのみ適用されます。

データ型

INTEGER

構文

LINESLEFT

使用上の注意

改ページの制御

LINESLEFTは、主にレポート・プログラムで、特定のページ上の残りの行数を確認するために使用されます。レポートが1ページの途中で終わり、改ページで区切る必要がない場合、PAGE文を使用して新しいページをスキップできます。

LINESLEFTでのPAGESIZEの効果

PAGESIZEの値を変更すると、それに合せてLINESLEFTの値も調整されます。まず、PAGESIZEの古い値からLINESLEFTの値が差し引かれ、すでに使用されている行数が得られます。その後、この結果の値がPAGESIZEの新しい値から差し引かれ、LINESLEFTの新しい値が得られます。LINESLEFTが1よりも小さくなる場合は、次の出力行で新しいページが作成されます。

LINESLEFTでのPAGINGの効果

PAGINGをNOに設定すると、LINESLEFTはPAGESIZEの値に設定され、PAGINGがYESに設定されるまでこの値が保持されます。PAGINGをYESに設定すると、LINESLEFTによって現行ページの行数のカウントが開始されます。

LINESLEFTでのOUTFILEの効果

OUTFILE文を使用して出力をファイルに送信すると、LINESLEFTはそのファイルに対して66に設定され、PAGESIZEのデフォルト値と一致します。PAGESIZEを現行の出力ファイルの新しい値に設定すると、それに合せてLINESLEFTも調整されます。たとえば、出力をファイルに送信し、PAGESIZEを40に設定するとします。この場合、Oracle OLAPによって、そのファイルのLINESLEFTが40に設定され、これによって、PAGINGがYESに設定されている場合は、ファイルへの出力の最初の行で新しいページが作成されます。

OUTFILE文でEOFキーワードを使用して出力をデフォルトの出力ファイルにリダイレクトすると、LINESLEFTの値は、デフォルトの出力ファイルに対して最後に保持していた値になります。

出力のLINESLEFTの送信

LINESLEFTの値を含む出力を生成した場合、この値を含む行はLINESLEFTを記録する値には含まれません。

例5-47 脚注を含める場合

レポートのページの一番下に、空白の2行に続いて1行の脚注を含めるとします。次の文を使用して、ページ内の残りの行が3行になったら脚注を生成するように指定します。

IF LINESLEFT EQ 3
   THEN DO
   BLANK 2
   ROW W 50 'Subject To Change Without Notice.'
   DOEND

LOCK_LANGUAGE_DIMS

LOCK_LANGUAGE_DIMSオプションでは、言語ディメンションのステータスを変更可能にするかどうかを指定します。

関連項目:

$DEFAULT_LANGUAGE$DEFAULT_LANGUAGEプロパティ、SESSION_NLS_LANGUAGEオプションおよびSTATIC_SESSION_LANGUAGEオプションの「言語ディメンション・ステータスの処理」

データ型

BOOLEAN

構文

LOCK_LANGUAGE_DIMS= TRUE | FALSE

パラメータ

TRUE

LIMIT文が言語ディメンションのステータスの制限を試行するとエラーを返すように指定します。

LOCK_LANGUAGE_DIMSオプションの値がプログラムによってFALSEからTRUEに変更されると、Oracle OLAPは、SESSION_NLS_LANGUAGEオプションの値に従って、アタッチされたすべてのアナリティック・ワークスペースの言語ディメンションのステータスをリセットします。

FALSE

言語ディメンションのステータスをALLに設定し、LIMITを使用してプログラムで言語ディメンションのステータスを変更できるように指定します。

LOCK_LANGUAGE_DIMSオプションの値がプログラムによってTRUEからFALSEに変更されると、Oracle OLAPは、アタッチされたすべてのアナリティック・ワークスペースの言語ディメンションのステータスをALLにリセットします。

例5-48 言語ディメンションの明示的な制限

アナリティック・ワークスペースに、次の定義および値を持つmylangsという名前の言語ディメンションがあるとします。

DEFINE MYLANGS DIMENSION TEXT
PROPERTY '$DEFAULT_LANGUAGE' -
'AMERICAN'
 
MYLANGS
--------------
FRENCH
AMERICAN
 

また、次のレポートに示すように、アナリティック・ワークスペースをアタッチする際にmylangsのステータスがAmericanである場合を考えます。

REPORT mylangs

MYLANGS
--------------
AMERICAN
 

次のコードに示すように、LOCK_LANGUAGE_DIMSの値を最初にFALSEに設定してLIMITを使用するとmylangsのステータスをFrenchに明示的に変更できます。LOCK_LANGUAGE_DIMSの値がデフォルト値のTRUEの場合、言語ディメンションに対してLIMITは使用できません。

" Try to LIMIT mylangs
 
LIMIT  mylangs to 'FRENCH'
ORA-33558: The status or contents of the MYAW3!MYLANGS dimension cannot be changed while the LOCK_LANGUAGE_DIMS option is set to yes.
 
" Got an error
SHOW LOCK_LANGUAGE_DIMS
TRUE
 
" Got the error because LOCK_LANGUAGE_DIMS was TRUE
"Change LOCK_LANGUAGE_DIMS to FALSE
LOCK_LANGUAGE_DIMS = FALSE
 
" Try to LIMIT mylangs again
 
LIMIT mylangs TO 'FRENCH'
 
" Verify if the LIMIT worked. It did
REPORT mylangs
MYLANGS
--------------
FRENCH
 
" Then relock the language 
LOCK_LANGUAGE_DIMS = TRUE

LSIZE

LSIZEオプションは、STDHDRプログラムが標準ヘッダーを中央揃えする行サイズを定義するオプションです。LSIZEは、レポート・プログラムの初期化セクションで設定できます。

データ型

INTEGER

構文

LSIZE = n

パラメータ

n

STDHDRプログラムで標準ヘッダーを中央揃えする際の基準となる行サイズ、またはHEADING文で生成される出力の最大行サイズを指定するINTEGER式。デフォルトは、1行80文字です。

ヘッダー行を含めて、レポートの各行の最大幅は4,000文字です。したがって、通常は、LSIZEには4000以下の値を設定します。

使用上の注意

レポート・セグメントの中央揃え

STDHDRは、実行中のページのヘッダーをLSIZEの幅で中央揃えするため、LSIZEを使用してレポートの一部分を中央揃えできます。(最初に、LSIZEをレポート内の最も長い行の幅に設定します。)

中央揃えしたヘッダーの作成

LSIZEを使用して、ユーザー自身が作成した各ページやセクションの最初にあるヘッダーを中央揃えできます。まず、LSIZEをユーザーが作成した行の幅に設定します。その後、ユーザー自身のヘッダーのテキストの前で、LSIZEの幅およびキーワードCENTERを指定してHEADING文を使用します。例5-49を参照してください。

ファイルに対するLSIZEの設定

ファイルに対してLSIZEを設定するには、最初にOUTFILE文でファイルの名前を指定して現行の出力ファイルにしてから、LSIZEを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、そのファイルに対してLSIZEは80のデフォルト値に戻ります。

LSIZEをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、LSIZEの値はデフォルトの出力ファイルに対して自動的に保存されます。

例5-49 ヘッダーの中央揃え

読者がメモを記入できる余白を十分に取るため、四半期ごとの売上レポートを50文字という短い行幅で作成するとします。ヘッダーを中央揃えにするには、レポート・プログラムの先頭近くに次の行を含めます。

PAGEPRG = 'stdhdr'
LSIZE = 50
PAGING = YES
PAGE
HEADING WIDTH LSIZE CENTER 'Quarterly Sales'

レポートの最初に、次の出力が生成されます。

96/05/13 15:05:16                            PAGE 1
 
                  Quarterly Sales

MAXFETCH

MAXFETCHオプションは、OLAP_TABLEファンクションのOLAP_commandパラメータに指定したFETCH文によって生成されるデータ・ブロックの上限サイズを設定するオプションです。

関連項目:

FETCH文の使用方法の詳細は、FETCHコマンドを参照してください。OLAP_TABLEファンクションの詳細は、『Oracle OLAP DMLリファレンス』を参照してください。

戻り値

INTEGER

構文

MAXFETCH = integer-expression

パラメータ

integer-expression

FETCHによって生成されるデータ・ブロックの上限サイズをバイト単位で表すINTEGER式。MAXFETCHの最小値は1K(約1,000バイト)、最大値は2GB(約2,000,000,000バイト)です。MAXFETCHのデフォルト値は256Kです。

使用上の注意

OLAP_TABLEを使用した問合せのパフォーマンスの改善

MAXFETCHの設定は、OLAP_TABLEファンクションを使用した問合せのパフォーマンスに影響します。高い値に設定すると、OLAP_TABLEファンクションの結合を使用したサイズの大きい問合せを迅速に実行できます。ただし、設定値が高ければ高いほどメモリーが多く使用されるため、複数のユーザーがいる環境下ではパフォーマンスが低下する可能性があります。MAXFETCHの設定は、使用するOLAP_TABLEファンクションが1つしかないSELECTには影響しません。

MAXFETCHが原因となるFETCHエラー

FETCHを実行した際に、MAXFETCHで設定した制限サイズ内でデータ・ブロックをパッケージできないと、エラーが生成され、クライアントにデータが返されません。大量のデータをフェッチした場合、MAXFETCHを設定することによって、メモリー不足ではなくエラーを生成させることができます。

データ・ブロックを4Kに制限する場合

次の文を使用して、データ・ブロックのサイズを4Kに制限します。

  MAXFETCH = 4096

MODDAMP

MODDAMPオプションは、モデルの連立方程式の解法としてGauss-Seidel法を使用する際、反復間の振動を減衰させる加重係数を指定するオプションです。MODDAMPによって、方程式間の振動が安定しているために収束しないモデルを解決することが可能となります。振動が安定すると、制動しないかぎり振動は減衰しません。

Oracle OLAPでGauss-Seidel法を使用すると、連立方程式のブロックでの各反復ごとに、各モデル方程式の収束または発散が判定されます。判定は、現行の反復の結果と前回の反復の結果を比較することによって行われます。MODDAMPにゼロより大きい加重係数を指定すると、各反復後に判定および格納される値は、現行の結果と前回の結果の加重平均になります。したがって、反復間で振動する方程式にMODDAMPを使用すると、振動を抑制でき、方程式の発散を回避して収束を速めることができます。

データ型

DECIMAL

構文

MODDAMP = {n|0.00}

パラメータ

n

加重係数を指定するゼロ以上で1より小さい小数値。MODDAMPが0.00に近いほど、現行の反復の値により大きな加重が設定されます。デフォルト値は0.00で、現行の反復に最大の加重が設定されます。

Oracle OLAPでは、MODDAMPがゼロより大きい場合、現行の反復の加重平均は次のように計算されます。

calcvalue * (1 - MODDAMP) + weightavg

ここで

  • calcvalueは、現行の反復でモデル方程式から計算される値です。

  • weightavgは、前回の反復で計算された加重平均です。

格納される加重平均を参照してください。

使用上の注意

解法の指定

MODDAMPオプションは、Gauss-Seidel法で連立方程式を解決する場合にのみ使用します。使用する解法は、MODSIMULTYPEオプションで決定します。MODSIMULTYPEで設定可能な値は、Gauss-Seidel法を示すGAUSSと、Aitkensデルタ2乗法を示すAITKENSです。

収束速度に対するMODDAMPの影響

MODDAMPは、反復間で振動するかどうかにかかわらず、各連立ブロックにあるすべてのモデル方程式の結果を計算するときに使用します。振動しない方程式では、MODDAMPの値がゼロより大きいと、収束が遅くなります。したがって、モデルに振動する方程式と振動しない方程式が混在している場合は、MODDAMPを0.20などゼロ以外の小さな値に設定することで、全体の収束速度を上げることができます。ゼロ以外の小さな値を設定すると、振動しない方程式の収束速度は多少下がりますが、振動する方程式の収束速度は上がります。

格納される加重平均

モデル方程式が現行の反復で収束または発散しない場合は、現行の反復で計算された加重平均が格納されます。Oracle OLAPでは、この格納された平均値がweightavg(前回の反復で計算された加重平均)として次の反復での加重平均の計算式で使用されます。

ブロックの最初の反復では、ターゲット変数(またはディメンション値)の開始値がweightavg(前回の反復で計算された加重平均)として使用されます。

反復結果の比較

各反復における収束および発散を判定する場合、Oracle OLAPでは、現行の反復の結果と前回の反復の結果を比較します。MODDAMPがゼロより大きい場合、Oracle OLAPは、次のように計算した比較値を判定します。

(weightavg - weightavg) / (weightavg PLUS MODGAMMA)

ここで、weightavgは、前回の反復で計算された加重平均です。

収束判定の説明は、MODTOLERANCEオプションを参照してください。発散判定の説明は、MODOVERFLOWオプションを参照してください。

連立ブロックの解決を制御するオプション

MODDAMPの値の変更は、連立ブロックの収束の加速や達成のために試行する手段の1つです。MODELには、連立ブロックの解決を制御するために使用できる他のオプションがリストされており、モデルの実行およびデバッグに関する情報も掲載されています。

例5-50 MODDAMPのデフォルト値の使用

次の文では、income.budというモデルをトレースし、連立ブロックの解法としてGauss-Seidel法を指定して、ディメンションを制限し、income.budモデルを実行します。

MODTRACE = YES
MODSIMULTYPE = 'GAUSS'
LIMIT division TO 'Camping'
income.bud budget

これらの文によって生成される出力は次のとおりです。

(MOD= INCOME.BUD) BLOCK 1: SIMULTANEOUS 
(MOD= INCOME.BUD) ITERATION 1: EVALUATION
(MOD= INCOME.BUD) revenue = marketing * 300 - cogs
   ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 35) =  368.650399101
   ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 36) =  369.209604252
   ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 37) =  368.718556135
   ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 38) =  369.149674626
   ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 39) =  368.771110244
   ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 40) =  369.103479583
(MOD= INCOME.BUD) END BLOCK 1

MODDAMPオプションは、デフォルト値の0.00に設定されています。Revenue明細項目の方程式は、連立方程式のブロックでの40回目の反復で収束しました。トレース行で、最後の6回の反復でRevenue明細項目に対して計算された結果を確認できます。

例5-51 モデルの収束速度を上げるためのMODDAMPの設定

次の文で、MODDAMPの値を変更し、income.budを実行します。

MODDAMP = 0.2
income.bud budget

これらの文によって生成される出力は次のとおりです。

(MOD= INCOME.BUD) BLOCK 1: SIMULTANEOUS 
(MOD= INCOME.BUD) ITERATION 1: EVALUATION
(MOD= INCOME.BUD) revenue = marketing * 300 - cogs
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 1) =  276.200000000
   ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 2) =  416.187139753
    ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 3) =  368.021098186
   ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 4) =  367.209906847
   ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 5) =  369.271224267
  ...
(MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 6) =  368.965397407
(MOD= INCOME.BUD) END BLOCK 1

例5-50では、Revenue明細項目の方程式は40回目の反復で収束しました。この例では、MODDAMPを0.2に設定しているため、同じ方程式が6回目の反復で収束しています。

MODERROR

MODERRORオプションは、指定した反復回数内でモデルの連立方程式のブロックが解決しない場合にOracle OLAPが実行するアクションを決定するオプションです。

注意:

連立ブロックの解決を制御するオプションの説明は、モデル・オプションを参照してください

データ型

ID

構文

MODERROR = {'STOP'|'CONTINUE'}

パラメータ

'STOP'

(デフォルト)現行の出力ファイルにエラー・メッセージを送信し、モデルの実行を停止します。

'CONTINUE'

現行の出力ファイルに警告メッセージを送信し、現行のブロックの実行を停止して、モデル内の次のブロックで実行が再開されます。

使用上の注意

ブロックの解決の失敗

連立ブロックのすべての方程式が収束したと判定されると、ブロックは解決されたとみなされます。いずれかの方程式が、指定した反復回数内に発散するかまたは収束に失敗すると、ブロックの解決は失敗し、エラーが発生します。MODERRORでは、エラーが発生したときにOracle OLAPが実行するアクションを制御します。

モデルにおける連立ブロックの収束の達成

エラーが発生した際に、連立ブロックの解決を制御する1つ以上のオプションの値を変更することで、ブロックの収束を達成できる場合があります。たとえば、試行する反復の回数を増やすことによって、収束および発散を判定する際に使用する基準を変更できます。

「STOP」の使用

MODERRORがSTOPに設定されており、エラーが原因でモデルの実行が停止した場合、MODEL.XEQRPTプログラムを実行すると、モデルの実行についてのレポートを生成できます。レポートには、解決に失敗したブロックが示され、連立ブロックの解決に使用されたモデル・オプションの値が表示されます。

「CONTINUE」の使用

MODERRORがCONTINUEに設定されており、モデルの1つのブロックが連立ブロックで、そのブロックが発散するかまたは収束に失敗した場合、Oracle OLAPによって、モデルの残りのブロックが実行されます。

さらに、モデルのディメンションではないソリューション変数の追加のディメンションのステータスにある残りの値に対しても、Oracle OLAPによってモデルが実行されます。この場合、モデルの実行の終了後にMODEL.XEQRPTプログラムを実行すると、この追加のディメンションの最後の値の解決に関するレポートが生成されます。

モデルが追加のディメンションの最後の値に対して実行されたときに、モデルの連立ブロックが収束した場合は、それ以前に別のディメンション値に対するモデルの実行が失敗していても、MODEL.XEQRPTは、ブロックが解決されたとしてレポートします。エラーが発生したディメンション値についてのMODEL.XEQRPTを参照するには、MODERRORをSTOPに設定し、モデルを再実行します。

例5-52 モデルのデバッグ

この例では、OLAP Worksheet経由で接続し、コマンド入力ウィンドウに次の文を入力するとします。連立ブロックが収束に失敗したときにmyModelモデル(連立方程式のブロックを含むモデル)をデバッグできるように、文ではMODERRORをDEBUGに設定しています。

MODERROR = 'DEBUG'
myModel actual

連立ブロックが収束に失敗した場合は、OLAP Worksheetのコマンド入力ウィンドウにOracle OLAPコマンドまたはデバッガ・コマンドを入力します。ここでは、ソリューション変数actualdivisionによってディメンション化されているため、divisionの現行の値を表示します。

SHOW division
Camping 

MODGAMMA

MODGAMMAオプションは、モデルの連立ブロックの方程式が反復間でどれだけ変化するかを判定する際に使用する値を指定するオプションです。MODGAMMAは、判定において、反復間の変化の絶対量と比例変化との比較の程度を制御します。MODGAMMAは、結果として非常に小さい値を算出する方程式を判定する際に特に重要です。

注意:

連立ブロックの解決を制御するオプションの説明は、モデル・オプションを参照してください

データ型

INTEGER

構文

MODGAMMA = {n|1}

パラメータ

n

収束および発散の判定に使用するINTEGER値。Oracle OLAPでは、連立ブロック内の各方程式を計算する際、現行の反復と前回の反復における方程式の結果に基づく比較値を作成します。比較値が許容誤差として判定されると、方程式は収束したとみなされます。比較値がオーバーフローとして判定されると、方程式は発散したとみなされます。

比較値は、次のように判定されます。

(thisResult - prevResult) DIVIDED BY (prevResult PLUS MODGAMMA)

ここで、thisResultは現行の反復の結果で、 prevResultは前回の反復の結果です。

Oracle OLAPによって、カッコで囲まれた式の絶対値が計算されます。MODGAMMAのデフォルト値は1です。

使用上の注意

収束の判定

収束判定では、MODTOLERANCEオプションによって、連続する反復間で一致する方程式の結果の近似の程度が決まります。MODTOLERANCEのデフォルト値である3では、比較値が0.001より小さい場合に、方程式が収束したとみなされます。

発散の判定

発散判定では、MODOVERFLOWオプションによって、連続する反復間で一致する方程式の結果の離散の程度が決まります。MODOVERFLOWのデフォルト値である3では、比較値が1000より大きい場合に、方程式が発散したとみなされます。

比較値

Oracle OLAPによる収束および発散の判定で評価される比較値は、基本的に比例値です。反復間の変化を、前回の結果の比率として表します。収束判定では、反復間の変化は前回の結果に比例して小さい必要があります。発散判定では、反復間の変化は前回の結果に比例して大きい必要があります。変化の絶対量ではなく比例値を判定することによって、Oracle OLAPでは、方程式の結果の大きさに関係なく、同一の判定基準をすべての方程式に適用できます。

ただし、判定される比較値は、厳密には比率ではありません。方程式の結果がゼロに近い場合、厳密な比率での比較値の分母はかぎりなくゼロに近くなり、そのため、全体として比較値自体が大きくなります。したがって、収束判定を満たすのは難しくなりますが、発散判定は満たしやすくなります。この問題を解決するために、Oracle OLAPでは、MODGAMMAの値を比較値の分母に加算します。MODGAMMAにデフォルト値の1が使用されている場合、MODGAMMAの影響は次のようになります。

  • 方程式の結果がゼロに近い場合は、分母は1に近くなり、実際には、反復間の絶対変化を判定することになります。

  • 方程式の結果が非常に大きい場合は、MODGAMMAを分母に加えることによる影響は無視できる程度であり、厳密な比率の判定に近くなります。

判定の感度の制御

方程式の値がゼロに近い場合は、MODGAMMAの値を変更することで、収束と発散の判定の感度を制御できます。方程式の結果の値が非常に小さい場合、MODGAMMAの値を変更して、実質的にモデル値の反復間の変化を小さくします。たとえば、MODGAMMAを1から2に変更すると、比較値は実質的に半分まで落ちます。結果として、発散が起こる可能性が減少します。

モデル方程式の収束速度を上げる方法

ほとんどの場合、MODGAMMAのデフォルト値は適切な値です。MODGAMMAの値を増やすと、モデル方程式はより速く収束しますが、結果の精度は低下します。方程式の値が小さいほど、MODGAMMAを増やす場合の影響はより顕著になり、つまり、小さなモデル値では収束は比較的より迅速に達成されるようになりますが、一方で精度の低下がより大きくなります。

また、MODTOLERANCEの値を減らして、収束の判定を緩めることで、モデルの連立ブロックの収束を速めることもできます。ただし、これを行うと、小さい値の方程式の結果のみでなく、すべての結果の精度を犠牲にすることになります。

したがって、モデルに大きな値の方程式と非常に小さい値の方程式が混在している場合は、MODTOLERANCEを減らすよりも、MODGAMMAを増やすほうが有効な場合があります。MODGAMMAを増やすことで、大きい値の方程式の精度を維持したまま小さい値の方程式をより迅速に収束させることができます。

例5-53 MODGAMMAのデフォルト値の使用

次の文では、 income.budというモデルのトレースを指定し、連立ブロックの解法としてGauss-Seidel法の使用を指定して、ディメンションを制限し、モデルを実行します。

MODTRACE = YES
MODSIMULTYPE = 'GAUSS'
LIMIT division TO 'Camping'
income.bud budget

これらの文によって生成される出力は次のとおりです。

(MOD= INCOME.BUD) BLOCK 1: SIMULTANEOUS 
   ...
(MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 16) = 0.026243533
     ...
(MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 17) = 0.024054312
   ...
(MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 18) = 0.025788293
   ...
(MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 19) = 0.024390642
    ...
(MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 20) = 0.025501664
    ...
(MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 21) = 0.024608562

トレースで、連立方程式のブロックの最後の6回の反復でNET.INCOME明細項目に対し計算された結果を確認できます。

MODTOLERANCEの値は、デフォルト値の3です。したがって、方程式を収束したと判定するには、その比較値が.001より小さい必要があります。

MODGAMMAは、デフォルト値の1に設定されています。NET.INCOME明細項目の方程式は、21回目の反復で収束したと判定されています。21回目の反復におけるNet.Incomeの比較値は、次のように計算されました。

(0.024608562967 - 0.025501664970 = 0.00087) / (0.025501664970 + 1)

例5-54 モデルの収束速度を上げるためのMODGAMMAの設定

次の文で、MODGAMMAの設定を変更し、income.budモデルを実行します。

MODGAMMA = 2
income.bud budget

MODGAMMAが2に設定されているため、Net.Incomeの方程式は18回目の反復で収束します。18回目の反復におけるNet.Incomeの比較値は、次のように計算されます。

(0.025788293304 - 0.024054312748 = 0.00086) / (0.024054312748 + 2)

MODINPUTORDER

MODINPUTORDERオプションは、モデルの連立ブロック内の方程式を、指定した順序で実行するか、またはモデル・コンパイラで決定される順序で実行するかを制御します。MODINPUTORDERは、単純ブロックおよびステップ・ブロック内の方程式の順序には影響しません。

注意:

連立ブロックの解決を制御するオプションの説明は、モデル・オプションを参照してください

データ型

BOOLEAN

構文

MODINPUTORDER = {YES|NO}

パラメータ

YES

モデルの連立ブロック内の方程式は、モデルに指定された順序で実行されます。

NO

(デフォルト)連立ブロック内の方程式は、モデル・コンパイラで決定される順序で実行されます。

例5-55 デフォルトの順序の使用

次の文は、income.calcモデルを定義する文です。

DEFINE income.calc MODEL
MODEL
DIMENSION line month
Net.Income = Opr.Income - Taxes
Opr.Income = Gross.Margin - TOTAL(Marketing + Selling + R.D)
Marketing = LAG(Opr.Income, 1, month)
Gross.Margin = Revenue - Cogs
END

次の文で、モデルをコンパイルし、MODEL.COMPRPTプログラムを使用してコンパイル・レポートを生成します。

COMPILE income.calc
MODEL.COMPRPT income.calc

これらの文によって生成される出力は次のとおりです。

MODEL INCOME.CALC <LINE MONTH>
             BLOCK 1 (SIMPLE)
INCOME.CALC 5: gross.margin = revenue - cogs
              BLOCK 2 (SIMULTANEOUS <MONTH>)
INCOME.CALC 4: marketing = lag(opr.income, 1, month)
INCOME.CALC 3: opr.income = gross.margin - total(marketing + selling + r.d)
              END BLOCK 2
INCOME.CALC 2: net.income = opr.income - taxes
             END BLOCK 1

MODINPUTORDERをデフォルト値のNOに設定してincome.calcをコンパイルすると、コンパイラによって連立ブロック内の方程式の順序が置き換えられているのが確認できます。

例5-56 MODINPUT値の変更

次の文では、MODINPUTORDERの値をYESに設定してモデルをコンパイルし、コンパイル・レポートを生成します。

MODINPUTORDER = YES
COMPILE income.calc
MODEL.COMPRPT income.calc

これらの文によって生成される出力は次のとおりです。

MODEL INCOME.CALC <LINE MONTH>
                BLOCK 1 (SIMPLE)
INCOME.CALC 5: gross.margin = revenue - cogs
                 BLOCK 2 (SIMULTANEOUS <MONTH>)
INCOME.CALC 3:  opr.income = gross.margin - total(marketing + selling + r.d)
INCOME.CALC 4:  marketing = lag(opr.income, 1, month)
                 END BLOCK 2
INCOME.CALC 2: net.income = opr.income - taxes
                END BLOCK 1

連立方程式の順序が指定した順序のまま、コンパイラによって変更されていないことが確認できます。

MODMAXITERS

MODMAXITERSオプションは、モデルの連立方程式のブロックを解決するために実行される反復の最大回数を決定するオプションです。

注意:

連立ブロックの解決を制御するオプションの説明は、モデル・オプションを参照してください。

データ型

INTEGER

構文

MODMAXITERS = {n|50}

パラメータ

n

連立ブロックを解決するために実行される反復の最大回数を示す正のINTEGER値。デフォルトは50です。

使用上の注意

モデルの実行結果のレポート

連立ブロックのいずれかの方程式が、MODMAXITERSで指定した反復回数内に発散するかまたは収束に失敗すると、ブロックの解決は失敗し、エラーが発生します。MODEL.XEQRPTプログラムを使用して、モデルの実行結果に関するレポートを生成できます。レポートには、連立ブロックが発散したのか、収束に失敗したのかが示されます。ブロックが収束に失敗した場合は、MODMAXITERSの値を増やして試行すると、収束に至るかどうかを確認できます。

例5-57 MODMAXITERSとモデル

MYMODELというモデルに、50回の反復で収束できなかった連立方程式のブロックが含まれているとします。次の文で、MODMAXITERSの値を増やし、モデルを再実行します。

MODMAXITERS = 100
myModel actual 

MODOVERFLOW

MODOVERFLOWオプションは、モデルの連立ブロックにある方程式が発散したかどうかを判定する際に使用するオプションです。MODOVERFLOWは、方程式が発散したとみなす基準になる、連続する反復における方程式の結果の離散の程度を決定します。

注意:

連立ブロックの解決を制御するオプションのリストは、モデル・オプションを参照してください。

データ型

INTEGER

構文

MODOVERFLOW = {n|3}

パラメータ

n

発散の判定に使用するINTEGER値。Oracle OLAPでは、連立ブロック内の各方程式を計算する際、現行の反復と前回の反復における方程式の結果に基づく比較値を作成します。比較値が発散として判定されると、方程式は発散したとみなされます。

比較値は、次のように判定されます。

(thisResult - prevResult) / (prevResult + MODGAMMA)

ここで、thisResultは現行の反復の結果で、prevResultは前回の反復の結果です。

前述の計算において、MODGAMMAは、比較値が反復間の変化の絶対量と比例的変化との比較の程度を制御するINTEGERオプションです。MODGAMMAのデフォルト値は1です。

発散判定では、比較値が、10のMODOVERFLOW乗より大きいかどうかがOracle OLAPによって判定されます。この判定の計算は次のとおりです。

Comparison value  >  10**MODOVERFLOW

方程式が発散したとみなされるには、比較値が前述の判定を満たす必要があります。MODOVERFLOWのデフォルト値は3です。このデフォルト値では、比較値が1000より大きい場合に、比較値が判定を満たします。

使用上の注意

方程式の発散

方程式が発散すると、エラーが発生します。エラーが発生したときにOracle OLAPが実行するアクションは、MODERRORオプションで制御します。

開発時における迅速な発散

モデルの開発中、MODOVERFLOWに小さい値を使用することで時間を節約できます。特定の連立ブロックで多数の反復を実行する場合、MODOVERFLOWに、より小さな値を指定することで、そのブロックを迅速に発散させることができます。MODOVERFLOWオプションをCONTINUEに設定すると、発散が発生してもモデルの実行は継続され、モデルの他のブロックのデバッグに専念できます。モデルのデバッグ後、MODOVERFLOWに、より大きな値を使用します。

例5-58 MODOVERFLOWのデフォルト値の使用

次の文で、income.estというモデルのトレースを指定し、ディメンションを制限してモデルを実行します。

MODTRACE = YES
LIMIT division TO 'Camping'
income.est budget

これらの文によって生成される出力は次のとおりです。

(MOD= INCOME.EST) BLOCK 1: SIMULTANEOUS 
(MOD= INCOME.EST) ITERATION 1: EVALUATION
(MOD= INCOME.EST) selling = marketing * 3
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 1) = 3
  ...
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 2) = -997
   ...
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 3) = 6.00902708124
   ...
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 49) = 34.2715693388
   ...
(MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 50) = -7.22300601861

トレースで、連立方程式のブロックの最初の3回の反復および49回目と50回目の反復でSelling明細項目に対し計算された結果を確認できます。50回の反復後、ブロックは収束に失敗しています。

MODOVERFLOWの値は、デフォルト値の3です。したがって、方程式が発散したと判定するには、その比較値が 1000より大きい必要があります。

例5-59 発散の加速

次の文で、MODOVERFLOWの設定を変更し、income.estモデルを実行します。

MODOVERFLOW = 2
income.est budget

MODOVERFLOWが2に設定されているため、比較値が100より大きい場合、発散の判定を満たします。この例では、Sellingの方程式は2回目の反復で判定を満たします。2回目の反復で、Sellingの比較値は次のように計算されます。

(-997 - 3) / (3 + 1) = 250

この比較値は100より大きいため、Sellingの方程式は2回目の反復で発散します。

MODSIMULTYPE

MODSIMULTYPEオプションは、モデルの連立ブロックを解決するために使用する解法を指定するオプションです。

注意:

連立ブロックの解決を制御するオプションのリストは、モデル・オプションを参照してください。

データ型

ID

構文

MODSIMULTYPE = {'AITKENS'|'GAUSS'}

パラメータ

'AITKENS'

(デフォルト)Aitkensデルタ2乗法を使用します。連立方程式のブロックで、3回の反復のうち最初の2回の反復では、方程式は前回の反復の値を使用して解決され、結果の収束および発散が判定されます。3回目の反復ごとに、方程式の解決によってではなく、次の推測(next-guess)の計算を行うことで、結果が取得されます。この計算には、先行する3つの反復の結果を使用します。推測の結果では、収束および発散の判定は行われず、常に次の反復へ解決が続行されます。

'GAUSS'

Gauss-Seidel解法を使用します。連立ブロックの方程式は、ブロックの各反復で解決されます。各反復において、結果の収束および発散判定が行われます。

使用上の注意

連立ブロックの解決

Oracle OLAPでは、連立ブロックの方程式の解決に反復法を使用します。Aitkens解法での次の推測(next-guess)反復を除き、各反復において、現行の反復の結果と前回の反復の結果から比較値が計算されます。比較値が指定した許容範囲内の場合(MODTOLERANCEオプションを参照)、方程式は収束したとみなされます。比較値が大きすぎる場合(MODOVERFLOWオプションを参照)、方程式は発散したとみなされ、ブロックの解決は終了します。

ブロックのすべての方程式が収束すると、そのブロックは解決したとみなされます。いずれかの方程式が発散するか、指定した反復回数内での収束に失敗すると(MODMAXITERSオプションを参照)、ブロック(およびモデル)の解決は失敗し、Oracle OLAPによってエラー・メッセージが表示されます。

次の推測(next-guess)計算

Aitkens法では、次の推測(next-guess)計算を実行するために3つの値が必要です。したがって、連立ブロックにおける最初の3回の反復で、Oracle OLAPによって方程式が解決されます。4番目の反復は、最初の3回の反復の計算の結果を使用する次の推測(next-guess)反復です。

以後、毎回3番目に当たる反復が、前回の推測と中間にはさまる2回の反復の方程式の結果を使用して結果を計算する、次の推測(next-guess)反復となります。たとえば、7番目の反復は、4番目の反復からの推測と5番目および6番目の反復の方程式の結果に基づいた、次の推測(next-guess)計算です。

必要なメモリー容量

通常、Aitkens法は収束が迅速であり、一般にGauss-Seidel法よりも正確な結果を算出します。ただし、先行する3回分の反復の結果を格納するため、Aitkens法のほうが多くのメモリーを必要とします。

通常は、Aitkens法を使用します。Gauss-Seidel法は、システムのメモリー不足が問題となる場合にのみ使用することをお薦めします。

モデルの連立ブロックを解決する際のNA値の処理

方程式の結果を計算し、次の推測(next-guess)計算を行う際、Oracle OLAPではNASKIP2オプションの設定を参照します。NASKIP2は、+(加算)および-(減算)演算が実行される際のNA値の処理方法を制御します。NA値を含むソリューション変数を指定している場合、NASKIP2の設定が重要になります。ソリューション変数の値は、連立ブロックにおける最初の反復で初期値として使用されるため、ソリューション変数にNA値があると、方程式の結果がNAになる場合があります。最初の反復での結果がNAの場合、その後の反復でも結果がNAになる可能性があります。そのため、結果がNAになるのを回避するには、ソリューション変数にNA値が含まれていないことを確認するか、NASKIP2をYESに設定してからモデルを実行します。

データ型の問題

INTEGERデータ型の変数にデータを代入した場合、またはディメンションベースのモデルにINTEGERデータ型のソリューション変数を指定した場合に、連立方程式の収束に失敗することがあります。Oracle OLAPでは方程式を計算するたびにデータを10進値に変換しますが、反復と反復の間にその結果をINTEGER変数に格納するために値が四捨五入されることによって、収束が失敗します。

ファンクションの問題

連立方程式に、端数処理された値を生成するファンクション(INSTRB、ROUNDなど)またはデータが不連続になるファンクション(MAX、MINなど)が含まれている場合、連立方程式の収束に失敗することがあります。

開始値の問題

連立ブロックの解決は、開始値に影響されます。たとえば、モデルの2つのモデル値間に比例関係がある場合、開始値がゼロに近いと、収束が阻止されます。したがって、解決する方程式に対して妥当な開始値を使用する必要があります。

方程式の順序

連立ブロックの解決は、方程式の順序にも影響されます。モデルをコンパイルする際、モデル・コンパイラによって、方程式の依存関係に基づいた最適な方程式の順序が決定されます。

連立ブロック内の方程式を特定の順序で解決するには、必要な順序で方程式を記述し、モデルをコンパイルする前にMODINPUTORDERオプションをYESに設定します。MODINPUTORDERをYESに設定すると、モデル・コンパイラは、連立ブロック内の方程式をモデルに出現する順序で維持します。

連立方程式を特定の順序で配置し、モデルのコンパイル前にMODINPUTORDERをYESに設定すると、一部のモデルで収束を促進できる場合があります。ただし、通常は、モデル・コンパイラによって方程式の順序を決定することをお薦めします。

実行レポートの生成

モデルを実行した後、MODEL.XEQRPTプログラムを使用すると、モデルの実行に関するレポートを生成できます。

例5-60 メモリー使用量の節約

budget98というモデルが、連立ブロック内で大量のディメンション値に対して反復を行う複雑なモデルであるとします。この場合、Gauss-Seidel法を使用して、モデルの解決に必要なメモリーを節約できます。

次の文で、Gauss-Seidel法を指定して、モデルを実行します。

MODSIMULTYPE = 'GAUSS'
budget98 budget

MODTOLERANCE

MODTOLERANCEオプションは、モデルの連立ブロックにある方程式が収束したかどうかを判定する際に使用するオプションです。MODTOLERANCEは、方程式が収束したとみなす基準になる、連続する反復における方程式の結果の近似の程度を決定します。

データ型

INTEGER

構文

MODTOLERANCE = {n|3}

パラメータ

n

収束の判定に使用するINTEGER値。Oracle OLAPでは、連立ブロック内の各方程式を計算する際、現行の反復と前回の反復における方程式の結果に基づく比較値を作成します。比較値が許容誤差として判定されると、方程式は収束したとみなされます。

比較値は、次のように判定されます。

(thisResult - prevResult) / (prevResult+ MODGAMMA)

ここで、thisResultは現行の反復の結果で、prevResultは前回の反復の結果です。

前述の計算において、MODGAMMAは、比較値が反復間の変化の絶対量と比例的変化との比較の程度を制御するINTEGERオプションです。MODGAMMAのデフォルト値は1です。

許容誤差判定では、比較値が、10の負のMODTOLERANCE乗より小さいかどうかがOracle OLAPによって判定されます。この判定の計算は次のとおりです。

Comparison value  <  10**-MODTOLERANCE

この計算を記述するもう1つの方法は、次のとおりです。

Comparison value  < (1 / (10**MODTOLERANCE))

方程式が収束したとみなされるには、比較値が前述の判定を満たす必要があります。MODTOLERANCEのデフォルト値は3です。このデフォルト値では、比較値が0.001より小さい場合に、比較値が判定を満たします。

使用上の注意

収束の失敗

指定した反復回数内で方程式が収束に失敗すると、エラーが発生します。試行する反復の最大回数は、MODMAXITERSオプションで制御します。エラーが発生したときにOracle OLAPが実行するアクションは、MODERRORオプションで制御します。

結果の精度

MODTOLERANCEは、反復間の方程式の結果が近似する程度を制御するため、結果の解の精度も制御します。MODTOLERANCEの値が小さいと結果の精度は低くなり、値が大きいと精度は高くなります。

大きな値と小さな値

モデルに大きな値の方程式と非常に小さな値の方程式が混在している場合、MODTOLERANCEオプションの値を減らすよりも、MODGAMMAオプションの値を増やすほうが有効な場合があります。MODGAMMAを増やすことで、大きい値の方程式の精度を維持したまま小さい値の方程式をより迅速に収束させることができます。

開発時における迅速な収束

モデルの開発中、MODTOLERANCEに小さな値の使用が必要となることがあります。これによって結果の精度は落ちますが、モデル方程式はより迅速に収束します。モデルのデバッグ後、MODTOLERANCEの値を増やし、最終的に結果の精度を上げます。

連立ブロックの解決を制御するオプション

連立ブロックの解決を制御する際に使用可能なすべてのオプションのリストは、モデル・オプションを参照してください。

例5-61 MODTOLERANCEのデフォルト値の使用

次の文では、 income.planというモデルのトレースを指定し、連立ブロックの解法としてGauss-Seidel法の使用を指定して、ディメンションを制限し、モデルを実行します。

MODTRACE = YES
MODSIMULTYPE = 'GAUSS'
LIMIT division TO 'Camping'
income.plan budget

これらの文によって生成される出力は次のとおりです。

(MOD= INCOME.PLAN) BLOCK 1: SIMULTANEOUS 
(MOD= INCOME.PLAN) ITERATION 1: EVALUATION
(MOD= INCOME.PLAN) marketing = .15 * net.income
(MOD= INCOME.PLAN) BUDGET(LINE MARKETING MONTH 'JAN97' ITER 1) = 11887.403671736
  ...
(MOD= INCOME.PLAN) BUDGET(LINE MARKETING MONTH 'JAN97' ITER 6) = 73379.713232251
    ...
(MOD= INCOME.PLAN) BUDGET(LINE MARKETING MONTH 'JAN97' ITER 7) = 73474.784648631
    ...
(MOD= INCOME.PLAN) BUDGET(LINE MARKETING MONTH 'JAN97' ITER 8) = 73446.025848156
(MOD= INCOME.PLAN) END BLOCK 1

トレースで、連立方程式のブロックの最後の3回の反復でMarketing明細項目に対し計算された結果を確認できます。

MODTOLERANCEは、デフォルト値の3に設定されています。したがって、方程式を収束したと判定するには、その比較値が0.001より小さい必要があります。7回目の反復で、Marketingの比較値は次のように計算されます。

(73474.784648631100 - 73379.713232251300) / (73379.713232251300 + 1) = 0.0013

この比較値は0.001より大きいため、収束したと判定されません。

8回目の反復で、比較値は次のように計算されます。

(73446.025848156700 - 73474.784648631100) /(73474.784648631100 + 1) = 0.0004

この比較値は0.001より小さいため、収束したと判定されます。

例5-62 モデルの収束速度を上げるためのMODTOLERANCEの設定

次の文で、MODTOLERANCEの値を変更し、income.budモデルを実行します。

MODTOLERANCE = 2
income.plan budget

MODTOLERANCEが2に設定されているため、比較値が0.01より小さい場合、収束したと判定されます。この例では、Marketingの方程式は7回目の反復で収束したと判定されます。

MODTRACE

MODTRACEオプションは、モデルの実行中に、モデルの各方程式をファイルに記録するかどうかを制御するオプションです。MODTRACEは、モデルの実行をトレースすることによって問題を検出するためのデバッグ・ツールとして主に使用されます。

ヒント:

INFOファンクションを使用して、コンパイルしたモデルの構成と実行したモデルの解決ステータスに関する情報の特定の項目を取得できます。INFO (MODEL)を参照してください。

データ型

BOOLEAN

構文

MODTRACE = {YES|NO}

パラメータ

YES

各方程式の計算前にそれぞれのモデル方程式のテキストが現行の出力ファイルに送信され、その後、計算の結果が現行の出力ファイルに送信されます。

DBGOUTFILE文を使用してデバッグ・ファイルを指定した場合、MODTRACEの出力は、現行の出力ファイルではなくデバッグ・ファイルに送信されます。

NO

(デフォルト)モデルの実行中、モデル方程式のテキストと結果はファイルに送信されません。

使用上の注意

解決順序のプレビュー

MODTRACEでは、モデルの方程式は解決される順序で現行の出力ファイルに送信されます。モデルの実行前に、MODEL.COMPRPTプログラムを使用して、解決順序のプレビューを取得できます。モデルが大きく複雑な場合、プレビューは特に有用です。モデルのコンパイル後に実行できるMODEL.COMPRPTプログラムで、コンパイラがブロックにモデル方程式をどのように編成したか、およびブロックと方程式が解決される順序を示すレポートを生成できます。

トレース情報の理解

MODTRACEでは、トレースの各行に現行のモデルの名前が表示されます。トレースには次の種類の行が含まれます。

  • ブロック。ブロック行には、実行するプロックのブロック番号とブロック・タイプが表示されます。ブロックのタイプには、単純、ステップフォワード、ステップバックワードおよび連立があります。ステップフォワードまたはステップバックワードのブロックでは、ブロック行に、処理されるディメンションが表示されます。ディメンション間の依存がある連立ブロックのブロック行には、依存関係にあるディメンションが表示されます。モデルのブロックの詳細は、MODELコマンドを参照してください。

  • 反復。これらの行は連立ブロックの場合に出力され、現行のブロックで実行される反復の回数が指定されます。Aitkens解法を使用する場合は、次の予測反復が識別されます。(使用する解法は、MODSIMULTYPEオプションで決定します。)

  • 方程式。計算される方程式です。

  • 結果。結果行は各方程式行の後にあり、方程式によって代入される結果が表示されます。結果が代入された変数および各モデル・ディメンションの現行の値が表示されます。連立ブロックでは、現行の反復の回数も表示されます。たとえば、actualがソリューション変数で、モデル・ディメンションがlineおよびmonthの場合、連立ブロックの結果行は次のようなものになります。

    (MOD= INCOME.CALC) ACTUAL (LINE OPR.INCOME MONTH 'JAN96'
       ITER 1) = 108.9600000

ディメンションベースの方程式を指定したMODTRACEの使用

ディメンションベースの方程式を含むモデルを実行すると、ソリューション変数のすべてのディメンションがOracle OLAPによって自動的にループ処理されます。トレースでは、結果行にDIMENSION文にリストされている各ディメンションの現行値が表示されますが、DIMENSION文にリストされていない追加のディメンションの現行値は表示されません。DIMENSION文の使用の詳細は、DIMENSION(モデル内)を参照してください。

つまり、モデル・ディメンションがlineおよびmonthで、ソリューション変数がlinemonthおよびdivisionによってディメンション化されている場合、divisionの現行値は結果行には表示されません。divisionのステータスにある最初の値に対しモデルが実行され、その後、ステータスにある2番目の値に対しモデルが実行されます(以降同様)。

変数に値を代入するモデルを実行すると、それらの変数のディメンション(またはコンポジットのベース)すべてが自動的にループ処理されます。この場合、変数の各ディメンションの現行の値がトレースに表示されます。

例5-63 MODTRACEを使用したモデルのデバッグ

次の文で、income.budgetという名前のモデルを定義します。

DEFINE income.budget MODEL
LD Model for estimating budget items
MODEL
DIMENSION line month
Opr.Income = Gross.Margin - Marketing
Gross.Margin = Revenue - Cogs
Revenue = LAG(Revenue, 1, month) * 1.02
Cogs = LAG(Cogs, 1, month) * 1.01
Marketing = LAG(Opr.Income, 1, month) * 0.20
END

このモデルは、損益計算書の予算明細項目についての予測を行います。モデル方程式は、lineディメンションを基礎としています。次の文で、モデルをコンパイルし、MODEL.COMPRPTプログラムを実行します。

COMPILE income.budget
MODEL.COMPRPT income.budget

MODEL.COMPRPT文によって生成されるコンパイル・レポートは次のとおりです。

MODEL INCOME.BUDGET <LINE MONTH>
                   BLOCK 1 (SIMPLE)
INCOME.BUDGET  4:  revenue = lag(revenue, 1, month) * 1.02
INCOME.BUDGET  5:  cogs = lag(cogs, 1, month) * 1.01
INCOME.BUDGET  3:  gross.margin = revenue - cogs
                    BLOCK 2 (STEP-FORWARD <MONTH>)
INCOME.BUDGET  6:   marketing = lag(opr.income, 1, month) * 0.20
INCOME.BUDGET  2:   opr.income = gross.margin - marketing
                    END BLOCK 2
                   END BLOCK 1

このモデルをデバッグする場合、モデルを実行する前にMODTRACEをオンにすることで、実行状況を行ごとにトレースできます。

次の文で、ディメンションを制限し、トレースを指定して、モデルを実行します。

LIMIT month TO 'Jan97' TO 'Mar97'
LIMIT division TO 'Camping'
MODTRACE = YES
income.budget budget

これらの文によって、次のような行ごとの結果が生成されます。

(MOD= INCOME.BUDGET) BLOCK 1: SIMPLE 
(MOD= INCOME.BUDGET) revenue = lag(revenue, 1, month) * 1.02
(MOD= INCOME.BUDGET) BUDGET (LINE REVENUE MONTH 'JAN97') = 744491.1966
(MOD= INCOME.BUDGET) BUDGET (LINE REVENUE MONTH 'FEB97') = 759381.020532
(MOD= INCOME.BUDGET) BUDGET (LINE REVENUE MONTH 'MAR97') = 774568.64094264
(MOD= INCOME.BUDGET) cogs = lag(cogs, 1, month) * 1.01
(MOD= INCOME.BUDGET) BUDGET (LINE COGS MONTH 'JAN97') = 382386.2323
(MOD= INCOME.BUDGET) BUDGET (LINE COGS MONTH 'FEB97') = 386210.094623
(MOD= INCOME.BUDGET) BUDGET (LINE COGS MONTH 'MAR97') = 390072.19556923
(MOD= INCOME.BUDGET) gross.margin = revenue - cogs
(MOD= INCOME.BUDGET) BUDGET (LINE GROSS.MARGIN MONTH 'JAN97') = 362104.9643
(MOD= INCOME.BUDGET) BUDGET (LINE GROSS.MARGIN MONTH 'FEB97') = 373170.925909
(MOD= INCOME.BUDGET) BUDGET (LINE GROSS.MARGIN MONTH 'MAR97') = 384496.44537341
(MOD= INCOME.BUDGET) BLOCK 2 STEP-FORWARD <MONTH>
(MOD= INCOME.BUDGET) marketing = lag(opr.income, 1, month) * 0.20
(MOD= INCOME.BUDGET) BUDGET (LINE MARKETING MONTH 'JAN97') = 39938.192
(MOD= INCOME.BUDGET) opr.income = gross.margin - marketing
(MOD= INCOME.BUDGET) BUDGET (LINE OPR.INCOME MONTH 'JAN97') = 322166.7723
(MOD= INCOME.BUDGET) marketing = lag(opr.income, 1, month) * 0.20
(MOD= INCOME.BUDGET) BUDGET (LINE MARKETING MONTH 'FEB97') = 64433.35446
(MOD= INCOME.BUDGET) opr.income = gross.margin - marketing
(MOD= INCOME.BUDGET) BUDGET (LINE OPR.INCOME MONTH 'FEB97') = 308737.571449 
(MOD= INCOME.BUDGET) marketing = lag(opr.income, 1, month) * 0.20
(MOD= INCOME.BUDGET) BUDGET (LINE MARKETING MONTH 'MAR97') = 61747.5142898
(MOD= INCOME.BUDGET) opr.income = gross.margin - marketing
(MOD= INCOME.BUDGET) BUDGET (LINE OPR.INCOME MONTH 'MAR97') = 322748.93108361
(MOD= INCOME.BUDGET) END BLOCK 2
(MOD= INCOME.BUDGET) END BLOCK 1

単純ブロックであるBlock 1では、方程式は一度に1つずつ解決され、各方程式が解決されるごとにmonthのステータスにある3つの値がループ処理されます。monthディメンションにおけるステップフォワード・ブロックであるBlock 2では、monthのステータスにある値全体が段階的に処理され、各月についてのブロックにあるすべての方程式が順番に解決されます。

MONTHABBRLEN

MONTHABBRLENオプションは、MONTHNAMESオプションに格納されている月の名前の略称に使用する文字の数を指定します。DATEFORMATオプションで<MT> <MTXT>および<MTXTL>の書式を指定するか、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンション用にVNF(値名書式)を指定すると、特定の月の名前の略称に使用する文字数を指定できます。

データ型

TEXT

構文

MONTHABBRLEN = specification [;|, specification]... 

ここで、specificationは次の形式のテキスト式です。

     startpos [ - endpos] : length

パラメータ

startpos [-endpos]

月の略称の長さがlengthによって定義される、最初と最後の月を表す数。この数値の位置は、MONTHNAMESオプションのテキストの対応する行に該当します。この一連の値は、必要に応じて逆の順序(endpos [-startpos])に指定できます。

MONTHNAMESオプションには12行を超える行を指定できるので、MONTHABBRLENの設定でstartposおよびendposの数に12より大きい値を指定できます。MONTHNAMESオプションのテキスト値に対応する範囲の値をstartposおよびendposに指定しなかった場合、MONTHABBRLENにはその範囲に対する略称のテキスト値はありません。startposが有効になるように月の名前リストを後で変更した場合、指定した略称が適用されます。

length

月の名前の略称について文字の長さを指定する数(バイト数ではない)。MONTHNAMESオプションの特定の位置に対して略称の長さを指定しなかった場合、または特定の位置を明示的にゼロに設定した場合、デフォルトの略称が使用されます。デフォルトの略称は、<MT>の場合は1文字、<MTXT>および<MTXTL>の場合は3文字です。フルネーム指定である<MTEXT>および<MTEXTL>を指定した場合、略称は使用されません。

使用上の注意

あいまいな月の名前

MONTHABBRLENを使用すると、AAprilAugustのどちらを表すかなどの、あいまいな名前を解釈できます。MONTHABBRLENでAprilは1、Augustは2である場合、Aは常にAprilに一致し、Augustに一致するには少なくともAuまで必要です。この解釈は暦のAprilAugustの順序とは関係がなく、2つの月の順序が逆であった場合でも、このコマンドは同じように動作します。一方、どちらのMONTHABBRLENも2であった場合、Aはどちらにも一致せず、一致させるには少なくともApまたはAuを入力する必要があります。

例5-64 月の略称の指定

次のMONTHABBRLEN設定では、年頭から10か月までの月を1文字の略称で表し、最後の2か月を2文字の略称で表すことを指定します。

MONTHABBRLEN = '1-10:1, 11-12:2'
SHOW CONVERT ('2 August 2005' DATE)

この文によって、Augustの略称が文字Aである次の結果が生成されます。

02A05

MONTHNAMES

MONTHNAMESオプションは、日付のみのデータ型の値、およびDAY、WEEK、MONTH、QUARTER、YEAR型のディメンションの値を処理するときに使用される有効な月の名前のリストを保持します。名前のリストは、入力された日付を解釈する場合、および表示する日付またはテキスト値に変換する日付を書式化する場合に使用されます。

月の名前またはその略称が含まれる日付を入力する場合に、MONTHNAMESのリストが使用されます。日付のみの値を入力する方法の説明は、DATEFORMATオプションを参照してください。MONTHNAMESのリストは、<MT><MTXT><MTXTL><MTEXT><MTEXTL>のいずれかの書式を使用して日付を表示または変換するときにも使用されます。これらの書式は、DATEFORMATオプションで指定します。月名のセットが複数ある場合、Oracle OLAPでは、文字数および大文字の使用パターンがDATEFORMATの指定と最も近いシノニムを選択します。

関連項目:

MONTHABBRLENオプション

データ型

TEXT

構文

MONTHNAMES = name-list

パラメータ

name-list

12か月の名前をリスト表示する複数行のテキスト式。各月の名前はそれぞれ別の行です。年度の最初の月がどの月であるかにかかわらず、このリストは1月から始める必要があります。デフォルト値は、英語ですべての文字が大文字の月名のリストです。

リストには、12の名前を1セットとして複数のセットを含めることができます。リストにある名前は、入力で有効な名前とみなされます。13番目の名前は最初の名前のシノニム、14番目の名前は2番目の名前のシノニムです(以降同様)。

例5-65 2セットの月名の指定

次の文は、英語の大文字表記とフランス語の小文字表記の2セットの月名を作成します。

MONTHNAMES = -
'JANUARY -
...
DECEMBER -
janvier -
...
decembre'

例5-66 英語の月名の指定

次の文は、日付のみの変数を定義してその変数に値を割り当て、DATEFORMATに設定を割り当てて、現行の出力ファイルに出力を送信します。DATEFORMAT値には大文字を指定する<MTEXT>が含まれ、英語の月名が使用されます。

DEFINE datevar DATE
datevar = '27feb98'
DATEFORMAT = '<MTEXT> <D>, <YYYY>'
SHOW datevar

これらの文によって生成される出力は次のとおりです。

FEBRUARY 27, 1998

例5-67 フランス語の月名の指定

次の文は、DATEFORMATに新しい設定を割り当て、現行の出力ファイルに出力を送信します。DATEFORMAT値には小文字を指定する<MTEXTL>が含まれ、フランス語の月名が使用されます。

DATEFORMAT = 'le <D> <MTEXTL> <YYYY>'
SHOW datevar

これらの文によって生成される出力は次のとおりです。

le 27 fevrier 1998

MULTIPATHHIER

MULTIPATHHIERオプションは、詳細データが含まれる特定のセルに、集計データが含まれるセルへの複数のパスを設定できることを指定するオプションです。計算によって、このような複数パスの集計が必要です。

データ型

BOOLEAN

構文

MULTIPATHHIER = {YES|NO}

パラメータ

YES

詳細データ・セルで、同じ祖先セルへの複数パスによる集計ができます。

NO

(デフォルト)詳細データ・セルで、同じ祖先セルへの複数パスによる集計ができません。

使用上の注意

MULTIPATHHIERを使用する場合

MULTIPATHHIERオプションは、複数パスを必要とする計算の場合にのみYESに設定します。

XSHIERCK01エラー・メッセージの解釈

AGGREGATEコマンドを使用すると、ディメンション階層に循環性がないかどうかが自動的に確認されます。MULTIPATHHIERをNOに設定した場合、またはデフォルトのNOを変更していない場合、詳細データ・セルが同一の集計データ・セルへの複数パスを使用すると、次のエラー・メッセージが表示されます。

ERROR: (XSHIERCK01) One or more loops have been detected 
in your hierarchy n over N. The loops include 2 items 
(UNDIRECTED: X and Y).

このエラー・メッセージのXは詳細データ・セルの名前であり、Yは詳細データ・セルが集計で複数パスを使用する祖先セルの名前です。詳細は、例5-68を参照してください。

詳細データ・セルによって使用される複数パスが循環階層とみなされるために、このエラー・メッセージが表示されます。循環階層がなく、複数パスを作成する意図がない場合は、階層を変更します。複数パスを作成する場合は、MULTIPATHHIERオプションをYESに設定します。

例5-68 階層内の複数パスの定義

この例は、階層に複数パスを定義する方法、データ集計時に表示されるエラー・メッセージ、そのメッセージの解釈、および問題の解決方法を示します。

次の文は、詳細データ・セルから集計データが含まれる祖先セルまでの2つのパスを作成します。

DEFINE geog TEXT DIMENSION
DEFINE path INTEGER DIMENSION
DEFINE geog.geog RELATION geog <geog path>
MAINTAIN geog ADD 'A1' 'b1' 'b2' 'Top'
MAINTAIN path ADD 2
geog.geog(geog 'A1' path 1) = 'B1'
geog.geog(geog 'A1' path 2) = 'B2'
geog.geog(geog 'B1' path 1) = 'Top'
geog.geog(geog 'B2' path 1) = 'Top'

最初に、geogという名前の地理ディメンションと、pathという2番目のディメンションが定義されます。

地理ディメンションがそれ自身とpathディメンションによってディメンション化される、geog.geogという名前のリレーションが定義されます。

A1B1B2およびTopという名前のディメンション値がgeogディメンションに追加されます。

2つのディメンション値がpathディメンションに追加されます。pathINTEGERデータ型で定義されたので、これに自動的に割り当てられるディメンション値はINTEGER値の1および2です。

最後に、geogディメンションの階層が作成されます。A1ディメンション値は詳細データです。B1およびB2のディメンション値は、階層の2番目のレベルです。TOPディメンション値は階層の最上位です。

A1には2つの集計パスがあります。最初のパスでは、A1B1に集計され、その結果がTopに集計されます。2番目のパスでは、A1B2に集計され、その結果がTopに集計されます。

次の文は、myvarという名前の変数を定義し、データ値1をその詳細データ・レベル(A1)に割り当て、その変数のaggmapを定義します。

DEFINE myvar INTEGER VARIABLE <geog>
myvar(geog 'A1') = 1
DEFINE myvar.aggmap <geog>
AGGMAP 'RELATION geog.geog'

myvarを集計すると、次のエラー・メッセージが表示されます。

AGGREGATE myvar USING myvar.aggmap
ERROR: (XSHIERCK01) One or more loops have been detected 
in your hierarchy GEOG.GEOG over GEOG. The loops include 2 
items (UNDIRECTED: A1 and TOP).

A1に対して作成された集計の複数パスが循環階層とみなされました。現在、MULTIPATHHIERオプションがNOに設定されているためです。

誤ってこのような複数パスを作成してしまった場合、その階層で問題を解決します。

ただし、この場合は複数パスが計算上必要なために作成しています。したがって、これを解決するためには、MULTIPATHHIERをYESに設定します。これにより、エラーが発生することなくAGGREGATEコマンドを実行できます。

NASKIP

NASKIPオプションは、NA値が集計ファンクションの入力とみなされるかどうかを制御します。

関連項目:

$NATRIGGERプロパティ、+(プラス)演算子や-(マイナス)演算子を使用したNA値の処理方法を制御するNASKIP2オプション、およびNASPELLオプション

データ型

BOOLEAN

構文

NASKIP = NO|YES

パラメータ

NO

(デフォルト)NA値は集計ファンクションによって評価されます。評価される値のいずれかがNAである場合、集計ファンクションはその値に対してNAを返します。

YES

NA値は集計ファンクションによって無視されます。実際の値を持つ式のみが計算に使用されます。

使用上の注意

NASKIPによって影響を受ける文

次のOLAP DML文はNASKIPの影響を受けます。

  • AGGREGATEコマンド
  • AGGREGATEファンクション
  • ANY
  • AVERAGE
  • COUNT
  • CUMSUM
  • DEPRDECL
  • DEPRDECLSW
  • DEPRSL
  • DEPRSOYD
  • EVERY
  • FINTSCHED
  • FPMTSCHED
  • IRR
  • LARGEST
  • MEDIAN
  • MOVINGAVERAGE
  • MOVINGMAX
  • MOVINGMIN
  • MOVINGTOTAL
  • NONE
  • NPV
  • SMALLEST
  • STDDEV
  • TCONVERT
  • TOTAL
  • VINTSCHED
  • VPMTSCHED

その他の文はNASKIPの設定による影響を受けないため、NA値は常に無視されます。

例5-69 TOTALファンクションでのNASKIPの効果

demoワークスペースの1997年の販売実績(sales)はNAです。TOTALファンクションは、NASKIPの設定に応じて異なる結果を返します。

次の文により

ALLSTAT
NASKIP = YES
SHOW TOTAL(sales)

によって、次の結果が生成されます。

63,181,743.50

これに対し、OLAP DML文

NASKIP = NO
SHOW TOTAL(sales)

によって、次の結果が生成されます。

NA

例5-70 MOVINGMINファンクションでのNASKIPの効果

この例は、3か月間(当月とその前の2か月)の値を集計します。SALESの最初のレポートでは、1997年の月にNA値が表示されます。NASKIPがYESである場合、この月に関して評価されたすべての値がNAであったため、MOVINGMINファンクションは1997年3月に対してのみNAを返します。NASKIPがNOである場合、MOVINGMINによって評価されたこれらの月のうち少なくとも1つの値がNAであったため、3番目の文(REPORT DOWN month sales)は、1997年の1月から3月までNA値を表示します。

LIMIT district TO 'Seattle'
LIMIT month TO 'Jul96' TO 'Mar97'
REPORT DOWN month sales

この文によって生成されるSALESデータのレポートは、次のとおりです。

DISTRICT: SEATTLE
      ------------------------SALES-------------------------
      -----------------------PRODUCT------------------------
MONTH   Tents      Canoes    Racquets  Sportswear  Footwear
----- ---------- ---------- ---------- ----------  ---------
Jul96 123,700.17 157,274.03  60,198.52  78,305.97  78,019.87
Aug96 120,650.72 128,660.89  45,046.71  66,853.26  83,347.55
Sep96  97,188.43 122,702.13  42,257.14  63,777.36  99,464.05
Oct96  91,578.77  79,925.93  39,729.25  55,021.85  83,537.58
Nov96  56,044.34  77,357.10  39,024.93  44,004.12  65,216.94
Dec96  41,576.26  67,609.36  36,156.10  40,575.34  62,113.72
Jan97         NA         NA         NA         NA         NA
Feb97         NA         NA         NA         NA         NA
Mar97         NA         NA         NA         NA         NA

次の文により

NASKIP = YES
REPORT DOWN month MOVINGMIN(sales -2, 0, 1, month)

によって、次のレポートが生成されます(このレポートでは、1997年3月の値がNA値です)。

DISTRICT: SEATTLE
      -----------MOVINGMIN(SALES -2, 0, 1, MONTH)-----------
      ---------------------PRODUCT--------------------------
MONTH   Tents      Canoes    Racquets  Sportswear  Footwear
----- ---------- ---------- ---------- ----------  ---------
Jul96 108,663.59 125,823.37 57,666.37  57,713.27   73,085.88
Aug96 119,066.18 128,660.89 45,046.71  60,322.88   78,019.87
Sep96  97,188.43 122,702.13 42,257.14  63,777.36   78,019.87
Oct96  91,578.77  79,925.93 39,729.25  55,021.85   83,347.55
Nov96  56,044.34  77,357.10 39,024.93  44,004.12   65,216.94
Dec96  41,576.26  67,609.36 36,156.10  40,575.34   62,113.72
Jan97  41,576.26  67,609.36 36,156.10  40,575.34   62,113.72
Feb97  41,576.26  67,609.36 36,156.10  40,575.34   62,113.72
Mar97         NA         NA         NA         NA         NA

次の文により

NASKIP = NO
REPORT DOWN month MOVINGMIN(sales -2, 0, 1, month)

によって、次のレポートが生成されます(このレポートでは、1997年1月から3月までの値がNA値です)。

DISTRICT: SEATTLE
      ----------MOVINGMIN(SALES -2, 0, 1, MONTH)-------------
      ------------------------PRODUCT------------------------
MONTH   Tents      Canoes    Racquets  Sportswear  Footwear
----- ---------- ---------- ---------- ----------  ----------
Jul96 108,663.59 125,823.37  57,666.37  57,713.27   73,085.88
Aug96 119,066.18 128,660.89  45,046.71  60,322.88   78,019.87
Sep96  97,188.43 122,702.13  42,257.14  63,777.36   78,019.87
Oct96  91,578.77  79,925.93  39,729.25  55,021.85   83,347.55
Nov96  56,044.34  77,357.10  39,024.93  44,004.12   65,216.94
Dec96  41,576.26  67,609.36  36,156.10  40,575.34   62,113.72
Jan97         NA         NA         NA         NA          NA
Feb97         NA         NA         NA         NA          NA
Mar97         NA         NA         NA         NA          NA

NASKIP2

NASKIP2オプションは、+(プラス)演算子および-(マイナス)演算子を使用した算術演算でのNA値の処理方法を制御します。NAのオペランドがある場合、NASKIP2がYESに設定されていないかぎり、結果はNAです。

関連項目:

$NATRIGGERプロパティ、NASKIPオプションおよびNASPELLオプション

データ型

BOOLEAN

構文

NASKIP2 = YES|NO

パラメータ

YES

+(プラス)演算子および-(マイナス)演算子を使用する算術演算のNA値にゼロが代入されます。NA + NAおよびNA - NAの2つの特別な場合の結果は、どちらもNAです。

NO

(デフォルト)NA値は、+(プラス)演算子および-(マイナス)演算子を使用する算術演算でNA値として処理されます。評価されるオペランドのいずれかがNAである場合、算術演算はNAに評価されます。

使用上の注意

ファンクションの引数における演算子

NASKIP2は、NASKIPから独立しています。NASKIP2は、+(プラス)演算子および-(マイナス)演算子を使用する算術演算にのみ適用されます。NASKIPは、集計ファンクションにのみ適用されます。ただし、集計ファンクションに対するexpression引数に+(プラス)演算子や-(マイナス)演算子が含まれる場合、計算結果はNASKIPとNASKIP2の両方に依存します。例5-71を参照してください

NASKIP2の動作

次の4行は、NASKIP2の設定がYESである場合の、NAを含む複雑な式の評価の4段階を示します。

3 * (NA + NA) - 5 * (NA + 3)
   3 * NA     -    5 *  3
     NA       -      15
             -15

例5-71 集計ファンクションの式に負の値が含まれる際のNASKIPとNASKIP2の効果

次の例では、INTEGERディメンションINTDIMによってディメンション化されるINTEGER変数XおよびZに、レポートの2列目と3列目に示す値が格納されています。NASKIPとNASKIP2の設定の組合せ(最初の組合せはデフォルトの設定)ごとに、和X + Zが計算されます。この例は、TOTALファンクションに対するexpression引数に+(プラス)演算子が使用される場合、TOTALファンクションから返される結果がNASKIPとNASKIP2の両方に依存することも示します。

  • NASKIPをYES、NASKIP2をNOに設定

    この例では、NASKIPがYESに設定されるので、TOTALファンクションでNA値が無視されます。NASKIP2がNOに設定されるので、いずれかのオペランドがNAの場合、+(プラス)演算の結果はNAです。

    NASKIP = YES
    NASKIP2 = NO
    COLWIDTH = 5
    REPORT LEFT W 6 DOWN intdim x, z, x + z
    

    これらの文によって生成される出力は次のとおりです。NASKIP2の設定がNOなので、XとZのいずれかがNAの場合、式X + Zの結果はNAです。

    INTDIM   X     Z   x + z
    ------ ----- ----- -----
    1         NA     2    NA
    2          3    NA    NA
    3          7     6    13
    

    次の文は、TOTALファンクションに対するexpression引数に+(プラス)演算子を使用します。

    SHOW TOTAL(x + z)
    

    この文によって生成される出力は、次のとおりです。

    13
    

    次の文は、+(プラス)演算子を使用して、2つのTOTALファンクションから返される結果を加算します。

    SHOW TOTAL(x) + TOTAL(z)
    

    この文によって生成される出力は、次のとおりです。

    18
    
  • NASKIPをYES、NASKIP2をYESに設定

    この例では、NASKIPがYESに設定されるので、TOTALファンクションでNA値が無視されます。NASKIP2がYESに設定されるので、NA値は+(プラス)演算子によって無視されます。

    NASKIP = YES
    NASKIP2 = YES
    REPORT LEFT W 6 DOWN intdim x, z, x + z
    

    これらの文によって生成される出力は次のとおりです。NASKIP2の設定がYESなので、式X + Zが計算される場合、NA値は無視されます。

    INTDIM   X     Z   X + Z
    ------ ----- ----- -----
    1         NA     2     2
    2          3    NA     3
    3          7     6    13
    

    次の文は、TOTALファンクションに対するexpression引数に+(プラス)演算子を使用します。

    SHOW TOTAL(x + z)
    

    この文によって生成される出力は、次のとおりです。

    18
    

    次の文は、+(プラス)演算子を使用して、2つのTOTALファンクションから返される結果を加算します。

    SHOW TOTAL(x) + TOTAL(z)
    

    この文によって生成される出力は、次のとおりです。

    18
    
  • NASKIPをNO、NASKIP2をYESに設定

    この例では、NASKIPがNOに設定されるので、TOTALファンクションで評価された値がNAの場合、TOTALからはNAが返されます。NASKIP2がYESに設定されるので、NA値は+(プラス)演算子によって無視されます。

    NASKIP = NO
    NASKIP2 = YES
    REPORT LEFT W 6 DOWN intdim x, z, x + z
    

    この文によって生成される出力は、次のとおりです。

    INTDIM   X     Z   X + Z
    ------ ----- ----- -----
    1         NA     2     2
    2          3    NA     3
    3          7     6    13
    

    次の文は、TOTALファンクションに対するexpression引数に+(プラス)演算子を使用します。

    SHOW TOTAL(x + z)
    

    この文によって生成される出力は、次のとおりです。

    18
    

    次の文は、+(プラス)演算子を使用して、2つのTOTALファンクションから返される結果を加算します。

    SHOW TOTAL(x) + TOTAL(z)
    

    この文によって生成される出力は、次のとおりです。

    NA
    
  • NASKIPをNO、NASKIPをNOに設定

    この例では、NASKIPが再びNOに設定されるので、TOTALファンクションで評価された値がNAの場合、TOTALからはNAが返されます。NASKIP2もNOに設定されるので、いずれかのオペランドがNAの場合、+(プラス)演算の結果はNAです。

    NASKIP = NO
    NASKIP2 = NO
    REPORT LEFT W 6 DOWN intdim x, z, x + z
    

    この文によって生成される出力は、次のとおりです。

    INTDIM   X     Z   X + Z
    ------ ----- ----- -----
    1         NA     2    NA
    2          3    NA    NA
    3          7     6    13
    

    次の文は、TOTALファンクションに対するexpression引数に+(プラス)演算子を使用します。

    SHOW TOTAL(x + z)
    

    この文によって生成される出力は、次のとおりです。

    NA
    

    次の文は、+(プラス)演算子を使用して、2つのTOTALファンクションから返される結果を加算します。

    SHOW TOTAL(x) + TOTAL(z)
    

    この文によって生成される出力は、次のとおりです。

    NA

NASPELL

NASPELLオプションは、出力のNA値に使用されるスペルを制御します。

データ型

TEXT

構文

NASPELL = {'text'|'NA'}

パラメータ

text

出力のNA値に使用するスペル。テキスト・リテラルではなく式を指定する場合は、一重引用符を省略できます。デフォルトはNAです。

使用上の注意

NASPELLを「0」に設定

NASPELLをテキスト文字の0(ゼロ)に設定すると、NA値は0と表示されます。ただし、計算ではNAとして処理されます。

NA値の割当て

NASPELLは、Oracle OLAP出力にのみ影響し、NA値の割当て方法には影響しません。たとえば、NASPELLをNONEに設定した場合でも、NA値を次のように割り当てます。

var1 = NA

NASPELLより優先順位の高い$NATRIGGER

Oracle OLAPは、NASPELLオプションを適用する前に$NATRIGGERプロパティ式を評価します。$NATRIGGER式がNAである場合、NASPELLオプションは有効です。

例5-72 NA値を「NONE」として表示

現行の月が指定されない場合は常にNA値にされるcurrent.monthという名前の変数があるとします。この場合、値をNAではなくNoneと表示されるようにできます。

NASPELLの設定がデフォルト値のNAである場合に、次のOLAP DML文

SHOW current.month

によって、次の出力が生成されます。

NA

これに対し、OLAP DML文

NASPELL = 'None'
SHOW current.month

によって、次の出力が生成されます。

None

NLS_CALENDAR

NLS_CALENDARオプションは、セッションのカレンダを指定するオプションです。

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_CALENDAR = option-value

パラメータ

有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLSパラメータの設定に関する項を参照してください。

例5-73 暦法の変更

次の文は、NLS_CALENDARをタイ仏暦に設定します。

NLS_CALENDAR = 'THAI BUDDHA' 

NLS_CURRENCY

NLS_CURRENCYオプションは、セッションのL数値書式要素に対応するローカル通貨記号を指定するオプションです。数値書式要素の詳細は、TO_NUMBERファンクションを参照してください。

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_CURRENCY = option-value

パラメータ

有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLSパラメータの設定に関する項を参照してください。

NLS_DATE_FORMAT

NLS_DATE_FORMATオプションは、日時値のデフォルトの書式を指定するオプションです。

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_DATE_FORMAT = option-value

パラメータ

有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLSパラメータの設定に関する項を参照してください。

例5-74を参照してください。

NLS_DATE_LANGUAGE

NLS_DATE_LANGUAGEオプションは、日、月、および言語に依存する同様な日時書式要素の言語を指定するオプションです。

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_DATE_LANGUAGE = option-value

パラメータ

有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLSパラメータの設定に関する項を参照してください。

例5-74 日付の言語の設定

次の文は、日付の言語をスペイン語に設定し、デフォルトの日付書式を変更します。

NLS_DATE_LANGUAGE = 'SPANISH'
NLS_DATE_FORMAT = 'Month DD, YYYY'

これにより、SHOW SYSDATE文を実行するとスペイン語の日付が表示されます。

Septiembre 08, 2000 

NLS_DUAL_CURRENCY

NLS_DUAL_CURRENCYオプションは、数値書式モードの文字Uの位置に入り、主にユーロ記号を指定するときに使用される、2つ目の通貨記号を指定します。(ユーロ記号をNLS_DUAL_CURRENCYの値に指定する場合は、インスタンスのキャラクタ・セットがユーロ記号をサポートしている必要があります。)

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_DUAL_CURRENCY= option-value

パラメータ

有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLSパラメータの設定に関する項を参照してください。

NLS_ISO_CURRENCY

NLS_ISO_CURRENCYオプションは、C数値書式要素に対応する国際通貨記号を指定するオプションです。

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_ISO_CURRENCY = option-value

パラメータ

有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLSパラメータの設定に関する項を参照してください。

NLS_LANG

(読取り専用)NLS_LANGオプションは、現行の言語、地域およびデータベース・キャラクタ・セットを指定するオプションです。セッション全体のグローバリゼーション・パラメータで決定します。

データ型

TEXT

構文

NLS_LANG

パラメータ

有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLSパラメータの設定に関する項を参照してください。

例5-75 NLS_LANGの現行値の確認

SHOW NLS_LANG文により、たとえば、次のような結果が生成されます。

AMERICAN_AMERICA.WE8ISO8859P1 

NLS_LANGUAGE

NLS_LANGUAGEオプションは、セッションの現行の言語を指定するオプションです。このオプションの設定でSESSION_NLS_LANGUAGEオプションの値が決定されます。

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_LANGUAGE = option-value

パラメータ

有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLSパラメータの設定に関する項を参照してください。

例5-76 NLS_LANGUAGEの変更による影響

この例では、NLS_LANGオプションが次のように初期設定されています。

AMERICAN_AMERICA.WE8ISO8859P1 

YESSPELLの値はyesです。

言語設定を次のように変更すると、

NLS_LANGUAGE = 'FRENCH'

NLS_LANGの値が次のように変更されます。

FRENCH_AMERICAN.WE8ISO8859P1

これにより、YESSPELLの値はouiになります。

NLS_NUMERIC_CHARACTERS

NLS_NUMERIC_CHARACTERSオプションは、セッション用に小数点および3桁を区切る文字を指定するオプションです。NLS_NUMERIC_CHARACTERSは、THOUSANDSCHARおよびDECIMALCHARオプションのいずれか、または両方の設定、および数値データの表示に影響を与えます。

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_NUMERIC_CHARACTERS = option-value

パラメータ

有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLSパラメータの設定に関する項を参照してください。

例5-77 小数点記号のカンマへの変更

次の文は、小数点記号をカンマに変更し、3桁区切り文字を空白に変更します。

NLS_NUMERIC_CHARACTERS = ', '

次の文の結果

show 1234.56

は、次のようになります。

1 234,56 

NLS_SORT

NLS_SORTオプションは、テキストのソートまたは比較時に使用される文字値のシーケンスを指定するオプションです。NLS_SORTの値は、GTGELTおよびLE演算子、SORTコマンドおよびSORTLINESファンクションに影響します。

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_SORT = option-value

パラメータ

NLS_SORTパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLS_SORTを参照してください。

例5-78 バイナリ・ソートと言語ソート

wordsという名前のディメンション値は、次のとおりです。

cerveza, Colorado, cheremoya, llama, luna, lago

次の例は、バイナリ・ソートの結果を示します。

NLS_SORT = 'BINARY'
SORT words A words
STATUS words
The current status of WORDS is:
Colorado, cerveza, cheremoya, lago, llama, luna

スペイン語の言語ソートの結果は、次の順序になります。

NLS_SORT = 'SPANISH'
SORT words A words
STATUS words
The current status of WORDS is:
cerveza, cheremoya, Colorado, lago, llama, luna

スペイン語の拡張言語ソートの結果は、次の順序になります。

NLS_SORT = 'XSPANISH'
SORT words A words
STATUS words
The current status of WORDS is:
cerveza TO cheremoya, lago TO llama 

NLS_TERRITORY

NLS_TERRITORYオプションは、セッションの現行の領域を指定するオプションです。

このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION SET option = valueというSQL文を使用します。  

データ型

TEXT

構文

NLS_TERITORRY = option-value

パラメータ

NLS_TERRITORYパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』NLS_TERRITORYを参照してください。

例5-79 NLS_TERRITORYの変更による影響

この例では、NLS_LANGオプションが次のように初期設定されています。

AMERICAN_AMERICA.WE8ISO8859P1 

3桁区切り文字はカンマ(,)で、小数点記号はピリオド(.)です。

SHOW TO_NUMBER('12345')
12,345.00

地域設定を次のように変更すると、

NLS_TERRITORY = 'FRANCE'

NLS_LANGの値が次のように変更されます。

AMERICAN_FRANCE.WE8ISO8859P1

これにより、3桁区切り文字はピリオド(.)に、小数点記号はカンマ(,)になります。

SHOW TO_NUMBER('12345')
12.345,00 

NOSPELL

(読取り専用)NOSPELLオプションは、OLAP DML文の出力に存在するFALSEブール値に使用されるテキストを保持します。

NOSPELLオプションの値は、NLS_LANGUAGEオプションで指定される現行の言語で「no」に対応する語です。たとえば、NLS_LANGUAGEの設定が「American」である場合、NOSPELLのデフォルト値はNOです。

データ型

TEXT

構文

NOSPELL

例5-80 NOSPELLオプションの効果の確認

現在の値がNOであるBOOLVARという変数があるとします。NLS_LANGUAGEオプションで指定した言語で「no」に対応する語が「non」である場合、

SHOW boolvar

によって、次の出力が生成されます。

non

OKFORLIMIT

OKFORLIMITオプションは、明示的なFORループの内側でループしているディメンションを制限できるかどうかを制御します。

ヒント:

REPORT文で生成されるループでループしているディメンションのステータスを設定するには、TEMPSTAT文を使用してください。

データ型

BOOLEAN

構文

OKFORLIMIT = {NO|YES}

パラメータ

NO

(デフォルト)明示的なFORループの内側でループしているディメンションを制限できません。

YES

明示的なFORループの内側でループしているディメンションを制限できます。

例5-81 ループ内部での制限の許可

次のプログラムの抜粋はOKFORLIMITをYESに設定するので、ユーザーはFORループの内部でmarketを制限できます。

 ...
OKFORLIMIT = YES
FOR market
    DO
      LIMIT market TO CHILDREN USING market.market 
      REPORT market
    DOEND
 ...

OKNULLSTATUS

OKNULLSTATUSオプションは、Oracle OLAPでディメンション・ステータス・リストのNULLの設定を許可するかどうかを決定します。デフォルトでは、空のステータス・リストは許可されません。NULLステータス・リストが許可されない場合、結果がNULLステータス・リストになるLIMITコマンドを実行すると、Oracle OLAPはエラー・メッセージを生成します。

データ型

BOOLEAN

構文

OKNULLSTATUS = {YES|NO}

パラメータ

YES

NULLステータス・リストが許可されることを示します。この設定では、ディメンション・ステータス・リストの結果がNULLになるLIMITコマンドを(IFNONE引数を指定せずに)実行すると、ステータス・リストNULLに設定され、エラー・メッセージは生成されません。

NO

(デフォルト)NULLステータス・リストが許可されないことを示します。この設定では、ディメンション・ステータス・リストの結果がNULLになるLIMITコマンドを(IFNONE引数とNULLキーワードを指定せずに)実行すると、ステータス・リストは変更されず、エラー・メッセージが生成されます。

使用上の注意

OKNULLSTATUSに効果がない場合

次の状況では、OKNULLSTATUSの値に効果はありません。

  • LIMITコマンドにIFNONE引数が指定されている場合。

  • LIMITコマンドにNULLキーワードが指定され、ディメンション・ステータス・リストがNULLに設定される場合。

  • LIMITコマンドによって値セットがNULLに設定される場合(ただし、IFNONE引数を使用していないとき)。OKNULLSTATUSがNOの場合でも、値セットはNULLに設定され、エラー・メッセージは生成されません。

  • NULLのディメンション・ステータス・リストを返すようにLIMITファンクションが指定されている場合。OKNULLSTATUSがNOの場合でも、返される値はNAであり、エラー・メッセージは生成されません。

ディメンションおよび値セットでのNULLステータスの使用の詳細は、LIMITコマンドを参照してください。

例5-82 OKNULLSTATUSの使用

次の文は、ディメンションのNULLステータスに関するエラー・メッセージを表示せずにディメンション・ステータス・リストをNULLに設定できるようにします。

OKNULLSTATUS = YES

OUTFILEUNIT

(読取り専用)OUTFILEUNITオプションは、最後のOUTFILE文によって設定された現在のOUTFILE出力先のファイル・ユニット番号を保持します。出力を指定のファイルに最初にリダイレクトしたとき、OUTFILEはそのファイルにファイル・ユニット番号として任意のINTEGERを割り当てます。

データ型

INTEGER

構文

OUTFILEUNIT

使用上の注意

OUTFILEとOUTFILEUNIT

OUTFILE文に対して異なるファイルを指定するたびに、OUTFILEUNITの設定は自動的に変更されます。たとえば、OUTFILE myfilenameという文を実行すると、OUTFILEUNITの値はmyfilenameに割り当てられたファイル・ユニット番号になります。

例5-83 FILEQUERYでのOUTFILEUNITの使用

ファイルのファイル・ユニット番号をfilenumという名前の変数に保存しているとします。現行の出力ファイルは別のディスク・ファイルです。最初のファイルのPAGEPRGの値を現行の出力ファイルのPAGEPRGの値に設定することにします。現行の出力ファイルのファイル・ユニット番号はOUTFILEUNITオプションに含まれるので、FILEQUERYとOUTFILEUNIT番号を組み合せて指定すると、現行の出力ファイルのPAGEPRG設定を取得できます。

FILESET filenum PAGEPRG FILEQUERY(OUTFILEUNIT PAGEPRG)

PAGENUM

PAGENUMオプションは、出力の現行ページ数を保持します。PAGENUMとPAGEPRGを組み合せて使用すると、レポートの各ページにページ番号を付けることができます。PAGENUMオプションは、PAGINGの設定がYESの場合にのみ有効であり、REPORTやLISTNAMESなどの文からの出力に対してのみ適用されます。

データ型

INTEGER

構文

PAGENUM = n

パラメータ

n

出力の次のページに使用するページ番号を指定するINTEGER式。デフォルトは1です。

使用上の注意

1ページからの開始

出力をデフォルトの出力ファイルに送信する場合、レポートの生成を1ページから開始するには、必ずPAGENUMとLINENUMの両方を1に設定します。これらのオプションは、レポート・プログラムの初期化セクションで設定できます。OUTFILE文を使用して出力をファイルに送信すると、PAGENUMは自動的に1に設定されます。

ページ途中でのPAGENUMの設定

PAGENUMの値は、出力の最後の行がページ上に生成されると自動的に増分されます。出力ページの表示がページの途中で終了する場合にPAGENUMを設定すると、次のページが生成される前にPAGENUMの値が1つ増分されます。したがって、通常、次のページに表示するページ番号より1少ない値にPAGENUMの値を設定する必要があります。

PAGENUMでのPAGINGの効果

PAGINGをNOに設定すると、PAGENUMによるカウントは停止し、最後の値が保持されます。PAGINGをYESに再設定すると、中断した箇所のページ番号からPAGENUMによるカウントが再開されます。

PAGENUMでのOUTFILEの効果

OUTFILE文を使用して出力をファイルに送信すると、PAGENUMはそのファイルに対して1に設定されます。OUTFILE文とEOFキーワードを組み合せて使用して出力をデフォルトの出力ファイルにリダイレクトすると、PAGENUMに入るページ番号は、デフォルトの出力ファイルに最後に保持された番号です。

例5-84 2ページ目のヘッダーの変更

レポートの各ページに、標準的に表示されるページ・ヘッダーとカスタムのタイトルを設定し、2ページ目以降には「(Continued)」というヘッダーも追加することにします。PAGENUM値を使用して「(Continued)」ヘッダーを追加する条件を判別する、report.headという名前のページ・ヘッダー・プログラムを定義できます。

DEFINE report.head PROGRAM
PROGRAM
STDHDR
BLANK
PAGING = YES
HEADING WIDTH LSIZE CENTER 'Annual Sales Report'
BLANK
IF PAGENUM GT 1
   THEN HEADING WIDTH LSIZE CENTER '(Continued)'
BLANK
END

レポート・プログラムで、PAGEPRGオプションを設定してreport.headプログラムを使用します。

PAGEPRG = 'report.head'

レポート・プログラムを実行すると、2ページ目以降の各ページに次のようなヘッダーが先頭に表示されます。

15JAN95 15:05:16                                      Page  2
                       Annual Sales Report
 
                           (Continued)

PAGEPRG

PAGEPRGオプションは、出力の各ページの先頭で実行されるプログラムの名前または文のテキストを保持します。そのプログラムまたは文を使用して、レポートの複数ページでタイトルおよび列ヘッダーを作成できます。プログラムには、各ページの先頭で実行するのに適した他の文も含めることができます。通常、PAGEPRGの値は、レポート・プログラムの初期化セクションで設定します。

PAGEPRGオプションは、PAGINGの設定がYESの場合にのみ有効であり、REPORTやLISTNAMESなどの文からの出力に対してのみ適用されます。

データ型

TEXT

構文

PAGEPRG = {'program'|'statement'|'NONE'|'STDHDR'}

パラメータ

program

改ページの後に毎回実行されるプログラムの名前。プログラム名をテキスト式として指定する場合、一重引用符を省略できます。

statement

改ページの後に毎回実行される文のテキスト。文をテキスト式として指定する場合、一重引用符を省略できます。

NONE

改ページ後に自動的に実行される文またはプログラムがないことを指定します。

STDHDR

(デフォルト)PAGEPRGによって格納されるプログラムの名前をSTDHDRにします。PAGEPRGの設定を'DEFAULT'にしても、PAGEPRGによって格納されるプログラムの名前をSTDHDRにできます。STDHDRを指定すると、左に日付および時刻、右にページ番号のヘッダーが作成されます。

使用上の注意

PAGPRGプログラムでのSTDHDRプログラムの使用

PAGEPRGプログラムを作成する場合、STDHDRプログラムをPAGEPRGプログラムの1行として含めることができます。通常、STDHDRを置く位置は、カスタム・ヘッダーを生成する他の文の前にします。例5-85を参照してください。

ヘッダー情報を最新状態に保持

TODAY、TODおよびPAGENUMなどのOracle OLAP機能は、PAGEPRGオプションで指定したプログラム内で使用できます。特定のレポートのタイトルなどの引数を受け入れるヘッダー・プログラムを用意することもできます。この場合、引数が設定されたレポート・ヘッダー・プログラムを起動するテキスト式にPAGEPRGオプションを設定します。例5-86を参照してください。

ファイルに対するPAGEPRGの設定

ファイルに対してPAGEPRGを設定するには、最初にOUTFILE文でファイルの名前を指定して現行の出力ファイルにしてから、PAGEPRGを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、そのファイルに対してPAGEPRGは'STDHDR'のデフォルト値に戻ります。

PAGEPRGをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、PAGEPRGの値はデフォルトの出力ファイルに対して自動的に保存されます。

例5-85 カスタム・ヘッダーの作成

レポートの各ページに、標準的に表示されるページ・ヘッダーおよびタイトル「Annual Sales Report」を含めることにします。このために、report.headという名前のプログラムを作成します。

DEFINE report.head PROGRAM
PROGRAM
STDHDR
BLANK
HEADING WIDTH LSIZE CENTER 'Annual Sales Report'
BLANK
IF PAGENUM GT 1
   THEN HEADING WIDTH LSIZE CENTER '(Continued)'
BLANK
END

レポート・プログラムにPAGEPRGオプションを設定することにより、改ページの後に毎回このプログラムを実行することを指定します。PUSHコマンドとPOPコマンドを含めることにより、アクティブなPAGEPRG設定を保存できます。

PUSH PAGEPRG PAGING
PAGEPRG = 'report.head'
PAGING = YES
      ... (body of report program)
  POP PAGEPRG PAGING

レポート・プログラムを実行すると、各ページに次のヘッダーが挿入されます。

15JAN98  15:05:16                                      Page 1
 
                       Annual Sales Report

2ページ目以降には、サブヘッダー「(Continued)」も挿入されます。これはIF文にPAGENUMテストがあるためです。

例5-86 プログラム引数の使用

report.headプログラムにレポート名を指定する別の方法として、レポート名をレポート・プログラムからreport.headプログラムに渡すことができます。これを行うには、引数としてレポート名を指定したreport.headプログラムを起動するテキスト式にPAGEPRGオプションを設定します。レポート・プログラムには次の文が含まれているとします。

PAGEPRG = 'CALL report.head(\'Annual Sales Report\')'

この場合、report.headプログラムの最初の数行を次のように変更できます。

ARGUMENT titlevar TEXT
STDHDR
BLANK
HEADING WIDTH LSIZE CENTER titlevar

PAGESIZE

PAGESIZEオプションは、出力の1ページのサイズを指定します。PAGESIZEの値は、各ページに生成される出力の行数です。PAGESIZEは、通常、レポート・プログラムの初期化セクションで使用します。PAGESIZEオプションは、PAGINGの設定がYESの場合にのみ有効であり、REPORTやLISTNAMESなどの文からの出力に対してのみ適用されます。PAGESIZEではLINELEFTオプションも制御されます。PAGESIZEを変更すると、それに応じてLINELEFTも調整されます。

関連項目:

PAGEコマンド、PAGINGオプションおよびLINESLEFTオプション

データ型

INTEGER

構文

PAGESIZE = n

パラメータ

n

1ページの出力行の数を指定するINTEGER式で、nには、上下マージン(TMARGINオプションおよびBMARGINオプションで制御)が含まれます。デフォルト値は66行で、この値は、8.5インチ×11インチの紙にレポート出力を印刷するのに適しています。

使用上の注意

標準のヘッダーおよびデフォルト設定を使用した使用可能な出力行

標準のヘッダー、およびPAGESIZE、TMARGIN、BMARGINの各オプションのデフォルト設定を使用した場合、使用可能な出力行の数の合計は61行です。

                              Output Lines
Lines from PAGESIZE                     66
Lines for TMARGIN                      - 2
Lines for the standard heading         - 2
Lines for BMARGIN                      - 1
Lines available for output              61

 

ヘッダーと改ページの削除

ヘッダーのないページを出力するには、文PAGEPRG='NONE'を使用します。改ページを完全に抑制するには、文PAGING = NOを使用します。

ファイルに対するPAGESIZEの設定

ファイルに対してPAGESIZEを設定するには、最初にOUTFILE文でファイルの名前を指定して現行の出力ファイルにしてから、PAGESIZEを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、そのファイルに対してPAGESIZEは66のデフォルト値に戻ります。

PAGESIZEをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、PAGESIZEの値はデフォルトの出力ファイルに対して自動的に保存されます。

例5-87 リーガル・サイズ用紙への印刷

この例では、リーガル・サイズ用紙(14×8.5インチ)にレポートを生成します。レポート・プログラムの初期化セクションに次の文を含めます。

PAGESIZE = 84

PAGING

PAGINGオプションは、Oracle OLAPにおけるページ化される出力の生成を制御します。PAGINGをYESに設定すると、DESCRIBE、REPORT、ROWコマンド、HEADING、SHOW、LISTNAMESなどの文からの出力がページ向け書式で生成されます。出力は、標準の上下マージンおよびヘッダーとともにページサイズに分けられて生成されます。様々なページング関連オプションを使用すると、各ページのサイズ、マージンのサイズおよびヘッダーを変更できます。

特に、ファイルに送信する出力を印刷する場合、ページングによってより見やすくできます。また、ページ化された出力をデフォルトの出力ファイルに送信することもできます。通常は、PAGINGオプションをレポート・プログラムの初期化セクションで設定し、レポートのページングをオンにします。

データ型

BOOLEAN

構文

PAGING = {YES|NO}

パラメータ

YES

改ページ、上下マージンおよびページ・ヘッダー付きの出力を生成します。

NO

(デフォルト)改ページ、上下マージンおよびページ・ヘッダーを含まない出力を生成します。各行が切れ目なく出力されます。

使用上の注意

ファイルに対するPAGINGの設定

ファイルに対してPAGINGを設定するには、最初にOUTFILE文でファイルの名前を指定して現行の出力ファイルにしてから、PAGINGを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、そのファイルに対してPAGINGはNOのデフォルト値に戻ります。

PAGINGをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、PAGINGの値はデフォルトの出力ファイルに対して自動的に保存されます。

ページング関連のオプション

Oracle OLAPは、ページ長、ページ・ヘッダーおよび上下マージンに対してデフォルト値を使用します。これらの値を変更するには、PAGESIZE、PAGEPRG、TMARGIN、BMARGINの各オプションを設定します。PAGINGをYESに設定したときに有効になるこの他のページング・オプションには、LINENUM、LINELEFTおよびPAGENUMがあります。

現行の出力ファイルのPAGINGの値は、ページング関連オプションを使用するかどうかを決定します。ページング・オプションを有効にするには、現行の出力ファイルに対してPAGINGをYESに設定する必要があります。

PAGINGのオン/オフの切替え

PAGINGのオン/オフを切り替えると、ページング・オプションに次の効果があります。

  • PAGINGをオン(YES)からオフ(NO)に切り替える場合

    • LINENUMオプションの値は出力行の生成数に応じて増加します。

    • LINELEFTオプションはPAGESIZEに設定されます。

    • PAGENUMオプションによるカウントは停止し、現行値が保持されます。

  • PAGINGをオフ(NO)からオン(YES)に切り替える場合

    • LINENUMが1に設定され、現行ページの行数のカウントが開始されます。

    • LINELEFTによって、現行ページの残り行数のカウントが開始されます。

    • 中断した箇所のページ番号からPAGENUMによるカウントが再開されます。

出力ファイルの変更

OUTFILE文を使用して出力をファイルに送信すると、ファイルに対するすべてのページング関連オプションがデフォルト値に設定されます。OUTFILE文とEOFキーワードを組み合せて使用して出力をデフォルトの出力ファイルにリダイレクトすると、ページング関連オプションの値は、デフォルトの出力ファイルに最後に保持された値になります。

例5-88 ページング・オプションの設定

レポート・プログラムの作成時に改ページおよび上部余白を制御するとします。プログラムの初期化セクションに次の数行を含めます。これらの行は、出力をrepfile.txtという名前のファイルに送信し、PAGINGオプションをオンにし、ページ・サイズおよび上部余白を変更します。

OUTFILE 'repfile.txt'
PAGING = YES
PAGESIZE = 84
TMARGIN = 6 

PARENS

PARENSオプションは、負数を出力で表示する場合、カッコまたはマイナス記号を付けるかどうかを制御します。

データ型

BOOLEAN

構文

PARENS = {YES|NO}

パラメータ

YES

負数をカッコで囲み、マイナス記号を使用しません。

NO

(デフォルト)マイナス記号を使用して負数を表示します。

使用上の注意

PARENSの変更

PARENSオプションの設定は、HEADING、REPORTまたはROWコマンドのPAREN属性またはNOPAREN属性によって変更されます。PAREN属性はカッコの使用を指定し、NOPAREN属性はマイナス記号の使用を指定します。

カッコのための領域の確保

レポート内で負数をカッコを使用して表現する場合、Oracle OLAPは正数および負数の列を揃えます。このため、各数値列の右端の文字が閉じカッコのために予約されます。出力に負数がない場合でも、この列が常に予約されます。その結果、マイナス記号を使用する場合より各値に必要な領域が増加するため、データが収まるように列幅を増やす必要があることがあります。

例5-89 カッコによる負数の表示

レポートで負数をカッコで表示するため、最初にPARENSをYESに設定します。

LIMIT line TO 'Cogs'
LIMIT division TO 'Sporting'
LIMIT month TO 'Jan96' TO 'Jun96'
PARENS = YES
DECIMALS = 0
REPORT DOWN month budget actual budget-actual

これらの文によって生成される出力は次のとおりです。

DIVISION: SPORTING
               --------------LINE--------------
               --------------COGS--------------
                                     BUDGET-ACT
MONTH            BUDGET     ACTUAL      UAL
-------------- ---------- ---------- ----------
Jan96            279,773    287,558     (7,785)
Feb96            323,982    315,299      8,683
Mar96            302,178    326,185    (24,007)
Apr96            386,101    394,544     (8,443)
May96            433,998    449,862    (15,864)
Jun96            448,042    457,348     (9,305)

PERMITERROR

PERMITERRORオプションは、PERMIT文によって読取り権限や書込み権限が拒否されている変数がアクセスされたときに、エラーを通知するかどうかを制御します。

関連項目:

起動プログラムPERMITREADERRORオプション、PERMITコマンドおよびPERMITRESETコマンド。

データ型

BOOLEAN

構文

PERMITERROR = NO | YES

パラメータ

NO

PERMITERRORをNOに設定すると、PERMIT文によって読取り権限や書込み権限が拒否されている変数がアクセスされたときにエラー条件は発生しません。読取り権限のない値は、NAと表示されます。書込み権限のない値を変更しようとすると、その要求は無視されます。

YES

(デフォルト)PERMITERRORがYESである場合、PERMIT文によって読取り権限や書込み権限が拒否されている変数がアクセスされるとエラーが通知されます。このエラーはトラップできますが、このエラーにより、無効なアクセスを開始したOracle OLAP操作は終了します。

使用上の注意

非データ・オブジェクトに対するPERMITERROR

プログラム、モデル、値セットなど、非データ・オブジェクトに対する権限の違反については、PERMITERRORの設定は無視されます。権限がある変数およびリレーションにディメンション性があるかどうかにかかわらず、これらにアクセスしようとした場合、常にPERMITERRORの設定の影響を受けます。

ディメンションのメンテナンス

PERMITERRORの設定は、メンテナンス権限や許可権限の違反については無視されます。ディメンションをメンテナンスする権限および権限を変更する権限に違反しようとすると、常にエラーとして処理されます。同様に、ディメンションに対する読取り権限または書込み権限に違反しようとした場合も、常にエラーとして処理されます。

完全な権限のないデータの取得

PERMITERRORの設定がYESであり、読取り権限のない値が含まれるディメンション化された変数をフェッチしようとした場合、これらの値のうち最初の値が検出されたときにエラー条件が発生します。レポートを作成する前に、許容される値のみがステータスにあるように前もってディメンションを制限するか、PERMITERRORをNOに設定することによって、エラー条件の発生を防止できます。

例5-90 完全な権限のないレポート

次の例では、price変数の読取り権限に制約があるために、Tents以外のproductの値については価格データを参照できません。ただし、PERMITERRORをNOに設定すると、エラー条件を発生させることなく、1996年12月のprice変数のレポートを生成できます。

PERMITERROR = no
DESCRIBE price

この文の出力は次のとおりです。

DEFINE PRICE VARIABLE DECIMAL <MONTH PRODUCT>
LD Wholesale Unit Selling Price
PERMIT READ WHEN product eq 'Tents'

次の文により

LIMIT month TO 'Dec96'
REPORT price

によって、次の出力が生成されます。

                  ----PRICE----
                  ----MONTH----
PRODUCT               DEC96      
----------------  -------------
Tents                  165.64
Canoes                     NA
Racquets                   NA
Sportswear                 NA
Footwear                   NA

次の文により

PERMITERROR = yes
REPORT price

によって、次のエラーが生成されます。

ERROR: You do not have permission to read this value of PRICE

さらに、次の出力が生成されます。

                 ---PRICE---
                 ---MONTH---
PRODUCT             DEC96
---------------  -----------
Tents                165.64

PERMITREADERROR

PERMITREADERRORオプションは、PERMIT文によって読取り権限や書込み権限が拒否されている変数、値セット、式またはリレーションの読取りが行われたときに、エラーを通知するかどうかを制御します。

関連項目:

起動プログラムPERMITERRORオプション、PERMITコマンドおよびPERMITRESETコマンド。

データ型

BOOLEAN

構文

PERMITREADERROR = NO | YES

パラメータ

NO

(デフォルト)PERMITREADERRORの値がYESである場合、PERMIT文によって読取り権限や書込み権限が拒否されている変数、値セット、式またはリレーションがアクセスされたときにエラー条件は発生しません。読取り権限のない値は、NAと表示されます。書込み権限のない値を変更しようとすると、その要求は無視されます。

YES

PERMITERRORがYESである場合、PERMIT文によって読取り権限や書込み権限が拒否されている変数、値セット、式またはリレーションの読取りが行われるとエラーが通知されます。このエラーはトラップできますが、このエラーにより、無効なアクセスを開始したOracle OLAP操作は終了します。

PRGTRACE

PRGTRACEオプションは、プログラムの実行時に、プログラムの各行が現行の出力ファイルまたはデバッグ・ファイルに記録されるかどうかを制御します。PRGTRACEは、プログラムの実行をトレースすることによって問題を検出するためのデバッグ・ツールとして主に使用されます。

OLAP DML文として提供されるOLAP DMLプログラムは、EXPTRACEの設定がYESでないかぎり、トレースされません。

DBGOUTFILE文を使用してデバッグ・ファイルを指定した場合、PRGTRACEの出力は現行の出力ファイルではなくデバッグ・ファイルに送信されます。

データ型

BOOLEAN

構文

PRGTRACE = {YES|NO}

パラメータ

YES

プログラムの各行は、実行される前に記録されます。

NO

(デフォルト)プログラムの各行は記録されません。

使用上の注意

PRGTRACEの出力

PRGTRACEでは、現行プログラムの名前が各プログラム行の先頭に記録されます。コンパイル済の行を示すには、等号が挿入されます。

(PRG= SALESREP) . . .

未コンパイルの行を示すには、コロンが挿入されます。

(PRG: SALESREP) . . .

コンパイル済の行は、効率的な内部形式に変換された行であるのに対して、未コンパイルの行は変換されていません。Oracle OLAPでは、プログラム(特にループが含まれるプログラム)がより効率的に動作するように、通常はコンパイル済の形式で行を格納します。

未コンパイルのプログラム行

Oracle OLAPは、プログラムをコンパイルしてから実行します。したがって、PRGTRACEの出力で未コンパイルとマークされる行は、アンパサンド置換が記述された行などのコンパイルできない行に限定されます。

例5-91 プログラム実行のトレース

単純な予算レポートを生成するsalesrepという名前のプログラムがあるとします。

DEFINE salesrep PROGRAM
PROGRAM
PUSH month division line
TRAP ON cleanup
LIMIT month TO &ARGS
LIMIT division TO ALL
LIMIT line TO FIRST 1
REPORT DOWN division across month: dec 0 budget
 
cleanup:
POP month division line
END

このプログラムをデバッグする場合、PRGTRACEをオンにしてからプログラムを実行し、プログラムの各行の実行をトレースします。

PRGTRACE = yes
salesrep FIRST 3

PRGTRACEにより、現行の出力ファイルまたはデバッグ・ファイルに次の出力が生成されます。

(PRG= SALESREP) push month division line
(PRG= SALESREP) trap on cleanup
(PRG: SALESREP) limit month to &args
(PRG= SALESREP) limit division to all
(PRG= SALESREP) limit line to first 1
(PRG= SALESREP) report down division across month: dec0 budget
LINE: REVENUE
               -------------BUDGET-------------
               -------------MONTH--------------
DIVISION         JAN95      FEB95      MAR95
-------------- ---------- ---------- ----------
CAMPING          679,149    707,945    780,994
SPORTING         482,771    517,387    525,368
CLOTHING         983,888  1,016,528    992,331
(PRG= SALESREP) cleanup:
(PRG= SALESREP) pop month division line

RANDOM.SEED.1およびRANDOM.SEED.2

RANDOM.SEED.1オプションおよびRANDOM.SEED.2オプションは、乱数の計算時にRANDOMによって使用される値を指定します。RANDOMは、数値を計算するためにオプションRANDOM.SEED.1およびRANDOM.SEED.2を使用し、その後で次回の値を変更します。

アプリケーション・プログラムの開発およびデバッグ時に同じ乱数列を再生成する場合、RANDOMを使用する前にRANDOM.SEED.1およびRANDOM.SEED.2を特定の値に設定します。

データ型

INTEGER

構文

RANDOM.SEED.1|RANDOM.SEED.2 = n

パラメータ

n

乱数を生成するときに使用する値を指定するINTEGER式。RANDOM.SEED.1のデフォルト値は12345、RANDOM.SEED.2のデフォルト値は1073です。

使用上の注意

同じ乱数列の再生成

例8-64に示されているように、アプリケーション・プログラムの開発およびデバッグ時に同じ乱数列を再生成する場合、RANDOMを使用する直前にRANDOM.SEED.1およびRANDOM.SEED.2を特定の値に設定します。その数列を繰り返し生成するには、RANDOMを再び使用する直前にこれらのオプションを同じ値に設定します。これにより、作成したプログラムの動作が異なる場合、乱数列の相違ではなくプログラムの相違が原因であることがわかります。

例5-92 テストのためのRANDOMの明示的なシード指定

アナリティック・ワークスペースに次のディメンションおよび変数があるとします。

DEFINE id DIMENSION TEXT
DEFINE myvar VARIABLE INTEGER <id>
 

次のコードに示すとおり、最初にシード指定せずにRANDOMを使用してmyvarを移入します。RANDOMが実行されるたびに異なる値がOracle OLAPによってmyvarに移入されます。

myvar = 0
myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     11
a2                     19
a3                     14
 
myvar = 0
myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     16
a2                     13
a3                     12
 

次に、myvarに対して予測可能な値を作成するRANDOMを使用するテストを記述します。次のコードに示すように、RANDOMの結果がその時々で同じになるようにするには、RANDOM.SEED.1およびRANDOM.SEED.2の値をRANDOMの実行直前に設定する必要があります。

myvar = 0
RANDOM.SEED.1 = 5
RANDOM.SEED.2 = 3
	myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     10
a2                     16
a3                     13
 
myvar = 0
RANDOM.SEED.1 = 5
RANDOM.SEED.2 = 3
myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     10
a2                     16
a3                     13

RANDOM.SEED.1およびRANDOM.SEED.2に対して設定した値は、セッション全体を通して同じ値に保たれるわけではありません。次のコードに示すように、実行直前に毎回同じ値をシード指定しなかった場合、RANDOMによって生成される値は同じにはなりません

myvar = 0RANDOM.SEED.1 = 5
RANDOM.SEED.2 = 3
myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     10
a2                     16
a3                     13

myvar = 0
	myvar = RANDOM (10, 20)
REPORT myvar
 
ID               MYVAR
-------------- ----------
a1                     11
a2                     16
a3                     20

RECURSIVE

RECURSIVEオプションは、計算式または$NATRIGGER式がそれ自身をコールする機能を制御します。

構文

RECURSIVE = {YES|NO}

パラメータ

YES

YESを指定すると、計算式または$NATRIGGER式がそれ自身をコールできます。計算の再帰法を使用する計算式または$NATRIGGERプロパティの式を定義する場合に、このオプションをYESに設定します。

NO

(デフォルト)NOを指定すると、計算式または$NATRIGGER式がそれ自身をコールできません。再帰的計算式または$NATRIGGER式を評価しようとすると、RECURSIVEオプションが現在NOに設定されていることを示すエラー・メッセージが表示されます。ワークスペースに再帰的計算式または$NATRIGGER式が格納されるまで、無限ループ動作を引き起こす可能性のあるエラーを検出するために、このオプションはNOに設定したままにしてください。

使用上の注意

計算式および$NATRIGGER式のみが対象

RECURSIVEをYESに設定した場合、計算式および$NATRIGGERプロパティ式のみが影響を受けます。このオプションはプログラムには影響せず、つまり、プログラムが$NATRIGGER式でないかぎり、RECURSIVEオプションの設定にかかわらず、プログラムは再帰的に実行できます。$NATRIGGER式は、RECURSIVEオプションがYESでないかぎり、それ自身をコールできません。

$NATRIGGERの再帰の制限

TRIGGERMAXDEPTHオプションを設定すると、$NATRIGGERプロパティ式の再帰の深さを制限でき、このオプションでは、同時に実行される$NATRIGGER式の最大数が設定されます。

ROLE

(読取り専用)ROLEオプションは、Oracle OLAPセッションを実行中のユーザーIDに関連付けられているOracle Databaseロールのリストを保持します。

データ型

TEXT

構文

ROLE

例5-93 グループまたはロールのリスト表示

次の文は、現行セッションのユーザーIDに関連付けられているロールのリストを表示します。

SHOW ROLE

ROOTOFNEGATIVE

ROOTOFNEGATIVEオプションは、負数の根を取得しようとした場合の結果を決定します。

データ型

BOOLEAN

構文

ROOTOFNEGATIVE = YES|NO

パラメータ

YES

負数の根の取得が許可されます。したがって、負数の根を取得しようとする文は、エラーにならずに実行されますが、その結果はNAになります。ディメンション化された変数または式を使用する場合、ROOTOFNEGATIVEをYESに設定すると、負数の値が少ないときには式のほとんどの値の根を取得できます。

NO

(デフォルト)負数の根の取得が許可されません。負数の根を取得しようとする文は実行が停止し、エラー・メッセージが生成されます。

使用上の注意

非整数での累乗

数値を非整数で累乗すると(たとえば、 5 ** 0.314 ** 2.7)、根が取得されます。

例5-94 ROOTOFNEGATIVEの影響

次の例は、ROOTOFNEGATIVEオプションの値を変更したことによる影響を示します。変数TESTNUMBERは値-56を持ちます。次のように、ROOTOFNEGATIVEオプションをデフォルト値NOのままSHOW文を実行すると、平方根を取得しようとした結果、エラー・メッセージが生成されます。

SHOW SQRT(testnumber)

ROOTOFNEGATIVEをYESに変更すると、同じ文がエラーにならずに実行されます。

ROOTOFNEGATIVE = YES
SHOW SQRT(testnumber)

次の結果が生成されます。

NA

SECONDS

(読取り専用)SECONDSオプションは、1970年1月1日以降の秒数を保持します。プログラムの高速化を目指す場合に、SECONDSを使用することにより、プログラムが実行されている間の実際の経過秒数がわかります。

データ型

INTEGER

構文

SECONDS

例5-95 SECONDSを使用したプログラムの時間測定

次のプログラムを実行すると、プログラム開始時のSECONDSの値がt1という変数に書き込まれ、次にt1とプログラム実行後のSECONDSの値との差が表示されます。

DEFINE prodsummary PROGRAM
PROGRAM
VARIABLE t1 INTEGER
t1 = seconds
LIMIT product TO ALL
BLANK
FOR product
DO
  ROW WIDTH 16 name.product ACROSS month Jun96: DECIMAL 0 LSET -
   '$'WIDTH 18 <RSET ' (actual)' sales RSET ' (plan)' sales.plan>
DOEND
BLANK
ROW WIDTH 35 LSET 'the program took ' RSET ' SECOND(s).' -
 (SECONDS-t1)
END

このプログラムを実行すると、次の結果が生成されます。

3-Person Tents     $95,121 (actual)     $80,138 (plan)
Aluminum Canoes   $157,762 (actual)    $132,931 (plan)
Tennis Racquets    $97,174 (actual)     $84,758 (plan)
Warm-up Suits      $79,630 (actual)     $73,569 (plan)
Running Shoes     $153,688 (actual)    $109,219 (plan)
 
      The program took 2 second(s).

SESSCACHE

SESSCACHEオプションは、通常デバッグ時のみ使用し、Oracle OLAPセッション・キャッシュの概要で説明するOracle OLAPセッション・キャッシュをOracle OLAPが作成するかどうかを制御します。

データ型

BOOLEAN

構文

SESSCACHE = {YES|NO}

パラメータ

YES

Oracle OLAPセッション・キャッシュの概要で説明されているデータを保持するために、セッション・キャッシュが作成されます。

NO

Oracle OLAPは、セッション・キャッシュの読取りおよび書込みを実行しません。NOを指定した場合、1つ以上のaggmapオブジェクトの仕様にCACHE SESSION文をコーディングすること、1つ以上の$VARCACHEプロパティをSESSIONに設定すること、またはVARCACHEオプションをSESSIONに設定することによってキャッシュを指定しても、キャッシュは実行されません。

使用上の注意

Oracle OLAPセッション・キャッシュの概要

OLAPセッション・キャッシュとは、次の情報を保持するために使用されるメモリー内の特別な場所です。

  • 次の状況でAGGREGATEファンクションが実行されたときに即時計算されたすべてのデータ

    • 集計の仕様にCACHE SESSIONが含まれる

    • 集計の仕様にCACHE SESSION文は含まれていないが、集計される変数にSESSIONの値を持つ$VARCACHEプロパティがある

    • 集計の仕様にCACHE SESSION文が含まれておらず、集計される変数にも$VARCACHEプロパティがないが、VARCACHEオプションがSESSIONに設定されている

  • AGGREGATEファンクションが実行され、集計の仕様にCACHE NA文が含まれていたときに計算されたNA値(のみ)

  • 次の状況で$NATRIGGER式が実行されたときに計算されたすべてのデータ

    • $NATRIGGERプロパティを持つ変数にSESSION値の$VARCACHEプロパティも設定されている

    • $NATRIGGERプロパティを持つ変数に$VARCACHEプロパティはないが、VARCACHEオプションがSESSIONに設定されている

1つのセッションに1つの内部キャッシュがあります。UPDATE文とCOMMIT文は、キャッシュされたデータを無視します。ただし、データがいったんキャッシュされると、FORCECALCキーワードを持つAGGREGATEファンクションを実行する場合を除いて、Oracle OLAPはキャッシュの値を使用してすべての計算を実行します。この場合、FORCECALCキーワードは、Oracle OLAPに値を再計算するように指定します。

セッションが終了すると、キャッシュは消去されます。セッションを終了せずにセッション・キャッシュを消去するには、CLEAR文を発行します。

セッション・キャッシュの効果は、V$AW_CALC動的パフォーマンス・ビューで追跡されます。

SESSION_NLS_LANGUAGE

(読取り専用)SESSION_NLS_LANGUAGEオプションは、OLAPセッション全体で有効なオプションです。このオプションは、STATIC_SESSION_LANGUAGEの値がNOの場合はNLS_LANGUAGEの値を保持し、STATIC_SESSION_LANGUAGEの値がYESの場合は、STATIC_SESSION_LANGUAGEの値が最後にNOだったときのNLS_LANGUAGEの値を保持します。

関連項目:

$DEFAULT_LANGUAGE「SESSION_NLS_LANGUAGE」

データ型

TEXT

構文

SESSION_NLS_LANGUAGE

NLS_LANGUAGEおよびSTATIC_SESSION_LANGUAGEの値の変化によって、SESSION_NLS_LANGUAGEの値にどのような影響があるかについては、例4-9および例5-102を参照してください。

例5-96 SESSION_NLS_LANGUAGEがセッション全体のオプションであることの確認

myaw3myaw4という2つのアナリティック・ワークスペースがあるとします。また、次のコードに示すとおり、どちらにもmylangsという言語ディメンションがあると仮定し、myaw3mylangsの言語はAmericanとFrench、myaw4mylangsの言語はAmericanとGermanです。

REPORT myaw3!mylangs
MYLANGS
--------------
AMERICAN
FRENCH
 
REPORT myaw4!mylangs
MYLANGS
--------------
AMERICAN
GERMAN
 

ここで、NLS_LANGUAGEとSESSION_NLS_LANGUAGEがAmericanに設定された状態で2つのアナリティック・ワークスペースをアタッチするとします。この場合、次に示されているように、2つのアナリティック・ワークスペースのmylangsはAmericanのみに制限されます。

REPORT myaw3!mylangs
MYLANGS
--------------
AMERICAN

REPORT myaw4!mylangs
MYLANGS
--------------
AMERICAN

SPARSEINDEX

SPARSEINDEXオプションは、コンポジットが値のロードおよびアクセスで使用する索引アルゴリズムのタイプを制御します。名前付きコンポジットを定義するとき、または名前のないコンポジットを作成するときのSPARSEINDEXの値であり、そのコンポジットがデフォルトで使用するアルゴリズムのタイプが決まります。DEFINE COMPOSITE文で索引アルゴリズムを指定すると、SPARSEINDEXオプションで指定されているデフォルトのアルゴリズムが上書きされます。

索引アルゴリズムの選択が重要になるのは、パフォーマンスの問題に留意する場合のみです。いずれの推奨事項も、このマニュアルが対応しているOracle OLAPのリリースに関するものです。CHGDFN文を使用してコンポジットのアルゴリズムを変更すると、アルゴリズムごとにパフォーマンスにどのような影響を及ぼすのかをテストできます(たとえば、データをロードする前など)。

データ型

TEXT

構文

SPARSEINDEX = {'BTREE'|'HASH'}

パラメータ

BTREE

コンポジットに対して推奨される標準的な索引付けメソッド。上級ユーザー以外はBTREEを使用してください。BTREEは類似する値をグループ化するため、アクセスの局所性に優れています。BTREEがデフォルトのアルゴリズムです。

HASH

コンポジットが持つベース・ディメンションが2つまたは3つのみである場合にかぎり使用できる標準の索引付けメソッド。一般的に、HASHを使用すると巨大な索引表が作成され、メモリーに読め込めない場合があるため、HASHをコンポジットに対して使用することは推奨されません

例5-97 HASHアルゴリズムの使用

次の例は、SPARSEINDEXをHASHに設定しているため、次に定義または作成するコンポジットはデフォルトでHASH索引アルゴリズムを使用して作成されます。

SPARSEINDEX = 'HASH'

SQLBLOCKMAX

SQLBLOCKMAXオプションは、Oracle Databaseインスタンスから一度に取得するレコードの最大数を制御します。このオプションによって、データ・フェッチのパフォーマンスをきめ細かくチューニングできます。

データ型

INTEGER

構文

SQLBLOCKMAX = records

パラメータ

records

一度にフェッチするレコード数を示すINTEGER。SQLBLOCKMAXは任意のINTEGERに設定できますが、100以上に設定すると、パフォーマンス上の明らかな変化は見られなくなります。デフォルトは10レコードです。

使用上の注意

カーソルのオープン

新しいブロック・サイズを使用するカーソルは、SQLBLOCKMAXのリセット後にオープンされたカーソルです。

レコード数

プログラムの通常の操作が、カーソルをオープンして1レコードを読み取ってからクローズする場合、SQLBLOCKMAXを1に設定します。このように設定しないと、SQL FETCH文は10レコードを取得してそのうちの9レコードを破棄します。同じことが、10レコード未満をフェッチする他のルーチンにも当てはまります。

ブロック・サイズ

プログラムで小さなレコードをフェッチする場合、SQLBLOCKMAXを増やしてフェッチに必要なブロック数を減らすことができます。Oracle OLAPは、データを64KBのバッファにフェッチします。ブロック・サイズは、レコード数にレコードのサイズを掛けたもので、バイトで示します。ブロック・サイズがバッファの制限である64KBを超える場合、Oracle OLAPはフェッチするレコード数を自動的に減らします。例5-98を参照してください。

例5-98 SQLBLOCKMAXによるカーソルの定義

次のプログラムの抜粋は、データベースから50バイトのレコードをフェッチするカーソルを定義します。新しいブロック・サイズは、Oracle OLAPの64KBのバッファに十分収まります(50バイト*100=50KBのブロック・サイズ)。

SQLBLOCKMAX = 100
SQL DECLARE CURSOR c1 FOR SELECT * FROM mydata
SQL OPEN c1

SQLCODE

(読取り専用)SQLCODEオプションは、最後に実行されたSQL操作後に、Oracle RDBMSによって返される値を保持します。

戻り値

INTEGER。操作が成功した場合は0、エラーの場合は-1、要求されたすべての行がフェッチされた場合は100です。

構文

SQLCODE

使用上の注意

SQLエラーの処理

Oracle OLAPは、SQLCODEがゼロ以外の場合でもエラーを通知しません。このため、プログラムでSQLCODEの値をテストし、適切な処理を実行する必要があります。各SQL操作でSQLCODEが設定されるため、操作ごとにエラーをテストしてエラー条件を見逃さないようにする必要があります。

ヒント:

エラーが発生すると、通常はSQLERRMオプションにエラー・メッセージが含まれます。

特定のエラー・コードを確認するプログラムを記述できます。たとえば、最も一般的な警告コードは100で、これはカーソルが選択する表の終わりにまで到達し、FETCH文が完了していることを示します。

例5-99 SQLCODEによるデータのフェッチ

次のプログラムの抜粋には、SQLCODEの値をテストするWHILEループが含まれて、カーソルのアクティブなセットの最後に達するとデータのフェッチを停止します。

WHILE SQLCODE EQ 0
   SQL FETCH cursor1 INTO :employee, :title

SQLERRM

(読取り専用)SQLERRMオプションは、データベースがエラーをレポートしてSQLCODEがゼロ以外の値の場合、通常はその問題を説明するテキストを含みます。

データ型

TEXT

構文

SQLERRM

使用上の注意

Oracleリレーショナル・マネージャ

SQLMESSAGESオプションをYESに設定すれば、SQLERRMの値を自動的に現行の出力ファイルに送信できます。

例5-100 エラー・メッセージの表示

次の文は、表を作成してからエラー・メッセージを確認します。

SQL CREATE TABLE Products -
   (Prod_ID CHAR(8) -
   Prod_Name VARCHAR(30) -
   Suggested_Price DECIMAL(10,2))
IF SQLCODE NE 0
   SHOW SQLERRM

例5-101 エラー・メッセージのサンプル

次の文は不完全であり、十分な情報が指定されていないので表を作成できません。

SQL CREATE TABLE Products

Oracle RDBMSは次のようなエラー・メッセージを返します。

ORA-00906: Missing left parenthesis.

SQLMESSAGES

SQLMESSAGESオプションは、エラー・メッセージを現行の出力ファイルに送信するかどうかを制御します。

データ型

BOOLEAN

構文

SQLMESSAGES = {YES|NO}

パラメータ

YES

エラー・メッセージは現行の出力ファイルに送信されます。

NO

(デフォルト)エラー・メッセージは、SQLERRMの値としてのみ格納されます。

使用上の注意

一般的使用方法

アプリケーションの開発時にSQLMESSAGESをYESに設定すると、エラーを迅速に診断できます。実行中のアプリケーションで、エラーを別の方法で発見して処理する場合は、SQLMESSAGESをNOに設定します。

STATIC_SESSION_LANGUAGE

STATIC_SESSION_LANGUAGEオプションは読取り/書込みオプションで、SESSION_NLS_LANGUAGEオプションの値をNLS_LANGUAGEオプションの値と常に同期させるかどうかを制御します。

関連項目:

$DEFAULT_LANGUAGE「言語ディメンション・ステータスの処理」

データ型

BOOLEAN

構文

STATIC_SESSION_LANGUAGE = NO | YES

パラメータ

NO

NLS_LANGUAGEオプションの値が変更されるたびに、SESSION_NLS_LANGUAGEもNLS_LANGUAGEオプションと同じ値に変更されます。(デフォルト)

YES

NLS_LANGUAGEの値が変更されても、SESSION_NLS_LANGUAGEの値は変更されません。

例5-102 OLAPセッションの言語を変更せずにNLS_LANGUAGEを変更する方法

例4-9では、NLS_LANGUAGEの値を変更することによりOLAPセッションの言語を変更する方法について説明しています。ここでは、NLS_LANGUAGEオプションの値を変更した場合でも、OLAPセッションの言語を変更しない方法について説明します。

アナリティック・ワークスペースが、NLS_LANGUAGEがAmericanに設定された状態でアタッチされているものとします。次のコード例では、STATIC_SESSION_LANGUAGEの値をYesに設定することで、NLS_LANGUAGEオプションの値をFrenchに変更しても、SESSION_NLS_LANGUAGEの値をAmericanに維持できており、これは、Oracle OLAPによって言語ディメンション(mylangs)がAmericanに制限されているということを意味します。

SHOW NLS_LANGUAGEFRENCH
AMERICAN
 
" Make the session language static
STATIC_SESSION_LANGUAGE = yes
 
"Change the value of NLS_LANGUAGE to FRENCH
SET NLS_LANGUAGE= 'FRENCH'
 
SHOW OBJ(PROPERTY '$DEFAULT_LANGUAGE' 'mylangs')
AMERICAN
SHOW NLS_LANGUAGE
FRENCH
SHOW SESSION_NLS_LANGUAGE
AMERICAN
SHOW LOCK_LANGUAGE_DIMS
oui
SHOW STATIC_SESSION_LANGUAGE
oui
 
REPORT mylangs
MYLANGS
--------------
AMERICAN
 
REPORT prod_desc
               ------PROD_DESC------
               ------PRODUCTS-------
MYLANGS          PROD01     PROD02
-------------- ---------- ----------
AMERICAN       Trousers   Skirts

THIS_AW

(読取り専用)THIS_AWオプションは、修飾オブジェクト名を作成するためにOracle OLAPがTHIS_AWキーワードの一致文字列を置換する際に使用する、ワークスペース名の値です。

データ型

TEXT

構文

THIS_AW

THOUSANDSCHAR

(読取り専用)THOUSANDSCHARオプションは、NLSオプションで説明されているNLS_NUMERIC_CHARACTERSオプションに指定された値になります。

注意:

THOUSANDSCHARの値は、出力でのOracle OLAPによる数値書式にのみ影響します。入力される数値の書式には影響を与えません。

データ型

ID

構文

THOUSANDSCHAR

例5-103 小数点と3桁区切りの表示

次の文では、DECIMALCHARおよびTHOUSANDSCHARの値が表示されます。次の文を発行するとします。

SHOW THOUSANDSCHAR 
SHOW DECIMALCHAR

THOUSANDSCHARの記号としてカンマが表示され、DECIMALCHARの記号としてピリオドが表示されるとします。この設定でSHOW TOTAL(sales)文を実行すると、出力は次のようになります。

63,181,743.50

TMARGIN

TMARGINオプションは、現行のページのヘッダーの上にある、出力ページの上部余白の空白行の数を定義するオプションです。すなわち、上部余白の行は、PAGEPRG(存在する場合)によって定義されるプログラムが実行される前に生成されます。

TMARGINは、PAGINGがYESに設定されている場合にのみ有効で、REPORTやDESCRIBEなどの文の出力に対してのみ適用されます。TMARGINオプションは通常、レポート・プログラムの初期化セクションで設定されます。

データ型

INTEGER

構文

TMARGIN = n

パラメータ

n

レポートの上部余白に割り当てる行数を指定するINTEGER式。デフォルト値は2です。

使用上の注意

ファイルに対するTMARGINの設定

あるファイルに対してTMARGINを設定するには、最初にOUTFILE文で現行の出力ファイルの名前を指定して対象のファイルを現行の出力ファイルにしてから、TMARGINを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力を別の出力ファイルに送信すると、TMARGINはそのファイルのデフォルト値2を返します。

TMARGINをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、デフォルトの出力ファイルに対してTMARGINの値が自動的に保存されます。

例5-104 レポートの上部余白の設定

この例では、長いレポートを生成する際に空白を省いて、狭い上部余白(1行)を設定します。レポート・プログラムの初期化セクションに次の文を含めます。

TMARGIN = 1

TRACEFILEUNIT

(読取り専用)TRACEFILEUNITオプションは、Oracleのトレース・ファイルのユニット番号を記録するオプションです。これは、Oracleセッションでのアクティビティに関する情報を収集する書込み可能な出力ファイルです。

構文

TRACEFILEUNIT

使用上の注意

TRACEFILEUNIT値の使用

OUTFILEやDBGOUTFILEのコマンドで、TRACEFILEUNITオプションに格納されたユニット番号を指定して、出力をOracleトレース・ファイルに送信できます。

例5-105 DBGOUTFILEによるOracleトレース・ファイルの指定

次のコードでは、DBGOUTFILEコマンドによりTRACEFILEUNITオプションの値を指定します。

DBGOUTFILE TRACEFILEUNIT 

TRIGGERMAXDEPTH

TRIGGERMAXDEPTHオプションは、Oracle OLAPが同時に実行可能な$NATRIGGERプロパティ式の最大数を指定するオプションです。

データ型

INTEGER

構文

TRIGGERMAXDEPTH = n

パラメータ

n

同時に実行可能な$NATRIGGERプロパティ式の最大数を指定するINTEGERの式。デフォルト値は50です。

使用上の注意

$NATRIGGERプロパティについて

TRIGGERMAXDEPTHオプションは、変数の$NATRIGGERプロパティとともに動作します。

再帰的トリガー

RECURSIVEオプションがYESに設定されていないかぎり、$NATRIGGER式の実行中にこの式で実行される計算式、プログラムまたはその他の$NATRIGGER式で、再帰的な$NATRIGGER式の実行はできません。TRIGGERMAXDEPTHオプションは、$NATRIGGER式の再帰の深さを制御し、Oracle OLAPが誤動作する可能性のある無限の再帰や過剰に深い再帰を防止します。

例5-106 トリガーの深さの最大値の設定

この例では、トリガーの深さの最大値を設定し、その最大値を超えた後、深さをより大きい値に設定します。通常、TRIGGERMAXDEPTHの値は、この例で使用する2よりもずっと大きい値です。デフォルト値は50です。

DEFINE d1 INTEGER DIMENSION
MAINTAIN d1 ADD 2
DEFINE v1 DECIMAL <d1>
PROPERTY '$NATRIGGER' 'v2 + 1'
DEFINE v2 DECIMAL <d1>
PROPERTY '$NATRIGGER' 'v3 + 1'
DEFINE v3 DECIMAL <d1>
PROPERTY '$NATRIGGER' 'v4 + 1'
DEFINE v4 DECIMAL <d1>
v4(d1 1) = 333.3
RECURSIVE = YES
TRIGGERMAXDEPTH = 2
SHOW v1
 

この文によって生成される出力は、次のとおりです。

ERROR: Depth of NA trigger calls exceeds allowable (maximum depth 2)

次の文を実行すると、トリガーの深さの最大値がより大きい値に設定され、変数の値が表示されます。

TRIGGERMAXDEPTH = 3
SHOW v1

この文によって生成される出力は、次のとおりです。

336.3

TRIGGERSTOREOK

TRIGGERSTOREOKオプションは、オブジェクト内のNA値を$NATRIGGERプロパティで指定した値と永続的に置き換えることを指定するために、$STORETRIGGERVALプロパティを使用できるかどうかを制御するオプションです。

注意:

TRIGGERSTOREOKオプションの値は、Oracle OLAPが$NATRIGGER式の実行結果である変数データの処理方法を決定するために使用する複数の要素の1つにすぎません。その他の要素やそれらの相互関係の詳細は、$NATRIGGERの結果を格納またはキャッシュするかどうかのOracle OLAPによる決定方法を参照してください。

データ型

BOOLEAN

構文

TRIGGERSTOREOK = {NO|YES}

パラメータ

NO

(デフォルト)NA値を、変数に対して設定された$NATRIGGERプロパティ式と永続的に置き換えません

YES

NA値を、変数に対して設定された$NATRIGGERプロパティ式と永続的に置き換えます。デフォルト値はNOです。

Oracle OLAPの場合、変数のNA値を、この変数に対して設定された有効な$NATRIGGERプロパティ式と永続的に置き換えるには、TRIGGERSTOREOKオプションと、この変数に対して設定された$STORETRIGGERVALプロパティの両方をYESに設定する必要があります。

使用上の注意

$NATRIGGERプロパティとSTORETRIGGERVALプロパティについて

TRIGGERSTOREOKオプションは、変数の$NATRIGGERプロパティおよび$STORETRIGGERVALプロパティとともに動作します。

例5-107 NA値の一時的な置換え

この例では、変数のセルに格納されたNA値を一時的に置き換えます。次の文では、3つの値を持つディメンションを定義し、このディメンションによってディメンション化される変数を定義します。次に、$NATRIGGERプロパティを変数に追加して、値を変数の1つのセルに含め、他のセルを空のままにしてそれらの値をNAにします。最後に、変数のセルの値をレポートします。

DEFINE d1 INTEGER DIMENSION
MAINTAIN d1 ADD 3
DEFINE v1 DECIMAL <d1>
PROPERTY '$NATRIGGER' '500.0'
v1(d1 1) = 333.3
 
REPORT v1

この文によって生成される出力は、次のとおりです。

D1            V1
--------- ----------
        1     333.30
        2     500.00
        3     500.00

この文では、v1変数から$NATRIGGERプロパティを削除します。

CONSIDER v1
PROPERTY DELETE '$NATRIGGER'
REPORT v1

この文によって生成される出力は、次のとおりです。

D1            V1
--------- ----------
        1     333.30
        2         NA
        3         NA

例5-108 NA値の永続的な置換え

次の文では、$NATRIGGERプロパティを、前の例で定義したv1変数に追加し、TRIGGERSTOREOKオプションと$STORETRIGGERVALプロパティをYESに設定します。次に、変数のセルの値をレポートします。

CONSIDER v1
PROPERTY '$NATRIGGER' '800.0'
TRIGGERSTOREOK = YES
PROPERTY 'STORETRIGGERVAL' YES
REPORT v1

この文によって生成される出力は、次のとおりです。

D1                 V1
-------------- ----------
             1     333.30
             2     800.00
             3     800.00

次の文では、v1変数から$NATRIGGERプロパティを削除し、この変数のセルの値をレポートします。

CONSIDER v1
PROPERTY DELETE '$NATRIGGER'
REPORT v1

この文によって生成される出力は、次のとおりです。

D1                 V1
-------------- ----------
             1     333.30
             2     800.00
             3     800.00

USERID

(読取り専用)USERIDオプションは、現行のOracle DatabaseセッションのユーザーIDを保持するオプションです。この値は、SYSINFO(USER)で返される値と同じです。

データ型

TEXT

構文

USERID

例5-109 セッション・ユーザーIDの表示

次の文を発行すると、現行のセッションに関連付けられているOracleユーザーIDが表示されます。

SHOW USERID 

USETRIGGERS

USETRIGGERSオプションは、トリガー・プログラムをトリガーとして実行するかどうかを指定するオプションです。

ヒント:

Oracle OLAPは再帰的トリガーをサポートしません。USETRIGGERSオプションをNOに設定してから、トリガー・プログラム自体をトリガーするトリガー・プログラムの内部で同じDML文を発行してください。たとえば、TRIGGER_DEFINEプログラムを作成したとします。TRIGGER_DEFINEプログラムの内部で、USETRIGGERSオプションをNOに設定してからDEFINE文を発行する必要があります。

関連項目:

トリガー・プログラム

データ型

BOOLEAN

構文

USETRIGGERS = {NO|YES}

パラメータ

YES

(デフォルト)トリガー・プログラムが実行されます。

NO

トリガー・プログラムは実行されません

例5-110 USETRIGGERSのNOへの変更

新しいアナリティック・ワークスペースを作成した直後であるとします。次の文に示すように、USETRIGGERSオプションのデフォルト値はYESですが、このオプションはいつでもNOに設定できます。

SHOW USETRIGGERS
yes
 

USETRIGGERS = NO
SHOW USETRIGGERS
no

VARCACHE

VARCACHEオプションは、AGGREGATEファンクションまたは$NATRIGGERプロパティ式の実行結果である変数データを、Oracle OLAPがすべて格納またはキャッシュするかどうかを指定するオプションです。

注意:

VARCACHEオプションの値は、AGGREGATEファンクションまたは$NATRIGGERプロパティの実行時に計算された変数データを格納またはキャッシュするかどうかをOracle OLAPが判断するために使用する要素の1つにすぎません。その他の要素やそれらの相互関係の詳細は、$NATRIGGERの結果を格納またはキャッシュするかどうかのOracle OLAPによる決定方法および集計データを格納またはキャッシュするかどうかのOracle OLAPによる決定方法を参照してください。

構文

VARCACHE = {VARIABLE | SESSION | NONE}

パラメータ

VARIABLE

Oracle OLAPがデータベースの変数にデータを格納することを指定します。このオプションを指定した場合は、アナリティック・ワークスペースを更新してコミットすると、計算結果が変数に永続的に格納されます。

SESSION

Oracle OLAPが計算済のデータをセッション・キャッシュにキャッシュすることを指定します(Oracle OLAPセッション・キャッシュの概要を参照)。このオプションを指定すると、計算結果が更新およびコミット中に無視され、セッション後に廃棄されます。

注意:

SESSCACHEがNOに設定されている場合、SESSIONを指定してもOracle OLAPはデータをキャッシュしません。この場合、SESSIONの指定は、NONEの指定と同じことになります。

NONE

AGGREGATEファンクションを使用して即時計算されたデータについては、AGGREGATEファンクションが実行されるたびにOracle OLAPがデータを計算するように指定します。Oracle OLAPは、AGGREGATEファンクションによって計算されたデータを格納またはキャッシュしません。

 

使用上の注意

すべての変数に影響するVARCACHEオプション

VARCACHEオプションを設定すると、その設定はすべての変数に影響します。変数に$VARCACHEプロパティを設定しておらず、データを即時計算するためにAGGREGATEファンクションとともに使用するaggmapにCACHE文が存在しない場合、データの格納方法や格納するかどうかを指定するオプションはVARCACHEオプションになります。

WEEKDAYSNEWYEAR

WEEKDAYSNEWYEARオプションは、WEEK型のディメンションの場合に、新しい年の日数が何日含まれていれば、新しい年の第1週として識別されるかを指定するオプションです。

デフォルトでは、ある特定の年の第1週は、新しい年が1日以上含まれる最初の週になります。たとえば、2000年1月1日は土曜日です。デフォルトを使用すると、この年の最初の週(W1.00)は、1999年12月26日の日曜日から2000年1月1日の土曜日までの期間になります。

WEEKDAYSNEWYEARを使用すると、特定の年の第1週に必要な日数を指定できます。WEEKDAYSNEWYEARを使用して、ある年の最初の週に含まれる必要がある日数を2日以上と指定すると、1999年12月26日の日曜日から2000年1月1日の土曜日までの週は1999年の最後の週(W53.99)になり、1月2日から8日までの週が2000年の最初の週(W1.00)になります。

データ型

INTEGER

構文

WEEKDAYSNEWYEAR = days

パラメータ

days

特定の年の第1週に必要な日数を示す範囲が1から7までのINTEGER式。daysのデフォルト値は1です。

WEEKDAYSNEWYEARの影響

次の文を実行すると、複数の週と週ごとに関連付けられている最終日のリストが現行の出力ファイルに送られます。

DEFINE week DIMENSION WEEK
MAINTAIN week ADD '12 18 99' '1 15 00'
weekdaysnewyear = 2
REPORT W 22 CONVERT(week date)

これらの文によって生成される出力は次のとおりです。

WEEK             CONVERT(WEEK DATE)
-------------- --------------------
W51.99         18DEC99
W52.99         25DEC99
W53.99         01JAN00
W1.00          08JAN00
W2.00          15JAN00

2000年1月1日は土曜日のため、WEEKDAYSNEWYEARを2に設定すると、1月2日から8日までの週がW1.00と表示されます。

WRAPERRORS

WRAPERRORSオプションは、Oracle OLAPが長いエラー・メッセージを表示する際、1行の長さを72文字にして複数行で表示するかどうかを指定するオプションです。

データ型

BOOLEAN

構文

WRAPERRORS = NO | YES

パラメータ

NO

エラー・メッセージを折り返しません。(デフォルト)

YES

エラー・メッセージを折り返します。72文字ごとに改行が挿入されます。

使用上の注意

Oracle OLAP 10.2でのデフォルトの動作の変更

Oracle OLAPの10.2より前のリリースでは、長いエラー・メッセージは常に折り返されます。

YESSPELL

(読取り専用)YESSPELLオプションは、OLAP DML文の出力に存在するTRUEブール値に使用されるテキストを保持するオプションです。

YESSPELLオプションの値は、NLS_LANGUAGEオプションで指定した現行の言語で「yes」に対応する語です。たとえば、NLS_LANGUAGEをAmericanに設定すると、YESSPELLの値はYESになります。NLS_LANGUAGEをSpanishに設定すると、YESSPELLの値はSIになります。

データ型

TEXT

構文

YESSPELL

例5-111 YESSPELL値の影響の確認

現行の値がYESであるBOOLVARという変数があるとします。NLS_LANGUAGEオプションで指定した言語で「yes」に対応する語が「si」の場合、

SHOW boolvar

によって、次の出力が生成されます。

si

YRABSTART

YRABSTARTオプションは、2桁の略称を使用して読取りや表示が実行される年に関連付けられた特定の100年の期間を指定するオプションです。

データ型

INTEGER

構文

YRABSTART = year

パラメータ

year

100年の期間の開始年を示す4桁のINTEGER式。範囲が1000から9999までの任意の値を指定できます。ただし、yearに9900を超える値を指定した場合、9999より後の年に対応する2桁の年の値の読取りまたは表示を要求すると、戻り値はNAになります。デフォルト値は1950のため、YRABSTARTを使用して別の範囲を設定しないかぎり、2桁の年の略称は1950から2049までの範囲として解釈されます。

例5-112 デフォルト値の使用

次の文を実行すると日付書式が指定され、出力が現行の出力ファイルに送られます。

DATEFORMAT = '<Mtextl> <d>, <yyyy>'
SHOW MAKEDATE(96 9 13)

これらの文によって生成される出力は次のとおりです。

September 13, 1996

例5-113 日付に対する100年の期間の設定

次の文を実行すると2000年から2099年までの100年の期間が設定され、出力が現行の出力ファイルに送られます。

YRABSTART = 2000
SHOW MAKEDATE(96 9 13)

これらの文によって生成される出力は次のとおりです。

September 13, 2096

ZEROROW

ZEROROWオプションは、REPORTおよびROWコマンドによって生成される出力に関して、数値がすべてNAまたはゼロであるか、ゼロと表示されるレポート行を非表示にするオプションです。レポートに0.004などの小さい値がある場合、表示される小数点以下の桁数は、ZEROROWが該当の数値をゼロとして処理するかどうかに影響します。合計欄のあるレポートを生成する場合は、数値が非表示の場合でも、合計を計算するために実際の数値が使用されます。

データ型

BOOLEAN

構文

ZEROROW = {YES|NO}

パラメータ

YES

すべての数値がゼロまたはNAと表示される場合、数値を格納しているレポート行を非表示にします。

NO

(デフォルト)レポート行に格納されている値にかかわらず、すべてのレポート行を表示します。

使用上の注意

数値以外のデータ

TEXT、ID、BOOLEAN値などの数値以外のデータが数値とともにレポート行に格納されている場合でも、ZEROROWの設定がYESで、すべての数値がゼロまたはNAと表示される場合、このレポート行は非表示になります。

NASPELLおよびZSPELLの影響

NASPELLの値は、ZEROROWによるNA値の処理方法には影響しません。ZSPELLの値はZEROROWの機能には影響せず、数値としてのゼロ値は、出力での表記にかかわらずゼロとして処理されます。

例5-114 データがすべてゼロのレポート行の非表示

売上を予測するために計算結果を格納するworstcaseという変数があり、この変数は、divisionmonthおよびlineによってディメンション化されているとします。結果のレポートを生成するときに、ステータスにおけるすべての月で最悪の場合の予測値がゼロになる行を非表示にします。次の文に示すとおり、ZEROROWをYESに設定します。

ZEROROW = YES
LIMIT line TO 'Revenue'
LIMIT month TO 'Nov95' TO 'Feb96'
REPORT WIDTH 8 DOWN division ACROSS month: worstcase

この文によって生成されるレポートは次のとおりです。

LINE: REVENUE
         -----------------WORSTCASE-----------------
         -------------------MONTH-------------------
DIVISION   Nov95      Dec95      Jan96      Feb96
-------- ---------- ---------- ---------- ----------
Camping        0.00       0.00  45,500.00  47,400.00
Sporting       0.00       0.00  29,200.00  28,400.00
Clothing       0.00       0.00  15,200.00  14,900.00

このレポートでは、各部門ともいくつかの月に売上予測の数値が存在するため、非表示になっている行はありません。ただし、このレポートを縦方向がmonthで横方向がdivisionというレイアウトにすると、Nov95Dec95の売上予測がないため、これらの月の行は非表示になります。

REPORT DOWN month ACROSS division: worstcase

この文によって生成されるレポートは、次のとおりです。

LINE: REVENUE
               -----------WORSTCASE------------
               ------------DIVISION------------
MONTH           Camping    Sporting   Clothing
-------------- ---------- ---------- ----------
Jan96           45,500.00  29,200.00  15,200.00
Feb96           47,400.00  28,400.00  14,900.00

ZSPELL

ZSPELLオプションは、HEADING、REPORTおよびROWコマンドによって生成された出力で、数値としてのゼロを表示するために使用するデフォルトのテキストを保持するオプションです。

データ型

TEXT

構文

ZSPELL = {'text'|'OFF'}

パラメータ

text

数値としてのゼロ値のデフォルトの表記。テキスト・リテラルではなく式を指定する場合は、一重引用符を省略できます。

OFF

(デフォルト)数値としてのゼロ値ごとに、適切な小数点以下の桁数(DECIMAL属性で指定)を持つゼロ(0)の値を表示します。

使用上の注意

ゼロ値の代入

ZSPELLは出力にのみ影響し、ゼロ値の代入方法には影響しません。たとえば、ZSPELLをNONEに設定した場合でも、次のとおり、ゼロ値を代入します。

var1 = 0

小数点以下の表示

デフォルトのOFFの意味は、DECIMAL属性によって示される小数点以下の桁数を持つ0(ゼロ)としてゼロ値を表示するということです(たとえば、0.00)。ZSPELLをテキスト文字の0に設定すると、DECIMALの指定内容にかかわらず、ゼロ値は小数点以下のない0として表示されます。

ゼロに近い値に対するZSPELLの影響

出力に0.004などの小さい値がある場合、表示される小数点以下の桁数は、ZSPELLが数値をゼロとして処理するかどうかに影響します。例5-116を参照してください。

例5-115 ゼロ値のNONE表示

この例では、DECIMALの変数testvarのゼロ値がレポート出力でNONEと表示されるように、ZSPELLの値を変更します。ZSPELLをデフォルト値のOFFに設定して、Oracle OLAP文

testvar = 0.00
ROW testvar

によって、次の出力が生成されます。

          0.00

これに対し、次のOLAP DML文

ZSPELL = 'NONE'
ROW testvar

によって、次の出力が生成されます。

          NONE

例5-116 非常に小さい数の表示

この例は、出力における小数点以下の桁数の表示方法が、ZSPELLが非常に小さい数をゼロとして処理するかどうかに影響することを示します。ZSPELLをデフォルト値のOFFに設定した場合、次のOLAP DML文

ZSPELL = 'OFF'
testvar = 0.004
ROW DECIMAL 3 testvar

によって、次の出力が生成されます。

          0.004

次の文では、ZSPELLをNONEに設定し、出力の小数点以下を2桁に指定します。

ZSPELL = 'NONE'
ROW DECIMAL 2 testvar

これらの文によって生成される出力は次のとおりです。

          NONE

ZSPELLをNONEに設定したままの状態で、次の文を発行すると、出力の小数点以下が3桁に指定されます。

ROW DECIMAL 3 testvar

この文によって生成される出力は、次のとおりです。

          0.004