📄 cadsi.cpre
字号:
/* * This is a part of the Application Preconsole * Channel Access - 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-12 Cheng WeiHong - create implementation file for * transaction entrance * 2001-09-25 R.Cao - simplify logic */ #include <sybtesql.h>#include "ap.h"#include "apca.h"EXEC SQL INCLUDE sqlca;EXEC SQL INCLUDE "dsi.h";EXEC SQL INCLUDE "dsiext.h";/* * ASSURE宏用以处理程序中发生的异常。为适用于各个阶段的异常处理,该 * 宏对整个处理过程中可能分配的资源都进行清理。 */#define ASSURE(b) \ { \ if (!VERIFY(b)) \ { \ DeleteIso8583(&iso8583stru); \ EXEC CICS RETURN; \ } \ } #define ASSURE_NORMAL(r) ASSURE((r) == NORMAL)UINT nReqSeqNo;void main(){ ISO8583STRU iso8583stru; PCOMMAREASTRU pcommareastru; char cMsg[SIZE_MSG_ISO8583]; UINT nSize; char szTransCode[AP_LEN_TRANSCODE + 1]; memset(&iso8583stru, 0, sizeof(ISO8583STRU)); EXEC SQL SET CHAINED OFF; EXEC CICS ADDRESS EIB(dfheiptr); EXEC CICS ADDRESS COMMAREA(pcommareastru); if (!VERIFY_NULL(pcommareastru) || !VERIFY(dfheiptr->eibcalen == sizeof(COMMAREASTRU))) ASSURE_NORMAL(EXCEPTION) memcpy(cMsg, pcommareastru->cMsg, pcommareastru->nSize); nSize = pcommareastru->nSize; nReqSeqNo = atoi(pcommareastru->szReqSeqNo + 6); /* * 建立ISO8583 结构并获得交易码。 */ VERIFY_NORMAL(ApCaRecord(cMsg, nSize, "dsi", TRUE)); ASSURE_NORMAL(SetSmId()) ASSURE_NORMAL(CreateIso8583(&iso8583stru, ifistruDsi)) ASSURE_NORMAL(ImportIso8583(&iso8583stru, cMsg, nSize)) ASSURE_NORMAL(GetTransCode(&iso8583stru, szTransCode)) if (strcmp(szTransCode, AP_TRANSCODE_CS_AUTH) == 0) ASSURE_NORMAL(HandleAuth(&iso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_CANCEL) == 0) ASSURE_NORMAL(HandleCancel(&iso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_QUERYBAL) == 0) ASSURE_NORMAL(HandleQueryBal(&iso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_WITHDRAW) == 0) ASSURE_NORMAL(HandleWithdraw(&iso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_AUTHSETTLE) == 0) ASSURE_NORMAL(HandleAuthSettle(&iso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_CONSUME) == 0) ASSURE_NORMAL(HandleConsume(&iso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_REFUND) == 0) ASSURE_NORMAL(HandleRefund(&iso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_SETTLE) == 0) ASSURE_NORMAL(HandleSettle(&iso8583stru)) else if (strcmp(szTransCode, TRANSCODE_REVERSE) == 0) ASSURE_NORMAL(HandleReverse(&iso8583stru)) else if (strcmp(szTransCode, TRANSCODE_RESETKEY) == 0) ASSURE_NORMAL(HandleResetKey(&iso8583stru)) else if (strcmp(szTransCode, TRANSCODE_AUTHSETTLE) == 0) ASSURE_NORMAL(HandleAuthSettle2(&iso8583stru)) else if (strcmp(szTransCode, TRANSCODE_FEE) == 0) ASSURE_NORMAL(HandleFee(&iso8583stru)) else if (strcmp(szTransCode, TRANSCODE_ADMIN) == 0) ASSURE_NORMAL(HandleAdmin(&iso8583stru)) else if (strcmp(szTransCode, TRANSCODE_NETMAN) == 0) ASSURE_NORMAL(HandleNetMan(&iso8583stru)) else ASSURE_NORMAL(INVALID) nSize = sizeof(cMsg); ASSURE_NORMAL(ExportIso8583(&iso8583stru, cMsg, &nSize)) DeleteIso8583(&iso8583stru); VERIFY_NORMAL(ApCaRecord(cMsg, nSize, "dsi", TRUE)); memcpy(pcommareastru->cMsg, cMsg, nSize); pcommareastru->nSize = nSize; EXEC CICS RETURN;}/* End of this file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -