履歴検索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で検索範囲を指定する際、検索対象の履歴と検索キーとなる日時の関係は以下のとおりです。

表7.2 検索キーとなる日時

検索対象の履歴

検索キーとなる日時

配信履歴

配信終了日時

集信履歴

集信終了日時

要求受付履歴

依頼受付日時

スケジュール履歴

実行終了日時

<使用例>

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;
}