EssGetRuntimeSubVars

この関数は、計算スクリプトが実行されるクライアントへのインタフェースとして実装されます。この関数は、指定された計算スクリプトの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);
}
      

関連トピック