****************************************************************** * Author: Mark A. Malo aka CodeWarriorMalo * Date: 01/16/2021 * Purpose: Guess A Number Game ****************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. GuessANumberCOBOL. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 RUNNING PIC 9 VALUE 1. 01 GOT-MAXNUM PIC 9 VALUE 0. 01 GAME-OVER PIC 9 VALUE 1. 01 MAX-NUMBER PIC 9999 VALUE 0. 01 ANSWER PIC 9999 VALUE 0. 01 GUESS PIC 9999 VALUE 0. 01 TRIES PIC 9999 VALUE 0. 01 ANS PIC X(3). 01 TEMP-FORMAT PIC Z(4). 01 TRIM-FORMAT PIC Z(4). 01 I PIC 9(4). PROCEDURE DIVISION. MAIN-PROCEDURE. DISPLAY "*** GUESS A NUMBER : COBOL ***". START-PARA. PERFORM RUNNING-LOOP UNTIL RUNNING=0. DISPLAY "Thanks for playing!". DISPLAY "*** GAME OVER ***". STOP RUN. RUNNING-LOOP. IF GOT-MAXNUM=0 THEN DISPLAY "Please enter the maximum number you wish" & " to use." ACCEPT MAX-NUMBER IF MAX-NUMBER > 0 THEN SET GOT-MAXNUM TO 1 SET TRIES TO 0 SET GAME-OVER TO 0 COMPUTE ANSWER = FUNCTION RANDOM * (MAX-NUMBER) + 1 MOVE MAX-NUMBER 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 "Ok, I am thinking of a number" & " between 1 and " TRIM-FORMAT "." ELSE DISPLAY "The maximum number should be greater" & " than zero" END-IF ELSE IF GAME-OVER = 1 THEN DISPLAY "Would you like to play again? ('YES' " & " OR 'NO')?" ACCEPT ANS IF ANS = "YES" OR ANS = "yes" OR ANS = "Y" OR ANS = "y" THEN SET GOT-MAXNUM TO 0 END-IF IF ANS = "NO" OR ANS = "no" OR ANS = "N" OR ANS = "n" THEN SET RUNNING TO 0 ELSE DISPLAY "Please respond with either 'YES'" & " OR 'NO'" END-IF ELSE ACCEPT GUESS ADD 1 TO TRIES IF GUESS > ANSWER THEN DISPLAY "Too High." END-IF IF GUESS < ANSWER THEN DISPLAY "Too Low." END-IF IF GUESS = ANSWER THEN IF TRIES = 1 THEN DISPLAY "You got it in 1 try!" ELSE MOVE TRIES 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 got it in" TRIM-FORMAT " tries!" END-IF SET GAME-OVER TO 1 END-IF END-IF END-IF. END PROGRAM GuessANumberCOBOL.