⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linkdsi.cpre

📁 商业银行前置系统
💻 CPRE
字号:
/* * This is a part of the Application Preconsole * - Service Provide - DSI. * Copyright (C) 2000-2000 ABC.SDC. * All rights reserved. * * This source code is only intended as a supplement to the * Application Preconsole Reference and related * electronic documentation provided with the library. * See these sources for detailed information regarding the * Application Preconsole product.  * * Update record: * 2001-08-29 Shuming Pang  - create implementation file for *                            utility functions */ #include "ap.h"EXEC SQL INCLUDE sqlca;EXEC SQL INCLUDE "dsi.h";/* * Dsi linking function */RESULT LinkDsi(PISO8583STRU piso8583stru, PCSTR pszRespSeqNo){    EXEC SQL BEGIN DECLARE SECTION;    DSIDSTRU dsidstru;    EXEC SQL END DECLARE SECTION;        char cMsg[SIZE_MSG_ISO8583];    UINT nSize;    short sSize;    unsigned long lRespCode;        memset(&dsidstru, 0, sizeof(DSIDSTRU));    strcpy(dsidstru.szRespSeqNo, pszRespSeqNo);        nSize = SIZE_RETRIEVALREFNO;    GetBitInIso8583(piso8583stru, BIT_RETRIEVALREFNO, dsidstru.szSeqNo,                     &nSize);        nSize = SIZE_MSGID;    GetBitInIso8583(piso8583stru, BIT_MSGID, dsidstru.szMsgId, &nSize);        nSize = SIZE_PROCESSCODE;    GetBitInIso8583(piso8583stru, BIT_PROCESSCODE, dsidstru.szProcessCode,                    &nSize);        nSize = SIZE_PAN_MAX;    GetBitInIso8583(piso8583stru, BIT_PAN, dsidstru.szPan, &nSize);    nSize = SIZE_TRANSAMT;    GetBitInIso8583(piso8583stru, BIT_TRANSAMT, dsidstru.szTransAmt, &nSize);    nSize = SIZE_TRANSMISSDATETIME;    GetBitInIso8583(piso8583stru, BIT_TRANSMISSDATETIME,                     dsidstru.szTransmissDateTime, &nSize);                        nSize = SIZE_LOCALTRANSDATE;    GetBitInIso8583(piso8583stru, BIT_LOCALTRANSDATE, dsidstru.szLocalTransDate,                    &nSize);                        nSize = SIZE_LOCALTRANSTIME;    GetBitInIso8583(piso8583stru, BIT_LOCALTRANSTIME, dsidstru.szLocalTransTime,                    &nSize);                        nSize = SIZE_MERCHTYPE;    GetBitInIso8583(piso8583stru, BIT_MERCHTYPE, dsidstru.szMerchType, &nSize);    nSize = SIZE_ENTRYMODE;    GetBitInIso8583(piso8583stru, BIT_ENTRYMODE, dsidstru.szEntryMode, &nSize);    nSize = SIZE_CONDITIONCODE;    GetBitInIso8583(piso8583stru, BIT_CONDITIONCODE, dsidstru.szConditionCode,                    &nSize);    nSize = SIZE_ACQID_MAX;    GetBitInIso8583(piso8583stru, BIT_ACQID, dsidstru.szAcqId, &nSize);        nSize = SIZE_FORWARDID_MAX;    GetBitInIso8583(piso8583stru, BIT_FORWARDID, dsidstru.szForwardId, &nSize);        nSize = SIZE_TERMID;    GetBitInIso8583(piso8583stru, BIT_TERMID, dsidstru.szTermId, &nSize);        nSize = SIZE_ACCEPTORID;    GetBitInIso8583(piso8583stru, BIT_ACCEPTORID, dsidstru.szAcceptorId,                    &nSize);        nSize = SIZE_ACCEPTORNAME;    GetBitInIso8583(piso8583stru, BIT_ACCEPTORNAME, dsidstru.szAcceptorName,                    &nSize);        nSize = SIZE_CURRCODE;    GetBitInIso8583(piso8583stru, BIT_CURRCODE, dsidstru.szCurrCode, &nSize);    nSize = SIZE_ACQRESERVE_MAX;    GetBitInIso8583(piso8583stru, BIT_ACQRESERVE, dsidstru.szAcqReserve,                    &nSize);    bufclr(cMsg);    nSize = sizeof(cMsg);    ASSERT_NORMAL(ExportIso8583(piso8583stru, cMsg, &nSize));    if (strcmp(dsidstru.szSeqNo, "") != 0)    {        EXEC SQL INSERT dsid VALUES(:dsidstru);                if (sqlca.sqlcode != SQLCODE_DUPKEY)            ASSERT_SQL_NORMAL();    }    /*     * 向COMMUNICATION REGION提交交易。如果发送成功,而此后发生异常,都必须返回     * UNKNOWN ,以促使SPA 填写AP_RESPCODE_EXCEPTION ,并引发通知。     */        EXEC CICS ADDRESS EIB(dfheiptr);    EXEC CICS LINK PROGRAM("SPDSI") COMMAREA(cMsg) LENGTH(sizeof(cMsg))              RESP(lRespCode);                 if (!VERIFY(lRespCode == DFHRESP(NORMAL)))        return EXCEPTION;    if (strncmp(cMsg, "EC", 2) == 0)    {        if (strncmp(cMsg + 2, AP_RESPCODE_EXCEPTION, 4) == 0)            ASSERT_NORMAL(UNKNOWN);        ASSERT_NORMAL(EXCEPTION);    }    if (!VERIFY_NORMAL(ImportIso8583(piso8583stru, cMsg, sizeof(cMsg))))        return UNKNOWN;    nSize = SIZE_AUTHRESP;    GetBitInIso8583(piso8583stru, BIT_AUTHRESP, dsidstru.szAuthResp, &nSize);    nSize = SIZE_SETTLEDATE;    VERIFY_NORMAL(GetBitInIso8583(piso8583stru, BIT_SETTLEDATE,                                  dsidstru.szSettleDate, &nSize));    if (strcmp(dsidstru.szSeqNo, "") != 0)    {        EXEC SQL UPDATE dsid SET settledate = :dsidstru.szSettleDate,                                 authresp = :dsidstru.szAuthResp                 WHERE seqno = :dsidstru.szSeqNo;        VERIFY_SQL_NORMAL();    }        return NORMAL;}/* End of this file */       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -