ライブラリの使用方法

JP1/FTP APIライブラリは,JP1/FTPのファイル伝送機能をユーザプログラムから利用するときに使用します。

JP1/FTP APIライブラリを使用して,次のことができます。

関数を使用するための前提条件

JP1/FTPが提供する関数を使用するために必要なものを次に示します。

環境設定

SERVICESの設定

JP1/FTP Clientのサービス名「ftsc」を設定します。詳しくは,「2.2.2 ポート番号を設定する」を参照してください。

HOSTSの設定

クライアント側のJP1/FTPが動作しているホストのホスト名とIPアドレスを設定します。このホスト名はfts_ftp_open()の第1引数,伝送情報構造体で指定します。

OSのインストールディレクトリ¥system32¥drivers¥etc¥HOSTSに次の1行を追加してください。

xxx.xxx.xxx.xxx      yyyyyy

(凡例)
xxx.xxx.xxx.xxx:IPアドレス
yyyyyy:ホスト名

コーディング

伝送情報の指定

ファイル伝送要求の登録は,fts_ftp_syn_request_ex(),fts_ftp_asyn_request_ex()の引数に登録済みの伝送カード名や伝送情報構造体のアドレスを設定します。

typedef struct _FTS_FTP_API_DATA_EX {
   char cardname[20+1];
   char host[256+1];
   unsigned int portnum;
   char username[50+1];
   char password[50+1];
   int type;
   int cmd;
   int mode;
   char quote[300+1];
   char localname[260+1];
   char remotename[260+1];
   char end_program[260+1];
   char abend_program[260+1];
   char comment[80+1];
   int fsize;
   char reserve[1240];     /*予約領域*/
} FTS_FTP_API_DATA_EX;

cardname   :カード名称を指定します。
host       :FTPのホスト名を指定します。ftp>open aaaa
portnum    :FTPのポート番号を指定します。ftp>open aaaa bbbb
username   :ログイン名を指定します。ftp>user aaaa
password   :パスワードを指定します。
type       :伝送モードを指定します。
                FTS_TYPE_A     データをASCIIコードと解釈し,送信します。
                    ftp>ascii
                FTS_TYPE_I      データをイメージと解釈し,送信します。
                    ftp>binary
cmd        :伝送の種類を指定します。
           単/複伝送をORで指定することで,単一ファイル伝送または
           複数ファイル伝送を組み合わせて指定できます。
           ただし,この指定は受信の場合だけ有効です。
           伝送の種類
                FTS_CMD_SEND  送信します。 ftp>put aaaa bbbb
                FTS_CMD_RECV  受信します。 ftp>get cccc ddddd
                FTS_CMD_APPE  送信(追加)します。 ftp>append eeee fffff
           単/複伝送
                FTS_MLT_AUTO   単一ファイル伝送と複数ファイル伝送を
                               自動で切り替えます。デフォルトです。
                FTS_MLT_MULTIPLE  複数ファイル伝送をします。
                FTS_MLT_SINGLE    単一ファイル伝送をします。
           FTS_MLT_AUTOでは,次のように伝送が自動切り替えされます。
                送信の場合:ローカルファイル名に,*または?が使用されている
                           か判定し,*または?が使用されていれば複数ファイ
                           ル伝送に,使用されていなければ単一ファイル伝送
                           に切り替わります。
                受信の場合:リモートファイル名に,*または?が使用されている
                           か判定し,*または?が使用されていれば複数ファイ
                           ル伝送に,使用されていなければ単一ファイル伝送
                           に切り替わります。
           (例)
           単一ファイルの受信
           cmd = FTS_CMD_RECV | FTS_MLT_SINGLE;
mode       :圧縮伝送の指定します。
                FTS_MODE_S  圧縮伝送をしません。
                FTS_MODE_C  圧縮伝送をします。
quote      :実行したいFTPコマンドを指定します。
                CWD,SITEなどのコマンドをセミコロン(';')で
                区切った文字列(文字列の最後は'¥0')
localname  :ローカルファイル名を指定します。
                (例)ftp>put aaaa bbbb
                     ftp>get cccc dddd
remotename :リモートファイル名を指定します。
                (例)ftp>put aaaa bbbb
                     ftp>get cccc dddd
end_program  :伝送正常終了時に起動するプログラム名をフルパスで指定します。
abend_program:伝送異常終了時に起動するプログラム名をフルパスで指定します。
comment      :任意の文字列を指定できます。
fsize        :伝送後のファイルサイズ確認の有無を指定します。
                FTS_FSIZE_TRUE  サイズ確認をします。
                FTS_FSIZE_FALSE  サイズ確認をしません。

注意事項
char型の変数値の最後は,「¥0」にしてください。

伝送終了情報の取得

fts_ftp_syn_request_ex(),fts_ftp_asyn_request_ex()で登録した伝送要求に対する終了情報を取得できます。

