Previous Topic: API Examples

Next Topic: Queue Request Using XcomQAPI Routine


C Language API File Transfer to Remote System File Example

The following is a C language example of an API that transfers the file named /usr/include/xcom/xcomapi.h to the file /home/user/newfile.name on the remote system.

/* apitest.c - This is a sample program for calling the XCOM API.*/
/*             Modify this according to your needs and make it   */
/*             with the sample 'makefile' in this directory.     */

#include <stdio.h>

/* ALL UNIX flavors except HP-UX */
#include <xcom/xcomapi.h>
/* HP-UX */
/* #include "/opt/xcom/include/xcomapi.h" */

main(int argc,char **argv)
{
    int rc;
    XCOM_PARM xcomparm;
    int starting_state;

    xcomparm.file_type = SEND_FILE;            /* "1" */

    /* remember to link with the appropriate xcom libraries for
       each protocol */
    xcomparm.protocol = "TCPIP";              /* "SNA" or "TCPIP" */

    xcomparm.remote_system = "remote_host";
    xcomparm.port = "8044";
    xcomparm.xluname = "LOCUNIX";
    xcomparm.xnodespec = NULL;

    xcomparm.xmode = "XCOMMODE";

    xcomparm.xidest = NULL;

    xcomparm.local_file = "/usr/include/xcom/xcomapi.h";
    xcomparm.remote_file = "/home/user/newfile.name";

    xcomparm.local_file_rf = "/tmp/receive.filename";
    xcomparm.remote_file_rf = "/home/user/file.there";

    xcomparm.file_option = "REPLACE";
    xcomparm.remove_trail_blanks = NULL;
    xcomparm.volume = NULL;
    xcomparm.unit = NULL;
    xcomparm.record_format = NULL;
    xcomparm.lrecl = NULL;
    xcomparm.blksize = NULL;

    xcomparm.local_file_sr = NULL;
    xcomparm.class = NULL;
    xcomparm.destination = NULL;
    xcomparm.form = NULL;
    xcomparm.fcb = NULL;
    xcomparm.copies = NULL;
    xcomparm.report_title = NULL;
    xcomparm.hold = NULL;
    xcomparm.spool_flag = NULL;
    xcomparm.disposition = NULL;
    xcomparm.carriage_control_characters = NULL;

    xcomparm.local_file_sj = NULL;

    xcomparm.userid = "uuuuuuuu";
    xcomparm.password = "xxxxxxxx";

    /* if queue = NO, must link with right xcom lib */
    xcomparm.queue = "NO";

    xcomparm.start_time = NULL;
    xcomparm.start_date = NULL;

    xcomparm.notifyr = NULL;
    xcomparm.notify_name = NULL;
    xcomparm.local_notify = NULL;
    xcomparm.notifyl = NULL;
    xcomparm.notify_term = NULL;

    xcomparm.maxreclen = NULL;
    xcomparm.code_flag = "ASCII";
    xcomparm.carriage_flag = NULL;
    xcomparm.truncation = NULL;
    xcomparm.compress = NULL;

    xcomparm.xtrace = "10";
    xcomparm.stat_frequency = NULL;
    xcomparm.debug_flag = NULL;

    xcomparm.xlogfile = NULL;
    xcomparm.tempdir = NULL;

    xcomparm.xlpcmd = NULL;
    xcomparm.xnotifycmd = NULL;
    xcomparm.eol_classes = NULL;
    xcomparm.convert_classes = NULL;
    xcomparm.metacode_classes = NULL;

/* These are version two parms */
        xcomparm.version = NULL;
        xcomparm.number_of_retries = NULL;
        xcomparm.allocation_type = NULL;
        xcomparm.checkpoint_count = NULL;
        xcomparm.num_of_dir_blocks = NULL;
        xcomparm.primary_alloc = NULL;
        xcomparm.secondary_alloc = NULL;
        xcomparm.restart_supported = NULL;

/* These parms are new for V3 XCOM */
        xcomparm.xppcmd = NULL;
        xcomparm.xprecmd = NULL;
        xcomparm.xendcmd = NULL;
        xcomparm.shell_cmd = NULL;

/* These parms are new for V3.1 XCOM */
        xcomparm.trusted = NULL;
        xcomparm.domain = NULL;
        xcomparm.den = NULL;
        xcomparm.expdt = NULL;
        xcomparm.retpd = NULL;
        xcomparm.label = NULL;
        xcomparm.tape = NULL;
        xcomparm.unitct = NULL;
        xcomparm.volct = NULL;
        xcomparm.volsq = NULL;
        xcomparm.labelnum = NULL;
        xcomparm.tapedisp = NULL;

/* These parms are new for r11 XCOM */
        xcomparm.xcomsslfull = NULL;
        xcomparm.configssl = NULL;
        xcomparm.codetabl = NULL;
        xcomparm.rmtntfyl = NULL;
        xcomparm.lclntfyl = NULL;
        xcomparm.storcls = NULL;
        xcomparm.datacls = NULL;
        xcomparm.mgtclas = NULL;
        xcomparm.dsntype = NULL;
    /* Reserved for future use */
        xcomparm.seclabel  =NULL;
        xcomparm.hfs_flag =NULL;

        xcomparm.seclabel = NULL;
        xcomparm.hold_transfer = NULL;
        xcomparm.xtchold_count = NULL;
        xcomparm.xtcerrdecr = NULL;
        xcomparm.xtcerrincr = NULL;
        xcomparm.xtcerrpurge = NULL;
        xcomparm.xtcerrrel = NULL;
        xcomparm.xtcgooddecr = NULL;
        xcomparm.xtcgoodincr = NULL;
        xcomparm.xtcgoodpurge = NULL;
        xcomparm.xtcgoodrel = NULL;
        xcomparm.xtcnet = NULL;
        xcomparm.xtcjob = NULL;
        xcomparm.trust_odbc = NULL;
        xcomparm.trust_pass = NULL;
        xcomparm.trust_user = NULL;
        xcomparm.trust_table_pfx = NULL;
        xcomparm.cache_read_sz = NULL;
        xcomparm.cache_write_sz = NULL;
        xcomparm.mail_type = NULL;

        xcomparm.smtp_server = NULL;
        xcomparm.fips_mode = NULL;
        xcomparm.lear_cipher = NULL;
        xcomparm.ear_cipher = NULL;
        xcomparm.lear_hash = NULL;
        xcomparm.ear_hash = NULL;
        xcomparm.lear_digest = NULL;
        xcomparm.ear_digest = NULL;
        xcomparm.lear_key = NULL;
        xcomparm.ear_key = NULL;
        xcomparm.trnencrl_cipher = NULL;
        xcomparm.createdelete=NULL;
        xcomparm.compress_pds=NULL;
        xcomparm.local_charset=NULL;
        xcomparm.remote_charset=NULL;
        xcomparm.mbcs_inputerror=NULL;
        xcomparm.mbcs_converror=NULL;
        xcomparm.local_delim=NULL;
        xcomparm.remote_delim=NULL;
        xcomparm.eattr=NULL;
        xcomparm.avgrec=NULL;
        starting_state=LOCAL_SEND;
        printf("==== API started ===\n");
        rc=XcomAPI(starting_state, xcomparm);
        printf("==== API ended ===\n");
        if (!rc)
           printf("==== Transfer successful\n");
        else
           printf("==== %s\n", msgstring(rc,0));
/* Reset System Privileges for second transfer */
        if (XsetSystemPriv(2) !=0)
               {
             printf("====XsetSystemPriv() faild\n");
               }

}

The following XcomAPI variables are reserved for future use:

xcomparm.seclabel
xcomparm.hfs_flag