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

📄 bcb8311.pco

📁 行业应用源码 行业应用源码 行业应用源码 行业应用源码 行业应用源码 行业应用源码
💻 PCO
📖 第 1 页 / 共 4 页
字号:
       IDENTIFICATION  DIVISION.       PROGRAM-ID.     BCB8311.       AUTHOR.         John.       DATE-WRITTEN.   2001/12/06/.       DATE-COMPILED.  2001/12/06/.      ******************************************************************      *** REMARKS:                                                   ***      *** PROGRAM NAME: BCB8311                                      ***      *** PROGRAM PURPOSE     :计息帐户计算利息(包括协定帐户)        ***      *** PROCESS DESCRIPTION :(支持一个协定帐户有多条协定记录)      ***      ***    1000-TXN-INIT-RTN                                       ***      ***    5000-NORMAL-PROCESS-RTN                                 ***      ***    8000-TXN-END-RTN                                        ***      ******************************************************************      ****************************************************************      ***  MODIFIED BY         : zhaoxz                            ***      ***  DATE MODIFY         : 分ORGIDT COMMIT程序中的BUG        ***      ***  MODIFY REASON       :                                   ***      ***  MODIFY DESCRIPTION  :                                   ***      ****************************************************************      ***  MODIFIED BY         : Liu XiaoShi                       ***      ***  DATE MODIFY         : 2003-08-18                        ***      ***  MODIFY REASON       : 打开游标时速度很慢                ***      ***  MODIFY DESCRIPTION  : 030818                            ***      ****************************************************************      ***  MODIFIED BY         : Liu XiaoShi                       ***      ***  DATE MODIFY         : 2003-11-27                        ***      ***  MODIFY REASON       : 打开游标时速度很慢                ***      ***  MODIFY DESCRIPTION  : 031127                            ***      ****************************************************************       ENVIRONMENT DIVISION.       INPUT-OUTPUT SECTION.      ******************************************************************      ***  DATA DIVISION                                             ***      ******************************************************************       DATA DIVISION.       WORKING-STORAGE SECTION.      ******************************************************************      ***  VARIABLE  CAN'T BE INITIALIZED                            ***      ******************************************************************        01  WK-AREA.          05  WK-PARA            PIC X(50)  VALUE '//WK-PARA/'.          05  WK-END-FLAG        PIC X(1)   VALUE '0'.          05  WK-ERR-FLAG        PIC X(1)   VALUE '0'.          05  WK-ERR-ALL-FLAG    PIC X(1)   VALUE '0'.        01 WK-IRTVAL             PIC S9(3)V9(15) VALUE ZERO.        01 WK-DRATSF             PIC S9(3)V9(15) VALUE ZERO.        01 WK-CRATSF             PIC S9(3)V9(15) VALUE ZERO.        01 WK-NXTVAL1            PIC S9(3)V9(15) VALUE ZERO.        01 WK-NXTVAL2            PIC S9(3)V9(15) VALUE ZERO.        01 WK-NXTVAL3            PIC S9(3)V9(15) VALUE ZERO.        01 OLD-NXTVAL1           PIC S9(3)V9(15) VALUE ZERO.        01 OLD-NXTVAL2           PIC S9(3)V9(15) VALUE ZERO.        01 OLD-NXTVAL3           PIC S9(3)V9(15) VALUE ZERO.        01 OLD-ACC-FLAG          PIC X(1) VALUE '0'.        01 OLD-ERYDAT            PIC X(10) VALUE SPACES.        01 OLD-BALLIM            PIC S9(15)V9(2) COMP-3 VALUE ZEROS.        01 WK-DITCST             PIC 9(3) VALUE ZERO.        01 WK-DAYS               PIC S9(8) COMP-3   VALUE ZERO.        01 WK-ACC-FLAG           PIC X(1) VALUE '0'.        01 WK-DR-ALL-INT   PIC S9(14)V9(4) COMP-3 VALUE ZEROS.        01 WK-CR-ALL-INT   PIC S9(14)V9(4) COMP-3 VALUE ZEROS.        01 WK-DR-INT       PIC S9(14)V9(4) COMP-3 VALUE ZEROS.        01 WK-CR-INT       PIC S9(14)V9(4) COMP-3 VALUE ZEROS.        01 WK-CR-INT1      PIC S9(14)V9(4) COMP-3 VALUE ZEROS.        01 WK-CR-INT2      PIC S9(14)V9(4) COMP-3 VALUE ZEROS.        01 WK-XIE-BAL      PIC S9(15)V9(2) COMP-3 VALUE ZEROS.        01 WK-DR-ACCM      PIC S9(15)V9(2) COMP-3 VALUE ZEROS.        01 WK-CR-ACCM      PIC S9(15)V9(2) COMP-3 VALUE ZEROS.        01 WK-CR-ACCM1     PIC S9(15)V9(2) COMP-3 VALUE ZEROS.        01 WK-CR-ACCM2     PIC S9(15)V9(2) COMP-3 VALUE ZEROS.      *****************************************************************      * SQL/DS HOST VARIABLE DECLARATION                            ***      *****************************************************************           EXEC  SQL BEGIN   DECLARE  SECTION  END-EXEC.           EXEC  SQL INCLUDE ACKSQST  END-EXEC.           EXEC  SQL INCLUDE SQLCOM   END-EXEC.       01 OLD-ORGIDT      PIC X(4)  VALUE SPACES.       01 OLD-CUSIDT      PIC X(7)  VALUE SPACES.       01 OLD-APCODE      PIC X(4)  VALUE SPACES.       01 OLD-CURCDE      PIC X(3)  VALUE SPACES.       01 OLD-INTDAT      PIC X(10) VALUE SPACES.       01 WK-CBH-ERYDAT   PIC X(10) VALUE SPACES.       01 WK-BASE-DATE    PIC X(10) VALUE '0001-01-01'.       01 WK-INTDAT-DAYS  PIC S9(8) COMP-3   VALUE 1.       01 WK-CRNDAT-DAYS  PIC S9(8) COMP-3   VALUE 1.       01 WK-OLD-DAYS     PIC S9(8) COMP-3   VALUE 1.       01 WK-DACINT       PIC S9(14)V9(4) COMP-3 VALUE ZEROS.        01 WK-CACINT       PIC S9(14)V9(4) COMP-3 VALUE ZEROS.        01 OLD-INTBAL      PIC S9(15)V9(2) COMP-3 VALUE ZEROS.       01 WK-IRTAMT       PIC S9(15)V9(2) COMP-3 VALUE ZEROS.       01 WK-EFFDAT       PIC X(10)        VALUE SPACES.       01 WK-SQL-VAL.           EXEC  SQL INCLUDE ACKSCT   END-EXEC.           EXEC  SQL INCLUDE ACKCUT   END-EXEC.           EXEC  SQL INCLUDE ACKCBH   END-EXEC.           EXEC  SQL INCLUDE ACKIRT   END-EXEC.           EXEC  SQL INCLUDE ACKCCY   END-EXEC.           EXEC  SQL INCLUDE ACKBAL   END-EXEC.           EXEC  SQL END     DECLARE  SECTION END-EXEC.           EXEC  SQL INCLUDE SQLCA   END-EXEC.       PROCEDURE DIVISION.       0000-MAIN-PROCESS-RTN.           DISPLAY   '*****  BCB8311  START *****' UPON CONSOLE.           PERFORM     1000-TXN-INIT-RTN           THRU 1000-EXIT.           PERFORM     5000-NORMAL-PROCESS-RTN     THRU 5000-EXIT.           PERFORM     8000-TXN-END-RTN            THRU 8000-EXIT.           DISPLAY   '*****  BCB8311  END   *****' UPON CONSOLE.           STOP RUN.       0000-EXIT.           STOP  RUN.       1000-TXN-INIT-RTN.      ****************************************************************      * CONNECT TO THE DATABASE                                      *      ****************************************************************           INITIALIZE  WK-SQL-VAL.           MOVE        '/1000-TXN-INIT-RTN/'    TO      WK-PARA.           EXEC SQL INCLUDE APS999  END-EXEC.           EXEC SQL LOCK TABLE  ACTBAL  IN EXCLUSIVE MODE END-EXEC.           EXEC SQL LOCK TABLE  ACTCUT  IN EXCLUSIVE MODE END-EXEC.********   EXEC SQL WHENEVER SQLERROR   GOTO  :ERRCHK END-EXEC.       1000-EXIT.           EXIT.       5000-NORMAL-PROCESS-RTN.           MOVE   '/5000-NORMAL-PROCESS-RTN/'   TO   WK-PARA.           EXEC SQL DELETE FROM TMP_ACTLOG END-EXEC.           EXEC SQL INSERT INTO TMP_ACTLOG (                    SELECT ORGIDT FROM ACTORG                     WHERE RECSTS = :CNST-M-RECSTS-VALID                     MINUS                    SELECT ORGIDT FROM ACTLOG                     WHERE JOBNAM = 'BCB8311' )           END-EXEC.zhaoxz     EXEC SQL COMMIT END-EXEC.           EXEC SQL SELECT CRNDAT                    INTO   :SCT-CRNDAT                    FROM   ACTSCT                   WHERE  SCTNUM = :CNST-M-SCTNUM-NORMAL                     AND  RECSTS = :CNST-M-RECSTS-VALID           END-EXEC.           MOVE    SQLCODE    TO     SQL-ERR-CODE           IF NOT SQL-C-NORMAL           THEN             DISPLAY 'READ ACTSCT ERR!'             GO  TO  ERRCHK           END-IF.           EXEC SQL DECLARE CUR_ACTBAL CURSOR FOR030818*            SELECT 030818             SELECT /*+ first_rows */031127*                   ORGIDT, CUSIDT, APCODE,                          ACTBAL.ORGIDT, CUSIDT, APCODE,                          CURCDE, INTDAT, INTBAL,                          DINRAT, CINRAT, DRATSF,                          CRATSF031127*              FROM ACTBAL031127               FROM ACTBAL, TMP_ACTLOG                    WHERE TRANFG = :CNST-M-TRANFG-FALSE                      AND INTTYP = :CNST-M-INTFLG-AIF                        AND RECSTS = :CNST-M-RECSTS-VALID  031127                AND ACTBAL.ORGIDT = TMP_ACTLOG.ORGIDT031127*               AND ORGIDT IN031127*               ( SELECT  ORGIDT031127*                  FROM  TMP_ACTLOG )                 ORDER BY ORGIDT, CUSIDT, APCODE, CURCDE, INTDAT           END-EXEC.           EXEC  SQL  OPEN   CUR_ACTBAL  END-EXEC.           MOVE    SQLCODE    TO     SQL-ERR-CODE           IF NOT SQL-C-NORMAL           THEN              DISPLAY 'OPEN CUR_ACTBAL ERR'              GO   TO   ERRCHK           END-IF.           PERFORM     5100-SCAN-ACTBAL-RTN        THRU 5100-EXIT                   UNTIL  WK-END-FLAG = '1'.           EXEC  SQL  CLOSE  CUR_ACTBAL  END-EXEC.           MOVE    SQLCODE    TO     SQL-ERR-CODE           IF NOT SQL-C-NORMAL           THEN              DISPLAY 'CLOSE CUR_ACTBAL ERR'              GO   TO   ERRCHK           END-IF.       5000-EXIT.           EXIT.     ********************************************************************     *** 5100-SCAN-ACTBAL-RTN 按机构循环计算帐户截止到当前工作日的利息***     *** 并将其放在ACTCUT中的该帐户的应收应付息中。同时以上处理按机构 ***     *** 提交直到无新的机构。                                         ***     ********************************************************************       5100-SCAN-ACTBAL-RTN.           MOVE   '/5100-SCAN-ACTBAL-RTN/'   TO   WK-PARA.           EXEC  SQL  FETCH  CUR_ACTBAL                      INTO   :BAL-ORGIDT, :BAL-CUSIDT, :BAL-APCODE,                             :BAL-CURCDE, :BAL-INTDAT, :BAL-INTBAL,                             :BAL-DINRAT, :BAL-CINRAT, :BAL-DRATSF,                             :BAL-CRATSF           END-EXEC.021112*    display 'bal1-orgidt='bal-orgidt.021112*    display 'bal1-cusidt='bal-cusidt.021112*    display 'bal1-apcode='bal-apcode.021112*    display 'bal1-curcde='bal-curcde.021112*    display 'bal1-dinrat='bal-dinrat.021112*    display 'bal1-cinrat='bal-cinrat.           MOVE      SQLCODE    TO     SQL-ERR-CODE           IF NOT SQL-C-NORMAL           THEN             IF  SQL-C-RECORD-NOT-FOUND             THEN               IF OLD-ORGIDT NOT = SPACES               THEN                  PERFORM 5102-COMPUTE-IRTVAL THRU 5102-EXIT                  PERFORM 5105-UPDATE-ACTCUT  THRU 5105-EXIT                 PERFORM 5200-COMM-PROC      THRU 5200-EXIT               END-IF               MOVE     '1'                 TO      WK-END-FLAG               GO  TO  5100-EXIT             ELSE               GO   TO    ERRCHK             END-IF           END-IF.           PERFORM 5107-SEL-ACTCBH   THRU  5107-EXIT.            IF BAL-ORGIDT NOT = OLD-ORGIDT           THEN              IF OLD-ORGIDT NOT = SPACES              THEN                 PERFORM 5102-COMPUTE-IRTVAL THRU 5102-EXIT                  PERFORM 5105-UPDATE-ACTCUT  THRU 5105-EXIT                 PERFORM 5200-COMM-PROC      THRU 5200-EXIT                 MOVE  SPACES              TO      OLD-INTDAT                 MOVE  0                   TO      OLD-INTBAL              END-IF              EXEC SQL SELECT UPDINT, DACINT, CACINT                         INTO :CUT-UPDINT, :CUT-DACINT, :CUT-CACINT                         FROM ACTCUT                       WHERE ORGIDT = :BAL-ORGIDT                         AND CUSIDT = :BAL-CUSIDT                         AND APCODE = :BAL-APCODE                         AND CURCDE = :BAL-CURCDE                         AND RECSTS = :CNST-M-RECSTS-VALID              END-EXEC              MOVE      SQLCODE    TO     SQL-ERR-CODE              IF NOT SQL-C-NORMAL              THEN                IF  SQL-C-RECORD-NOT-FOUND                THEN                  DISPLAY 'SELECT ACTCUT ERR!'                  MOVE  '1'                 TO      WK-ERR-FLAG                  GO    TO     5100-EXIT                ELSE                  GO    TO   ERRCHK                END-IF              END-IF           ELSE             IF BAL-CUSIDT NOT = OLD-CUSIDT  OR                BAL-APCODE NOT = OLD-APCODE  OR                BAL-CURCDE NOT = OLD-CURCDE             THEN                 PERFORM  5102-COMPUTE-IRTVAL THRU 5102-EXIT                 PERFORM  5105-UPDATE-ACTCUT  THRU 5105-EXIT                MOVE   SPACES              TO      OLD-INTDAT                MOVE   0                   TO      OLD-INTBAL                EXEC SQL SELECT UPDINT, DACINT, CACINT                         INTO :CUT-UPDINT, :CUT-DACINT, :CUT-CACINT                         FROM ACTCUT                       WHERE ORGIDT = :BAL-ORGIDT                         AND CUSIDT = :BAL-CUSIDT                         AND APCODE = :BAL-APCODE

⌨️ 快捷键说明

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