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

📄 bcb8564.pco

📁 行业应用源码 行业应用源码 行业应用源码 行业应用源码 行业应用源码 行业应用源码
💻 PCO
📖 第 1 页 / 共 2 页
字号:
       IDENTIFICATION  DIVISION.       PROGRAM-ID.     BCB8564.       AUTHOR.         WHQ.       DATE-WRITTEN.   2001/11/09.       DATE-COMPILED.  2001/11/09.      ******************************************************************      *   REMARKS:          : STAMENT PROC IN SEPCIAL DATE(END OF YEAR,*      *                     : MONTH, TENDAY, WEEK ETC)                 *      *   PROGRAM  NAME:    : BCB8564                                  *      *   COMMON  DATA AREA :                                          *      *   PROGRAM PURPOSE :                                            *      *   PROCESS DESCRIPTION:                                         *      *           1000-PRM-INIT-RTN                                    *      *           3000-FILE-RETRIEVE-RTN                               *      *           5000-NORMAL-PROCESS-RTN                              *      *           ...                                                  *      *           8000-PGM-END-RTN                                     *      ******************************************************************      ***  MODIFIED BY: zhaoxz                                       ***      ***  DATE MODIFY: 2002-06-28                                   ***      ***  MODIFY REASON: 半年、年底没有采用决算牌价                 ***      ***  MODIFY DESCRIPTION  : 020628                              ***      ******************************************************************      ***  MODIFIED BY: LiuXiaoShi                                   ***      ***  DATE MODIFY: 2003-05-28                                   ***      ***  MODIFY REASON: 解决程序运行太慢                           ***      ***  MODIFY DESCRIPTION  : 030528                              ***      ******************************************************************       ENVIRONMENT DIVISION.       INPUT-OUTPUT SECTION.       DATA DIVISION.      **********************************************************      *** FOLLOWING SECTION IS ONLY FOR BATCH OUTPUT FILE    ***      **********************************************************       WORKING-STORAGE SECTION.       01  WK-END-FLAG           PIC X(1)  VALUE '0'.       01  WK-END-FLAG1          PIC X(1)  VALUE '0'.       01  WK-X-PARA             PIC X(40) VALUE SPACES.      *--------------------------------------------------------------*      * SQL/DS HOST VARIABLE DECLARATION                             *      *--------------------------------------------------------------*           EXEC   SQL   BEGIN    DECLARE  SECTION END-EXEC.           EXEC   SQL   INCLUDE  SQLCOM           END-EXEC.           EXEC   SQL   INCLUDE  ACKSQST          END-EXEC.           01  TMP-RECTYP        PIC X(1)  VALUE SPACES.020628     01 TMP1-XRTCDE        PIC X(1) VALUE SPACES.020628     01 TMP2-XRTCDE        PIC X(1) VALUE SPACES.           01  WK-CNT-APC        PIC S9(7) COMP-3 VALUE 0.           01 WK-M-VAL-SQL.           EXEC   SQL   INCLUDE  ACKSCT           END-EXEC.           EXEC   SQL   INCLUDE  ACKCAP           END-EXEC.           EXEC   SQL   INCLUDE  ACKAPC           END-EXEC.           EXEC   SQL   INCLUDE  ACKCXR           END-EXEC.           EXEC   SQL   END      DECLARE SECTION   END-EXEC.      *--------------------------------------------------------------*      * SQL INCLUDE FOR SQLCA                                        *      *--------------------------------------------------------------*           EXEC   SQL   INCLUDE SQLCA  END-EXEC.       PROCEDURE DIVISION.      *--------------------------------------------------------------*       0000-MAIN-PROCESS-RTN.      *--------------------------------------------------------------*           DISPLAY     'BCB8564  BEGIN'.           PERFORM     1000-TXN-INIT-RTN           THRU  1000-EXIT.           PERFORM     3000-FILE-RETRIEVE-RTN      THRU  3000-EXIT.      *    PERFORM     5000-NORMAL-PROCESS-RTN     THRU  5000-EXIT.           PERFORM     8000-TXN-END-RTN            THRU  8000-EXIT.           DISPLAY     'BCB8564  END'.       0000-EXIT.           STOP RUN.      *--------------------------------------------------------------*       1000-TXN-INIT-RTN.      *--------------------------------------------------------------*           MOVE       '1000-TXN-INIT-RTN'      TO        WK-X-PARA.           DISPLAY    WK-X-PARA.           EXEC  SQL  INCLUDE APS999  END-EXEC.      *    EXEC  SQL  WHENEVER SQLERROR   GOTO :ERRCHK       END-EXEC.      *    EXEC  SQL  WHENEVER SQLWARNING GOTO :ERRCHK       END-EXEC.       1000-EXIT.           EXIT.      *--------------------------------------------------------------*       3000-FILE-RETRIEVE-RTN.      *--------------------------------------------------------------*           MOVE       '3000-FILE-RETRIEVE-RTN'   TO        WK-X-PARA.           DISPLAY    WK-X-PARA.      * 清TMPCAP中的外币折美圆、折人民币数据020628*    EXEC SQL DELETE FROM TMPCAP   .  *             WHERE RECSTS = :CNST-M-RECSTS-VALID   .  *               AND (RECTYP = :CNST-M-RECTYP-F   .  *                 OR RECTYP = :CNST-M-RECTYP-G   .  *                 OR RECTYP = :CNST-M-RECTYP-I   .  *                 OR RECTYP = :CNST-M-RECTYP-K   .  *                 OR RECTYP = :CNST-M-RECTYP-D   .  *                 OR RECTYP = :CNST-M-RECTYP-M   .  *                 OR RECTYP = :CNST-M-RECTYP-S   .  *                 OR RECTYP = :CNST-M-RECTYP-Y )020628*    END-EXEC.020628     EXEC SQL TRUNCATE TABLE TMPCAP   END-EXEC.           EXEC SQL  SELECT  MONMAK,      QTRMAK,      HYRMAK,                             YERMAK,      CRNDAT,      PREMAK                       INTO  :SCT-MONMAK, :SCT-QTRMAK, :SCT-HYRMAK,                             :SCT-YERMAK, :SCT-CRNDAT, :SCT-PREMAK                       FROM  ACTSCT                      WHERE  SCTNUM = :CNST-M-SCTNUM-NORMAL           END-EXEC.      *--------------------------------------------------------------*      *    SKIP PROC IF NOT SPECIAL DATE                             *      *--------------------------------------------------------------*           MOVE    SCT-CRNDAT    TO    CAP-CREDAT.           MOVE    SCT-CRNDAT    TO    CAP-GLDATE.020628*    PERFORM  5010-SELECT-001    THRU    5010-EXIT.   .  *    PERFORM  5100-PROCES-RTN    THRU    5100-EXIT.   .  *    IF SCT-MONMAK = 'Y'   .  *     OR SCT-QTRMAK = 'Y'   .  *     OR SCT-HYRMAK = 'Y'   .  *     OR SCT-YERMAK = 'Y'   .  *     OR SCT-PREMAK = 'Y'   .  *    THEN   .  *      PERFORM  5500-PROCES-MON    THRU    5500-EXIT   .  *      PERFORM  5600-PROCES-QTR    THRU    5600-EXIT   .  *      PERFORM  5700-PROCES-HYR    THRU    5700-EXIT   .  *      PERFORM  5800-PROCES-YER    THRU    5800-EXIT020628*    END-IF.           EXEC SQL DECLARE CUR_CAP001 CURSOR FOR                SELECT ORGIDT, APCODE, CURCDE,                       RECTYP, GLDATE, DRAMNT,                       CRAMNT, DRCUNT, CRCUNT,                       DRBALA, CRBALA, DAVBAL,                       CAVBAL, DLSBAL, CLSBAL,                       RECSTS                  FROM ACTCAP                 WHERE RECSTS = :CNST-M-RECSTS-VALID                   AND CURCDE = :CNST-M-CURCDE-001020628*       ORDER BY ORGIDT, APCODE, RECTYP           END-EXEC.           EXEC SQL DECLARE CUR_TMPCAP CURSOR FOR                SELECT ACTCAP.ORGIDT, ACTCAP.APCODE,                       SUM(ACTCAP.DRAMNT * ACTCXR.CURRAT),                       SUM(ACTCAP.CRAMNT * ACTCXR.CURRAT),                       SUM(ACTCAP.DRCUNT),                       SUM(ACTCAP.CRCUNT),                       SUM(ACTCAP.DRBALA * ACTCXR.CURRAT),                       SUM(ACTCAP.CRBALA * ACTCXR.CURRAT),                       SUM(ACTCAP.DAVBAL * ACTCXR.CURRAT),                       SUM(ACTCAP.CAVBAL * ACTCXR.CURRAT),                       SUM(ACTCAP.DLSBAL * ACTCXR.CURRAT),                       SUM(ACTCAP.CLSBAL * ACTCXR.CURRAT)                  FROM ACTCAP, ACTAPC, ACTCXR                 WHERE ACTCAP.APCODE = ACTAPC.APCODE                 AND ACTCAP.RECTYP = :TMP-RECTYP                 AND ACTCAP.CURCDE = ACTCXR.CURCDE                 AND ACTCXR.SECCCY = :CNST-M-CURCDE-001020628*          AND ((ACTCXR.XRTCDE = :CNST-M-XRTCDE-4020628           AND ((ACTCXR.XRTCDE = :TMP1-XRTCDE                   AND ACTCXR.CURCDE NOT IN ('013','014','027','038'))020628*           OR (ACTCXR.XRTCDE = :CNST-M-XRTCDE-8020628            OR (ACTCXR.XRTCDE = :TMP2-XRTCDE                   AND ACTCXR.CURCDE IN ('013','014','027','038')))                 AND ACTCAP.RECSTS = :CNST-M-RECSTS-VALID                 AND ACTAPC.RECSTS = :CNST-M-RECSTS-VALID              GROUP BY ACTCAP.ORGIDT, ACTCAP.APCODE020628*       ORDER BY ACTCAP.ORGIDT, ACTCAP.APCODE           END-EXEC.020628     IF SCT-HYRMAK = 'Y' OR SCT-YERMAK = 'Y'   .       THEN   .         MOVE  CNST-M-XRTCDE-6     TO    TMP1-XRTCDE   .         MOVE  CNST-M-XRTCDE-6     TO    TMP2-XRTCDE   .       ELSE   .         MOVE  CNST-M-XRTCDE-4     TO    TMP1-XRTCDE   .         MOVE  CNST-M-XRTCDE-8     TO    TMP2-XRTCDE   .       END-IF.020628     PERFORM  5010-SELECT-001    THRU    5010-EXIT.   .       PERFORM  5100-PROCES-RTN    THRU    5100-EXIT.   .       IF SCT-MONMAK = 'Y'   .        OR SCT-QTRMAK = 'Y'   .        OR SCT-HYRMAK = 'Y'   .        OR SCT-YERMAK = 'Y'   .        OR SCT-PREMAK = 'Y'   .       THEN   .         PERFORM  5500-PROCES-MON    THRU    5500-EXIT   .         PERFORM  5800-PROCES-YER    THRU    5800-EXIT020628     END-IF.       3000-EXIT.           EXIT.      *--------------------------------------------------------------*       5000-NORMAL-PROCESS-RTN.      *--------------------------------------------------------------*           MOVE       '5000-RTN'               TO        WK-X-PARA.           DISPLAY    WK-X-PARA.       5000-EXIT.           EXIT.       5010-SELECT-001.           MOVE       '5010-SELECT-001'    TO        WK-X-PARA.           DISPLAY    WK-X-PARA.030528     EXEC SQL  DROP TABLE TMP_COUNTCUT    END-EXEC.030528     EXEC SQL  CREATE TABLE TMP_COUNTCUT030528          AS   SELECT  ORGIDT,'001' CURCDE,030528                       APCODE,COUNT(*) COUNT030528                 FROM  ACTCUT030528                 WHERE RECSTS = '1'030528                  AND  CURCDE = '001'030528                 GROUP BY ORGIDT,APCODE030528     END-EXEC.030528     EXEC SQL  CREATE UNIQUE INDEX TMP_COUNTCUT_PK030528                  ON  TMP_COUNTCUT(ORGIDT,CURCDE,APCODE)030528     END-EXEC.           MOVE    '0'      TO    WK-END-FLAG.           EXEC SQL OPEN CUR_CAP001 END-EXEC.           PERFORM  5050-FETCH-CAP001    THRU    5050-EXIT                    UNTIL WK-END-FLAG = '1'.           EXEC SQL CLOSE CUR_CAP001 END-EXEC.       5010-EXIT.           EXIT.       5050-FETCH-CAP001.           MOVE       '5050-FETCH-CAP001'    TO     WK-X-PARA.           DISPLAY    WK-X-PARA.           EXEC SQL FETCH CUR_CAP001                     INTO :CAP-ORGIDT, :CAP-APCODE, :CAP-CURCDE,                          :CAP-RECTYP, :CAP-GLDATE, :CAP-DRAMNT,                          :CAP-CRAMNT, :CAP-DRCUNT, :CAP-CRCUNT,                          :CAP-DRBALA, :CAP-CRBALA, :CAP-DAVBAL,                          :CAP-CAVBAL, :CAP-DLSBAL, :CAP-CLSBAL,                          :CAP-RECSTS           END-EXEC.           MOVE    SQLCODE    TO    SQL-ERR-CODE.           IF NOT SQL-C-NORMAL           THEN             IF SQL-C-RECORD-NOT-FOUND             THEN               MOVE    '1'      TO    WK-END-FLAG               GO TO 5050-EXIT             ELSE               DISPLAY 'FETCH CAP001 ERR:'SQLCODE               GO TO ERRCHK             END-IF           END-IF.           PERFORM  5960-COUNT-APC    THRU    5960-EXIT.           PERFORM  6000-INSERT-CAP    THRU    6000-EXIT.       5050-EXIT.           EXIT.       5100-PROCES-RTN.           MOVE       '5100-PROCES-RTN'    TO        WK-X-PARA.           DISPLAY    WK-X-PARA.030528     EXEC SQL  DROP TABLE TMP_COUNTCUT    END-EXEC.030528     EXEC SQL  CREATE TABLE TMP_COUNTCUT030528          AS   SELECT  ORGIDT,'000' CURCDE,030528                       APCODE,COUNT(*) COUNT030528                 FROM  ACTCUT030528                 WHERE RECSTS = '1'030528                 GROUP BY ORGIDT,APCODE030528     END-EXEC.030528     EXEC SQL  CREATE UNIQUE INDEX TMP_COUNTCUT_PK030528                  ON  TMP_COUNTCUT(ORGIDT,CURCDE,APCODE)030528     END-EXEC.           MOVE    '0'           TO    WK-END-FLAG1.           MOVE    'D'           TO    TMP-RECTYP.           MOVE    'F'           TO    CAP-RECTYP.           MOVE    CNST-M-RECSTS-VALID    TO    CAP-RECSTS.*************************************************************各货币折人民币                              ******************************************************           MOVE    CNST-M-CURCDE-001      TO    CAP-CURCDE.           EXEC SQL OPEN CUR_TMPCAP END-EXEC.           PERFORM  5120-FETCH-CURSOR    THRU    5120-EXIT                    UNTIL WK-END-FLAG1 = '1'.           EXEC SQL CLOSE CUR_TMPCAP END-EXEC.       5100-EXIT.           EXIT.       5120-FETCH-CURSOR.           MOVE       '5120-FETCH-CURSOR'  TO        WK-X-PARA.           DISPLAY    WK-X-PARA.           PERFORM  5910-FETCH-CAP   THRU    5910-EXIT.           MOVE    SQLCODE    TO    SQL-ERR-CODE.           IF NOT SQL-C-NORMAL           THEN             IF SQL-C-RECORD-NOT-FOUND             THEN               MOVE    '1'      TO    WK-END-FLAG1               GO TO 5120-EXIT             ELSE               DISPLAY '5120SQLCODE:',SQLCODE               GO TO ERRCHK             END-IF           END-IF.           PERFORM  5950-COUNT-APC     THRU    5950-EXIT.           PERFORM  6000-INSERT-CAP    THRU    6000-EXIT.       5120-EXIT.           EXIT.       5500-PROCES-MON.           MOVE       '5500-PROCES-MON'    TO        WK-X-PARA.           DISPLAY    WK-X-PARA.           MOVE    '0'           TO    WK-END-FLAG1.           MOVE    'M'           TO    TMP-RECTYP.           MOVE    'G'           TO    CAP-RECTYP.           MOVE    CNST-M-RECSTS-VALID    TO    CAP-RECSTS.*************************************************************汇总折人民币                                ******************************************************           MOVE    CNST-M-CURCDE-001      TO    CAP-CURCDE.           EXEC SQL OPEN CUR_TMPCAP END-EXEC.           PERFORM  5520-FETCH-CURSOR    THRU    5520-EXIT                    UNTIL WK-END-FLAG1 = '1'.           EXEC SQL CLOSE CUR_TMPCAP END-EXEC.

⌨️ 快捷键说明

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