📄 caisi.cpre
字号:
/* * This is a part of the Application Preconsole * - Channel Access - 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-08-08 ChenYu - ISI CA Entrance. */#include <sybtesql.h>#include "ap.h"EXEC SQL INCLUDE sqlca;EXEC SQL INCLUDE "isi.h";#define RETURN_DELETE_MEMOREG \ { \ VERIFY_NORMAL(DeleteMemoReg()); \ EXEC CICS RETURN; \ }#define ASSURE_NORMAL(r) \ { \ if (!VERIFY_NORMAL(r)) \ { \ DeleteIso8583(&iso8583stru); \ RETURN_DELETE_MEMOREG; \ } \ }void main(){ char *pcCommArea, cMsg[2 + SIZE_MSG_ISO8583]; char szCommArea[1024 + 1]; short sSize; ISO8583STRU iso8583stru; UINT nSize; char szHandle[SIZE_MSGID + SIZE_PROCESSCODE + 1]; char szRespCode[SIZE_RESPCODE + 1]; char szAddResp[SIZE_ADDRESP_MAX + 1]; long lRespCode; if (!VERIFY_NORMAL(CreateMemoReg())) EXEC CICS RETURN; EXEC SQL SET CHAINED OFF; bufclr(szHandle); memset(&iso8583stru, 0, sizeof(ISO8583STRU)); EXEC CICS ADDRESS COMMAREA(pcCommArea); EXEC CICS ADDRESS EIB(dfheiptr); sSize = dfheiptr->eibcalen; if (!VERIFY_NULL(pcCommArea)) RETURN_DELETE_MEMOREG ASSURE_NORMAL(CreateIso8583(&iso8583stru, ifistruIsi)) ASSURE_NORMAL(ImportIso8583(&iso8583stru, pcCommArea + 2, sSize - 2)) #ifdef DEBUGIsiPrintIso8583(&iso8583stru, "CAISI REQUEST ISO8583");#endif nSize = SIZE_MSGID; ASSURE_NORMAL(GetBitInIso8583(&iso8583stru, BIT_MSGID, szHandle, &nSize)) nSize = SIZE_PROCESSCODE; GetBitInIso8583(&iso8583stru, BIT_PROCESSCODE, &szHandle[4], &nSize); if (strcmp(szHandle, "0200300000") == 0) ASSURE_NORMAL(HandleQueryBal(&iso8583stru)) else if (strcmp(szHandle, "0200310000") == 0) ASSURE_NORMAL(HandleQueryStatus(&iso8583stru)) else if (strcmp(szHandle, "0200090000") == 0 || strcmp(szHandle, "0420090000") == 0) ASSURE_NORMAL(HandleConsume(&iso8583stru)) else if (strcmp(szHandle, "0220200000") == 0) ASSURE_NORMAL(HandleRefund(&iso8583stru)) else if (strcmp(szHandle, "0100000000") == 0 || strcmp(szHandle, "0420000000") == 0) ASSURE_NORMAL(HandleAuth(&iso8583stru)) else if (strcmp(szHandle, "0100003000") == 0 || strcmp(szHandle, "0420003000") == 0) ASSURE_NORMAL(HandleManualAuth(&iso8583stru)) else if (strcmp(szHandle, "0200030000") == 0 || strcmp(szHandle, "0420030000") == 0) ASSURE_NORMAL(HandleAuthSettle(&iso8583stru)) else if (strcmp(szHandle, "0200210000") == 0 || strcmp(szHandle, "0420210000") == 0) ASSURE_NORMAL(HandleDeposit(&iso8583stru)) else if (strcmp(szHandle, "0200010000") == 0 || strcmp(szHandle, "0420010000") == 0) ASSURE_NORMAL(HandleWithdraw(&iso8583stru)) else if (strcmp(szHandle, "0200400010") == 0 || strcmp(szHandle, "0420400010") == 0) ASSURE_NORMAL(HandleTransferIn(&iso8583stru)) else if (strcmp(szHandle, "0200401000") == 0 || strcmp(szHandle, "0420401000") == 0) ASSURE_NORMAL(HandleTransferOut(&iso8583stru)) else if (strcmp(szHandle, "0200500000") == 0) ASSURE_NORMAL(HandleChangePin(&iso8583stru)) else if (strcmp(szHandle, "0200600000") == 0 || strcmp(szHandle, "0420600000") == 0) ASSURE_NORMAL(HandleLost(&iso8583stru)) else if (strcmp(szHandle, "0200230000") == 0 || strcmp(szHandle, "0420230000") == 0 || strcmp(szHandle, "0200020000") == 0 || strcmp(szHandle, "0420020000") == 0 || strcmp(szHandle, "0200220000") == 0 || strcmp(szHandle, "0420220000") == 0 || strcmp(szHandle, "0200200000") == 0 || strcmp(szHandle, "0420200000") == 0 || strcmp(szHandle, "0100200000") == 0 || strcmp(szHandle, "0200481000") == 0 || strcmp(szHandle, "0420481000") == 0 || strcmp(szHandle, "0200480010") == 0 || strcmp(szHandle, "0420480010") == 0 || strcmp(szHandle, "0200601000") == 0 || strcmp(szHandle, "0420601000") == 0 || strcmp(szHandle, "0100203000") == 0 || strcmp(szHandle, "0420203000") == 0) ASSURE_NORMAL(HandleCancel(&iso8583stru)) else if (strcmp(szHandle, "0500") == 0) ASSURE_NORMAL(HandleSettle(&iso8583stru)) else if (strcmp(szHandle, "0820") == 0) ASSURE_NORMAL(HandleAdvice(&iso8583stru)) else if (strcmp(szHandle, "0800") == 0) ASSURE_NORMAL(HandleKeyExchange(&iso8583stru)) else ASSURE_NORMAL(INVALID) bufclr(cMsg); cMsg[0] = 0xF9; cMsg[1] = 0xF7; nSize = SIZE_MSG_ISO8583; if (!VERIFY_NORMAL(ExportIso8583(&iso8583stru, &cMsg[2], &nSize)) || !VERIFY_NORMAL(SendAppc("CD01", "MODELU62", "RECV", cMsg, nSize + 2))) { bufclr(szRespCode); bufclr(szAddResp); nSize = SIZE_RESPCODE; GetBitInIso8583(&iso8583stru, BIT_RESPCODE, szRespCode, &nSize); nSize = SIZE_ADDRESP_MAX; GetBitInIso8583(&iso8583stru, BIT_ADDRESP, szAddResp, &nSize); if (strcmp(szRespCode, "00") == 0 && (strcmp(szHandle, "0200090000") == 0 || /* 消费 */ strcmp(szHandle, "0100000000") == 0 || /* 预授权 */ strcmp(szHandle, "0100003000") == 0 || /* 授权 */ strcmp(szHandle, "0200003000") == 0 || /* 预授权完成 */ strcmp(szHandle, "0200010000") == 0 || /* 取现 */ strcmp(szHandle, "0200401000") == 0 || /* 转出 */ strcmp(szHandle, "0200230000") == 0 || /* 预授权完成撤消 */ strcmp(szHandle, "0200200000") == 0)) /* 消费撤消 */ { nSize = sizeof(szCommArea); sprintf(szCommArea, "submitadvice RESPSEQNO %12s 1", szAddResp); EXEC CICS LINK PROGRAM("SC04") COMMAREA(szCommArea) LENGTH(nSize) RESP(lRespCode); if (!VERIFY(lRespCode == DFHRESP(NORMAL)) || !VERIFY(strcmp(szCommArea, "submit advice successfully.") == 0)) PrintLog(stderr, "CAUTION-ET16: RESPSEQNO[%12s]", szAddResp); } } #ifdef DEBUGIsiPrintIso8583(&iso8583stru, "CAISI RESPONSE ISO8583");#endif DeleteIso8583(&iso8583stru); RETURN_DELETE_MEMOREG}/* End of this file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -