Primes by Trial Division - Cromemco COBOL

15 March 2025
Cromemco COBOL requires an ENVIRONMENT DIVISION paragraph, within which NAME values must begin with an alphabetic character, and does not implement REMAINDER.
IDENTIFICATION DIVISION. PROGRAM-ID. NPRIMES. AUTHOR. BEAR. DATE-WRITTEN. MARCH 15, 2025. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. CROMEMCO-8080. OBJECT-COMPUTER. CROMEMCO-8080. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM PIC 9(5) USAGE IS COMP VALUE 100. *01 WS-NUM PIC 9(5) USAGE IS COMP VALUE 1000. 01 WS-FOUND PIC 9(5) USAGE IS COMP VALUE ZERO. 01 WS-COUNT PIC 9(6) USAGE IS DISPLAY VALUE 2. 01 WS-DIV PIC 9(6) USAGE IS COMP. 01 WS-PRIMES USAGE IS COMP. 05 WS-PRIME PIC 9(6) OCCURS 100 TIMES INDEXED BY I. * 05 WS-PRIME PIC 9(6) OCCURS 1000 TIMES INDEXED BY I. PROCEDURE DIVISION. A000-MAIN. PERFORM C000-ISPRIME. PERFORM B000-CHECKPRIME THRU C000-ISPRIME UNTIL WS-FOUND IS EQUAL TO WS-NUM. STOP RUN. B000-CHECKPRIME. PERFORM D000-DIVIDES VARYING I FROM 1 BY 1 UNTIL I IS GREATER THAN WS-FOUND. C000-ISPRIME. ADD 1 TO WS-FOUND. DISPLAY WS-COUNT. MOVE WS-COUNT TO WS-PRIME(WS-FOUND). ADD 1 TO WS-COUNT. D000-DIVIDES. DIVIDE WS-COUNT BY WS-PRIME(I) GIVING WS-DIV. MULTIPLY WS-DIV BY WS-PRIME(I) GIVING WS-DIV. SUBTRACT WS-DIV FROM WS-COUNT GIVING WS-DIV. IF WS-DIV IS EQUAL TO ZERO PERFORM D001-NEXTNUM. D001-NEXTNUM. ADD 1 TO WS-COUNT. SET I TO 1. SET I DOWN BY 1.