# 送信要求API

送信要求または再送要求を発行するAPIです。

## 構文

    INT __stdcall   utlrecv( LPCSTR lpszFileID , LPCSTR lpszHostName ,
                    BOOL bResend , BOOL bNp , BOOL bSync , INT nWait );

## パラメーター説明

LPCSTR lpszFileID（IN）

  集信したいファイルIDを指定

  50バイト以内の文字列で指定します。省略する場合は“NULL”を指定します。

LPCSTR lpszHostName（IN）

  送信を依頼する相手ホスト名を指定

  68バイト以内の文字列で指定します。省略する場合は“NULL”を指定します。

  再送要求時（bResend=TRUE）の場合、必ず指定しなければなりません。

BOOL bResend（IN）

  再送要求フラグを指定

  TRUE

    : 再送要求を指定

  FALSE

    : 送信要求を指定

BOOL bNp（IN）

  チェックポイントフラグを指定

  送信要求（bResend=FALSE）の場合は、必ず“FALSE”を指定してください。

  TRUE

    : ファイルの先頭から再送要求を行う

  FALSE

    : チェックポイント再送要求を行う

BOOL bSync（IN）

  同期転送フラグを指定

  再送要求（bResend=TRUE）の場合は、同期転送指定はできません。

  TRUE

    : 同期転送する

  FALSE

    : 同期転送しない

INT nWait（IN）

  同期転送時の待ち時間を指定（秒）

  同期転送時に処理結果を受け取るために同期をとる時間を、“10”～“259200”の範囲で指定します。この時間に至ると、たとえ集信中であっても、処理を戻します。その場合、転送結果は戻りませんので注意してください。

  同期転送指定の場合（bSync=TRUE）のみ有効となります。同期転送しない場合（bSync=FALSE）は“0”を指定します。

  同期転送指定時に“0”を指定した場合、システム動作環境設定ファイルのソケットリードタイムアウトで設定された値を使用します。

## 注意事項

「lpszFileID」と「lpszHostName」が、ともに“NULL”の場合は、全ホストに対する再送要求を行います。

## 戻り値

正常時は「0」です。エラー時のステータスはutlrecv.exeのエラーコードと同様です。

詳細は、以下を参照してください。

HULFT10 for Windows エラーコード・メッセージ : 送信要求コマンド（utlrecv.exe）

## 使用例

### Visual C++から使用する場合

    #include <windows.h>
    #include <stdio.h>

    typedef INT (__stdcall *LPUTLRECV)(
        LPCSTR lpszFileID, LPCSTR lpszHostName, BOOL bResend,
        BOOL bNp, BOOL bSync, INT nWait);

    int main()
    {
        CHAR szFileID[50+1];
        CHAR szHostName[68+1];
        BOOL bResend;
        BOOL bNp;
        BOOL bSync;
        INT nWait;
        HMODULE hHulDll;
        HMODULE hApiDll;
        LPUTLRECV lpUtlrecv;
        INT nStatus;

        strcpy_s(szFileID, sizeof(szFileID), "TEST0001");
        strcpy_s(szHostName, sizeof(szHostName), "host0001");
        bResend = FALSE;
        bNp = FALSE;
        bSync = TRUE;
        nWait = 300;

        hApiDll = LoadLibraryEx("C:\\HULFT Family\\hulft10\\bin\\hulapi.dll", NULL,
        LOAD_WITH_ALTERED_SEARCH_PATH);
        if (hApiDll == NULL)
        {
            printf("Unable to load hulapi.dll."
                "(Error code = %lu)\n", GetLastError());
            FreeLibrary(hHulDll);
            return 2;
        }
        lpUtlrecv = (LPUTLRECV)GetProcAddress(hApiDll, "utlrecv");
        if (lpUtlrecv == NULL)
        {
            printf("Unable to retrieves the address of HULFT API."
                "(Error code=%lu)\n", GetLastError());
            FreeLibrary(hApiDll);
            FreeLibrary(hHulDll);
            return 3;
        }
        nStatus = lpUtlrecv(szFileID, szHostName, bResend, bNp, bSync, nWait);
        if (nStatus == 0)
        {
            printf("Terminated normally.\n");
        }
        else
        {
            printf("Error occurred when calling HULFT API."
                "(Returned value=%d)\n", nStatus);
        }
        FreeLibrary(hApiDll);
        FreeLibrary(hHulDll);
        return 0;
    }