この関数は、計算スクリプトが実行されるクライアントへのインタフェースとして実装されます。この関数は、指定された計算スクリプトのSET RUNTIMESUBVARS計算コマンドにおけるランタイム代替変数の宣言で指定済のすべての情報(名前、値および説明)を取得します。ランタイム代替変数の宣言に<RTSV_HINT>rtsv_description</RTSV_HINT>タグが含まれている場合(rtsv_descriptionは、ランタイム代替変数のデータ型とデータ入力制限を表す文字列)、ランタイムでユーザーに値の入力を求めるために、または計算スクリプトに値が渡される前に入力データを検証するために、この文字列を使用できます。
構文
ESS_FUNC_M EssGetRuntimeSubVars (
hCtx
,
hSrcCtx
AppName
,
DbName
,
FileName
,
pulRtSVCount
,
pRtSVList
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
hSrcCtx |
ESS_HCTX_T |
計算スクリプト・ファイルの場所のAPIコンテキスト・ハンドル。計算スクリプト・ファイルは、クライアント・コンピュータ上またはターゲット・データベースと同じEssbaseサーバー上に存在することができます。 |
AppName |
ESS_STR_T |
アプリケーション名。 |
DbName |
ESS_STR_T |
アプリケーションのデータベースの名前。 |
CalcScript |
ESS_STR_T |
計算スクリプト・ファイルの名前または計算文字列。 この引数は、bClientCalcFile引数とともに使用されます。 |
bClientCalcFile |
ESS_BOOL_T |
CalcScript引数がクライアント側の計算スクリプト・ファイルを参照するか(TRUE)、計算文字列を参照するか(FALSE)を示すフラグ。 計算スクリプト・ファイルがEssbaseサーバー上にある場合、この引数は無視されます。 |
pulRtSVCount |
ESS_ULONG_T |
計算スクリプトのランタイム代替変数構造体(キー/値ペア)のカウントを取得するための変数のアドレス。 |
pRtSVList |
ESS_RUNTIMESUBVARS_DESC_T |
計算スクリプトのランタイム代替変数構造体のリスト(配列)。各構造体には、ランタイム代替変数のキー/値ペアが含まれます。オプションで、ランタイム代替変数のデータ型とデータ入力制限(たとえば、100以下の整数)を表す<RTSV_HINT>rtsv_description</RTSV_HINT>タグの文字列を各構造体で指定できます。 APIは内部的に配列を割当て、API呼出し元はメモリーを解放します。 |
戻り値
なし。
アクセス
この関数を呼び出すには、アクティブなデータベースに対して読取り権限(ESS_PRIV_READ)を持っている必要があります。
例
void Ess_GetRuntimeSubVars(ESS_HINST_T hInst, ESS_HCTX_T hCtx)
{
ESS_STS_T sts;
ESS_STR_T AppName = "Sample";
ESS_STR_T DbName = "Basic";
ESS_STR_T FileName = "D:\\temp\\testrt.csc"; //Client side calc file
//ESS_STR_T FileName = "SET RUNTIMESUBVARS { myCOGS; myProduct = 333; myMarket = <RTSV_HINT> myMarket is an initialized Runtime Substitution Variables </RTSV_HINT>; myCity= \"Sunnyvale\", \"Santa Clara\", \"San Jose\" <RTSV_HINT> list of non-numeric values </RTSV_HINT>; myCOGS; myProduct = 333; product = 100 <RTSV_HINT> initialize to string 100 </RTSV_HINT>; baseProduct = @LEVMBRS(\"Product\",0) <RTSV_HINT> list of members</RTSV_HINT>; myCOGS; myProduct = 333; mySales = 777 <RTSV_HINT> uninitialized; mySales should be specified during runtime if there is no substitution variable mySales set at Essbase level</RTSV_HINT>; myCOGS;myProduct = 333;mySal;};FIX (\"100-10\", \"New York\") COGS=&mySV; Sales = &mySales; ENDFIX;" ; // Client side calc string
//ESS_STR_T FileName = "testrt"; \\ server side calc file
ESS_BOOL_T Calculate = TRUE;
ESS_ULONG_T i;
ESS_ULONG_T* pulRTParamsCount = NULL;
ESS_RUNTIMESUBVARS_DESC_T* pRTParamList = NULL;
ESS_RUNTIMESUBVARS_DESC_T** ppRTParamList = NULL;
ESS_RUNTIMESUBVARS_DESC_T* pRTParams = NULL;
ESS_STS_T status;
ESS_PROCSTATE_T pState;
ESS_HCTX_T hLocalCtx = ESS_INVALID_HCTX;
sts = EssCreateLocalContext (hInst, ESS_NULL, ESS_NULL, &hLocalCtx);
status = EssAlloc(hInst, sizeof(ESS_ULONG_T), (ESS_PPVOID_T)&pulRTParamsCount);
memset(pulRTParamsCount, 0, sizeof(ESS_ULONG_T));
ppRTParamList= &pRTParamList;
//For server side calc file
sts = EssGetRuntimeSubVars(hCtx, hCtx, AppName, DbName, FileName, FALSE, pulRTParamsCount, ppRTParamList);
//For client side calc file
sts = EssGetRuntimeSubVars(hCtx, hLocalCtx, NULL, NULL, FileName, TRUE, pulRTParamsCount, ppRTParamList);
//For client side calc strings
sts = EssGetRuntimeSubVars(hCtx, hLocalCtx, NULL, NULL, FileName, FALSE, pulRTParamsCount, ppRTParamList);
pRTParams = &pRTParamList[0];
for (i=0; i < *pulRTParamsCount; i++)
{
printf("***** information for Runtime Parameter - %d *****\n", i+1);
printf(" Param Name - %s \n", (pRTParams+i)->rtsvName);
printf(" Param Value - %s \n", (pRTParams+i)->rtsvVal);
printf(" RTP_HINT - %s \n", (pRTParams+i)->rtsvDesc);
printf("\n");
}
if(sts)
printf("API could not be executed.");
if (pulRTParamsCount)
EssFree(hInst, pulRTParamsCount);
return(status);
}
関連トピック