051000 PROCEDURE DIVISION USING LINK-AREA. 051100 MAINLINE SECTION. 051200 051300 MOVE LINK-AREA TO TRANSACTION-TO-EDIT. 051400 IF NOT TABLES-LOADED 051500 PERFORM LOAD-TABLES 051600 IF NOT GOOD-RETURN-CODE 051700 GO TO TEST-RETURN-CODE. 051800 MOVE NOMINAL-STATUS-CODE TO STATUS-CODE. 051810 MOVE SPACE TO TRANSACTION-MESSAGE. 051900 MOVE ' ' TO CDIC-SIGN-FIELD. 052000 PERFORM EDIT-SERIAL. 052100 IF ITEM-HAS-NOT-BEEN-REJECTED 052110 PERFORM EDIT-FRB-NUMBER 052200 PERFORM EDIT-ACCOUNT 052300 IF ITEM-HAS-NOT-BEEN-REJECTED 052400 PERFORM CALL-DIEDIT. 052500 052600 IF ITEM-HAS-BEEN-REJECTED 052700 IF DEST-POSTING-APPLICATION NOT = 'X' 052800 MOVE 'Y' TO DEST-POSTING-APPLICATION. 052900 053000 MOVE TRANSACTION-TO-EDIT TO LINK-AREA. 053100 TEST-RETURN-CODE. 053200 MOVE SAVED-RETURN-CODE TO RETURN-CODE. 053300 IF NOT GOOD-RETURN-CODE 053400 CALL 'UTKT' USING SAVED-RETURN-CODE, 053500 SAVED-RETURN-CODE. 053600 GOBACK. 053800****************************************************************** 053900* TEST SERIAL NUMBER FOR ALL NUMERIC. IF NOT, ACCEPT NUMERIC * 054000* WITH LEADING SPACES, BUT RIGHT JUSTIFY AND ZERO FILL. IF * 054100* NOT NUMERIC OR NUMERIC/SPACES, REJECT * 054200****************************************************************** 054400 EDIT-SERIAL SECTION. 054420 MOVE ZERO TO SERIAL-FIX. 054430 SET BYTE TO 10. 054500 PERFORM VARYING HOLD FROM 10 BY -1 UNTIL HOLD < 1 054600 PERFORM UNTIL BYTE < 1 OR SERIAL (BYTE) NOT EQUAL SPACE 054700 SET BYTE DOWN BY 1 054710 END-PERFORM 054720 IF BYTE NOT < 1 054800 MOVE SERIAL (BYTE) TO FIX (HOLD) 054900 SET BYTE DOWN BY 1 055100 END-IF 055200 END-PERFORM. 055300 IF SERIAL-FIX IS NUMERIC 055310 MOVE SERIAL-FIX TO SERIAL-NUMBER 055320 ELSE 055400 MOVE SERIAL-NON-NUMERIC TO STATUS-CODE. 055501****************************************************************** 055502 EDIT-FRB-NUMBER SECTION. 055503 MOVE 'N' TO SOW-FRB-FLAG. 055504 MOVE 'N' TO GL-ITEMS-FRB-FLAG. 055505 MOVE 'N' TO BRANCH-SETTLEMENT-FRB-FLAG. 055510 IF VALID-FRB-NUMBER-DIGIT-1 055520 IF FRB-NUMBER-4 = '6' 055530 MOVE 'Y' TO SOW-FRB-FLAG 055540 END-IF 055550 IF FRB-NUMBER-4 = '7' 055562 MOVE 'Y' TO BRANCH-SETTLEMENT-FRB-FLAG 055571 END-IF 055580 IF FRB-NUMBER-4 = '9' 055590 MOVE 'Y' TO GL-ITEMS-FRB-FLAG 055591 END-IF. 055600****************************************************************** 055700* ACCOUNT NUMBER EDIT ROUTINE: PAPER TESTS & VALID CHECK DIGIT. * 055800****************************************************************** 056000 EDIT-ACCOUNT SECTION. 056100 IF PAPER-ITEMS AND 056200 (WFB-TRACER-DOCUMENT 056300 OR (ACCOUNT-NUMBER = ZERO AND AMOUNT = ZERO)) 056400 MOVE ACCOUNT-FIELD-MISSING TO STATUS-CODE 056500 MOVE 'T' TO TRACER-FLAG 056600 MOVE 'X' TO DEST-POSTING-APPLICATION 056700 ELSE 056800 PERFORM CHECK-DIGIT-ROUTINE. 056900 EDIT-ACCOUNT-EXIT. EXIT. 057100****************************************************************** 057200* SET REVERSAL SERVICE CODE (AS WELL AS REVERSAL/DELETION/BOTH * 057300* FLAG) * 057400****************************************************************** 057600 SET-REVERSAL-SERVICE-CODE SECTION. 057700 IF NOT DI-EDIT-REVERSAL-ITEM 057800 MOVE '00' TO REVERSAL-SERVICE-CODE 057900 GO TO SET-REVERSAL-EXIT. 058000 IF REVERSAL-SERVICE-CODE NOT NUMERIC 058100 OR REVERSAL-SERVICE-CODE = '00' 058200 OR REVERSAL-SERVICE-CODE > '07' 058300 IF SPECIAL-REVERSAL-BATCH 058400 MOVE '02' TO REVERSAL-SERVICE-CODE 058500 ELSE 058600 MOVE '01' TO REVERSAL-SERVICE-CODE 058700 ELSE NEXT SENTENCE. 058800 IF ITEM-IS-A-CORRECTION 058900 MOVE 'B' TO CDIC-SIGN-FIELD 059000 ELSE 059100 MOVE 'R' TO CDIC-SIGN-FIELD. 059200 SET-REVERSAL-EXIT. EXIT. 059400****************************************************************** 059500* MOD-10 CHECK DIGIT ROUTINE * 059600****************************************************************** 059800 CHECK-DIGIT-ROUTINE SECTION. 059902 IF BRANCH-SETTLEMENT-ABA OR 059910 BRANCH-SETTLEMENT-FRB 060000 GO TO CHECK-DIGIT-EXIT. 060100 COMPUTE EXPECTED-CHECK-DIGIT = 80 - DIGIT1 060200 - DOUBLE (DIGIT2) 060300 - DIGIT3 060400 - DOUBLE (DIGIT4) 060500 - DIGIT5 060600 - DOUBLE (DIGIT6) 060700 - DIGIT7 060800 - DOUBLE (DIGIT8). 060900 IF CHECK-DIGIT NOT EQUAL EXPECTED-CHECK-DIGIT 060910 OR (DIGIT1 EQUAL 0 060920 AND DIGIT2 EQUAL 0 060930 AND DIGIT3 EQUAL 0 060940 AND DIGIT4 EQUAL 0 060950 AND DIGIT5 EQUAL 0 060960 AND DIGIT6 EQUAL 0 060970 AND DIGIT7 EQUAL 0 060980 AND DIGIT8 EQUAL 0) 061000 MOVE BAD-CHECK-DIGIT TO STATUS-CODE. 061100 CHECK-DIGIT-EXIT. EXIT. 061300****************************************************************** 061400* DI MODULE NOW DOES THE MAIN TRANSACTION EDITING. * 061500****************************************************************** 061700 CALL-DIEDIT SECTION. 061800 PERFORM BUILD-DI-PARMS. 061900 CALL EDIT-SUBROUTINE USING DI-EDIT-PARM-AREA, 062000 DI-DETL-DETAIL-RECORD. 062100 PERFORM SET-ET-STATUS. 062200 PERFORM SET-REVERSAL-SERVICE-CODE. 062400****************************************************************** 062500* FORMAT DATA FOR INPUT TO DIEDIT. * 062600****************************************************************** 062800 BUILD-DI-PARMS SECTION. 062900 SET DI-EDIT-EDIT-RECORD TO TRUE. 063000 IF DI-QIO-STAT-LAST-EXTRACT-NO (1) 063100 NOT LESS THAN DI-QIO-STAT-CUTOFF-LOCATION (1) 063200 SET DI-EDIT-SOURCE-CUTOFF-OCCURRED TO TRUE. 063300 IF PROCESS-CONTROL NUMERIC 063400 IF TRAN-CREDIT (PROCESS-CONTROL) 063500 SET DI-DETL-ON-US-CREDIT TO TRUE 063600 SET TRAN-IS-A-CREDIT TO TRUE 063700 ELSE 063800 SET DI-DETL-ON-US-DEBIT TO TRUE 063900 SET TRAN-IS-A-DEBIT TO TRUE 064000 ELSE 064100 SET DI-DETL-ON-US-DEBIT TO TRUE 064200 SET TRAN-IS-A-DEBIT TO TRUE. 064300 MOVE SPACE TO DI-DETL-POCKET. 064400 MOVE SERIAL-NUMBER TO DI-DETL-SERIAL-NUMBER. 064500 MOVE ABA-NUMBER TO DI-DETL-TRAN-ABA-VALUE. 064600 MOVE ACCOUNT-NUMERIC TO DI-DETL-ACCOUNT-NUMBER. 064700 MOVE PROCESS-CONTROL TO DI-DETL-PROCESS-CONTROL. 064800 MOVE DOLLAR-AMOUNT TO DI-DETL-AMOUNT. 064900 MOVE SOURCE-CODE TO DI-DETL-SOURCE-CODE. 065000 MOVE ZERO TO DI-DETL-POD-FILM-NUMBER. 065100 MOVE SPACE TO DI-DETL-TYPE-OF-WORK. 065230 MOVE CORRESPONDING TRANSACTION-DATE TO WORK-DATE. 065240 IF TRAN-REVERSAL (PROCESS-CONTROL) 065250 AND WORK-YYMMDD EQUAL DI-QIO-STAT-CYCLE-DATE (1) 065293 MOVE 1 TO PRIOR-COUNT 065294 CALL 'ARBB' USING CALENDAR 065295 IF GOOD-CALENDAR 065296 MOVE PRIOR-DATE TO DI-DETL-TRANSACTION-DATE 065297 ELSE 065300 MOVE ZERO TO DI-DETL-TRANSACTION-DATE 065301 ELSE 065330 MOVE WORK-YYMMDD TO DI-DETL-TRANSACTION-DATE. 065335 065336 IF ABA-NUMBER = 502000786 OR 502000579 OR 50200003 065337 MOVE FOUR-DIGIT-AU-9 TO DI-DETL-AU-NUMBER 065338 ELSE 065400 IF FOUR-DIGIT-AU-9 > 1999 AND < 3000 065500 MOVE FOUR-DIGIT-AU-9 TO DI-DETL-AU-NUMBER 065600 ELSE 065700 MOVE TRANSACTION-AU-9 TO DI-DETL-AU-NUMBER. 065710 IF BATCH-NUMBER EQUAL DI-DETL-BATCH-NUMBER 065711 ADD 1 TO SEQUENCE-NUMBER 065713 ELSE 065714 MOVE BATCH-NUMBER TO DI-DETL-BATCH-NUMBER 065715 MOVE 1 TO SEQUENCE-NUMBER. 065716 MOVE SEQUENCE-NUMBER TO DI-DETL-SEQUENCE-NUMBER. 065900 MOVE ZERO TO DI-DETL-REVERSAL-SVC-CODE. 066000 MOVE SPACE TO DI-DETL-EFT-TYPE-CODE. 066100 MOVE ZERO TO DI-DETL-DESC-LENGTH. 066300****************************************************************** 066400* CONVERT DIEDIT RETURN MESSAGE TO ET RETURN CODE. * 066500****************************************************************** 066700 SET-ET-STATUS SECTION. 066800 IF DI-EDIT-DEBIT-ITEM 066900 SET TRAN-IS-A-DEBIT TO TRUE 067000 ELSE IF DI-EDIT-CREDIT-ITEM 067100 SET TRAN-IS-A-CREDIT TO TRUE. 067200 067300 IF DI-EDIT-CEC-MEC-ITEM 067400 SET ITEM-IS-A-CORRECTION TO TRUE. 067500 067510 MOVE DI-EDIT-APPLICATION-CODE TO ET-DI-APPLICATION. 067600 IF DI-EDIT-REJECT-MESSAGE NOT EQUAL SPACE 067900 MOVE 01 TO STATUS-CODE 068000 MOVE DI-EDIT-REJECT-MESSAGE TO TRANSACTION-MESSAGE. 068100 068300 IF DI-EDIT-ITEM-REJECTED 068400 MOVE 'Y' TO DEST-POSTING-APPLICATION 068500 ELSE IF ACQUISITION-ITEM 068520 NEXT SENTENCE 068600 ELSE IF PAPER-ITEMS AND DI-EDIT-CREDIT-ITEM 068700 AND ( DI-EDIT-APPLICATION-CODE EQUAL 'AO' 068800 OR 'BR' 068900 OR 'DA' 069000 OR 'GL' 069100 OR 'WA' 069200 OR 'WD' ) 069300 MOVE 'E' TO DEST-POSTING-APPLICATION 069400 ELSE IF PAPER-ITEMS AND WS-CASH-IN-RECORD 069500 AND DI-EDIT-APPLICATION-CODE EQUAL 'GL' 069600 MOVE 'I' TO DEST-POSTING-APPLICATION 069700 ELSE IF DI-EDIT-APPLICATION-CODE EQUAL 'AO' 069800 OR 'BR' 069900 OR 'DA' 070000 IF TRANSACTION-AU > 599 070100 MOVE 'B' TO DEST-POSTING-APPLICATION 070200 ELSE 070300 MOVE 'A' TO DEST-POSTING-APPLICATION 070400 ELSE IF DI-EDIT-APPLICATION-CODE EQUAL 'WA' 070500 OR 'WD' 070600 MOVE 'D' TO DEST-POSTING-APPLICATION 070700 ELSE 070800 MOVE 'C' TO DEST-POSTING-APPLICATION. 072300****************************************************************** 072400* READ TRANCODE & CUTOFF FILES; INITIALIZE DIEDIT SUBROUTINE. * 072500****************************************************************** 072700 LOAD-TABLES SECTION. 072800******LOAD TRANCODE TABLE 072900 OPEN INPUT TRANCODE-FILE. 073000 READ TRANCODE-FILE 073100 AT END MOVE +1 TO EOF-ON-TRANCODE-SWITCH. 073200 PERFORM BUILD-TRANCODE-TABLE UNTIL EOF-ON-TRANCODE. 073300 CLOSE TRANCODE-FILE. 073400 073410******READ DI CUTOFF STATUS 073420 OPEN INPUT DI-CUTOFF-FILE. 073430 READ DI-CUTOFF-FILE. 073440 IF NO-DI-CUTOFF 073450 MOVE +4092 TO SAVED-RETURN-CODE 073460 ELSE 073470 MOVE DI-CUTOFF-CYCLES TO DI-QIO-STAT-NO-OF-CYCLES 073480 MOVE DI-CUTOFF-RECORD TO DI-QIO-STATUS-REC. 073490 CLOSE DI-CUTOFF-FILE. 073500******INITIALIZE DIEDIT 073600 INITIALIZE DI-EDIT-PARM-AREA. 073700 SET DI-EDIT-INITIALIZE-PGM TO TRUE. 073800 MOVE DI-QIO-STAT-CYCLE-DATE (1) TO DI-EDIT-PROCESSING-DATE. 073900 CALL EDIT-SUBROUTINE USING DI-EDIT-PARM-AREA. 074000 IF DI-EDIT-SUCCESSFUL-RETURN 074100 MOVE +1 TO TABLES-LOADED-SWITCH 074200 ELSE 074300 MOVE +4091 TO SAVED-RETURN-CODE. 074400 MOVE +1 TO TABLES-LOADED-SWITCH. 075400 LOAD-TABLES-EXIT. EXIT. 075600****************************************************************** 075700* STORE DEBIT/CREDIT FLAG FROM TRAN CODE TABLE. * 075800****************************************************************** 076000 BUILD-TRANCODE-TABLE SECTION. 076100 IF TRANCODE IS NUMERIC 076200 IF TRANCODE < +100 076300 MOVE TRAN-DB-CR TO TRANCODE-DB-CR (TRANCODE) 076310 MOVE TRAN-REV TO TRANCODE-REVERSAL (TRANCODE). 076400 READ TRANCODE-FILE 076500 AT END MOVE +1 TO EOF-ON-TRANCODE-SWITCH. 076600 BUILD-TRANCODE-EXIT. EXIT.