Hitachi

For UNIX Systems Job Management Partner 1 Version 10 Job Management Partner 1/File Transmission Server/FTP Description, Reference and Operator's Guide


How to use the library

You use the JP1/FTP API library when you use the file transmission function of JP1/FTP from a user program.

The JP1/FTP API library enables you to do the following:

Organization of this page

Languages

The following languages are supported for user programs:

Setting up an environment

Setting /etc/services

Set the JP1/FTP client's service name as ftsc. For details, see 2.3.3 Setting the port numbers.

Setting /etc/hosts

Set the host name and IP address of the host on which the client's JP1/FTP daemon is running. Specify this host name in the connection information structure and the transmission information structure.

Add the following line to /etc/hosts:

xxx.xxx.xxx.xxx      yyyyyy
Legend:

xxx.xxx.xxx.xxx: IP address

yyyyyy: Host name

Coding

Specifying information for establishing a connection with JP1/FTP

To establish a connection with the JP1/FTP daemon, specify the address of the connection information structure in the argument of fts_ftp_open_ex().

  • Connection information structure

    typedef struct _FTS_FTP_API_CONN_DATA {
        char hostname[256];
        int priority;
    } FTS_FTP_API_CONN_DATA;
  • Content of the connection information structure members

    hostname

    Specifies the host name or IP address of the computer on which the client's JP1/FTP daemon is running. When you specify an IP address, you can specify an IPv4 or IPv6 address. If a null value is specified, the local host name (the physical host name returned by the OS's hostname command) is assumed.

    If specification of a local IP address at the FTP client is enabled, the value specified in this argument becomes the local IP address of the FTP client.

    If a null value is specified, the physical host of the FTP client is assumed.

    If specification of a local IP address at the FTP client is disabled, the local IP address of the FTP client is automatically assigned by the OS. For details about the definition that enables specification of a local IP address at the FTP client, see 3.15 Using JP1/FTP in a multiple IP address environment.

    priority

    Specifies the Internet protocol version to be given priority.

    FTS_AF_INET: IPv4 is given priority.

    FTS_AF_INET6: IPv6 is given priority.

    In all other cases, FTS_AF_INET is assumed,

Note

Make sure that a char-type variable value ends with \0.

Specifying the transmission information