typedef struct _FTS_FTP_API_RETDATA_EX {
 /* 常時のデータ */
 int trans_status;          /* 伝送終了状態 成功(TRANS_SUCCESS) */
                            /* 伝送終了情報 失敗(TRANS_FAILURE) */
 char cardname[20+1];       /* カード名称 */
 unsigned long trno;        /* 伝送番号 */
 unsigned long trcno;       /* 接続番号 */

 /* 伝送成功時のデータ */
 unsigned long trans_size;  /* 伝送データサイズ */

 /* 伝送(圧縮)成功時のデータ */
 unsigned long trans_size_comp; /* 圧縮後伝送データサイズ */

 /* 失敗時のデータ */
 int ab_kind;               /* システムコールエラー(FTS_ERR_SYSTEM) */
                            /* 論理エラー(FTS_ERR_LOGIC) */
                            /* プロトコルエラー(FTS_ERR_PROTOCOL) */
 char ab_place[8];          /* エラー発生場所 */
 char ab_func[32];          /* エラー発生モジュール名称 */
 char ab_system[32];        /* システムコール名称 */
 int ab_syskind;            /* システムコール種別 */
                            /* Win32 API(FTS_SYSKIND_WIN32) */
                            /* C runtime(FTS_SYSKIND_CRUNTIME) */
                            /* WinSock API(FTS_SYSKIND_WINSOCK) */
 unsigned long ab_errno;    /* エラー番号 */
 char ab_promes[256];       /* プロトコルメッセージ(エラー) */

 /* 4ギガバイトを超えた伝送成功時のデータ */
 DWORD trans_size_Low;      /* 伝送データサイズ(下位32ビットの値)*/
 LONG trans_size_High;      /* 伝送データサイズ(上位32ビットの値)*/

 /* 4ギガバイトを超えた伝送(圧縮)成功時のデータ */
 DWORD trans_size_comp_Low;
                         /* 圧縮後伝送データサイズ(上位32ビットの値)*/
 LONG trans_size_comp_High;
                         /* 圧縮後伝送データサイズ(下位32ビットの値)*/

 char reserve[1668];     /* 予約領域 */
} FTS_FTP_API_RETDATA_EX;

typedef struct _FTS_FTP_API_RETDATA_EX {
 /* 常時のデータ */
 int trans_status;          /* 伝送終了状態 成功(TRANS_SUCCESS) */
                            /* 伝送終了情報 失敗(TRANS_FAILURE) */
 char cardname[20+1];       /* カード名称 */
 unsigned long trno;        /* 伝送番号 */
 unsigned long trcno;       /* 接続番号 */

 /* 伝送成功時のデータ */
 __int64 trans_size;        /* 伝送データサイズ */

 /* 伝送(圧縮)成功時のデータ */
 __int64 trans_size_comp;   /* 圧縮後伝送データサイズ */

 /* 失敗時のデータ */
 int ab_kind;               /* システムコールエラー(FTS_ERR_SYSTEM) */
                            /* 論理エラー(FTS_ERR_LOGIC) */
                            /* プロトコルエラー(FTS_ERR_PROTOCOL) */
 char ab_place[8];          /* エラー発生場所 */
 char ab_func[32];          /* エラー発生モジュール名称 */
 char ab_system[32];        /* システムコール名称 */
 int ab_syskind;            /* システムコール種別 */
                            /* Win32 API(FTS_SYSKIND_WIN32) */
                            /* C runtime(FTS_SYSKIND_CRUNTIME) */
                            /* WinSock API(FTS_SYSKIND_WINSOCK) */
 unsigned long ab_errno;    /* エラー番号 */
 char ab_promes[256];       /* プロトコルメッセージ(エラー) */
 char reserve[1684];        /* 予約領域 */
} FTS_FTP_API_RETDATA_EX;

 trans_status       :伝送の終了状態を示す次の値を返します。
                          TRANS_SUCCESS(正常終了)
                          TRANS_FAILURE(異常終了)
 cardname           :伝送のカード名称を返します。
 trno               :伝送番号を返します。
 trcno              :接続番号を返します。
 trans_size         :(正常終了時だけ)
                          伝送データサイズ
 trans_size_comp    :(正常終了時だけ)
                          伝送データサイズ(圧縮)
 ab_kind            :(異常終了時だけ)
                          エラー種別を返します。
                          FTS_ERR_SYSTEM(システムコールエラー)
                          FTS_ERR_LOGIC(論理エラー)
                          FTS_ERR_PROTOCOL(プロトコルエラー)
 ab_place             :(異常終了時だけ)
                          エラー発生場所を返します。
 ab_func              :(異常終了時だけ)
                          エラー発生モジュール名称を返します。
 ab_system            :(異常終了時だけ)
                          システムコール名称を返します。
 ab_syskind           :(異常終了時だけ)
                          システムコール種別を返します。
                          FTS_SYSKIND_WIN32(Win32 API)
                          FTS_SYSKIND_CRUNTIME(C runtime)
                          FTS_SYSKIND_WINSOCK(WinSock API)
 ab_errno             :(異常終了時だけ)
                          システムコールエラー番号を返します。
 ab_promes            :(異常終了時だけ)
                          FTPサーバより送られてきたプロトコルメッセージを
                          返します。
 trans_size_Low       :(正常終了時だけ)
                          伝送データサイズの下位32ビットの値を返します。
 trans_size_High      :(正常終了時だけ)
                          伝送データサイズの上位32ビットの値を返します。
 trans_size_comp_Low  :(正常終了時だけ)
                          圧縮後の伝送データサイズの下位32ビットの値を返
                          します。
 trans_size_comp_High :(正常終了時だけ)
                          圧縮後の伝送データサイズの上位32ビットの値を返
                          します。

リンク

ライブラリの関数を使用したプログラムを作成する場合は,FTSFTP.LIBをリンクしてください。

ライブラリ使用時の注意事項