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

📄 cadt.cpre

📁 商业银行前置系统
💻 CPRE
字号:
/* * This is a part of the Application Preconsole * - Channel Access - DT. * 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 R.Cao     - create implementation file for  *                        DT service */#include "ap.h"#include "dt.h"typedef struct tagDTIASTRU{    char szReqId[8 + 1];    char szReqSeqNo[12 + 1];    char szTransCode[4 + 1];    char szAccNo[19 + 1];    char szAccPwd[6 + 1];    char szPhoneNo[11 + 1];    char szCollectMon[6 + 1];    char szAmt[19 + 1];} DTIASTRU;typedef DTIASTRU *       PDTIASTRU;typedef const DTIASTRU   CDTIASTRU;typedef const DTIASTRU * PCDTIASTRU;typedef struct tagDTOASTRU{    char szRespCode[4 + 1];    char szBal[19 + 1];    char szPhoneCost[19 + 1];} DTOASTRU;typedef DTOASTRU *       PDTOASTRU;typedef const DTOASTRU   CDTOASTRU;typedef const DTOASTRU * PCDTOASTRU;/* * ASSURE宏用以处理程序中发生的异常。为适用于各个阶段的异常处理,该 * 宏对整个处理过程中可能分配的资源都进行清理。 */#define ASSURE(b) \    { \        if (!VERIFY(b)) \        { \            if (nListenSock > 0) \                close(nListenSock); \            if (nSock > 0) \                close(nSock); \            return EXCEPTION; \        } \    }#define ASSURE_NORMAL(r) \    { \        RESULT rTemp = (r); \        if (!VERIFY_NORMAL(rTemp)) \        { \            if (nListenSock > 0) \                close(nListenSock); \            if (nSock > 0) \                close(nSock); \            return rTemp; \        } \    }BOOL bShutdown = FALSE;RESULT main(){    UINT nListenSock = 0, nSock = 0;    UINT nSize;    pid_t _pid_tChild;    TIASTRU tiastru;    TOASTRU toastru;    DTIASTRU dtiastru;    DTOASTRU dtoastru;        char szProg[8 + 1] = "CADT";    memset(&tiastru, 0, sizeof(TIASTRU));    memset(&toastru, 0, sizeof(TOASTRU));    memset(&dtiastru, 0, sizeof(DTIASTRU));    memset(&dtoastru, 0, sizeof(DTOASTRU));    PrintLog(stdout, "dtservice: service is starting...");    ASSURE_NORMAL(InitServer())        /*     * 建立监听套接字。     */         PrintLog(stdout, "dtservice: create listen socket...");    ASSURE_NORMAL(CreateSock(&nListenSock, 2222, 8))    PrintLog(stdout, "dtservice: service is activated.");    while (!bShutdown)    {        if (!VERIFY_NORMAL(AcceptSock(&nSock, nListenSock)))            continue;        /*         * 复制进程, 父进程继续监视TCP 套接字,子进程进行执行交易。         */        VERIFY((_pid_tChild = fork()) >= 0);        if (_pid_tChild > 0)        {            close(nSock);            nSock = 0;            continue;        }                    break;    }    close(nListenSock);    nListenSock = 0;        /*     * 从TCP 套接字中读取DTIA。     */    nSize = sizeof(DTIASTRU);    ASSURE_NORMAL(ReadFile(nSock, &dtiastru, &nSize))    ASSURE(nSize == sizeof(DTIASTRU))    nSize = 2;        ASSURE_NORMAL(ReadFile(nSock, szProg + 4, &nSize))    ASSURE(nSize == 2)    strcpy(tiastru.szReqId, dtiastru.szReqId);    strcpy(tiastru.szReqSeqNo, dtiastru.szReqSeqNo);    strcpy(tiastru.szTransCode, dtiastru.szTransCode);    strcpy(tiastru.szAccNo, dtiastru.szAccNo);    strcpy(tiastru.szAccPwd, dtiastru.szAccPwd);    strcpy(tiastru.szPhoneNo, dtiastru.szPhoneNo);    strcpy(tiastru.szCollectMon, dtiastru.szCollectMon);    tiastru.dAmt = atof(dtiastru.szAmt);        strcpy(toastru.szRespCode, AP_RESPCODE_SYSERR);    if (VERIFY_NORMAL(CallCics("AP00", "APUSER", "APUSER",                                szProg, "CPMI", &tiastru, sizeof(TIASTRU))))        memcpy(&toastru, &tiastru, sizeof(TOASTRU));    strcpy(dtoastru.szRespCode, toastru.szRespCode);    sprintf(dtoastru.szBal, "%19.2lf", toastru.dBal);    sprintf(dtoastru.szPhoneCost, "%19.2lf", toastru.dPhoneCost);    ASSURE_NORMAL(WriteFile(nSock, &dtoastru, sizeof(DTOASTRU)))    close(nSock);    nSock = 0;    return NORMAL;}/* End of this file */

⌨️ 快捷键说明

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