IDENTIFICATION DIVISION. PROGRAM-ID. fizzbuzz. AUTHOR. Enigma 2007-03-03. DATA DIVISION. WORKING-STORAGE SECTION. 01 Counter PIC 999 VALUE 1. 01 Counter-Digit-Display REDEFINES Counter. 05 FILLER PIC 99. 05 Counter-Digit PIC 9. 01 Counter-Tens-Display REDEFINES Counter. 05 FILLER PIC 9. 05 Counter-Tens PIC 99. 01 Counter-Display PIC XXX. 01 WS-Zeros PIC XXX. 01 Quotient PIC 999. 01 Modulo3 PIC 9 VALUE 1. 88 Divisible-By-3 VALUE 0. 01 Modulo5 PIC 9 VALUE 1. 88 Divisible-By-5 VALUE 0. 01 Flags. 02 Output-Details PIC 9 VALUE 0. 88 Display-FizzBuzz VALUE 1. 88 Display-Number VALUE 0. PROCEDURE DIVISION. Begin. PERFORM Initialization PERFORM FizzBuzz UNTIL Counter GREATER THAN 100 STOP RUN. Initialization. SET Counter TO 1. FizzBuzz. PERFORM TestModulo3 PERFORM TestModulo5 SET Display-Number TO TRUE IF Divisible-By-3 THEN DISPLAY "Fizz" WITH NO ADVANCING SET Display-FizzBuzz TO TRUE END-IF IF Divisible-By-5 THEN DISPLAY "Buzz" WITH NO ADVANCING SET Display-FizzBuzz TO TRUE END-IF IF Display-FizzBuzz THEN DISPLAY "" ELSE PERFORM Display-Counter-C-Style END-IF PERFORM IncrementValues. TestModulo3. DIVIDE Counter BY 3 GIVING Quotient REMAINDER Modulo3. TestModulo5. DIVIDE Counter BY 5 GIVING Quotient REMAINDER Modulo5. IncrementValues. ADD 1 TO Modulo3 ADD 1 TO Modulo5 ADD 1 TO Counter. Display-Counter-C-Style. IF Counter LESS THAN 10 THEN DISPLAY Counter-Digit ELSE IF Counter LESS THAN 100 THEN DISPLAY Counter-Tens ELSE DISPLAY Counter END-IF. Display-Counter-Left-Justified. UNSTRING Counter DELIMITED BY ALL ZEROS INTO WS-Zeros Counter-Display DISPLAY Counter-Display.