****************************************************************** * Program : COTRN02C.CBL * Application : CardDemo * Type : CICS COBOL Program * Function : Add a new Transaction to TRANSACT file ****************************************************************** * Copyright Amazon.com, Inc. or its affiliates. * All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific * language governing permissions and limitations under the License ****************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. COTRN02C. AUTHOR. AWS. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. *----------------------------------------------------------------* * WORKING STORAGE SECTION *----------------------------------------------------------------* WORKING-STORAGE SECTION. 01 WS-VARIABLES. 05 WS-PGMNAME PIC X(08) VALUE 'COTRN02C'. 05 WS-TRANID PIC X(04) VALUE 'CT02'. 05 WS-MESSAGE PIC X(80) VALUE SPACES. 05 WS-TRANSACT-FILE PIC X(08) VALUE 'TRANSACT'. 05 WS-ACCTDAT-FILE PIC X(08) VALUE 'ACCTDAT '. 05 WS-CCXREF-FILE PIC X(08) VALUE 'CCXREF '. 05 WS-CXACAIX-FILE PIC X(08) VALUE 'CXACAIX '. 05 WS-ERR-FLG PIC X(01) VALUE 'N'. 88 ERR-FLG-ON VALUE 'Y'. 88 ERR-FLG-OFF VALUE 'N'. 05 WS-RESP-CD PIC S9(09) COMP VALUE ZEROS. 05 WS-REAS-CD PIC S9(09) COMP VALUE ZEROS. 05 WS-USR-MODIFIED PIC X(01) VALUE 'N'. 88 USR-MODIFIED-YES VALUE 'Y'. 88 USR-MODIFIED-NO VALUE 'N'. 05 WS-TRAN-AMT PIC +99999999.99. 05 WS-TRAN-DATE PIC X(08) VALUE '00/00/00'. 05 WS-ACCT-ID-N PIC 9(11) VALUE 0. 05 WS-CARD-NUM-N PIC 9(16) VALUE 0. 05 WS-TRAN-ID-N PIC 9(16) VALUE ZEROS. 05 WS-TRAN-AMT-N PIC S9(9)V99 VALUE ZERO. 05 WS-TRAN-AMT-E PIC +99999999.99 VALUE ZEROS. 05 WS-DATE-FORMAT PIC X(10) VALUE 'YYYY-MM-DD'. 01 CSUTLDTC-PARM. 05 CSUTLDTC-DATE PIC X(10). 05 CSUTLDTC-DATE-FORMAT PIC X(10). 05 CSUTLDTC-RESULT. 10 CSUTLDTC-RESULT-SEV-CD PIC X(04). 10 FILLER PIC X(11). 10 CSUTLDTC-RESULT-MSG-NUM PIC X(04). 10 CSUTLDTC-RESULT-MSG PIC X(61). COPY COCOM01Y. 05 CDEMO-CT02-INFO. 10 CDEMO-CT02-TRNID-FIRST PIC X(16). 10 CDEMO-CT02-TRNID-LAST PIC X(16). 10 CDEMO-CT02-PAGE-NUM PIC 9(08). 10 CDEMO-CT02-NEXT-PAGE-FLG PIC X(01) VALUE 'N'. 88 NEXT-PAGE-YES VALUE 'Y'. 88 NEXT-PAGE-NO VALUE 'N'. 10 CDEMO-CT02-TRN-SEL-FLG PIC X(01). 10 CDEMO-CT02-TRN-SELECTED PIC X(16). COPY COTRN02. COPY COTTL01Y. COPY CSDAT01Y. COPY CSMSG01Y. COPY CVTRA05Y. COPY CVACT01Y. COPY CVACT03Y. COPY DFHAID. COPY DFHBMSCA. *----------------------------------------------------------------* * LINKAGE SECTION *----------------------------------------------------------------* LINKAGE SECTION. 01 DFHCOMMAREA. 05 LK-COMMAREA PIC X(01) OCCURS 1 TO 32767 TIMES DEPENDING ON EIBCALEN. *----------------------------------------------------------------* * PROCEDURE DIVISION *----------------------------------------------------------------* PROCEDURE DIVISION. MAIN-PARA. SET ERR-FLG-OFF TO TRUE SET USR-MODIFIED-NO TO TRUE MOVE SPACES TO WS-MESSAGE ERRMSGO OF COTRN2AO IF EIBCALEN = 0 MOVE 'COSGN00C' TO CDEMO-TO-PROGRAM PERFORM RETURN-TO-PREV-SCREEN ELSE MOVE DFHCOMMAREA(1:EIBCALEN) TO CARDDEMO-COMMAREA IF NOT CDEMO-PGM-REENTER SET CDEMO-PGM-REENTER TO TRUE MOVE LOW-VALUES TO COTRN2AO MOVE -1 TO ACTIDINL OF COTRN2AI IF CDEMO-CT02-TRN-SELECTED NOT = SPACES AND LOW-VALUES MOVE CDEMO-CT02-TRN-SELECTED TO CARDNINI OF COTRN2AI PERFORM PROCESS-ENTER-KEY END-IF PERFORM SEND-TRNADD-SCREEN ELSE PERFORM RECEIVE-TRNADD-SCREEN EVALUATE EIBAID WHEN DFHENTER PERFORM PROCESS-ENTER-KEY WHEN DFHPF3 IF CDEMO-FROM-PROGRAM = SPACES OR LOW-VALUES MOVE 'COMEN01C' TO CDEMO-TO-PROGRAM ELSE MOVE CDEMO-FROM-PROGRAM TO CDEMO-TO-PROGRAM END-IF PERFORM RETURN-TO-PREV-SCREEN WHEN DFHPF4 PERFORM CLEAR-CURRENT-SCREEN WHEN DFHPF5 PERFORM COPY-LAST-TRAN-DATA WHEN OTHER MOVE 'Y' TO WS-ERR-FLG MOVE CCDA-MSG-INVALID-KEY TO WS-MESSAGE PERFORM SEND-TRNADD-SCREEN END-EVALUATE END-IF END-IF EXEC CICS RETURN TRANSID (WS-TRANID) COMMAREA (CARDDEMO-COMMAREA) END-EXEC. *----------------------------------------------------------------* * PROCESS-ENTER-KEY *----------------------------------------------------------------* PROCESS-ENTER-KEY. PERFORM VALIDATE-INPUT-KEY-FIELDS PERFORM VALIDATE-INPUT-DATA-FIELDS. EVALUATE CONFIRMI OF COTRN2AI WHEN 'Y' WHEN 'y' PERFORM ADD-TRANSACTION WHEN 'N' WHEN 'n' WHEN SPACES WHEN LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Confirm to add this transaction...' TO WS-MESSAGE MOVE -1 TO CONFIRML OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER MOVE 'Y' TO WS-ERR-FLG MOVE 'Invalid value. Valid values are (Y/N)...' TO WS-MESSAGE MOVE -1 TO CONFIRML OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-EVALUATE. *----------------------------------------------------------------* * VALIDATE-INPUT-KEY-FIELDS *----------------------------------------------------------------* VALIDATE-INPUT-KEY-FIELDS. EVALUATE TRUE WHEN ACTIDINI OF COTRN2AI NOT = SPACES AND LOW-VALUES IF ACTIDINI OF COTRN2AI IS NOT NUMERIC MOVE 'Y' TO WS-ERR-FLG MOVE 'Account ID must be Numeric...' TO WS-MESSAGE MOVE -1 TO ACTIDINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-IF COMPUTE WS-ACCT-ID-N = FUNCTION NUMVAL(ACTIDINI OF COTRN2AI) MOVE WS-ACCT-ID-N TO XREF-ACCT-ID ACTIDINI OF COTRN2AI PERFORM READ-CXACAIX-FILE MOVE XREF-CARD-NUM TO CARDNINI OF COTRN2AI WHEN CARDNINI OF COTRN2AI NOT = SPACES AND LOW-VALUES IF CARDNINI OF COTRN2AI IS NOT NUMERIC MOVE 'Y' TO WS-ERR-FLG MOVE 'Card Number must be Numeric...' TO WS-MESSAGE MOVE -1 TO CARDNINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-IF COMPUTE WS-CARD-NUM-N = FUNCTION NUMVAL(CARDNINI OF COTRN2AI) MOVE WS-CARD-NUM-N TO XREF-CARD-NUM CARDNINI OF COTRN2AI PERFORM READ-CCXREF-FILE MOVE XREF-ACCT-ID TO ACTIDINI OF COTRN2AI WHEN OTHER MOVE 'Y' TO WS-ERR-FLG MOVE 'Account or Card Number must be entered...' TO WS-MESSAGE MOVE -1 TO ACTIDINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-EVALUATE. *----------------------------------------------------------------* * VALIDATE-INPUT-DATA-FIELDS *----------------------------------------------------------------* VALIDATE-INPUT-DATA-FIELDS. IF ERR-FLG-ON MOVE SPACES TO TTYPCDI OF COTRN2AI TCATCDI OF COTRN2AI TRNSRCI OF COTRN2AI TRNAMTI OF COTRN2AI TDESCI OF COTRN2AI TORIGDTI OF COTRN2AI TPROCDTI OF COTRN2AI MIDI OF COTRN2AI MNAMEI OF COTRN2AI MCITYI OF COTRN2AI MZIPI OF COTRN2AI END-IF. EVALUATE TRUE WHEN TTYPCDI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Type CD can NOT be empty...' TO WS-MESSAGE MOVE -1 TO TTYPCDL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN TCATCDI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Category CD can NOT be empty...' TO WS-MESSAGE MOVE -1 TO TCATCDL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN TRNSRCI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Source can NOT be empty...' TO WS-MESSAGE MOVE -1 TO TRNSRCL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN TDESCI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Description can NOT be empty...' TO WS-MESSAGE MOVE -1 TO TDESCL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN TRNAMTI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Amount can NOT be empty...' TO WS-MESSAGE MOVE -1 TO TRNAMTL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN TORIGDTI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Orig Date can NOT be empty...' TO WS-MESSAGE MOVE -1 TO TORIGDTL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN TPROCDTI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Proc Date can NOT be empty...' TO WS-MESSAGE MOVE -1 TO TPROCDTL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN MIDI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Merchant ID can NOT be empty...' TO WS-MESSAGE MOVE -1 TO MIDL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN MNAMEI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Merchant Name can NOT be empty...' TO WS-MESSAGE MOVE -1 TO MNAMEL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN MCITYI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Merchant City can NOT be empty...' TO WS-MESSAGE MOVE -1 TO MCITYL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN MZIPI OF COTRN2AI = SPACES OR LOW-VALUES MOVE 'Y' TO WS-ERR-FLG MOVE 'Merchant Zip can NOT be empty...' TO WS-MESSAGE MOVE -1 TO MZIPL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER CONTINUE END-EVALUATE. EVALUATE TRUE WHEN TTYPCDI OF COTRN2AI NOT NUMERIC MOVE 'Y' TO WS-ERR-FLG MOVE 'Type CD must be Numeric...' TO WS-MESSAGE MOVE -1 TO TTYPCDL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN TCATCDI OF COTRN2AI NOT NUMERIC MOVE 'Y' TO WS-ERR-FLG MOVE 'Category CD must be Numeric...' TO WS-MESSAGE MOVE -1 TO TCATCDL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER CONTINUE END-EVALUATE EVALUATE TRUE WHEN TRNAMTI OF COTRN2AI(1:1) NOT EQUAL '-' AND '+' WHEN TRNAMTI OF COTRN2AI(2:8) NOT NUMERIC WHEN TRNAMTI OF COTRN2AI(10:1) NOT = '.' WHEN TRNAMTI OF COTRN2AI(11:2) IS NOT NUMERIC MOVE 'Y' TO WS-ERR-FLG MOVE 'Amount should be in format -99999999.99' TO WS-MESSAGE MOVE -1 TO TRNAMTL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER CONTINUE END-EVALUATE EVALUATE TRUE WHEN TORIGDTI OF COTRN2AI(1:4) IS NOT NUMERIC WHEN TORIGDTI OF COTRN2AI(5:1) NOT EQUAL '-' WHEN TORIGDTI OF COTRN2AI(6:2) NOT NUMERIC WHEN TORIGDTI OF COTRN2AI(8:1) NOT EQUAL '-' WHEN TORIGDTI OF COTRN2AI(9:2) NOT NUMERIC MOVE 'Y' TO WS-ERR-FLG MOVE 'Orig Date should be in format YYYY-MM-DD' TO WS-MESSAGE MOVE -1 TO TORIGDTL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER CONTINUE END-EVALUATE EVALUATE TRUE WHEN TPROCDTI OF COTRN2AI(1:4) IS NOT NUMERIC WHEN TPROCDTI OF COTRN2AI(5:1) NOT EQUAL '-' WHEN TPROCDTI OF COTRN2AI(6:2) NOT NUMERIC WHEN TPROCDTI OF COTRN2AI(8:1) NOT EQUAL '-' WHEN TPROCDTI OF COTRN2AI(9:2) NOT NUMERIC MOVE 'Y' TO WS-ERR-FLG MOVE 'Proc Date should be in format YYYY-MM-DD' TO WS-MESSAGE MOVE -1 TO TPROCDTL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER CONTINUE END-EVALUATE COMPUTE WS-TRAN-AMT-N = FUNCTION NUMVAL-C(TRNAMTI OF COTRN2AI) MOVE WS-TRAN-AMT-N TO WS-TRAN-AMT-E MOVE WS-TRAN-AMT-E TO TRNAMTI OF COTRN2AI MOVE TORIGDTI OF COTRN2AI TO CSUTLDTC-DATE MOVE WS-DATE-FORMAT TO CSUTLDTC-DATE-FORMAT MOVE SPACES TO CSUTLDTC-RESULT CALL 'CSUTLDTC' USING CSUTLDTC-DATE CSUTLDTC-DATE-FORMAT CSUTLDTC-RESULT IF CSUTLDTC-RESULT-SEV-CD = '0000' CONTINUE ELSE IF CSUTLDTC-RESULT-MSG-NUM NOT = '2513' MOVE 'Orig Date - Not a valid date...' TO WS-MESSAGE MOVE 'Y' TO WS-ERR-FLG MOVE -1 TO TORIGDTL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-IF END-IF MOVE TPROCDTI OF COTRN2AI TO CSUTLDTC-DATE MOVE WS-DATE-FORMAT TO CSUTLDTC-DATE-FORMAT MOVE SPACES TO CSUTLDTC-RESULT CALL 'CSUTLDTC' USING CSUTLDTC-DATE CSUTLDTC-DATE-FORMAT CSUTLDTC-RESULT IF CSUTLDTC-RESULT-SEV-CD = '0000' CONTINUE ELSE IF CSUTLDTC-RESULT-MSG-NUM NOT = '2513' MOVE 'Proc Date - Not a valid date...' TO WS-MESSAGE MOVE 'Y' TO WS-ERR-FLG MOVE -1 TO TPROCDTL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-IF END-IF IF MIDI OF COTRN2AI IS NOT NUMERIC MOVE 'Y' TO WS-ERR-FLG MOVE 'Merchant ID must be Numeric...' TO WS-MESSAGE MOVE -1 TO MIDL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-IF . *----------------------------------------------------------------* * ADD-TRANSACTION *----------------------------------------------------------------* ADD-TRANSACTION. MOVE HIGH-VALUES TO TRAN-ID PERFORM STARTBR-TRANSACT-FILE PERFORM READPREV-TRANSACT-FILE PERFORM ENDBR-TRANSACT-FILE MOVE TRAN-ID TO WS-TRAN-ID-N ADD 1 TO WS-TRAN-ID-N INITIALIZE TRAN-RECORD MOVE WS-TRAN-ID-N TO TRAN-ID MOVE TTYPCDI OF COTRN2AI TO TRAN-TYPE-CD MOVE TCATCDI OF COTRN2AI TO TRAN-CAT-CD MOVE TRNSRCI OF COTRN2AI TO TRAN-SOURCE MOVE TDESCI OF COTRN2AI TO TRAN-DESC COMPUTE WS-TRAN-AMT-N = FUNCTION NUMVAL-C(TRNAMTI OF COTRN2AI) MOVE WS-TRAN-AMT-N TO TRAN-AMT MOVE CARDNINI OF COTRN2AI TO TRAN-CARD-NUM MOVE MIDI OF COTRN2AI TO TRAN-MERCHANT-ID MOVE MNAMEI OF COTRN2AI TO TRAN-MERCHANT-NAME MOVE MCITYI OF COTRN2AI TO TRAN-MERCHANT-CITY MOVE MZIPI OF COTRN2AI TO TRAN-MERCHANT-ZIP MOVE TORIGDTI OF COTRN2AI TO TRAN-ORIG-TS MOVE TPROCDTI OF COTRN2AI TO TRAN-PROC-TS PERFORM WRITE-TRANSACT-FILE. *----------------------------------------------------------------* * COPY-LAST-TRAN-DATA *----------------------------------------------------------------* COPY-LAST-TRAN-DATA. PERFORM VALIDATE-INPUT-KEY-FIELDS MOVE HIGH-VALUES TO TRAN-ID PERFORM STARTBR-TRANSACT-FILE PERFORM READPREV-TRANSACT-FILE PERFORM ENDBR-TRANSACT-FILE IF NOT ERR-FLG-ON MOVE TRAN-AMT TO WS-TRAN-AMT-E MOVE TRAN-TYPE-CD TO TTYPCDI OF COTRN2AI MOVE TRAN-CAT-CD TO TCATCDI OF COTRN2AI MOVE TRAN-SOURCE TO TRNSRCI OF COTRN2AI MOVE WS-TRAN-AMT-E TO TRNAMTI OF COTRN2AI MOVE TRAN-DESC TO TDESCI OF COTRN2AI MOVE TRAN-ORIG-TS TO TORIGDTI OF COTRN2AI MOVE TRAN-PROC-TS TO TPROCDTI OF COTRN2AI MOVE TRAN-MERCHANT-ID TO MIDI OF COTRN2AI MOVE TRAN-MERCHANT-NAME TO MNAMEI OF COTRN2AI MOVE TRAN-MERCHANT-CITY TO MCITYI OF COTRN2AI MOVE TRAN-MERCHANT-ZIP TO MZIPI OF COTRN2AI END-IF PERFORM PROCESS-ENTER-KEY. *----------------------------------------------------------------* * RETURN-TO-PREV-SCREEN *----------------------------------------------------------------* RETURN-TO-PREV-SCREEN. IF CDEMO-TO-PROGRAM = LOW-VALUES OR SPACES MOVE 'COSGN00C' TO CDEMO-TO-PROGRAM END-IF MOVE WS-TRANID TO CDEMO-FROM-TRANID MOVE WS-PGMNAME TO CDEMO-FROM-PROGRAM MOVE ZEROS TO CDEMO-PGM-CONTEXT EXEC CICS XCTL PROGRAM(CDEMO-TO-PROGRAM) COMMAREA(CARDDEMO-COMMAREA) END-EXEC. *----------------------------------------------------------------* * SEND-TRNADD-SCREEN *----------------------------------------------------------------* SEND-TRNADD-SCREEN. PERFORM POPULATE-HEADER-INFO MOVE WS-MESSAGE TO ERRMSGO OF COTRN2AO EXEC CICS SEND MAP('COTRN2A') MAPSET('COTRN02') FROM(COTRN2AO) ERASE CURSOR END-EXEC. EXEC CICS RETURN TRANSID (WS-TRANID) COMMAREA (CARDDEMO-COMMAREA) * LENGTH(LENGTH OF CARDDEMO-COMMAREA) END-EXEC. *----------------------------------------------------------------* * RECEIVE-TRNADD-SCREEN *----------------------------------------------------------------* RECEIVE-TRNADD-SCREEN. EXEC CICS RECEIVE MAP('COTRN2A') MAPSET('COTRN02') INTO(COTRN2AI) RESP(WS-RESP-CD) RESP2(WS-REAS-CD) END-EXEC. *----------------------------------------------------------------* * POPULATE-HEADER-INFO *----------------------------------------------------------------* POPULATE-HEADER-INFO. MOVE FUNCTION CURRENT-DATE TO WS-CURDATE-DATA MOVE CCDA-TITLE01 TO TITLE01O OF COTRN2AO MOVE CCDA-TITLE02 TO TITLE02O OF COTRN2AO MOVE WS-TRANID TO TRNNAMEO OF COTRN2AO MOVE WS-PGMNAME TO PGMNAMEO OF COTRN2AO MOVE WS-CURDATE-MONTH TO WS-CURDATE-MM MOVE WS-CURDATE-DAY TO WS-CURDATE-DD MOVE WS-CURDATE-YEAR(3:2) TO WS-CURDATE-YY MOVE WS-CURDATE-MM-DD-YY TO CURDATEO OF COTRN2AO MOVE WS-CURTIME-HOURS TO WS-CURTIME-HH MOVE WS-CURTIME-MINUTE TO WS-CURTIME-MM MOVE WS-CURTIME-SECOND TO WS-CURTIME-SS MOVE WS-CURTIME-HH-MM-SS TO CURTIMEO OF COTRN2AO. *----------------------------------------------------------------* * READ-CXACAIX-FILE *----------------------------------------------------------------* READ-CXACAIX-FILE. EXEC CICS READ DATASET (WS-CXACAIX-FILE) INTO (CARD-XREF-RECORD) LENGTH (LENGTH OF CARD-XREF-RECORD) RIDFLD (XREF-ACCT-ID) KEYLENGTH (LENGTH OF XREF-ACCT-ID) RESP (WS-RESP-CD) RESP2 (WS-REAS-CD) END-EXEC EVALUATE WS-RESP-CD WHEN DFHRESP(NORMAL) CONTINUE WHEN DFHRESP(NOTFND) MOVE 'Y' TO WS-ERR-FLG MOVE 'Account ID NOT found...' TO WS-MESSAGE MOVE -1 TO ACTIDINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD MOVE 'Y' TO WS-ERR-FLG MOVE 'Unable to lookup Acct in XREF AIX file...' TO WS-MESSAGE MOVE -1 TO ACTIDINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-EVALUATE. *----------------------------------------------------------------* * READ-CCXREF-FILE *----------------------------------------------------------------* READ-CCXREF-FILE. EXEC CICS READ DATASET (WS-CCXREF-FILE) INTO (CARD-XREF-RECORD) LENGTH (LENGTH OF CARD-XREF-RECORD) RIDFLD (XREF-CARD-NUM) KEYLENGTH (LENGTH OF XREF-CARD-NUM) RESP (WS-RESP-CD) RESP2 (WS-REAS-CD) END-EXEC EVALUATE WS-RESP-CD WHEN DFHRESP(NORMAL) CONTINUE WHEN DFHRESP(NOTFND) MOVE 'Y' TO WS-ERR-FLG MOVE 'Card Number NOT found...' TO WS-MESSAGE MOVE -1 TO CARDNINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD MOVE 'Y' TO WS-ERR-FLG MOVE 'Unable to lookup Card # in XREF file...' TO WS-MESSAGE MOVE -1 TO CARDNINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-EVALUATE. *----------------------------------------------------------------* * STARTBR-TRANSACT-FILE *----------------------------------------------------------------* STARTBR-TRANSACT-FILE. EXEC CICS STARTBR DATASET (WS-TRANSACT-FILE) RIDFLD (TRAN-ID) KEYLENGTH (LENGTH OF TRAN-ID) RESP (WS-RESP-CD) RESP2 (WS-REAS-CD) END-EXEC EVALUATE WS-RESP-CD WHEN DFHRESP(NORMAL) CONTINUE WHEN DFHRESP(NOTFND) MOVE 'Y' TO WS-ERR-FLG MOVE 'Transaction ID NOT found...' TO WS-MESSAGE MOVE -1 TO ACTIDINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD MOVE 'Y' TO WS-ERR-FLG MOVE 'Unable to lookup Transaction...' TO WS-MESSAGE MOVE -1 TO ACTIDINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-EVALUATE. *----------------------------------------------------------------* * READPREV-TRANSACT-FILE *----------------------------------------------------------------* READPREV-TRANSACT-FILE. EXEC CICS READPREV DATASET (WS-TRANSACT-FILE) INTO (TRAN-RECORD) LENGTH (LENGTH OF TRAN-RECORD) RIDFLD (TRAN-ID) KEYLENGTH (LENGTH OF TRAN-ID) RESP (WS-RESP-CD) RESP2 (WS-REAS-CD) END-EXEC EVALUATE WS-RESP-CD WHEN DFHRESP(NORMAL) CONTINUE WHEN DFHRESP(ENDFILE) MOVE ZEROS TO TRAN-ID WHEN OTHER DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD MOVE 'Y' TO WS-ERR-FLG MOVE 'Unable to lookup Transaction...' TO WS-MESSAGE MOVE -1 TO ACTIDINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-EVALUATE. *----------------------------------------------------------------* * ENDBR-TRANSACT-FILE *----------------------------------------------------------------* ENDBR-TRANSACT-FILE. EXEC CICS ENDBR DATASET (WS-TRANSACT-FILE) END-EXEC. *----------------------------------------------------------------* * WRITE-TRANSACT-FILE *----------------------------------------------------------------* WRITE-TRANSACT-FILE. EXEC CICS WRITE DATASET (WS-TRANSACT-FILE) FROM (TRAN-RECORD) LENGTH (LENGTH OF TRAN-RECORD) RIDFLD (TRAN-ID) KEYLENGTH (LENGTH OF TRAN-ID) RESP (WS-RESP-CD) RESP2 (WS-REAS-CD) END-EXEC EVALUATE WS-RESP-CD WHEN DFHRESP(NORMAL) PERFORM INITIALIZE-ALL-FIELDS MOVE SPACES TO WS-MESSAGE MOVE DFHGREEN TO ERRMSGC OF COTRN2AO STRING 'Transaction added successfully. ' DELIMITED BY SIZE ' Your Tran ID is ' DELIMITED BY SIZE TRAN-ID DELIMITED BY SPACE '.' DELIMITED BY SIZE INTO WS-MESSAGE PERFORM SEND-TRNADD-SCREEN WHEN DFHRESP(DUPKEY) WHEN DFHRESP(DUPREC) MOVE 'Y' TO WS-ERR-FLG MOVE 'Tran ID already exist...' TO WS-MESSAGE MOVE -1 TO ACTIDINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN WHEN OTHER DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD MOVE 'Y' TO WS-ERR-FLG MOVE 'Unable to Add Transaction...' TO WS-MESSAGE MOVE -1 TO ACTIDINL OF COTRN2AI PERFORM SEND-TRNADD-SCREEN END-EVALUATE. *----------------------------------------------------------------* * CLEAR-CURRENT-SCREEN *----------------------------------------------------------------* CLEAR-CURRENT-SCREEN. PERFORM INITIALIZE-ALL-FIELDS. PERFORM SEND-TRNADD-SCREEN. *----------------------------------------------------------------* * INITIALIZE-ALL-FIELDS *----------------------------------------------------------------* INITIALIZE-ALL-FIELDS. MOVE -1 TO ACTIDINL OF COTRN2AI MOVE SPACES TO ACTIDINI OF COTRN2AI CARDNINI OF COTRN2AI TTYPCDI OF COTRN2AI TCATCDI OF COTRN2AI TRNSRCI OF COTRN2AI TRNAMTI OF COTRN2AI TDESCI OF COTRN2AI TORIGDTI OF COTRN2AI TPROCDTI OF COTRN2AI MIDI OF COTRN2AI MNAMEI OF COTRN2AI MCITYI OF COTRN2AI MZIPI OF COTRN2AI CONFIRMI OF COTRN2AI WS-MESSAGE. * * Ver: CardDemo_v1.0-15-g27d6c6f-68 Date: 2022-07-19 23:12:34 CDT *