EssCalcFileWithRuntimeSubVars

指定したランタイム代替変数のアクティブ・データベースに対して、計算スクリプトを実行します。ランタイム代替変数は、拡張子が.rsvのテキスト・ファイル内で(このファイルはクライアント・コンピュータに存在する必要があります)、またはキー/値ペアの文字列として指定できます。

構文

            ESS_FUNC_M EssCalcFileWithRuntimeSubVars (
            hDestCtx
            , 
            hSrcCtx
            , 
            AppName
            , 
            DbName
            , 
            FileName
            , 
            RtSV
            , 
            bRtSVFile
            , 
            Calculate
            );
         
パラメータデータ型説明

hDestCtx

ESS_HCTX_T

Essbaseサーバー上のターゲット・データベースのAPIコンテキスト・ハンドル

hSrcCtx

ESS_HCTX_T

計算スクリプト・ファイルの場所のAPIコンテキスト・ハンドル。計算スクリプト・ファイルは、クライアント・コンピュータ上またはターゲット・データベースと同じEssbaseサーバー上に存在することができます。

AppName

ESS_STR_T

計算スクリプト・ファイルに関連付けられているアプリケーションの名前

DbName

ESS_STR_T

計算スクリプト・ファイルに関連付けられているデータベースの名前

FileName

ESS_STR_T

計算スクリプト・ファイルの名前。計算スクリプト・ファイルは、ターゲット・データベースの場所と同じEssbaseサーバー上、またはクライアント・コンピュータ上に存在することができます。

RtSV

ESS_STR_T

次のオプションのいずれか:

  • ランタイム代替変数ファイルの名前とフル・パス(たとえば、C:\myRTSVfile.rsv)。これはクライアント・コンピュータ上に存在する必要があります。Essbaseは、Essbaseサーバー・コンピュータ上にあるランタイム代替変数ファイルをサポートしていません。

    ランタイム代替変数ファイルは、拡張子が.rsvのテキスト・ファイルとして作成する必要があります。ファイルの各行では、1つのランタイム代替変数をキー/値ペアとして定義し、セミコロンで終える必要があります。この.rsvファイルの例では、4つのランタイム代替変数の名前と値が指定されています(たとえば、"a"という名前のランタイム代替変数の値は100です):

                            a=100;
    b=200;
    c=@CHILDREN("100");
    d=@TODATE("DD/MM/YY","10/11/12");
                         
  • ランタイム代替変数のキー/値ペアの文字列。文字列は一重引用符で囲み、キー/値ペアはセミコロンで区切る必要があります。このランタイム代替変数文字列の例では、4つのランタイム代替変数の名前と値が指定されています(たとえば、"a"という名前のランタイム代替変数の値は100です):

                            'a=100;b=@CHILDREN("100");c="Actual"->"Final";d="New York";'
                         

この引数は、bRtSVFile引数とともに使用されます。

bRtSVFile

ESS_BOOL_T

RtSV引数がランタイム代替変数ファイルの名前とフル・パスを参照するか(TRUE)、ランタイム代替変数のキー/値ペアの文字列を参照するか(FALSE)を示すフラグ。

Calculate

ESS_BOOL_T

計算スクリプトの計算を制御します。TRUEの場合は、計算スクリプトが実行され、呼出しは非同期になります。

戻り値

なし。

アクセス

この関数を呼び出すには、アクティブ・データベースに対する計算権限(ESS_PRIV_CALC)が必要です。

         void Ess_CalcFileWithRuntimeSubVars(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   = "testrt"; \\ Server side calc script file. PLease provide this when using server side calc script file
   //ESS_STR_T FileName = "D:\\temp\\testrt.csc"; \\Client side calc script file.
   //ESS_STR_T Param = "D:\\temp\\temp1.rsv"; \\ Client side param file.
   ESS_STR_T Param      = "mySales=700"; \\ Client side param string.
   ESS_BOOL_T Calculate = TRUE;
   ESS_ACCESS_T     Access;

   ESS_PROCSTATE_T pState;

   ESS_HCTX_T      hLocalCtx = ESS_INVALID_HCTX;
   sts = EssCreateLocalContext (hInst, ESS_NULL, ESS_NULL, &hLocalCtx);
   
   //hLocalCtx = hCtx;
   //sts = EssSetActive (hCtx, AppName, DbName, &Access);

   //For calc file on server With Param String
   sts = EssCalcFileWithRuntimeSubVars(hCtx, hCtx, AppName, DbName, FileName, Param, FALSE, Calculate);

   //For Calc file on client With Param String 
   sts = EssCalcFileWithRuntimeSubVars(hCtx, hLocalCtx, NULL, NULL, FileName, Param, FALSE, Calculate);

   //For calc file on server With Param File
   sts = EssCalcFileWithRuntimeSubVars(hCtx, hCtx, AppName, DbName, FileName, Param, TRUE, Calculate);

   //For calc file on client With Param File
   sts = EssCalcFileWithRuntimeSubVars(hCtx, hLocalCtx, NULL, NULL, FileName, Param, TRUE, Calculate);

   if (!sts)
   {
      sts = EssGetProcessState (hCtx, &pState);
      while(!sts && (pState.State != 
             ESS_STATE_DONE))
      sts = EssGetProcessState (hCtx, &pState);
   }

   if(sts)
      printf("API could not be executed.");
}
      

関連トピック