📄 capos.cpre
字号:
/* * This is a part of the Application Preconsole * - Channel Access - POS. * 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-18 HuangRunLang - create implemention file for * transaction entrance */ #include <sybtesql.h>#include "ap.h"#include "apca.h"EXEC SQL INCLUDE sqlca;EXEC SQL INCLUDE "pos.h";EXEC SQL INCLUDE "posext.h";/* * ASSURE宏用以处理程序中发生的异常。为适用于各个阶段的异常处理,该 * 宏对整个处理过程中可能分配的资源都进行清理。 */#define ASSURE(b) \ { \ if (!VERIFY(b)) \ { \ DeleteIso8583(&iso8583stru); \ EXEC CICS RETURN; \ } \ } #define ASSURE_NORMAL(r) ASSURE((r) == NORMAL)char szConvKeyTime[LEN_CONVKEYTIME + 1];RESULT main(UINT nArgCnt, PSTR pszArgVal[]){ ISO8583STRU iso8583stru; PISO8583STRU piso8583stru; PCOMMAREASTRU pcommareastru; char szTransCode[AP_LEN_TRANSCODE + 1]; char szMsgId[SIZE_MSGID + 1]; char cMsg[SIZE_MSG_ISO8583 + 2 + SIZE_TPDU]; char cTpdu[SIZE_TPDU]; UINT nMsgSize, nSize; piso8583stru = &iso8583stru; memset(&iso8583stru, 0, sizeof(ISO8583STRU)); 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, atol(pcommareastru->szMsgLen)); nSize = atol(pcommareastru->szMsgLen); strcpy(szConvKeyTime, pcommareastru->szConvKeyTime); memcpy(cTpdu, cMsg, SIZE_TPDU); VERIFY_NORMAL(ApCaRecord(cMsg, nSize, "pos", TRUE)); ASSURE_NORMAL(CreateIso8583(piso8583stru, ifistruPos)) ASSURE_NORMAL(ImportIso8583(piso8583stru, cMsg + SIZE_TPDU, nSize - SIZE_TPDU)) bufclr(szTransCode); bufclr(szMsgId); nSize = SIZE_MSGID; ASSURE_NORMAL(GetBitInIso8583(piso8583stru, BIT_MSGID, szMsgId, &nSize)) if (strcmp(szMsgId, "0400") == 0) ASSURE_NORMAL(HandleReverse(piso8583stru)) else { ASSURE_NORMAL(GetTransCode(piso8583stru, szTransCode)) if (strcmp(szTransCode, AP_TRANSCODE_CS_QUERYBAL) == 0) ASSURE_NORMAL(HandleQueryBal(piso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_QUERYSTATUS) == 0) ASSURE_NORMAL(HandleQueryStatus(piso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_CONSUME) == 0) ASSURE_NORMAL(HandleConsume(piso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_REFUND) == 0) ASSURE_NORMAL(HandleRefund(piso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_AUTH) == 0) ASSURE_NORMAL(HandleAuth(piso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_AUTHSETTLE) == 0) ASSURE_NORMAL(HandleAuthSettle(piso8583stru)) else if (strcmp(szTransCode, TRANSCODE_ADJUST) == 0) ASSURE_NORMAL(HandleAdjust(piso8583stru)) else if (strcmp(szTransCode, TRANSCODE_INIT) == 0) ASSURE_NORMAL(HandleInit(piso8583stru)) else if (strcmp(szTransCode, TRANSCODE_SETTLE) == 0) ASSURE_NORMAL(HandleSettle(piso8583stru)) else if (strcmp(szTransCode, TRANSCODE_SETTLE2) == 0) ASSURE_NORMAL(HandleSettle2(piso8583stru)) else if (strcmp(szTransCode, AP_TRANSCODE_CS_CANCEL) == 0) ASSURE_NORMAL(HandleCancel(piso8583stru)) else if (strcmp(szTransCode, TRANSCODE_UPLOAD) == 0) ASSURE_NORMAL(HandleUpload(piso8583stru)) else ASSURE_NORMAL(INVALID) } /* * change NAC TPDU */ bufclr(cMsg); memcpy(cMsg + 2, cTpdu, 1); memcpy(cMsg + 2 + 1, cTpdu + 3, 2); memcpy(cMsg + 2 + 3, cTpdu + 1, 2); nSize = SIZE_MSG_ISO8583; ASSURE_NORMAL(ExportIso8583(piso8583stru, cMsg + 2 + SIZE_TPDU, &nSize)) DeleteIso8583(piso8583stru); cMsg[0] = (nSize + SIZE_TPDU) / 256; cMsg[1] = (nSize + SIZE_TPDU) % 256; VERIFY_NORMAL(ApCaRecord(cMsg, nSize + 2 + SIZE_TPDU, "pos", TRUE)); memcpy(pcommareastru->cMsg, cMsg, nSize + 2 + SIZE_TPDU); sprintf(pcommareastru->szMsgLen, "%06d", nSize + 2 + SIZE_TPDU); EXEC CICS RETURN;}/* End of this file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -