履歴検索API
HULFT配信履歴、集信履歴、要求受付履歴、またはスケジュール履歴から、検索条件に一致した情報を検索するAPIです。
履歴ファイルのフォーマットの詳細は、「履歴ファイルのフォーマット」を参照してください。
構文
INT __stdcall hulrlog( CHAR cLogType , CHAR cStatus , CHAR cReadMode ,
LPCSTR lpszVersion , LPCSTR lpszFileID , LPCSTR lpszHostName ,
CHAR cSearch , LPCSTR lpStartDate , LPCSTR lpStartTime ,
LPCSTR lpEndDate , LPCSTR lpEndTime , LPSTR lpData ,
INT nMaxNum , INT* lpMatchNum );
パラメータ説明
- CHAR cLogType(IN)
-
検索する履歴の種別を指定
- S
-
: 配信履歴
- R
-
: 集信履歴
- O
-
: 要求受付履歴
- C
-
: スケジュール履歴
- CHAR cStatus(IN)
-
ステータス区分を指定
- A
-
: すべての履歴を対象
- N
-
: 正常終了した履歴のみを対象
- E
-
: 異常が起きた履歴のみを対象
- CHAR cReadMode(IN)
-
検索順序を指定
- N
-
: 古い履歴順に検索
- R
-
: 新しい履歴順に検索
- LPCSTR lpszVersion(IN)
-
出力したい履歴フォーマットのHULFTのバージョン情報を指定
以下のいずれかを指定します。
-
V06L00
-
V06L01
-
V06L03
-
V07L00
-
V08L00
-
V08L01
-
V08L04
-
- LPCSTR lpszFileID(IN)
-
検索したいファイルID、サービス名、またはスケジュールIDを指定
50バイト以内の文字列で指定します。
省略する場合は、先頭1バイトの値を“0x00”とするか、ポインタに“NULL”を設定します。
- LPCSTR lpszHostName(IN)
-
検索したいホスト名を指定
68バイト以内の文字列で指定します。
省略する場合は、先頭1バイトの値を“0x00”とするか、ポインタに“NULL”を設定します。
- CHAR cSearch(IN)
-
将来の使用のための予約領域
必ず“E”を指定してください。
- LPCSTR lpStartDate(IN)
-
検索範囲の開始日付を指定
8バイトの文字列で指定します。「YYYYMMDD」などの形式で指定します。指定する形式は、システム動作環境設定の日付形式(datefmt)の設定に合わせてください。詳細は、「アドミニストレーション マニュアル」を参照してください。
省略する場合は、先頭1バイトの値を“0x00”とするか、ポインタに“NULL”を指定します。
- LPCSTR lpStartTime(IN)
-
検索範囲の開始時刻を指定
6バイトの文字列で指定します。形式はHHMMSSです。
開始日付を省略した場合、指定できません。
省略する場合は、先頭1バイトの値を“0x00”とするか、ポインタに“NULL”を指定します。
- LPCSTR lpEndDate(IN)
-
検索範囲の終了日付を指定
8バイトの文字列で指定します。「YYYYMMDD」などの形式で指定します。指定する形式は、システム動作環境設定の日付形式(datefmt)の設定に合わせてください。詳細は、「アドミニストレーション マニュアル」を参照してください。
省略する場合は、先頭1バイトの値を“0x00”とするか、ポインタに“NULL”を指定します。
- LPCSTR lpEndTime(IN)
-
検索範囲の終了時刻を指定
6バイトの文字列で指定します。形式はHHMMSSです。終了日付を省略した場合、指定できません。
省略する場合は、先頭1バイトの値を“0x00”とするか、ポインタに“NULL”を指定します。
- LPSTR lpData(OUT)
-
検索結果格納バッファを指すポインタを指定
バッファはhulrlog()を呼び出す前に、最大検索件数×(レコード長+1)分確保しておかなければなりません。
取得した情報の各種日付は、システム動作環境設定の日付形式(datefmt)の設定の形式に変換され、履歴ファイルフォーマットのイメージでバッファに格納されています。
複数件取得した場合は、セパレータ(0x0a)で区切られています。
履歴の出力フォーマットは、「lpszVersion」に指定したバージョン情報によって異なります。各バージョンの履歴ファイルフォーマット、レコード長は「履歴ファイルのフォーマット」を参照してください。
- INT nMaxNum(IN)
-
最大検索件数を指定
1以上を指定します。
- INT* lpMatchNum(OUT)
-
検索したレコード数を格納するバッファを指すポインタを指定
戻り値
- 0
-
: 検索正常終了
- 1
-
: 検索正常残りあり
- 2
-
: 該当情報なし
- 3
-
: パラメータエラー
- 4
-
: 履歴ファイルアクセスエラー
- 5
-
: メモリエラー
- 6
-
: セキュリティエラー
- 7
-
: NULLポインタエラー
- 98
-
: 強制終了
- 99
-
: システムエラー
注意事項
lpStartDate、lpStartTime、lpEndDate、lpEndTimeで検索範囲を指定する際、検索対象の履歴と検索キーとなる日時の関係は以下のとおりです。
|
検索対象の履歴 |
検索キーとなる日時 |
|---|---|
|
配信履歴 |
配信終了日時 |
|
集信履歴 |
集信終了日時 |
|
要求受付履歴 |
依頼受付日時 |
|
スケジュール履歴 |
実行終了日時 |
<使用例>
Visual C++から使用する場合
#include <windows.h>
#include <stdio.h>
typedef INT(__stdcall *LPHULRLOG)(
CHAR cLogType, CHAR cStatus, CHAR cReadMode,
LPCSTR lpszVersion, LPCSTR lpszFileID,
LPCSTR lpszHostName, CHAR cSearch, LPCSTR lpStartDate,
LPCSTR lpStartTime, LPCSTR lpEndDate, LPCSTR lpEndTime,
LPSTR lpData, INT nMaxNum, INT *lpMatchNum);
int main()
{
CHAR cLogType;
CHAR cStatus;
CHAR cReadMode;
CHAR szVersion[6 + 1];
CHAR szFileID[50 + 1];
CHAR szHostName[68 + 1];
CHAR cSearch;
CHAR szStartDate[8 + 1];
CHAR szStartTime[8 + 1];
CHAR szEndDate[8 + 1];
CHAR szEndTime[8 + 1];
CHAR szData[(4862 + 1) * 10];
INT nMaxNum;
INT nMatchNum;
HMODULE hHulDll;
HMODULE hApiDll;
LPHULRLOG lpHulrlog;
INT nStatus;
cLogType = 'S';
cStatus = 'E';
cReadMode = 'R';
strcpy_s(szVersion, sizeof(szVersion), "V08L04");
strcpy_s(szFileID, sizeof(szFileID), "TEST0001");
strcpy_s(szHostName, sizeof(szHostName), "");
cSearch = 'E';
strcpy_s(szStartDate, sizeof(szStartDate), "20180801");
strcpy_s(szStartTime, sizeof(szStartTime), "120000");
strcpy_s(szEndDate, sizeof(szEndDate), "20180802");
strcpy_s(szEndTime, sizeof(szEndTime), "120000");
memset(szData, 0x00, sizeof(szData));
nMaxNum = 10;
nMatchNum = 0;
hHulDll = LoadLibrary("C:\\HULFT Family\\hulft8\\bin\\hulftrt.dll");
if (hHulDll == NULL) {
printf("Unable to load hulftrt.dll."
"(Error code = %lu)\n", GetLastError());
return 1;
}
hApiDll = LoadLibrary("C:\\HULFT Family\\hulft8\\bin\\hulapi.dll");
if (hApiDll == NULL) {
printf("Unable to load hulapi.dll."
"(Error code = %lu)\n", GetLastError());
FreeLibrary(hHulDll);
return 2;
}
lpHulrlog = (LPHULRLOG)GetProcAddress(hApiDll, "hulrlog");
if (lpHulrlog == NULL) {
printf("Unable to retrieves the address of HULFT API."
"(Error code = %lu)\n", GetLastError());
FreeLibrary(hApiDll);
FreeLibrary(hHulDll);
return 3;
}
nStatus = lpHulrlog(cLogType, cStatus, cReadMode, szVersion,
szFileID, szHostName, cSearch, szStartDate,
szStartTime, szEndDate, szEndTime,
szData, nMaxNum, &nMatchNum);
if (0 <= nStatus && nStatus <= 2) {
printf("%d number were searched.\n", nMatchNum);
} else {
printf("Error occurred when calling HULFT API."
"(Returned value = %d)\n", nStatus);
}
FreeLibrary(hApiDll);
FreeLibrary(hHulDll);
return 0;
}