IDENTIFICATION DIVISION. PROGRAM-ID. SALESMANREVENUE. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SALES-FILE1 ASSIGN TO 'sales.txt' ORGANIZATION IS LINE SEQUENTIAL. SELECT OUTPUT1-SALES ASSIGN TO 'sales_total_rev.txt' ORGANIZATION IS LINE SEQUENTIAL. SELECT WORK-SALES ASSIGN TO 'sales_data_work.txt' ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD SALES-FILE1. 01 SALES-RECORD1. 05 MONTH PIC 9(5). 05 SALESMANID PIC 9(2). 05 REGION PIC X(5). 05 REVENUE PIC 9(6). 05 FILLER PIC X(62). FD OUTPUT1-SALES. 01 OUT-SALE-RECORD1. 05 MONTH1 PIC 9(5). 05 SALESMANID1 PIC 9(2). 05 REGION1 PIC X(5). 05 REVENUE1 PIC 9(6). 05 FILLER1 PIC X(62). SD WORK-SALES. 01 WORK-RECORD1. 05 MONTH3 PIC 9(5). 05 SALESMANID3 PIC 9(2). 05 REGION3 PIC X(5). 05 REVENUE3 PIC 9(6). 05 FILLER PIC X(62). WORKING-STORAGE SECTION. 01 SALES PIC X(5) OCCURS 1 TO 9999 TIMES DEPENDING ON MAXSALESMEN. 01 TOTALREVENUE PIC 9(6) OCCURS 1 TO 9999 TIMES DEPENDING ON MAXSALESMEN. 01 WS-SALESREVENUE PIC 9(10) VALUE ZERO. 01 MAXSALESMEN PIC 9(5) VALUE ZERO. 01 WS-INPUT-FILE1-EOF PIC X(1) VALUE 'N'. 01 SALESMANCOUNT PIC 9(3) VALUE ZERO. 01 MAXSALEMAN PIC 9(3) VALUE ZERO. 01 INDEX1 PIC 9(4) VALUE 1. 01 INDEX2 PIC 9(4) VALUE 1. 01 WS-SALESREVNUE PIC 9(5) VALUE 0. PROCEDURE DIVISION. 0000-MAIN-PARA. PERFORM 1000-INIT-PARA THRU 1000-EXIT1-PARA. PERFORM 1500-BUSINESS-PARA THRU 1500-EXIT1-PARA UNTIL WS-INPUT-FILE1-EOF = 'Y'. MOVE 'N' TO WS-INPUT-FILE1-EOF PERFORM 2000-CALCULATE-TOTAL-REVENUE-PARA THRU 2000-EXIT1-PARA. PERFORM 3000-CLOSE1-PARA THRU 3000-EXIT1-PARA. STOP RUN. 1000-INIT-PARA. OPEN INPUT SALES-FILE1. OPEN OUTPUT OUTPUT1-SALES. 1000-EXIT1-PARA. EXIT. 1500-BUSINESS-PARA. READ SALES-FILE1 AT END MOVE 'Y' TO WS-INPUT-FILE1-EOF display 'SALESMANCOUNT ' SALESMANCOUNT CLOSE OUTPUT1-SALES NOT AT END DISPLAY 'SALESMANID ' SALESMANID DISPLAY 'REVENUE ' REVENUE ADD 1 TO SALESMANCOUNT MOVE SALES-RECORD1 TO OUT-SALE-RECORD1 WRITE OUT-SALE-RECORD1 END-READ. 1500-EXIT1-PARA. EXIT. 2000-CALCULATE-TOTAL-REVENUE-PARA. OPEN INPUT OUTPUT1-SALES. READ OUTPUT1-SALES AT END MOVE 'Y' TO WS-INPUT-FILE1-EOF NOT AT END DISPLAY 'SALESMANID ' SALESMANID1 DISPLAY 'REVENUE ' REVENUE1 END-READ. 2000-EXIT1-PARA. EXIT. 3000-CLOSE1-PARA. CLOSE SALES-FILE1 CLOSE OUTPUT1-SALES. 3000-EXIT1-PARA. EXIT.
Write, Run & Share COBOL code online using OneCompiler's COBOL online compiler for free. It’s a reliable and accessible playground to practice and run COBOL code with ease. The compiler supports classic COBOL syntax and is great for learning, teaching, and experimenting with business logic programs.
COBOL (Common Business-Oriented Language) is a high-level programming language developed in the 1950s. It is primarily used in business, finance, and administrative systems for companies and governments. COBOL is known for its English-like syntax and is still widely used in legacy enterprise systems.
The following is a simple COBOL program that prints a greeting:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY "Hello, OneCompiler!".
STOP RUN.
In COBOL, input is typically handled using the ACCEPT
keyword. Here’s an example that takes user input and prints it back.
IDENTIFICATION DIVISION.
PROGRAM-ID. GREET.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME PIC A(30).
PROCEDURE DIVISION.
DISPLAY "Enter your name: ".
ACCEPT USER-NAME.
DISPLAY "Hello, " USER-NAME "!".
STOP RUN.
COBOL programs are divided into four divisions:
Variables are declared in the DATA DIVISION
using PIC
clauses.
01 AGE PIC 99.
01 NAME PIC A(20).
01 SALARY PIC 9(5)V99.
DISPLAY "Welcome to COBOL!".
ACCEPT USER-INPUT.
IF AGE >= 18
DISPLAY "Eligible to vote."
ELSE
DISPLAY "Not eligible."
END-IF.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5
DISPLAY "Count: " I
END-PERFORM.
This guide provides a quick reference to COBOL programming syntax and features. Start coding in COBOL using OneCompiler’s COBOL online compiler today!