IDENTIFICATION DIVISION. PROGRAM-ID. AUTH. ***************************************************************** * PROGRAM: AUTH - Transaction Authorization * PURPOSE: Validate and authorize card transactions * AUTHOR: Sample Application ***************************************************************** ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TRANSACTION-DATA. 05 WS-CARD-NUMBER PIC X(16). 05 WS-TRANSACTION-AMOUNT PIC 9(11)V99. 05 WS-AVAILABLE-BALANCE PIC 9(11)V99. 05 WS-RESPONSE-CODE PIC 9(2). 05 WS-MERCHANT-ID PIC X(15). 01 WS-HOST-RESPONSE. 05 WS-HOST-BALANCE PIC 9(11)V99. 05 WS-HOST-STATUS PIC X(2). 01 WS-FLAGS. 05 WS-VALID-CARD PIC X VALUE 'N'. 05 WS-SUFFICIENT-FUNDS PIC X VALUE 'N'. PROCEDURE DIVISION. 0000-MAIN-PROCESS. PERFORM 1000-INITIALIZE PERFORM 2000-VALIDATE-CARD IF WS-VALID-CARD = 'Y' PERFORM 3000-CHECK-BALANCE IF WS-SUFFICIENT-FUNDS = 'Y' PERFORM 4000-AUTHORIZE ELSE MOVE 51 TO WS-RESPONSE-CODE END-IF ELSE MOVE 14 TO WS-RESPONSE-CODE END-IF PERFORM 9000-FINALIZE STOP RUN. 1000-INITIALIZE. INITIALIZE WS-TRANSACTION-DATA INITIALIZE WS-HOST-RESPONSE MOVE 'N' TO WS-VALID-CARD MOVE 'N' TO WS-SUFFICIENT-FUNDS. 2000-VALIDATE-CARD. IF WS-CARD-NUMBER NOT = SPACES MOVE 'Y' TO WS-VALID-CARD END-IF. 3000-CHECK-BALANCE. * BUG: WS-AVAILABLE-BALANCE is PIC 9(11)V99 but HOST returns * PIC 9(11)V99, causing truncation on amounts > 9,999,999.99 MOVE WS-HOST-BALANCE TO WS-AVAILABLE-BALANCE IF WS-AVAILABLE-BALANCE >= WS-TRANSACTION-AMOUNT MOVE 'Y' TO WS-SUFFICIENT-FUNDS ELSE MOVE 'N' TO WS-SUFFICIENT-FUNDS END-IF. 4000-AUTHORIZE. MOVE 00 TO WS-RESPONSE-CODE. 9000-FINALIZE. CONTINUE.