EssListCalcFunctions

アクティブなアプリケーションで使用可能なすべての計算関数をリストします。これにはすべてのネイティブ関数と、カスタム定義関数(CDF)およびカスタム定義マクロ(CDM)が含まれます。

構文

            ESS_FUNC_M EssListCalcFunctions (
            hCtx, pCalcFunc
            );
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

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

pCalcFunc

ESS_PSTR_T

使用可能な計算関数を含む文字列へのポインタ。この文字列はXML形式です。

備考

この関数を使用するには、(通常は管理者に付与される)スーパーバイザ権限が必要です。ユーザーがこのリストを入手するためには、データベースへのアクセス権も必要です。エラーを避けるため、この関数を呼び出すプログラムの実行にはスーパーバイザ権限とデータベースへのアクセス権の両方が必要です。

EssGetCalcListによって戻される文字列のコンテンツはXMLでフォーマットされ、XMLユーティリティでレンダリングするか、構文解析によって実際のテキストのみ表示する必要があります。すべてのXMLタグは山カッコで囲まれています(たとえば、<xml_tag>)。

典型的なXML出力ファイルを短縮した例:

            ESSBASE API v.62000
1051034: Logging in user admin
1051035: Last login on Tuesday, May 22, 2001 10:31:19 AM
<list>
<group name="Boolean">
  <function>
    <name><![CDATA[@ISACCTYPE]]
            ></name>
    <syntax>
       <![CDATA[@ISACCTYPE(tag)]]
            >
    </syntax>
    <comment>
       <![CDATA[returns TRUE if the current member has the associated accounts tag]]
            >
    </comment>
  </function>
</group>
<group name="Relationship Functions">
  <function>
    <name><![CDATA[@ANCESTVAL]]
            ></name>
    <syntax>
       <![CDATA[@ANCESTVAL (dimName, genLevNum [, mbrName])]]
            >
    </syntax>
    <comment>
       <![CDATA[returns the ancestor values of a specified member combination]]
            >
    </comment>
</group>
<group name="Custom">
</group>

</list>
         

戻り値

正常終了の場合は0が戻され、失敗した場合はエラー・コードが戻されます。

         #include <iostream.h>
#include <fstream.h>
#include "windows.h"
#include "essbase.h"
#include "essapi.h"
#include "essotl.h"
#include "stdio.h"

/* globals - handles to different ESS objects */

ESS_HINST_T     hInst = 0;              
ESS_HCTX_T      hCtx = 0;

ESS_APPNAME_T      szAppName;
ESS_DBNAME_T       szDbName;

ESS_HOUTLINE_T  hOutline = 0;

/* end globals */

/* forward declarations of functions */
void apiInit();
void apiTerm();

ESS_STS_T apiAutoLogin();
ESS_STS_T apiLogout();
/* end forward declarations */

ESS_FUNC_M      MessageHandler (ESS_PVOID_T     UserContext,     /* user context pointer */
                                ESS_LONG_T      MessageNumber,   /* Essbase message number */
                                ESS_USHORT_T    Level,           /* message level */
                                ESS_STR_T       LogString,       /* message log string */
                                ESS_STR_T       MessageString    /* message string */)
{
   printf( "%d: %s\n", MessageNumber, MessageString );
   return 0;
}

void apiInit()
{
   ESS_STS_T    sts;
   ESS_INIT_T InitStruct = {
      ESS_API_VERSION,
      NULL,
      0L,
      255,
      NULL,
      NULL,
      NULL,
      NULL,
      NULL,
      (ESS_PFUNC_T)MessageHandler,
      NULL,
      0L
   };  
   
   printf( "ESSBASE API v.%x\n", ESS_API_VERSION );
   
   if ((sts = EssInit(&InitStruct, &hInst)) != ESS_STS_NOERR)
   {
      printf( "API init failure: %d\n", sts);
      exit(1);
   }
   
}    

ESS_STS_T apiAutoLogin ()
{
   ESS_CHAR_T SvrName[ESS_SVRNAMELEN];  
   ESS_CHAR_T UserName[ESS_USERNAMELEN];
   ESS_CHAR_T Password[ESS_PASSWORDLEN];
   
   ESS_USHORT_T   Option;
   ESS_ACCESS_T   Access ;
   
   /* Initialize parameters */
   strcpy(SvrName,"localhost");
   strcpy(UserName, "");
   strcpy(Password, "");
   strcpy(szAppName, "");
   strcpy(szDbName, "");
   
   Option = AUTO_DEFAULT;
   
   /* Login to Essbase Server */
   return EssAutoLogin (hInst, SvrName, UserName, Password,
      szAppName, szDbName, Option, &Access, &hCtx);
   
}   

void apiTerm()
{     
   ESS_STS_T sts = ESS_STS_NOERR;
   
   if ( hCtx )
      sts = apiLogout();
   
   if ( !sts && hInst )
      sts = EssTerm(hInst);
   
   if ( sts )
   {
      printf( "API shutdown failure: %d\n", sts );
      exit(1);
   }
}

ESS_STS_T apiLogout()
{
   return EssLogout(hCtx);
}

int main(int argc, char **argv)
{
   ESS_STS_T       status;
   ESS_STR_T       pszCalcFunctionList;
   
   apiInit();
   
   status = apiAutoLogin();
   if ( status )
      return 1;
   
   status = EssListCalcFunctions( hCtx, &pszCalcFunctionList );
   if ( status )
      return 1;
   
   printf( "%s\n", pszCalcFunctionList );
   
   apiTerm();
   
   return 0;
}
      

関連トピック

  • EssGetFilterList