IDENTIFICATION DIVISION. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- PROGRAM-ID. ACEY-DUCEY. ENVIRONMENT DIVISION. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- CONFIGURATION SECTION. *----------------------- INPUT-OUTPUT SECTION. *----------------------- DATA DIVISION. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- FILE SECTION. *----------------------- WORKING-STORAGE SECTION. 01 RUNNING PIC 9 VALUE 0. 01 GAMEOVER PIC 9 VALUE 0. 01 WALLET PIC 9999. 01 BET PIC 9999. 01 CARD PIC 99. 01 GOT-CARD PIC 9. 01 CARDS. 03 CARD1 PIC 99 VALUE 0. 03 CARD2 PIC 99 VALUE 0. 03 CARD3 PIC 99 VALUE 0. 01 ANS PIC A(3). 01 GOT-ANS PIC 9. 01 TRIM-ANS PIC A. 01 TEMP-FORMAT PIC Z(4). 01 TRIM-FORMAT PIC Z(4). 01 I PIC 9999. *----------------------- PROCEDURE DIVISION. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- MAIN-PROCEDURE. DISPLAY "*** ACEY DUCEY : COBOL ***". SET GOT-ANS TO 0. PERFORM ASK-TO-SEE-THE-RULES UNTIL GOT-ANS = 1. SET RUNNING TO 1. START-PARA. SET WALLET TO 100. PERFORM RUNNING-LOOP UNTIL RUNNING = 0. DISPLAY "OK, HOPE YOU HAD FUN.". DISPLAY "THANKS FOR PLAYING!". STOP RUN. ASK-FOR-BET. DISPLAY "WHAT IS YOUR BET?". ACCEPT BET. IF BET < 0 THEN DISPLAY "PLEASE BET A NON-NEGATIVE AMOUNT." ELSE IF BET > WALLET THEN DISPLAY "SORRY MY FRIEND, BUT YOU BET TOO MUCH." MOVE WALLET TO TEMP-FORMAT MOVE 0 TO I INSPECT TEMP-FORMAT TALLYING I FOR LEADING SPACE MOVE TEMP-FORMAT ( I + 1 : LENGTH OF TEMP-FORMAT - I ) TO TRIM-FORMAT DISPLAY "YOU HAVE ONLY" TRIM-FORMAT " DOLLARS TO BET." ELSE SET GOT-ANS TO 1 END-IF. ASK-TO-PLAY-AGAIN. DISPLAY "DO YOU WANT TO PLAY AGAIN?". ACCEPT ANS. MOVE FUNCTION UPPER-CASE(ANS) TO ANS. MOVE ANS TO TRIM-ANS. IF TRIM-ANS = "Y" THEN SET WALLET TO 100 SET GOT-ANS TO 1 ELSE IF TRIM-ANS = "N" THEN SET RUNNING TO 0 SET GOT-ANS TO 1 ELSE DISPLAY "PLEASE ANSWER EITHER ""YES"" OR ""NO""." END-IF. ASK-TO-SEE-THE-RULES. DISPLAY "DO YOU WANT TO SEE THE RULES?". ACCEPT ANS. MOVE FUNCTION UPPER-CASE(ANS) TO ANS. MOVE ANS TO TRIM-ANS. IF TRIM-ANS = "Y" THEN PERFORM DISPLAY-RULES SET GOT-ANS TO 1 ELSE IF TRIM-ANS = "N" THEN SET GOT-ANS TO 1 ELSE DISPLAY "PLEASE ANSWER EITHER ""YES"" OR ""NO""." END-IF. DISPLAY-CARD. IF CARD = 11 THEN DISPLAY "JACK" ELSE IF CARD = 12 THEN DISPLAY "QUEEN" ELSE IF CARD = 13 THEN DISPLAY "KING" ELSE IF CARD = 14 THEN DISPLAY "ACE" ELSE MOVE CARD TO TEMP-FORMAT MOVE 0 TO I INSPECT TEMP-FORMAT TALLYING I FOR LEADING SPACE MOVE TEMP-FORMAT ( I + 1 : LENGTH OF TEMP-FORMAT - I ) TO TRIM-FORMAT DISPLAY TRIM-FORMAT END-IF. DISPLAY-RULES. DISPLAY "ACEY DUCEY IS PLAYED IN THE FOLLOWING MANNER:". DISPLAY "THE DEALER (COMPUTER) DEALS TWO CARDS FACE UP". DISPLAY "YOU HAVE THE OPTION TO BET OR NOT BET DEPENDING". DISPLAY "ON WHETHER OR NOT YOU FEEL THE NEXT CARD WILL". DISPLAY "HAVE A VALUE BETWEEN THE FIRST TWO.". DISPLAY " ". DISPLAY "IF YOU DO NOT WANT TO BET, INPUT A 0 (ZERO).". SELECT-CARD. COMPUTE CARD = FUNCTION RANDOM * (13) + 2. IF CARD <> CARD1 AND CARD <> CARD2 AND CARD <> CARD3 THEN SET GOT-CARD TO 1 PERFORM DISPLAY-CARD END-IF. GAME-OVER-LOOP. MOVE WALLET TO TEMP-FORMAT. MOVE 0 TO I INSPECT TEMP-FORMAT TALLYING I FOR LEADING SPACE MOVE TEMP-FORMAT ( I + 1 : LENGTH OF TEMP-FORMAT - I ) TO TRIM-FORMAT DISPLAY "YOU NOW HAVE" TRIM-FORMAT " DOLLARS.". SET CARD1 TO 0. SET CARD2 TO 0. SET CARD3 TO 0. SET GOT-CARD TO 0. PERFORM SELECT-CARD UNTIL GOT-CARD = 1. MOVE CARD TO CARD1. SET GOT-CARD TO 0. PERFORM SELECT-CARD UNTIL GOT-CARD = 1. MOVE CARD TO CARD2. SET GOT-ANS TO 0. PERFORM ASK-FOR-BET UNTIL GOT-ANS = 1. IF BET < 1 THEN SET GAMEOVER TO 1 ELSE SET GOT-CARD TO 0 PERFORM SELECT-CARD UNTIL GOT-CARD = 1 MOVE CARD TO CARD3 IF CARD3 > CARD1 AND CARD3 < CARD2 THEN DISPLAY "YOU WIN!!!" SET WALLET UP BY BET ELSE IF CARD3 > CARD2 AND CARD3 < CARD1 THEN DISPLAY "YOU WIN!!!" SET WALLET UP BY BET ELSE DISPLAY "SORRY, YOU LOSE." SET WALLET DOWN BY BET END-IF IF WALLET < 1 THEN DISPLAY "SORRY FRIEND, YOU ARE BROKE." SET GAMEOVER TO 1 END-IF END-IF. RUNNING-LOOP. SET GAMEOVER TO 0. PERFORM GAME-OVER-LOOP UNTIL GAMEOVER = 1. DISPLAY "*** GAME OVER ***". SET GOT-ANS TO 0. PERFORM ASK-TO-PLAY-AGAIN UNTIL GOT-ANS = 1. END PROGRAM ACEY-DUCEY.