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. 
by

COBOL online compiler

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.

About COBOL

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.

Sample Code

The following is a simple COBOL program that prints a greeting:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
    DISPLAY "Hello, OneCompiler!".
    STOP RUN.

Taking inputs

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.

Syntax Basics

Program Structure

COBOL programs are divided into four divisions:

  • IDENTIFICATION DIVISION: Program metadata
  • ENVIRONMENT DIVISION: Machine/environment details (optional)
  • DATA DIVISION: Variable declarations
  • PROCEDURE DIVISION: Actual program logic

Variables

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.

Displaying and Accepting Data

DISPLAY "Welcome to COBOL!".
ACCEPT USER-INPUT.

Conditional Statements

IF AGE >= 18
    DISPLAY "Eligible to vote."
ELSE
    DISPLAY "Not eligible."
END-IF.

Loops (PERFORM)

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!