Sieve of Eratosthenes example COBOL program
This program is called 'siev.cbl' and was written for a review of OS-9 CIS COBOL.
Its function is to find prime numbers.IDENTIFICATION DIVISION. PROGRAM-ID. SIEVE. AUTHOR. PETER DIBBLE. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 PRIME PIC 9(5) COMP. 77 PRIME-COUNT PIC 9(5) COMP. 77 I PIC 9(4) COMP. 77 K PIC 9(5) COMP. 01 BIT-ARRAY. 03 FLAG OCCURS 8191 TIMES PIC 9 COMP. PROCEDURE DIVISION. START-UP. DISPLAY "TEN ITERATIONS". PERFORM SIEVE THROUGH SIEVE-END. DISPLAY "PRIMES FOUND: ", PRIME-COUNT. STOP RUN. SIEVE. MOVE ZERO TO PRIME-COUNT. MOVE 1 TO I. PERFORM INIT-BITS 8191 TIMES. MOVE 1 TO I. PERFORM SCAN-FOR-PRIMES THROUGH END-SCAN-FOR-PRIMES 8191 TIMES. SIEVE-END. EXIT. INIT-BITS. MOVE 1 TO FLAG (I). ADD 1 TO I. END-INIT-BITS. EXIT. SCAN-FOR-PRIMES. IF FLAG (I) = 0 THEN GO TO NOT-PRIME. ADD I I 1 GIVING PRIME. * DISPLAY PRIME. ADD I PRIME GIVING K. PERFORM STRIKOUT UNTIL K > 8191. ADD 1 TO PRIME-COUNT. NOT-PRIME. ADD 1 TO I. END-SCAN-FOR-PRIMES. EXIT. STRIKOUT. MOVE 0 TO FLAG (K). ADD PRIME TO K. END-PROGRAM. EXIT.