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

📄 isic.cpre

📁 商业银行前置系统
💻 CPRE
字号:
/* * This is a part of the Application Preconsole * - Service Provide - ISI. * 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-09-24 ChenYu       - create implementation file for *                           ISI manager transation. */#include <sybtesql.h>#include "ap.h"EXEC SQL INCLUDE "isi.h";void GetTransmissDateTime(PSTR pszTransmissDateTime){    TIMESTRU timestru;        timestru = GetTime();    sprintf(pszTransmissDateTime, "%02d%02d%02d%02d%02d",            timestru.nMon, timestru.nDay,            timestru.nHour, timestru.nMin, timestru.nSec);    }RESULT GetForwardId(PSTR pszForwardId){    char szSettleNo[LEN_SETTLENO + 1];    char szBankNo[LEN_BANKNO + 1];    bufclr(szSettleNo);    bufclr(szBankNo);        ASSERT_NORMAL(AP_DEMAND_CFG(PATH_SETTLENO, szSettleNo));    ASSERT_NORMAL(AP_DEMAND_CFG(PATH_BANKNO, szBankNo));        sprintf(pszForwardId, "63%4.4s%5.5s", szSettleNo, szBankNo);    return NORMAL;}RESULT HandleSign(PCSTR pszCmd, PISO8583STRU piso8583stru){    char szTransmissDateTime[SIZE_TRANSMISSDATETIME + 1];    char szForwardId[SIZE_FORWARDID_MAX + 1];    char szRespCode[SIZE_RESPCODE + 1];    char szSeqNo[AP_LEN_SEQNO + 1];            UINT nSize;    bufclr(szForwardId);    ASSERT_NORMAL(GetForwardId(szForwardId));    bufclr(szTransmissDateTime);    GetTransmissDateTime(szTransmissDateTime);    bufclr(szSeqNo);    ASSERT_NORMAL(ApScGetSeqNo("ISI", szSeqNo));    /*     * 组装ISO8583请求报文。     */    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_MSGID, "0800", SIZE_MSGID));    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRANSMISSDATETIME,                                  szTransmissDateTime, SIZE_TRANSMISSDATETIME));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRACENO, &szSeqNo[6],                                  SIZE_TRACENO));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_FORWARDID, szForwardId,                                  SIZE_FORWARDID_MAX));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_SERVICECODE, "100",                                  SIZE_SERVICECODE));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_DESTID, "63000000000",                                  SIZE_DESTID_MAX));    if (strcmp(pszCmd, "signon") == 0)        ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_NETMANCODE, "001",                                       SIZE_NETMANCODE));    else        ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_NETMANCODE, "002",                                       SIZE_NETMANCODE));    ASSERT_NORMAL(SetMac(piso8583stru, cAdminMac, BIT_MAC128));    ASSERT_NORMAL(LinkIsi(piso8583stru));            ASSERT_NORMAL(VerifyMac(piso8583stru, cAdminMac, BIT_MAC128));    return NORMAL;}RESULT HandleSendAdvice(PCSTR pszAdvice, PISO8583STRU piso8583stru){    char szTransmissDateTime[SIZE_TRANSMISSDATETIME + 1];    char szForwardId[SIZE_FORWARDID_MAX + 1];    char szRespCode[SIZE_RESPCODE + 1];    char szSeqNo[AP_LEN_SEQNO + 1];    UINT nSize;     bufclr(szForwardId);    ASSERT_NORMAL(GetForwardId(szForwardId));        bufclr(szTransmissDateTime);    GetTransmissDateTime(szTransmissDateTime);    bufclr(szSeqNo);    ASSERT_NORMAL(ApScGetSeqNo("ISI", szSeqNo));    nSize = strlen(pszAdvice);    nSize = min(400, nSize);    /*     * 组装ISO8583请求报文。     */    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_MSGID, "0820", SIZE_MSGID));    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRANSMISSDATETIME,                                  szTransmissDateTime, SIZE_TRANSMISSDATETIME));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRACENO, &szSeqNo[6],                                  SIZE_TRACENO));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_FORWARDID, szForwardId,                                  SIZE_FORWARDID_MAX));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ADDPRIV, pszAdvice, nSize));    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_NETMANCODE, "060",                                   SIZE_NETMANCODE));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_DESTID, "63000000000",                                  SIZE_NETMANCODE));                                      ASSERT_NORMAL(LinkIsi(piso8583stru));    return NORMAL;}#define ASSURE_NORMAL(r) \    { \        if (!VERIFY_NORMAL(r)) \        { \            sprintf(pszCmd, "%s failed!", szCmd); \            DeleteIso8583(&iso8583stru); \            EXEC CICS RETURN; \        } \    }void main(){    ISO8583STRU iso8583stru;       UINT nSize;    char *pszCmd, szCmd[128 + 1];    char szRespCode[SIZE_RESPCODE + 1];    bufclr(szCmd);    memset(&iso8583stru, 0, sizeof(ISO8583STRU));    EXEC CICS ADDRESS EIB(dfheiptr);    EXEC CICS ADDRESS COMMAREA(pszCmd);    if (!VERIFY_NULL(pszCmd))        EXEC CICS RETURN;    sscanf(pszCmd, "%s", szCmd);        ASSURE_NORMAL(CreateIso8583(&iso8583stru, ifistruIsi))    if (strcmp(szCmd, "signon") == 0 || strcmp(szCmd, "signoff") == 0)        ASSURE_NORMAL(HandleSign(szCmd, &iso8583stru))            else if (strcmp(szCmd, "sendadvice") == 0)        ASSURE_NORMAL(HandleSendAdvice(pszCmd + 10 + 1, &iso8583stru))            else    {        strcpy(pszCmd, "invalid command!");        DeleteIso8583(&iso8583stru);        EXEC CICS RETURN;    }      nSize = SIZE_RESPCODE;    bufclr(szRespCode);    ASSURE_NORMAL(GetBitInIso8583(&iso8583stru, BIT_RESPCODE, szRespCode,                                   &nSize))    ASSURE_NORMAL(strcmp(szRespCode, "00") == 0 ? NORMAL : EXCEPTION)    sprintf(pszCmd, "%s succeeded!", szCmd);    DeleteIso8583(&iso8583stru);    EXEC CICS RETURN;}/* End of this file */

⌨️ 快捷键说明

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