EssPerformCustomCalcASO

集約ストレージ・データベース上でカスタム計算を実行または検証します。

構文

            ESS_FUNC_M EssPerformCustomCalcASO (
            hCtx, verifyOnly, errorList, calcStruct
            );
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

APIコンテキスト・ハンドル。

verifyOnly

ESS_BOOL_T

計算を実行せずに検証するかどうかを示すフラグ。ESS_TRUEに設定されている場合、計算は検証のみ行われます。ESS_FALSEに設定されている場合、計算は検証および実行されます。

errorList

ESS_PERF_ALLOC_ERROR_T**

カスタム計算に関するエラー情報を含むAPIによって移入されて戻されるエラー構造体のリンク・リストへのポインタ。この引数は0にできません。リンク・リストはクライアントによって解放される必要があります。

calcStruct

ESS_PERF_CUSTCALC_T*

クライアントが割り当てたカスタム計算構造体およびパラメータへのポインタ。

戻り値

正常終了の場合は0が戻され、それ以外はエラーが戻されます。

         void HandleErrors(ESS_HINST_T hInst, ESS_PERF_ALLOC_ERROR_T **pErrorList)
{
   if (pErrorList)
   {
      ESS_PERF_ALLOC_ERROR_T *errorList = *pErrorList;
      ESS_PERF_ALLOC_ERROR_T *nextError;

      while (errorList)
      {
         printf("Error number %ld occurred\n", errorList->messageNumber);
         if (errorList->argument != ESS_PERF_ALLOC_ARG_NA)
            printf("  in argument %d\n", errorList->argument);
         if (errorList->lineNumber)
            printf("  on line %ld\n", errorList->lineNumber);
         if (errorList->token[0] != '\0')
            printf("  on token %s\n", errorList->token);

         nextError = errorList->nextError;
         ESS_STS_T sts = EssFree (hInst, errorList);
         printf("\nEssFree sts for errorList %ld\n",sts);
         errorList = nextError;
      }

      *pErrorList = NULL;
   }
}

void ESS_GLCustomCalc()
{
   ESS_STS_T sts = ESS_STS_NOERR;
   ESS_BOOL_T verifyOnly;
   ESS_PERF_ALLOC_ERROR_T *errorList = ESS_NULL;
   ESS_PERF_CUSTCALC_T *calcStruct;

   sts = EssAlloc (hInst, sizeof(ESS_PERF_CUSTCALC_T), (ESS_PPVOID_T)&calcStruct);
   printf("EssAlloc sts for calcStruct: %ld\n", sts);

   sts = EssAlloc (hInst, sizeof(ESS_PERF_CUSTCALC_T), (ESS_PPVOID_T)&calcStruct);
   printf("EssAlloc sts: %ld\n", sts);

   verifyOnly = ESS_FALSE; 
   errorList = ESS_NULL;
   calcStruct->pov = "{[1120], [1130]}";
   calcStruct->script = "[Jan-96] := ([Feb-08], [041509GR PL2], [00], [[All Department Values]].[000]]], [0000],  [[All Product Values]].[000]]], [Actual], [Beginning Balance Dr], [BASE], [USD], [Total]);";
   calcStruct->target = "([041509GR PL2], [00], [[All Department Values]].[000]]], [0000],  [[All Product Values]].[000]]], [Actual], [BASE], [USD], [Total])";
   calcStruct->debitMember = "[Beginning Balance Dr]";
   calcStruct->creditMember = "[Beginning Balance Cr]";
   calcStruct->offset = "";
   calcStruct->sourceRegion = "{([Feb-08], [041509GR PL2], [00], [[All Department Values]].[000]]], [0000],  [[All Product Values]].[000]]], [Actual], [Beginning Balance Dr], [BASE], [USD], [Total])}";
   calcStruct->groupID = 0;
   calcStruct->ruleID = 0;

   sts = EssPerformCustomCalcAso(hCtx, verifyOnly, &errorList, calcStruct);
   printf("EssPerformCustomCalcAso sts: %ld\n",sts);

   HandleErrors(hInst, &errorList);

   if(calcStruct)
   {
      sts = EssFree (hInst, calcStruct);
      printf("EssFree sts for allocStruct %ld\n",sts);
   }
}