# 履歴検索API

HULFT配信履歴、集信履歴、または要求受付履歴から、検索条件にあった情報を検索するAPIです。

履歴ファイルのフォーマットの詳細は、「履歴ファイルのフォーマット」を参照してください。

## 構文

    int     hulrlog( char type, char status, char readmode,char *version,
                   char *fileID,char *hostname,char search,char *startdate,
                   char *starttime,char *enddate,char *endtime,char *data,
                   int maxnum, int *matchnum )

注意

API呼び出し用ライブラリは、HULFT実行モジュール格納ディレクトリー下の“api”ディレクトリーに、「libhulapi.a」というファイル（ライブラリ）名で格納されています。

API呼び出しを行うモジュールはコンパイルされている必要があります。

なお、コンパイルオプションについては、ご利用のコンパイラ・リンカ付属のマニュアルを参照してください。

## パラメーター説明

char type（IN）

  検索する履歴の種別を指定

  S

    : 配信履歴

  R

    : 集信履歴

  O

    : 要求受付履歴

char status（IN）

  ステータス区分を指定

  A

    : すべての履歴を対象

  N

    : 正常終了した履歴のみを対象

  E

    : 異常が起きた履歴のみを対象

char readmode （IN）

  検索順序を指定

  N

    : 古い履歴順に検索

  R

    : 新しい履歴順に検索

char *version（IN）

  出力したい履歴フォーマットのHULFTのバージョン情報を指定

  以下のいずれかを指定します。

  - V07L00

  - V08L00

  - V08L01

  - V08L04

char *fileID（IN）

  検索したいファイルID、またはサービス名を指定

  50バイト以内の文字列で指定します。

  省略する場合は、先頭1バイトの値を“0x00”とするか、パラメーターにNULLポインタを設定します。

char *hostname（IN）

  検索したいホスト名を指定

  68バイト以内の文字列で指定します。

  省略する場合は、先頭1バイトの値を“0x00”とするか、パラメーターにNULLポインタを設定します。

char search（IN）

  将来の使用のための予約領域

  必ず“E”を指定してください。

char *startdate（IN）

  検索範囲の開始日付を指定

  8バイトの文字列で指定します。「YYYYMMDD」などの形式で指定します。指定する形式は、システム動作環境設定の日付形式（datefmt）の設定に合わせてください。詳細は、以下を参照してください。

  HULFT10 for Linux/AIX アドミニストレーション マニュアル : グローバル関連設定

  省略する場合は、先頭1バイトの値を“0x00”とするか、パラメーターにNULLポインタを設定します。

char *starttime（IN）

  検索範囲の開始時刻を指定

  6バイトの文字列で指定します。形式はHHMMSSです。

  開始日付を省略した場合、指定できません。

  省略する場合は、先頭1バイトの値を“0x00”とするか、パラメーターにNULLポインタを設定します。

char *enddate（IN）

  検索範囲の終了日付を指定

  8バイトの文字列で指定します。「YYYYMMDD」などの形式で指定します。指定する形式は、システム動作環境設定の日付形式（datefmt）の設定に合わせてください。詳細は、以下を参照してください。

  HULFT10 for Linux/AIX アドミニストレーション マニュアル : グローバル関連設定

  省略する場合は、先頭1バイトの値を“0x00”とするか、パラメーターにNULLポインタを設定します。

char *endtime（IN）

  検索範囲の終了時刻を指定

  6バイトの文字列で指定します。形式はHHMMSSです。終了日付を省略した場合、指定できません。

  省略する場合は、先頭1バイトの値を“0x00”とするか、パラメーターにNULLポインタを設定します。

char *data（IN/OUT）

  検索結果格納バッファを指すポインタを指定

  バッファはhulrlog()を呼び出す前に、最大検索件数×（レコード長＋1）分確保しておかなければなりません。

  取得した情報の各種日付は、システム動作環境設定の日付形式（datefmt）の設定の形式に変換され、履歴ファイルフォーマットのイメージでバッファに格納されています。

  複数件取得した場合は、セパレータ（0x0a）で区切られています。

  履歴ファイルフォーマット、レコード長の詳細は「APIで出力する履歴ファイルのフォーマット」を参照してください。

int maxnum（IN）

  最大検索件数を指定

  1以上を指定します。

int *matchnum（OUT）

  検索したレコード数を格納するバッファを指すポインタを指定

## 戻り値

0

  : 検索正常終了

1

  : 検索正常残りあり

2

  : 該当情報なし

3

  : パラメーターエラー

4

  : 履歴ファイルアクセスエラー

5

  : メモリーエラー

99

  : システムエラー

## 注意事項

startdate、starttime、enddate、endtimeで検索範囲を指定する際、検索対象の履歴と検索キーとなる日時の関係は以下のとおりです。

表7.1 検索キーとなる日時

検索対象の履歴 | 検索キーとなる日時
--- | ---
配信履歴 | 配信終了日時
集信履歴 | 集信終了日時
要求受付履歴 | 依頼受付日時

## 使用例

- C言語から使用する場合

      void hulrlog_proc(){

         /* 変数定義 */
              char    type;
              char    status;
              char    readmode;
              char    *version;
              char    *fileID;
              char    *hostname;
              char    search;
              char    *startdate;
              char    *starttime;
              char    *enddate;
              char    *endtime;
              char    data[(3879+1)*10]; /* 配信履歴の1レコード長
                                            ×最大検索のバッファの確保 */
              int     maxnum;
              int     matchnum;
              int     Status;

              Status = 0;                       /* ステータスの初期化      */
              type = 'S';                       /* 履歴種別(配信履歴)    */
              status = 'E';                     /* 異常終了した履歴を取得  */
              readmode = 'R';                   /* 新しい履歴順に検索      */
              version = "V08L04";               /* 履歴フォーマットのバージョン  */
              fileID = "SEND000123456789";      /* ファイルIDの指定       */
              hostname = "host0001";            /* ホスト名の指定          */
              search = 'E';                     /* 予約領域                */
              startdate = "20180801";           /* 検索範囲の起点となる開始日付 */
              starttime = "120000";             /* 検索範囲の起点となる開始時刻 */
              enddate = "20180831";             /* 検索範囲の終点となる終点日付 */
              endtime = "120000";               /* 検索範囲の終点となる終点時刻 */
              maxnum = 10;                      /* 最大検索件数            */

              memset( data, 0, sizeof( data ) ); /* バッファdataの初期化 */

         /* 履歴検索の開始 */
              Status=hulrlog( type,status,readmode,version,fileID,hostname,
                search,startdate,starttime,enddate,endtime,data,maxnum,&matchnum);
              if ( Status > 0 ) {
                    printf( "エラーが発生しました(ステータス = %d)\n", Status );
              }else{
                    printf( "%d件検索しました。\n", matchnum);
              }
              return;
      }