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