ページの先頭行へ戻る
Interstage List Works V10.4.0 帳票保管活用機能APIリファレンス(拡張パッケージ)
FUJITSU Software

B.1 サーバ機能APIサンプルプログラム

ここでは、以下の処理をするプログラムを説明します。

  1. 保管フォルダ内の帳票一覧を取得します。

  2. 取得した帳票名が「2000年度」で前方一致するかを比較します。

  3. 前方一致した場合、その帳票を削除します。


Windows版の場合
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include "lvsvapi.h"

typedef int (WINAPI* LPSTARTSVAPI)();
typedef int (WINAPI* LPENDSVAPI)(int);
typedef int (WINAPI* LPGETSERVERERRCODE)(int);
typedef int (WINAPI* LPGETSERVERERRMSG)(int, char*);
typedef int (WINAPI* LPSTARTKEEPFOLDER)(int, char*, int);
typedef int (WINAPI* LPENDKEEPFOLDER)(int, int);
typedef int (WINAPI* LPGETKEEPFOLDERCOUNT)(int, int, int*);
typedef int (WINAPI* LPGETKEEPFOLDERITEM)(int, int, int, LPKPFINFO);
typedef int (WINAPI* LPSTARTKEEPLIST)(int, char*);
typedef int (WINAPI* LPENDKEEPLIST)(int, int);
typedef int (WINAPI* LPGETKEEPLISTCOUNT)(int, int, int*);
typedef int (WINAPI* LPGETKEEPLISTITEM)(int, int, int, LPKPLINFO);
typedef int (WINAPI* LPDELETEKEEPFILE)(int, char*);
/******************************************************************************/
/*  1.機能概要                                                               */
/*    1) 保管フォルダの一覧を取得する。                                       */
/*    2) 保管フォルダ内の帳票一覧を取得する。                                 */
/*    3) 取得した帳票名が、「2000年度」で前方一致するか比較する。              */
/*        比較した結果、前方一致したら、その帳票を削除する。                  */
/******************************************************************************/
void main(int iArgc, char* cArgv[])
{
    HINSTANCE  hinSvAPi = NULL;
    int        iRetCode = 0 ;       /* 関数復帰値 */
    int        iLwSvApiH = 0;       /* サーバAPIハンドル */
    int        iLwSvKpFH = 0;       /* 保管フォルダ一覧ハンドル */
    int        iLwSvKpLH = 0;       /* 保管フォルダ帳票一覧ハンドル */
    int        iKpFCount = 0;       /* 保管フォルダ数 */
    KPFINFO    KpFInfo;             /* 保管フォルダ情報構造体 */
    LPKPFINFO  lpKpFInfo = &KpFInfo;
    KPLINFO    KpLInfo;             /* 帳票一覧情報構造体 */
    LPKPLINFO  lpKpLInfo = &KpLInfo;
    int        iKpLCount = 0;       /* 帳票一覧数 */
    int        ie_ErrCode = 0;      /* エラーコード */
    char       ce_ErrMsg[1024];     /* エラーメッセージ格納域 */
    int        iKpFIndex = 0;       /* フォルダカウンタ */
    int        iKpLIndex = 0;       /* 帳票カウンタ */
    int        iFindFlg = 0;        /* フラグ */
    char       ceDeleteFile[260+4]; /* 削除対象ファイル */

  /****************************************************************************/
  /* サーバAPI関数宣言                                                        */
  /****************************************************************************/
    int (WINAPI* fp_StartSvApi)();
    int (WINAPI* fp_EndSvApi)(int);
    int (WINAPI* fp_GetServerApiErrCode)(int);
    int (WINAPI* fp_GetServerApiErrMsg)(int, char*);
    int (WINAPI* fp_StartKeepFolder)(int, char*, int);
    int (WINAPI* fp_EndKeepFolder)(int, int);
    int (WINAPI* fp_GetKeepFolderCount)(int, int, int*);
    int (WINAPI* fp_GetKeepFolderItem)(int, int, int, LPKPFINFO);
    int (WINAPI* fp_StartKeepList)(int, char*);
    int (WINAPI* fp_EndKeepList)(int, int);
    int (WINAPI* fp_GetKeepListCount)(int, int, int*);
    int (WINAPI* fp_GetKeepListItem)(int, int, int, LPKPLINFO);
    int (WINAPI* fp_DeleteKeepFile)(int, char*);

  /****************************************************************************/
  /* 初期化処理                                                               */
  /****************************************************************************/
    memset(ceDeleteFile, 0, 260+4);

  /****************************************************************************/
  /* サーバAPIライブラリ(F5cwsapi.dll)のロード                                */
  /****************************************************************************/
    hinSvAPi = LoadLibrary("F5cwsapi.dll");
    if(hinSvAPi == NULL)
    {
        printf("ライブラリF5cwsapi.dllのロードに失敗しました。\n");
        goto EXIT;
    }

  /****************************************************************************/
  /* 関数アドレスを取得                                                       */
  /****************************************************************************/
    fp_StartSvApi = (LPSTARTSVAPI)GetProcAddress(hinSvAPi, "LW_StartServerApi");
    if(fp_StartSvApi == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_EndSvApi = (LPENDSVAPI)GetProcAddress(hinSvAPi, "LW_EndServerApi");
    if(fp_EndSvApi == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetServerApiErrCode = (LPGETSERVERERRCODE)GetProcAddress(hinSvAPi,"LW_GetServerApiErrCode");
    if(fp_GetServerApiErrCode == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetServerApiErrMsg = (LPGETSERVERERRMSG)GetProcAddress(hinSvAPi,"LW_GetServerApiErrMsg");
    if(fp_GetServerApiErrMsg == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_StartKeepFolder = (LPSTARTKEEPFOLDER)GetProcAddress(hinSvAPi,"LW_StartKeepFolder");
    if(fp_StartKeepFolder == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_EndKeepFolder = (LPENDKEEPFOLDER)GetProcAddress(hinSvAPi,"LW_EndKeepFolder");
    if(fp_EndKeepFolder == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetKeepFolderCount = (LPGETKEEPFOLDERCOUNT)GetProcAddress(hinSvAPi,"LW_GetKeepFolderCount");
    if(fp_GetKeepFolderCount == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetKeepFolderItem = (LPGETKEEPFOLDERITEM)GetProcAddress(hinSvAPi,"LW_GetKeepFolderItem");
    if(fp_GetKeepFolderItem == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_StartKeepList = (LPSTARTKEEPLIST)GetProcAddress(hinSvAPi,"LW_StartKeepList");
    if(fp_StartKeepList == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_EndKeepList = (LPENDKEEPLIST)GetProcAddress(hinSvAPi, "LW_EndKeepList");
    if(fp_EndKeepList == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetKeepListCount = (LPGETKEEPLISTCOUNT)GetProcAddress(hinSvAPi,"LW_GetKeepListCount");
    if(fp_GetKeepListCount == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetKeepListItem = (LPGETKEEPLISTITEM)GetProcAddress(hinSvAPi,"LW_GetKeepListItem");
    if(fp_GetKeepListItem == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_DeleteKeepFile = (LPDELETEKEEPFILE)GetProcAddress(hinSvAPi,"LW_DeleteKeepFile");
    if(fp_DeleteKeepFile == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }

  /****************************************************************************/
  /* サーバAPI開始                                                            */
  /****************************************************************************/
    iLwSvApiH = (*fp_StartSvApi)();
    if(iLwSvApiH == 0)
    {
        printf("サーバAPIの開始(LW_StartServerApi)に失敗しました。\n");
        goto EXIT;
    }

  /****************************************************************************/
  /* 保管フォルダ一覧開始                                                     */
  /****************************************************************************/
    iLwSvKpFH = (*fp_StartKeepFolder)(iLwSvApiH, NULL, 0);
    if(iLwSvKpFH == 0)
    {
        (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
        ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
        printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
        goto EXIT;
    }

  /****************************************************************************/
  /* 保管フォルダ数取得                                                       */
  /****************************************************************************/
    iRetCode = (*fp_GetKeepFolderCount)(iLwSvApiH, iLwSvKpFH, &iKpFCount);
    if(iRetCode != 0)
    {
        (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
        ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
        printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
        goto EXIT;
    }

  /****************************************************************************/
  /* 保管フォルダ数分ループする                                               */
  /****************************************************************************/
    for(iKpFIndex = 0; iKpFIndex < iKpFCount; iKpFIndex ++)
    {
      /************************************************************************/
      /* 保管フォルダ一覧情報を取得                                           */
      /************************************************************************/
        memset(lpKpFInfo, 0x00, sizeof(KPFINFO)); /* 初期化処理 */
        lpKpFInfo->usf_Length = sizeof(KPFINFO); /* 構造体サイズ */
        iRetCode = (*fp_GetKeepFolderItem)(iLwSvApiH, iLwSvKpFH, iKpFIndex,
        lpKpFInfo);
        if(iRetCode != 0)
        {
            (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
            ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
            printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
            goto EXIT;
        }

      /************************************************************************/
      /* 保管フォルダ内の帳票一覧開始                                         */
      /************************************************************************/
        iLwSvKpLH = (*fp_StartKeepList)(iLwSvApiH, lpKpFInfo->cf_PathName);
        if(iLwSvKpLH == 0)
        {
            (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
            ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
            printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
            continue;
        }

      /************************************************************************/
      /* 保管フォルダ内の帳票数取得                                           */
      /************************************************************************/
        iRetCode = (*fp_GetKeepListCount)(iLwSvApiH, iLwSvKpLH, &iKpLCount);
        if(iRetCode != 0)
        {
            (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
            ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
            printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
            goto EXIT;
        }

      /************************************************************************/
      /* 保管フォルダ内の帳票一覧数分ループする                               */
      /************************************************************************/
        for(iKpLIndex = 0; iKpLIndex < iKpLCount; iKpLIndex ++)
        {
          /********************************************************************/
          /* 保管フォルダ内の帳票一覧情報の取得                               */
          /********************************************************************/
            memset(lpKpLInfo, 0x00, sizeof(KPLINFO));           /* 初期化処理 */
            lpKpLInfo->usl_Length = sizeof(KPLINFO);          /* 構造体の長さ */
            iRetCode = (*fp_GetKeepListItem)(iLwSvApiH, iLwSvKpLH, iKpLIndex,
            lpKpLInfo);
            if(iRetCode != 0)
            {
                (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
                ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
                printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
                break;
            }

            /* 取得した帳票名が、"2000年度"か比較する */
            iRetCode = memcmp(lpKpLInfo->cl_Title, "2000年度", 8);
            if (iRetCode == 0)
            {
                 /* 帳票の論理パス名を取得する */
                 iFindFlg = 1;
                 memcpy(ceDeleteFile, lpKpLInfo->cl_SplFile,264);
                 break;
            }
        }

      /************************************************************************/
      /* 保管フォルダ内の帳票一覧終了                                         */
      /************************************************************************/
        if(iLwSvKpLH != 0)
        {
            (*fp_EndKeepList)(iLwSvApiH, iLwSvKpLH);
            iLwSvKpLH = 0;
        }

        /* 該当する帳票が見つかったため、ループ処理を抜ける */
        if (iFindFlg == 1)
            break;
    }

  /****************************************************************************/
  /* 保管フォルダ終了                                                         */
  /****************************************************************************/
    if(iLwSvKpFH != 0)
    {
        (*fp_EndKeepFolder)(iLwSvApiH, iLwSvKpFH);
        iLwSvKpFH = 0;
    }

  /****************************************************************************/
  /* 保管フォルダ内の帳票の削除                                               */
  /****************************************************************************/
    if (iFindFlg == 1)
    {
        iRetCode = (*fp_DeleteKeepFile)(iLwSvApiH, ceDeleteFile);
        if(iRetCode != 0)
        {
            (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
            ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
            printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
            goto EXIT;
        }
    }

  /****************************************************************************/
  /* 終了処理                                                                 */
  /****************************************************************************/
EXIT:
    if(iLwSvKpLH != 0)
        (*fp_EndKeepList)(iLwSvApiH, iLwSvKpLH);
    if(iLwSvKpFH != 0)
        (*fp_EndKeepFolder)(iLwSvApiH, iLwSvKpFH);
    if(iLwSvApiH != 0)
        (*fp_EndSvApi)(iLwSvApiH);
    FreeLibrary(hinSvAPi);
    return;
}

Solaris版の場合
#include <stdio.h>
#include <string.h>
#include <dlfcn.h>
#include "lvsvapi.h"

typedef int (*LPSTARTSVAPI)();
typedef int (*LPENDSVAPI)(int);
typedef int (*LPGETSERVERERRCODE)(int);
typedef int (*LPGETSERVERERRMSG)(int, char*);
typedef int (*LPSTARTKEEPFOLDER)(int, char*, int);
typedef int (*LPENDKEEPFOLDER)(int, int);
typedef int (*LPGETKEEPFOLDERCOUNT)(int, int, int*);
typedef int (*LPGETKEEPFOLDERITEM)(int, int, int, LPKPFINFO);
typedef int (*LPSTARTKEEPLIST)(int, char*);
typedef int (*LPENDKEEPLIST)(int, int);
typedef int (*LPGETKEEPLISTCOUNT)(int, int, int*);
typedef int (*LPGETKEEPLISTITEM)(int, int, int, LPKPLINFO);
typedef int (*LPDELETEKEEPFILE)(int, char*);

/******************************************************************************/
/*  1.機能概要                                                               */
/*    1) 保管フォルダの一覧を取得する。                                       */
/*    2) 保管フォルダ内の帳票一覧を取得する。                                 */
/*    3) 取得した帳票名が、「2000年度」で前方一致するか比較する。              */
/*        比較した結果、前方一致したら、その帳票を削除する。                  */
/******************************************************************************/
void main(int iArgc, char* cArgv[])
{
    void *hinSvAPi = NULL;
    int       iRetCode = 0;         /* 関数復帰値 */
    int       iLwSvApiH = 0;        /* サーバAPIハンドル */
    int       iLwSvKpFH = 0;        /* 保管フォルダ一覧ハンドル */
    int       iLwSvKpLH = 0;        /* 保管フォルダ帳票一覧ハンドル*/
    int       iKpFCount = 0;        /* 保管フォルダ数 */
    KPFINFO   KpFInfo;              /* 保管フォルダ情報構造体 */
    LPKPFINFO lpKpFInfo = &KpFInfo;
    KPLINFO   KpLInfo;              /* 帳票一覧情報構造体 */
    LPKPLINFO lpKpLInfo = &KpLInfo;
    int       iKpLCount = 0;        /* 帳票一覧数 */
    int       ie_ErrCode = 0;       /* エラーコード */
    char      ce_ErrMsg[1024];      /* エラーメッセージ格納域 */
    int       iKpFIndex = 0;        /* フォルダカウンタ */
    int       iKpLIndex = 0;        /* 帳票カウンタ */
    int       iFindFlg = 0;         /* フラグ */
    char      ceDeleteFile[260+4];  /* 削除対象ファイル */

  /****************************************************************************/
  /* サーバAPI関数宣言                                                        */
  /****************************************************************************/
    int (*fp_StartSvApi)();
    int (*fp_EndSvApi)(int);
    int (*fp_GetServerApiErrCode)(int);
    int (*fp_GetServerApiErrMsg)(int, char*);
    int (*fp_StartKeepFolder)(int, char*, int);
    int (*fp_EndKeepFolder)(int, int);
    int (*fp_GetKeepFolderCount)(int, int, int*);
    int (*fp_GetKeepFolderItem)(int, int, int, LPKPFINFO);
    int (*fp_StartKeepList)(int, char*);
    int (*fp_EndKeepList)(int, int);
    int (*fp_GetKeepListCount)(int, int, int*);
    int (*fp_GetKeepListItem)(int, int, int, LPKPLINFO);
    int (*fp_DeleteKeepFile)(int, char*);

  /****************************************************************************/
  /* 初期化処理                                                               */
  /****************************************************************************/
    memset(ceDeleteFile, 0, 260+4);

  /****************************************************************************/
  /* サーバAPIライブラリ(liblwapi.so)のロード                                 */
  /****************************************************************************/
    hinSvAPi = dlopen("/usr/lib/liblwapi.so", RTLD_LAZY);
    if(hinSvAPi == NULL)
    {
        printf("ライブラリliblwapi.soのロードに失敗しました。\n");
        goto EXIT;
    }

  /****************************************************************************/
  /* 関数アドレスを取得                                                       */
  /****************************************************************************/
    fp_StartSvApi = (LPSTARTSVAPI)dlsym(hinSvAPi, "LW_StartServerApi");
    if(fp_StartSvApi == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_EndSvApi = (LPENDSVAPI)dlsym(hinSvAPi, "LW_EndServerApi");
    if(fp_EndSvApi == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetServerApiErrCode = (LPGETSERVERERRCODE)dlsym(hinSvAPi,"LW_GetServerApiErrCode");
    if(fp_GetServerApiErrCode == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetServerApiErrMsg = (LPGETSERVERERRMSG)dlsym(hinSvAPi,"LW_GetServerApiErrMsg");
    if(fp_GetServerApiErrMsg == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_StartKeepFolder = (LPSTARTKEEPFOLDER)dlsym(hinSvAPi,"LW_StartKeepFolder");
    if(fp_StartKeepFolder == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_EndKeepFolder = (LPENDKEEPFOLDER)dlsym(hinSvAPi, "LW_EndKeepFolder");
    if(fp_EndKeepFolder == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetKeepFolderCount = (LPGETKEEPFOLDERCOUNT)dlsym(hinSvAPi,"LW_GetKeepFolderCount");
    if(fp_GetKeepFolderCount == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetKeepFolderItem = (LPGETKEEPFOLDERITEM)dlsym(hinSvAPi,"LW_GetKeepFolderItem");
    if(fp_GetKeepFolderItem == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_StartKeepList = (LPSTARTKEEPLIST)dlsym(hinSvAPi, "LW_StartKeepList");
    if(fp_StartKeepList == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_EndKeepList = (LPENDKEEPLIST)dlsym(hinSvAPi, "LW_EndKeepList");
    if(fp_EndKeepList == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetKeepListCount = (LPGETKEEPLISTCOUNT)dlsym(hinSvAPi,"LW_GetKeepListCount");
    if(fp_GetKeepListCount == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_GetKeepListItem = (LPGETKEEPLISTITEM)dlsym(hinSvAPi,"LW_GetKeepListItem");
    if(fp_GetKeepListItem == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }
    fp_DeleteKeepFile = (LPDELETEKEEPFILE)dlsym(hinSvAPi,"LW_DeleteKeepFile");
    if(fp_DeleteKeepFile == NULL)
    {
        printf("関数アドレスの取得に失敗しました。\n");
        goto EXIT;
    }

  /****************************************************************************/
  /* サーバAPI開始                                                            */
  /****************************************************************************/
    iLwSvApiH = (*fp_StartSvApi)();
    if(iLwSvApiH == 0)
    {
        printf("サーバAPIの開始(LW_StartServerApi)に失敗しました。\n");
        goto EXIT;
    }

  /****************************************************************************/
  /* 保管フォルダ一覧開始                                                     */
  /****************************************************************************/
    iLwSvKpFH = (*fp_StartKeepFolder)(iLwSvApiH, NULL, 0);
    if(iLwSvKpFH == 0)
    {
        (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
        ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
        printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
        goto EXIT;
    }

  /****************************************************************************/
  /* 保管フォルダ数取得                                                       */
  /****************************************************************************/
    iRetCode = (*fp_GetKeepFolderCount)(iLwSvApiH, iLwSvKpFH, &iKpFCount);
    if(iRetCode != 0)
    {
        (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
        ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
        printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
        goto EXIT;
    }

  /****************************************************************************/
  /* 保管フォルダ数分ループする                                               */
  /****************************************************************************/
    for(iKpFIndex = 0; iKpFIndex < iKpFCount; iKpFIndex ++)
    {
      /************************************************************************/
      /* 保管フォルダ一覧情報を取得                                           */
      /************************************************************************/
        memset(lpKpFInfo, 0, sizeof(KPFINFO));/* 初期化処理 */
        lpKpFInfo->usf_Length = sizeof(KPFINFO) ;/* 構造体サイズ */
        iRetCode = (*fp_GetKeepFolderItem)(iLwSvApiH, iLwSvKpFH,
        iKpFIndex, lpKpFInfo);
        if(iRetCode != 0)
        {
            (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
            ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
            printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
            goto EXIT;
        }

      /************************************************************************/
      /* 保管フォルダ内の帳票一覧開始                                         */
      /************************************************************************/
        iLwSvKpLH = (*fp_StartKeepList)(iLwSvApiH,
        lpKpFInfo->cf_PathName);
        if(iLwSvKpLH == 0)
        {
            (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
            ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
            printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
            continue;
        }

      /************************************************************************/
      /* 保管フォルダ内の帳票数取得                                           */
      /************************************************************************/
        iRetCode = (*fp_GetKeepListCount)(iLwSvApiH, iLwSvKpLH, &iKpLCount);
        if(iRetCode != 0)
        {
            (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
            ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
            printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
            goto EXIT;
        }

      /************************************************************************/
      /* 保管フォルダ内の帳票一覧数分ループする                               */
      /************************************************************************/
        for(iKpLIndex = 0; iKpLIndex < iKpLCount; iKpLIndex ++)
        {
          /********************************************************************/
          /* 保管フォルダ内の帳票一覧情報の取得                               */
          /********************************************************************/
            memset(lpKpLInfo, 0, sizeof(KPLINFO));/* 初期化処理 */
            lpKpLInfo->usl_Length = sizeof(KPLINFO); /* 構造体の長さ */
            iRetCode = (*fp_GetKeepListItem)(iLwSvApiH, iLwSvKpLH, iKpLIndex,
            lpKpLInfo);
            if(iRetCode != 0)
            {
                (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
                ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
                printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
                break;
            }

            /* 取得した帳票名が、"2000年度"か比較する */
            iRetCode = memcmp(lpKpLInfo->cl_Title, "2000年度", 8);
            if(iRetCode == 0)
            {
                /* 帳票の論理パス名を取得する */
                iFindFlg = 1;
                strcpy(ceDeleteFile, lpKpLInfo->cl_SplFile);
                break;
            }
        }

      /************************************************************************/
      /* 保管フォルダ内の帳票一覧終了                                         */
      /************************************************************************/
        if(iLwSvKpLH != 0)
        {
            (*fp_EndKeepList)(iLwSvApiH, iLwSvKpLH);
            iLwSvKpLH = 0;
        }

        /* 該当する帳票が見つかったため、ループ処理を抜ける */
        if(iFindFlg == 1)
        break;
    }

  /****************************************************************************/
  /* 保管フォルダ終了                                                         */
  /****************************************************************************/
    if(iLwSvKpFH != 0)
    {
        (*fp_EndKeepFolder)(iLwSvApiH, iLwSvKpFH);
        iLwSvKpFH = 0;
    }

  /****************************************************************************/
  /* 保管フォルダ内の帳票の削除(論理パス指定)                                 */
  /****************************************************************************/
    if(iFindFlg == 1)
    {
        iRetCode = (*fp_DeleteKeepFile)(iLwSvApiH, ceDeleteFile);
        if(iRetCode != 0)
        {
            (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
            ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
            printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
            goto EXIT;
        }
    }

  /****************************************************************************/
  /* 終了処理                                                                 */
  /****************************************************************************/
EXIT:
    if(iLwSvKpLH != 0)
        (*fp_EndKeepList)(iLwSvApiH, iLwSvKpLH);

    if(iLwSvKpFH != 0)
        (*fp_EndKeepFolder)(iLwSvApiH, iLwSvKpFH);

    if(iLwSvApiH != 0)
        (*fp_EndSvApi)(iLwSvApiH);

    dlclose(hinSvAPi);

    return;
}

Linux版の場合
#include <stdio.h>
#include <string.h>
#include <dlfcn.h>
#include "lvsvapi.h"

typedef LWAPIHANDLE (*LPSTARTSVAPIEX)(lw_charcode_t);
typedef void (*LPENDSVAPI)(LWAPIHANDLE);
typedef int (*LPGETSERVERERRCODE)(LWAPIHANDLE);
typedef void (*LPGETSERVERERRMSG)(LWAPIHANDLE, char*);
typedef LWFOLDERHANDLE (*LPSTARTKEEPFOLDER)(LWAPIHANDLE, char*, int);
typedef int (*LPENDKEEPFOLDER)(LWAPIHANDLE, LWFOLDERHANDLE);
typedef int (*LPGETKEEPFOLDERCOUNT)(LWAPIHANDLE, LWFOLDERHANDLE, int*);
typedef int (*LPGETKEEPFOLDERITEM)(LWAPIHANDLE, LWFOLDERHANDLE, int, LPKPFINFO);
typedef LWLISTHANDLE (*LPSTARTKEEPLIST)(LWAPIHANDLE, char*);
typedef int (*LPENDKEEPLIST)(LWAPIHANDLE, LWLISTHANDLE);
typedef int (*LPGETKEEPLISTCOUNT)(LWAPIHANDLE, LWLISTHANDLE, int*);
typedef int (*LPGETKEEPLISTITEM)(LWAPIHANDLE, LWLISTHANDLE, int, LPKPLINFO);
typedef int (*LPDELETEKEEPFILE)(LWAPIHANDLE, char*);

/***********************************************************************************/
/* 1.機能概要                                                                    */
/*   1)保管フォルダの一覧を取得する。                                            */
/*   2)保管フォルダ内の帳票一覧を取得する。                                      */
/*   3)取得した帳票名が、「2000年度」で前方一致するか比較する。                   */
/*       比較した結果、前方一致したら、その帳票を削除する。                        */
/***********************************************************************************/
int main(int iArgc, char* cArgv[])
{
    void           *hinSvAPi = NULL;
    int            iRetCode = 0;                   /* 関数復帰値                   */
    LWAPIHANDLE    iLwSvApiH = 0;                  /* サーバAPI ハンドル           */
    LWFOLDERHANDLE iLwSvKpFH = 0;                  /* 保管フォルダ一覧ハンドル     */
    LWLISTHANDLE   iLwSvKpLH = 0;                  /* 保管フォルダ帳票一覧ハンドル */
    lw_charcode_t  encode = LW_UTF8;               /* 入出力の文字列コード         */
    int            iKpFCount = 0;                  /* 保管フォルダ数               */
    KPFINFO        KpFInfo;                        /* 保管フォルダ情報構造体       */
    LPKPFINFO      lpKpFInfo = &KpFInfo;
    KPLINFO        KpLInfo;                        /* 帳票一覧情報構造体           */
    LPKPLINFO      lpKpLInfo = &KpLInfo;
    int            iKpLCount = 0;                  /* 帳票一覧数                   */
    int            ie_ErrCode = 0;                 /* エラーコード                 */
    char           ce_ErrMsg[1024];                /* エラーメッセージ格納域       */
    int            iKpFIndex = 0;                  /* フォルダカウンタ             */
    int            iKpLIndex = 0;                  /* 帳票カウンタ                 */
    int            iFindFlg = 0;                   /* フラグ                       */
    char           ceDeleteFile[LWSSAPI_PATHLEN];  /* 削除対象ファイル             */


    /**************************************************************************/
    /* サーバAPI 関数宣言                                                     */
    /**************************************************************************/
      LWAPIHANDLE (*fp_StartSvApiEx)(lw_charcode_t);
      void (*fp_EndSvApi)(LWAPIHANDLE);
      int (*fp_GetServerApiErrCode)(LWAPIHANDLE);
      void (*fp_GetServerApiErrMsg)(LWAPIHANDLE, char*);
      LWFOLDERHANDLE (*fp_StartKeepFolder)(LWAPIHANDLE, char*, int);
      int (*fp_EndKeepFolder)(LWAPIHANDLE, LWFOLDERHANDLE);
      int (*fp_GetKeepFolderCount)(LWAPIHANDLE, LWFOLDERHANDLE, int*);
      int (*fp_GetKeepFolderItem)(LWAPIHANDLE, LWFOLDERHANDLE, int, LPKPFINFO);
      LWLISTHANDLE (*fp_StartKeepList)(LWAPIHANDLE, char*);
      int (*fp_EndKeepList)(LWAPIHANDLE, LWLISTHANDLE);
      int (*fp_GetKeepListCount)(LWAPIHANDLE, LWLISTHANDLE, int*);
      int (*fp_GetKeepListItem)(LWAPIHANDLE, LWLISTHANDLE, int, LPKPLINFO);
      int (*fp_DeleteKeepFile)(LWAPIHANDLE, char*);


      /**************************************************************************/
      /* 初期化処理                                                             */
      /**************************************************************************/
        memset(ceDeleteFile, 0, sizeof(ceDeleteFile));

      /**************************************************************************/
      /* サーバAPI ライブラリ(liblwapi.so)のロード                            */
      /**************************************************************************/
        hinSvAPi = dlopen("/opt/FJSVlw-sv/lib/liblwapi.so", RTLD_LAZY);
        if(hinSvAPi == NULL)
        {
            printf("ライブラリliblwapi.so のロードに失敗しました。\n");
            goto EXIT;
        }


         /**************************************************************************/
         /* 関数アドレスを取得                                                     */
         /**************************************************************************/
          fp_StartSvApiEx = (LPSTARTSVAPIEX)dlsym(hinSvAPi, "LW_StartServerApiEx");
          if(fp_StartSvApiEx == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_EndSvApi = (LPENDSVAPI)dlsym(hinSvAPi, "LW_EndServerApi");
          if(fp_EndSvApi == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_GetServerApiErrCode
              = (LPGETSERVERERRCODE)dlsym(hinSvAPi, "LW_GetServerApiErrCode");
          if(fp_GetServerApiErrCode == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_GetServerApiErrMsg
              = (LPGETSERVERERRMSG)dlsym(hinSvAPi, "LW_GetServerApiErrMsg");
          if(fp_GetServerApiErrMsg == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_StartKeepFolder
              = (LPSTARTKEEPFOLDER)dlsym(hinSvAPi, "LW_StartKeepFolder");
          if(fp_StartKeepFolder == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_EndKeepFolder = (LPENDKEEPFOLDER)dlsym(hinSvAPi, "LW_EndKeepFolder");
          if(fp_EndKeepFolder == NULL)
          {
               printf("関数アドレスの取得に失敗しました。\n");
               goto EXIT;
          }
          fp_GetKeepFolderCount
              = (LPGETKEEPFOLDERCOUNT)dlsym(hinSvAPi, "LW_GetKeepFolderCount");
          if(fp_GetKeepFolderCount == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_GetKeepFolderItem
              = (LPGETKEEPFOLDERITEM)dlsym(hinSvAPi, "LW_GetKeepFolderItem");
          if(fp_GetKeepFolderItem == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_StartKeepList = (LPSTARTKEEPLIST)dlsym(hinSvAPi, "LW_StartKeepList");
          if(fp_StartKeepList == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_EndKeepList = (LPENDKEEPLIST)dlsym(hinSvAPi, "LW_EndKeepList");
          if(fp_EndKeepList == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_GetKeepListCount
              = (LPGETKEEPLISTCOUNT)dlsym(hinSvAPi, "LW_GetKeepListCount");
          if(fp_GetKeepListCount == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_GetKeepListItem
              = (LPGETKEEPLISTITEM)dlsym(hinSvAPi, "LW_GetKeepListItem");
          if(fp_GetKeepListItem == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }
          fp_DeleteKeepFile = (LPDELETEKEEPFILE)dlsym(hinSvAPi, "LW_DeleteKeepFile");
          if(fp_DeleteKeepFile == NULL)
          {
              printf("関数アドレスの取得に失敗しました。\n");
              goto EXIT;
          }


         /**************************************************************************/
         /* サーバAPI 開始                                                         */
         /**************************************************************************/
         iLwSvApiH = (*fp_StartSvApiEx)(encode);
         if(iLwSvApiH == 0)
         {
             printf("サーバAPI の開始(LW_StartServerApiEx)に失敗しました。\n");
             goto EXIT;
         }


         /**************************************************************************/
         /* 保管フォルダ一覧開始                                                   */
         /**************************************************************************/
          iLwSvKpFH = (*fp_StartKeepFolder)(iLwSvApiH, NULL, 0);
          if(iLwSvKpFH == 0)
          {
              (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
              ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
              printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
              goto EXIT;
          }


         /**************************************************************************/
         /* 保管フォルダ数取得                                                     */
         /**************************************************************************/
          iRetCode = (*fp_GetKeepFolderCount)(iLwSvApiH, iLwSvKpFH, &iKpFCount);
          if(iRetCode != 0)
          {
              (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
              ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
              printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
              goto EXIT;
          }


         /**************************************************************************/
         /* 保管フォルダ数分ループする                                             */
         /**************************************************************************/
           for(iKpFIndex = 0; iKpFIndex < iKpFCount; iKpFIndex ++)
           {

            /**********************************************************************/
            /* 保管フォルダ一覧情報を取得                                         */
            /**********************************************************************/
              memset(lpKpFInfo, 0, sizeof(KPFINFO));   /* 初期化処理              */
              lpKpFInfo->usf_Length = sizeof(KPFINFO); /* 構造体サイズ            */
              iRetCode
                = (*fp_GetKeepFolderItem)(iLwSvApiH, iLwSvKpFH, iKpFIndex, lpKpFInfo);
              if(iRetCode != 0)
              {
                  (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
                  ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
                  printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
                  goto EXIT;
              }


            /**********************************************************************/
            /* 保管フォルダ内の帳票一覧開始                                       */
            /**********************************************************************/
             iLwSvKpLH = (*fp_StartKeepList)(iLwSvApiH, lpKpFInfo->cf_PathName);
             if(iLwSvKpLH == 0)
             {
                 (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
                 ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
                 printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
                 continue;
             }


            /**********************************************************************/
            /* 保管フォルダ内の帳票数取得                                         */
            /**********************************************************************/
              iRetCode = (*fp_GetKeepListCount)(iLwSvApiH, iLwSvKpLH, &iKpLCount);
              if(iRetCode != 0)
              {
                  (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
                  ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
                  printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
                  goto EXIT;
              }


            /**********************************************************************/
            /* 保管フォルダ内の帳票一覧数分ループする                             */
            /**********************************************************************/
              for(iKpLIndex = 0; iKpLIndex < iKpLCount; iKpLIndex ++)
              {

                  /******************************************************************/
                  /* 保管フォルダ内の帳票一覧情報の取得                             */
                  /******************************************************************/
                    memset(lpKpLInfo, 0, sizeof(KPLINFO));   /* 初期化処理          */
                    lpKpLInfo->usl_Length = sizeof(KPLINFO); /* 構造体の長さ        */
                    iRetCode = (*fp_GetKeepListItem)(iLwSvApiH, iLwSvKpLH, iKpLIndex,
                                 lpKpLInfo);
                    if(iRetCode != 0)
                    {
                        (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
                        ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
                        printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
                        break;
                    }

                    /* 取得した帳票名が、"2000年度"か比較する                        */
                    iRetCode = memcmp(lpKpLInfo->cl_Title, "2000年度", 8);
                    if (iRetCode == 0)
                    {
                        /* 帳票のフルパス名を取得する */
                        iFindFlg = 1;
                        strcpy(ceDeleteFile, lpKpLInfo->cl_SplFile);
                        break;
                    }
                }

              /**********************************************************************/
              /* 保管フォルダ内の帳票一覧終了                                       */
              /**********************************************************************/
                if(iLwSvKpLH != 0)
                {
                    (*fp_EndKeepList)(iLwSvApiH, iLwSvKpLH);
                    iLwSvKpLH = 0;
                }

                /* 該当する帳票が見つかったため、ループ処理を抜ける */
                if (iFindFlg == 1)
                      break;
            }

        /**************************************************************************/
        /* 保管フォルダ終了                                                       */
        /**************************************************************************/
          if(iLwSvKpFH != 0)
          {
              (*fp_EndKeepFolder)(iLwSvApiH, iLwSvKpFH);
              iLwSvKpFH = 0;
          }


              /**************************************************************************/
              /* 保管フォルダ内の帳票の削除(フルパス指定)                             */
              /**************************************************************************/
               if (iFindFlg == 1)
               {
                   iRetCode = (*fp_DeleteKeepFile)(iLwSvApiH, ceDeleteFile);
                   if(iRetCode != 0)
                   {
                       (*fp_GetServerApiErrMsg)(iLwSvApiH, ce_ErrMsg);
                       ie_ErrCode = (*fp_GetServerApiErrCode)(iLwSvApiH);
                       printf("%s RC=%d", ce_ErrMsg, ie_ErrCode);
                       goto EXIT;
                   }
               }


    /******************************************************************************/
    /* 終了処理                                                                   */
    /******************************************************************************/
      EXIT:
         if(iLwSvKpLH != 0)
                   (*fp_EndKeepList)(iLwSvApiH, iLwSvKpLH);

         if(iLwSvKpFH != 0)
                   (*fp_EndKeepFolder)(iLwSvApiH, iLwSvKpFH);

         if(iLwSvApiH != 0)
                   (*fp_EndSvApi)(iLwSvApiH);

         dlclose(hinSvAPi);

         return 0;
}