To register a file transmission request, you set the registered transmission card name and the address of the transmission information structure in the arguments of fts_ftp_syn_request_ex() and fts_ftp_asyn_request_ex().

  • Using the card name to register transmission requests:

    You can register a transmission request by specifying a transmission card name registered using Registration And Execution Of Transmission Requests.

  • Using the transmission information structure to specify transmission information:

    You can register a transmission request by specifying the information needed for transmission.

  • Transmission information structure

    typedef struct _FTS_FTP_API_DATA_EX {
        char cardname[20+1];
        char host[256+1];
        unsigned int portnum;
        char username[80];
        char password[80];
        int type;
        int cmd;
        int mode;
        char quote[300+1];
        char localname[256+1];
        char remotename[256+1];
        char end_program[256+1];
        char abend_program[256+1];
        char comment[80+1];
        int fsize;
        char reserve[1240];
    } FTS_FTP_API_DATA_EX;
  • Description of the transmission information structure members

    cardname

    Specifies the card name.

    host

    Specifies the FTP host name: ftp>open aaaa

    portnum

    Specifies the FTP port number: ftp>open aaaa bbbb

    username

    Specifies the login name: ftp>user aaaa

    password

    Specifies the password.

    type

    Specifies the transmission mode:

    FTS_TYPE_A: Interprets data as being in ASCII code and then sends it (ftp>ascii).

    FTS_TYPE_I: Interprets the data as an image and then sends it (ftp>binary).

    cmd

    Specifies the type of transmission.

    By using OR to specify single/multiple-file transmission, you can specify a combination of single-file transmission and multiple-file transmission.

    Transmission types:

    FTS_CMD_SEND (send): ftp>put aaaa bbbb

    FTS_CMD_RECV (receive): ftp>get cccc ddddd

    FTS_CMD_APPE (send with append): ftp>append eeee fffff

    Single/multiple-file transmission:

    FTS_MLT_AUTO: Switch automatically between single-file and multiple-file transmission. This is the default.

    FTS_MLT_MULTIPLE: Perform multiple-file transmission.

    FTS_MLT_SINGLE: Perform single-file transmission.

    FTS_MLT_AUTO switches transmission automatically as follows:

    When sending

    The function checks whether * or ? is used in the local file name. If * or ? is used, multiple-file transmission is used. If neither of them is used, single-file transmission is used.

    When receiving

    The function checks whether * or ? is used in the remote file name. If * or ? is used, multiple-file transmission is used. If neither of them is used, single-file transmission is used.

    Examples

    Sending multiple files:

    cmd = FTS_CMD_SEND | FTS_MLT_MULTIPLE;

    Receiving a single file:

    cmd = FTS_CMD_RECV | FTS_MLT_SINGLE;

    Sending (with append) by automatic switching:

    cmd = FTS_CMD_APPE | FTS_MLT_AUTO;

    or

    cmd = FTS_CMD_APPE;

    (If specification of single/multiple-file transmission is omitted, FTS_MLT_AUTO is assumed.)

    mode

    Specifies compressed transmission.

    FTS_MODE_S: Does not perform compressed transmission.

    FTS_MODE_C: Performs compressed transmission.

    quote

    Specifies the FTP command to execute.

    This structure member is a character string consisting of commands, such as CWD and SITE, delimited by semicolons (;) (the character string must end with \0).

    Only commands that do not establish a data connection can be specified. Whether a command can be executed by the FTP server depends on the FTP server.

    localname

    Specifies the local file name.

    Examples

    ftp>put aaaa bbbb

    ftp>get cccc dddd

    remotename

    Specifies the remote file name.

    Examples

    ftp>put aaaa bbbb

    ftp>get cccc dddd

    end_program

    Specifies the full path name of the program to start when transmission ends normally.

    abend_program

    Specifies the full path name of the program to start when transmission ends abnormally.

    comment

    Specifies any character string.

    fsize

    Specifies whether to check the file size after transmission.

    FTS_FSIZE_TRUE: Checks the size.

    FTS_FSIZE_FALSE: Does not check the size.

Note

Make sure that a char-type variable value ends with \0.

Obtaining transmission-end information

You can obtain the termination information for transmission requests registered by fts_ftp_syn_request_ex() and fts_ftp_asyn_request_ex().

typedef struct _FTS_FTP_API_RETDATA_EX {
  /* Data when transmission was successful */
  int trans_status;             /* Transmission end status:
                                   success (TRANS_SUCCESS) */
                                /* Transmission end status:
                                   failure (TRANS_FAILURE) */
  char cardname[20+1];          /* Card name */
  unsigned long trno;           /* Transmission number */
  unsigned long trcno;          /* Connection number */
 
  /* Data when transmission was successful */
  unsigned long trans_size;       /* Transmitted data size */
 
  /* Data when transmission (compressed) was successful */
  unsigned long trans_size_comp;  /* Transmitted data size
                                     after compression */
 
  /* Data when transmission failed */
  int ab_kind;                  /* System call error
                                   (FTS_ERR_SYSTEM) */
                                /* Logical error
                                   (FTS_ERR_LOGIC) */
                                /* Protocol error
                                   (FTS_ERR_PROTOCOL) */
                                /* Forced termination error
                                   (FTS_ERR_FORCE) */
  char ab_place[8];             /* Location of error */
  char ab_func[32];             /* Name of module resulting
                                   in error */
  char ab_system[32];           /* System call name */
  unsigned long ab_errno;       /* Error number */
  char ab_promes[256];          /* Protocol message
                                   (error) */
 
  char full_trans_size[8];      /* Transmitted data size */
  char full_trans_size_comp[8]; /* Transmitted data size
                                     after compression */
 
  char reserve[1672];           /* Reserved area */
} FTS_FTP_API_RETDATA_EX;

Compiling and linking

Notes about using libraries

Notes about using libraries for multi-thread programs