LoveUnix » 中间件技术 » 关于IBM CICS客户端开发求助
让LU留住您的每

一天 让LU博客留住您的每一天
2004-4-7 11:28 冰剑
现行的电力企业所使用的新系统是基于CICS的,客户端的开发使用的是IBM_CICS控件,我想请问那位高手有关于IBMCICS客户端开发控件下载!

2004-4-7 12:28 dddbbbdyb
ibm网站有得下。而且有很多版本的。

2004-4-7 23:53 vanda_chensh
/* 检测CICS状态 */<br />    for( ip=0;ip&lt;3;ip++)<br />    {<br />        printf(&quot;检测CICS状态...&quot; );<br />        rc = EciStateSync( pstPackage );<br />        if (rc == ECI_NO_ERROR) break;<br />                                                                                <br />        if ( ip &gt;= 2 )<br />            printf(&quot;CICS状态错误,交易放弃&quot; );<br />        else<br />            printf(&quot;再次检测...&quot; ) ;<br />    }<br />                                                                                <br />    if(rc &#33;=ECI_NO_ERROR) return -1;

2004-4-7 23:59 vanda_chensh
/* 提交CICS交易 */<br />   flag 通常为0, 除非有其他如在前台做commit等<br /><br />    switch( flag )<br />    {<br />        case 0 : mode = ECI_NO_EXTEND;     luw = ECI_LUW_NEW; break;<br />        case 1 : mode = ECI_EXTENDED;      luw = ECI_LUW_NEW; break;<br />        case 2 : mode = ECI_COMMIT;     luw = EciParms.eci_luw_token; break;<br />        case -1: mode = ECI_BACKOUT;     luw = EciParms.eci_luw_token; break;<br />        default: mode = ECI_NO_EXTEND;     luw = ECI_LUW_NEW; break;<br />    }<br />                                                                                                                             <br />    memset (&amp;EciParms, 0, sizeof (ECI_PARMS));<br />                                                                                                                             <br />    EciParms.eci_version                           = ECI_VERSION_1A;<br />    EciParms.eci_call_type                         = ECI_SYNC;<br />    EciParms.eci_commarea                          = 通讯包;<br />    EciParms.eci_commarea_length                   = 通讯包长度;<br />    EciParms.eci_extend_mode                       = mode;<br />    EciParms.eci_luw_token                         = luw;<br />    EciParms.eci_timeout                           = 超时时间;<br />    memcpy(&amp;EciParms.eci_program_name, 后台PGM, 8);<br />    memcpy(&amp;EciParms.eci_system_name,  后台region,8);<br />    memcpy(&amp;EciParms.eci_userid,      后台cics用户,8);<br />    memcpy(&amp;EciParms.eci_tpn,         后台交易分类,4);<br />                                                                                                                             <br />    rc = CICS_ExternalCall (&amp;EciParms);<br />       Response1(result, rc, EciParms.eci_abend_code);<br />    if (rc &#33;= ECI_NO_ERROR)<br />    {<br />        strcat(result, &quot;AbendCode=&quot; );<br />        strncat(result, EciParms.eci_abend_code, 4);<br />    }<br />                                                                                                                             <br />    return (rc==ECI_NO_ERROR)? 0:-1;

2004-4-8 00:06 vanda_chensh
EciStateSync( struct package *pstPackage )<br />{<br />    char       *Name = &quot;ECI_STATE_SYNC&quot;;<br />    short       Rc;<br />    char        CommArea [ECI_STATUS_LENGTH];<br />    ECI_STATUS  EciStatus;<br />    ECI_PARMS    EciParms;<br />    char       *p, *q, *r;<br />    char    result[200];<br />                                                                                                                             <br />    memset (CommArea, &#39;\0&#39;, ECI_STATUS_LENGTH);<br />    memset (&amp;EciParms, 0, sizeof (ECI_PARMS));<br />                                                                                                                             <br />    EciParms.eci_version                           = ECI_VERSION_1A;<br />    EciParms.eci_call_type                         = ECI_STATE_SYNC;<br />    EciParms.eci_commarea                          = CommArea;<br />    EciParms.eci_commarea_length                   = ECI_STATUS_LENGTH;<br />    EciParms.eci_extend_mode                       = ECI_STATE_IMMEDIATE;<br />    EciParms.eci_luw_token                         = ECI_LUW_NEW;<br />    EciParms.eci_timeout                           = 5;<br />    memcpy(&amp;EciParms.eci_system_name,  pstPackage-&gt;sysd,    8);<br />    memcpy(&amp;EciParms.eci_userid,       pstPackage-&gt;user,    8);<br />                                                                                                                             <br />    Rc = CICS_ExternalCall (&amp;EciParms);<br />    Response1(result, Rc, EciParms.eci_abend_code);<br />                                                                                                                             <br />    printf( &quot;CICS状态检测结果[%s]: 主机[%s]用户[%s]密码[%s]&quot;,result , pstPackage-&gt;sysd, pstPackage-&gt;user, pstPackage-&gt;passwd<br />);<br />                                                                                                                             <br />    if (Rc == ECI_NO_ERROR)<br />    {<br />       memcpy (&amp;EciStatus, CommArea, ECI_STATUS_LENGTH);<br />       switch (EciStatus.ConnectionType)<br />       {<br />           case ECI_CONNECTED_NOWHERE:<br />               p = &quot;没有联接&quot;;<br />               break;<br />           case ECI_CONNECTED_TO_SERVER:<br />               p = &quot;主机端运行&quot;;<br />               break;<br /><br />           case ECI_CONNECTED_TO_CLIENT:<br />               p = &quot;客户端运行&quot;;<br />               break;<br />       } /* endswitch */<br />                                                                                                                             <br />       switch (EciStatus.CicsServerStatus)<br />       {<br />           case ECI_SERVERSTATE_UNKNOWN:<br />               q = &quot;未知&quot;;<br />               break;<br />           case ECI_SERVERSTATE_UP:<br />               q = &quot;可用&quot;;<br />               break;<br />           case ECI_SERVERSTATE_DOWN:<br />               q = &quot;不可用&quot;;<br />               break;<br />       } /* endswitch */<br />                                                                                                                             <br />       switch (EciStatus.CicsClientStatus)<br />       {<br />           case ECI_CLIENTSTATE_UNKNOWN:<br />               r = &quot;未知&quot;;<br />               break;<br />           case ECI_CLIENTSTATE_UP:<br />               r = &quot;可用&quot;;<br />               break;<br />           case ECI_CLIENTSTATE_INAPPLICABLE:<br />               r = &quot;不可用&quot;;<br />               break;<br />       } /* endswitch */<br />        printf( &quot;    联接类型[%s] 主机状态[%s] 客户机状态[%s]&quot; , p,q,r );<br />    } /* endif */<br />                                                                                                                             <br />    return Rc;<br />}

2004-4-8 00:08 vanda_chensh
char * Response1(char *result, short Rc, char *Abend)<br />{<br />    char *p=result;<br />                                                                                                                             <br />    switch (Rc)<br />    {<br />        case ECI_NO_ERROR:<br />            strcpy(p, &quot;OK &#33;                       &quot;); break;<br />        case ECI_ERR_INVALID_DATA_LENGTH:<br />            strcpy(p, &quot;ECI_ERR_INVALID_DATA_LENGTH&quot;); break;<br />        case ECI_ERR_INVALID_EXTEND_MODE:<br />            strcpy(p, &quot;ECI_ERR_INVALID_EXTEND_MODE&quot;); break;<br />        case ECI_ERR_NO_CICS:<br />            strcpy(p, &quot;ECI_ERR_NO_CICS            &quot;); break;<br />        case ECI_ERR_CICS_DIED:<br />            strcpy(p, &quot;ECI_ERR_CICS_DIED          &quot;); break;<br />        case ECI_ERR_REQUEST_TIMEOUT:<br />            strcpy(p, &quot;ECI_ERR_REQUEST_TIMEOUT    &quot;); break;<br />        case ECI_ERR_RESPONSE_TIMEOUT:<br />            strcpy(p, &quot;ECI_ERR_RESPONSE_TIMEOUT   &quot;); break;<br />        case ECI_ERR_TRANSACTION_ABEND:<br />            strcpy(p, &quot;ECI_ERR_TRANSACTION_ABEND  &quot;); break;<br />        case ECI_ERR_EXEC_NOT_RESIDENT:<br />            strcpy(p, &quot;ECI_ERR_EXEC_NOT_RESIDENT  &quot;); break;<br />        case ECI_ERR_SYSTEM_ERROR:<br />            strcpy(p, &quot;ECI_ERR_SYSTEM_ERROR       &quot;); break;<br />        case ECI_ERR_NULL_WIN_HANDLE:<br />            strcpy(p, &quot;ECI_ERR_NULL_WIN_HANDLE    &quot;); break;<br />        case ECI_ERR_NULL_MESSAGE_ID:<br />            strcpy(p, &quot;ECI_ERR_NULL_MESSAGE_ID    &quot;); break;<br />        case ECI_ERR_THREAD_CREATE_ERROR:<br />            strcpy(p, &quot;ECI_ERR_THREAD_CREATE_ERROR&quot;); break;<br />        case ECI_ERR_INVALID_CALL_TYPE:<br />            strcpy(p, &quot;ECI_ERR_INVALID_CALL_TYPE  &quot;); break;<br />        case ECI_ERR_ALREADY_ACTIVE:<br />            strcpy(p, &quot;ECI_ERR_ALREADY_ACTIVE     &quot;); break;<br />        case ECI_ERR_RESOURCE_SHORTAGE:<br />            strcpy(p, &quot;ECI_ERR_RESOURCE_SHORTAGE  &quot;); break;<br />        case ECI_ERR_NO_SESSIONS:<br />            strcpy(p, &quot;ECI_ERR_NO_SESSIONS        &quot;); break;<br />        case ECI_ERR_NULL_SEM_HANDLE:<br /><br />            strcpy(p, &quot;ECI_ERR_NULL_SEM_HANDLE    &quot;); break;<br />        case ECI_ERR_INVALID_DATA_AREA:<br />            strcpy(p, &quot;ECI_ERR_INVALID_DATA_AREA  &quot;); break;<br />        case ECI_ERR_INVALID_VERSION:<br />            strcpy(p, &quot;ECI_ERR_INVALID_VERSION    &quot;); break;<br />        case ECI_ERR_UNKNOWN_SERVER:<br />            strcpy(p, &quot;ECI_ERR_UNKNOWN_SERVER     &quot;); break;<br />        case ECI_ERR_CALL_FROM_CALLBACK:<br />            strcpy(p, &quot;ECI_ERR_CALL_FROM_CALLBACK &quot;); break;<br />        case ECI_ERR_INVALID_TRANSID:<br />            strcpy(p, &quot;ECI_ERR_INVALID_TRANSID    &quot;); break;<br />        case ECI_ERR_MORE_SYSTEMS:<br />            strcpy(p, &quot;ECI_ERR_MORE_SYSTEMS       &quot;); break;<br />        case ECI_ERR_NO_SYSTEMS:<br />            strcpy(p, &quot;ECI_ERR_NO_SYSTEMS         &quot;); break;<br />        case ECI_ERR_SECURITY_ERROR:<br />            strcpy(p, &quot;ECI_ERR_SECURITY_ERROR     &quot;); break;<br />        case ECI_ERR_MAX_SYSTEMS:<br />            strcpy(p, &quot;ECI_ERR_MAX_SYSTEMS        &quot;); break;<br />        case ECI_ERR_MAX_SESSIONS:<br />            strcpy(p, &quot;ECI_ERR_MAX_SESSIONS       &quot;); break;<br />        case ECI_ERR_ROLLEDBACK:<br />            strcpy(p, &quot;ECI_ERR_ROLLEDBACK         &quot;); break;<br />        default:<br />            sprintf(p,&quot;Unknown Return Code : %-5d&quot;, Rc); break;<br />    } /* endswitch */<br />                                                                                                                             <br />    return p;<br />}

2004-4-19 16:53 冰剑
谢谢各们高手,但是我的意思不是手工的那种编程,我需要的是集成化的程序开发包

2004-4-27 17:42 dagzhao
<!--QuoteBegin-冰剑+2004-04-19 16:53:23--><div class='quotetop'>QUOTE(冰剑 @ 2004-04-19 16:53:23)</div><div class='quotemain'><!--QuoteEBegin--> 谢谢各们高手,但是我的意思不是手工的那种编程,我需要的是集成化的程序开发包 <!--QuoteEnd--></div><!--QuoteEEnd--><br />EasyCics是IBM中国实验室针对IBM的CICS系统开发的一套简易的程序开发界面。它是主要目的是缓解数据交换的难度,便于各种前端开发工具访问CICS系统。EasyCics分为服务器和客户机两部分。服务器部分提供增强的C语言函数库和头文件,客户机部分提供C函数库和头文件,OLE组件,供C、VB、PB和DELPHI等开发者访问CICS时使用。<br />可以用这个,开发很简单的:)

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.