📄 cursor.cpre
字号:
#include "ap.h"#include "cfis.h"#include "cfispath.h"#include "cfisio.h"#include <sybtesql.h>EXEC SQL INCLUDE sqlca;EXEC SQL INCLUDE "cfissql.h";#define ERR_RETURN {\ DeleteIso8583(&iso8583stru);\ AP_UPDATE(AP_PATH_RESPCODE, "6523");\EXEC CICS RETURN;}#define FMT_O "%12s%19s%3s%12s%17.3lf%17.2lf%1s%4s%8s"#define VAR_O algstru.szBlotNo, algstru.szDebCod, algstru.szTACode, \algstru.szTAAcct, algstru.dHpnLot, algstru.dHpnBal, \algstru.szJrnSts, algstru.szTraCod, algstru.szVouchernomain(){ short nCnt = 0; short nFlag = 0; char szFlag[2]; PXMLSTRU pxmlstruReq; PXMLSTRU pxmlstruResp; ISO8583STRU iso8583stru; TIMESTRU timestru; char szResp[5]; char szData[LEN_DATA_XML + 1]; char szFmt[LEN_DATA_XML + 1]; EXEC SQL BEGIN DECLARE SECTION; char szSerNo[17]; char szCardNo[20]; char szInqDate[9]; char szCustNo[17]; char szTaAcct[13]; char szHndBak[9]; char szTeller[5]; char szJrnNo[AP_LEN_JRNNO + 1]; CFISALGSTRU algstru; EXEC SQL END DECLARE SECTION; char tempbuf[5]; memset(&iso8583stru, 0x00, sizeof(ISO8583STRU)); memset(&algstru, 0x00, sizeof(CFISALGSTRU)); memset(&pxmlstruReq, 0x00, sizeof(PXMLSTRU)); memset(&pxmlstruResp, 0x00, sizeof(PXMLSTRU)); bufclr(szFlag); bufclr(szResp); bufclr(szData); bufclr(szFmt); bufclr(szSerNo); bufclr(szCardNo); bufclr(szInqDate); bufclr(szCustNo); bufclr(szTaAcct); bufclr(szHndBak); bufclr(szTeller); bufclr(szJrnNo); bufclr(tempbuf); pxmlstruReq = CfisGetReqXml(); pxmlstruResp = CfisGetRespXml(); if(!VERIFY_NULL(pxmlstruReq) || !VERIFY_NULL(pxmlstruResp)) EXEC CICS RETURN; AP_DEMAND(AP_PATH_BRANCH, tempbuf); AP_DEMAND(AP_PATH_REQID, szHndBak); AP_DEMAND(OTHER_PATH_IBLTCODE, szSerNo); AP_DEMAND(OTHER_PATH_DINQDATE, szInqDate); AP_DEMAND(OTHER_PATH_ENDFLAG, szFlag); AP_DEMAND(AP_PATH_TELLER, szTeller); /*PrintLog(stderr,"szSerNo is |%s|, szInqDate is |%s|", szSerNo, szInqDate);*/ /* 从业务流水中获取数据。 */ /* PrintLog(stderr, "szFlag is [%s]", szFlag);*/ if (szFlag[0] == '0') /* 查询末笔 */ { /*PrintLog(stderr, "查询末笔");*/ EXEC SQL SELECT * INTO :algstru from CFIS_ALG WHERE ALGBLOTNO IN (SELECT MAX(ALGBLOTNO) from CFIS_ALG WHERE ALGTRNDAT = :szInqDate and ALGHNDBNK = :szHndBak and ALGTELLER = :szTeller); if(sqlca.sqlcode != 0) { PrintLog(stderr, "algstru.szBlotNo=%s, szTeller=%s", algstru.szBlotNo, szTeller); PrintLog(stderr, "sqlca.sqlcode=[%d], errmsg is [%s]", sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); AP_UPDATE(AP_PATH_RESPCODE, "1001"); EXEC CICS RETURN; } memset(szData, 0, sizeof(szData)); memset(szFmt, 0, sizeof(szFmt)); if(strcmp(algstru.szJrnSts, "9") == 0 && (strcmp(algstru.szTraCod, "3869") == 0 || strcmp(algstru.szTraCod, "3879") == 0)){ if (strcmp(algstru.szRtnCod, "0000") == 0) algstru.szJrnSts[0] = '0'; else if (strcmp(algstru.szRtnCod, "2845") == 0) algstru.szJrnSts[0] = '3'; else algstru.szJrnSts[0] = '2'; } tprintf(szFmt, FMT_O, VAR_O); strcat(szData, szFmt); nCnt = 1; } else { /* PrintLog(stderr, "非查询末笔");*/ EXEC SQL DECLARE Jrn_cursor CURSOR FOR SELECT * FROM CFIS_ALG NOHOLDLOCK WHERE ALGTRNDAT = :szInqDate AND ALGHNDBNK = :szHndBak AND ALGBLOTNO >= :szSerNo ORDER BY ALGBLOTNO; EXEC SQL OPEN Jrn_cursor; if(!VERIFY(sqlca.sqlcode == SQL_NORMAL)) { AP_UPDATE(AP_PATH_RESPCODE, "1001"); EXEC SQL DEALLOCATE CURSOR Jrn_cursor; EXEC CICS RETURN; } memset(szData, 0, sizeof(szData)); while(TRUE) { memset(szFmt,0, sizeof(szFmt)); EXEC SQL FETCH Jrn_cursor INTO :algstru; if(sqlca.sqlcode == SQL_NOTFOUND) break; if(strcmp(algstru.szJrnSts, "9") == 0 && (strcmp(algstru.szTraCod, "3869") == 0 || strcmp(algstru.szTraCod, "3879") == 0)){ if (strcmp(algstru.szRtnCod, "0000") == 0) algstru.szJrnSts[0] = '0'; else if (strcmp(algstru.szRtnCod, "2845") == 0) algstru.szJrnSts[0] = '3'; else algstru.szJrnSts[0] = '2'; } tprintf(szFmt, FMT_O, VAR_O); strcat(szData, szFmt); nCnt++; if(nCnt >= 10) { nFlag = 1; break; } } EXEC SQL COLSE Jrn_cursor; EXEC SQL DEALLOCATE CURSOR Jrn_cursor; } /* 准备输出数据 */ AP_INSERT(INQ_PATH, NULL); sprintf(szFmt, "%2hd", nCnt); AP_INSERT(INQ_PATH_SCNT, szFmt); /*查询条数*/ sprintf(szFmt, "%1hd", nFlag); AP_INSERT(INQ_PATH_IFINFLAG, szFmt); /*未完标志*/ AP_INSERT(INQ_PATH_SDATA, szData);/*查询信息*/ AP_UPDATE(AP_PATH_RESPCODE, "0000"); EXEC CICS RETURN;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -