アクティブなアプリケーションで使用可能なすべての計算関数をリストします。これにはすべてのネイティブ関数と、カスタム定義関数(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; }
関連トピック