Can you help on this COBOL program I can not get it to run I
Can you help on this COBOL program. I can not get it to run. I have logical errors and the FD lines are coming up as comments. Here is my code:
ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
 SOURCE-COMPUTER.
 PC.
 OBJECT-COMPUTER.
 PC.
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
 SELECT SALES-FILE
 ASSIGN TO \"C:\\Cobol\\FILE1.DAT\"
 ORGANIZATION IS LINE SEQUENTIAL.
 SELECT SALES-REPORT
 ASSIGN TO \"C:\\Cobol\\FILE1.TXT\"
 ORGANIZATION IS LINE SEQUENTIAL.
 DATA DIVISION.
 FILE SECTION.
 FD SALES-FILE
 RECORD CONTAINS 47 CHARACTERS
 DATA RECORD IS SALES-REC-IN.
 01 SALES-REC-IN.
 05 CITY-IN PIC X.
 05 NUMBER-IN PIC 999.
 05 NAME-IN PIC X(15).
 05 ADDRESS-IN PIC X(21).
 05 SALES-IN PIC 9(5)V99.
 FD SALES-REPORT
 DATA RECORD IS REPORT-OUT
 RECORD CONTAINS 80 CHARACTERS.
 01 REPORT-OUT PIC X(80).
 WORKING-STORAGE SECTION.
 01 WORK-AREA.
 05 ARE-THERE-MORE-RECORDS PIC XXX VALUE \"YES\".
 05 CITY-HOLD PIC X.
 05 PAGE-NO-WS PIC 99 VALUE ZEROS.
 05 DATE-WS.
 10 YEAR-WS PIC XXXX.
 10 MONTH-WS PIC XX.
 10 DAY-WS PIC XX.
 01 ACCUMULATORS-WORK-AREA.
 05 DALLAS-TOTAL PIC 9(6)V99 VALUE ZEROS.
 05 HOUSTON-TOTAL PIC 9(6)V99 VALUE ZEROS.
 05 AUSTIN-TOTAL PIC 9(6)V99 VALUE ZEROS.
 05 OTHER-TOTAL PIC 9(6)V99 VALUE ZEROS.
 05 DALLAS-CITY PIC 9(5) VALUE ZEROS.
 05 HOUSTON-CITY PIC 9(5) VALUE ZEROS.
 05 AUSTIN-CITY PIC 9(5) VALUE ZEROS.
 05 OTHER-CITY PIC 9(5) VALUE ZEROS.
 05 SALES-TOTAL PIC 9(6)V99 VALUE ZEROS.
 05 WS-SPACING PIC 99 VALUE ZEROS.
 01 HEADING-LINE-1.
 05 PIC X(15) VALUE SPACES.
 05 PIC X(30) VALUE
 \"SALES REPORT \".
 05 PIC X(13) VALUE
 \" PAGE \".
 05 PAGE-NO-HL PIC Z9.
 05 PIC X(6) VALUE SPACES.
 05 MONTH-OUT PIC XX.
 05 PIC X VALUE \"/\".
 05 DAY-OUT PIC XX.
 05 PIC X VALUE \"/\".
 05 YEAR-OUT PIC XXXX.
 01 HEADING-LINE-2 .
 05 PIC X(20) VALUE
 \"CITY \".
 05 PIC XXX VALUE SPACES.
 05 PIC X(5) VALUE
 \"NO. \".
 05 PIC X(16) VALUE
 \"CLIENT NAME \".
 05 PIC X VALUE SPACES.
 05 PIC X(20) VALUE
 \"CLIENT ADDRESS\".
 05 PIC X VALUE SPACES.
 05 PIC X(10) VALUE
 \" SALES \".
 05 PIC X(4) VALUE SPACES.
 01 DETAIL-LINE-1.
 05 CITY-OUT PIC X(20) VALUE SPACES.
 05 PIC X(3) VALUE SPACES.
 05 NUMBER-OUT PIC 999 VALUE ZEROS.
 05 PIC XX VALUE SPACES.
 05 NAME-OUT PIC X(15) VALUE SPACES.
 05 PIC X VALUE SPACES.
 05 ADDRESS-OUT PIC X(21) VALUE SPACES.
 05 PIC X VALUE SPACES.
 05 DETAIL-SALES-OUT PIC $ZZ,ZZ9.99 VALUE ZEROS.
 05 PIC X(4) VALUE SPACES.
 01 TOTAL-LINE-1.
 05 PIC X(20) VALUE SPACES.
 05 PIC X(45) VALUE
 \" TOTAL SALES =\".
 05 SALES-TOTAL-OUT PIC $ZZZ,ZZ9.99 VALUE ZEROS.
 05 PIC X(2) VALUE SPACES.
 01 SUMMARY-TOTAL.
 05 PIC X(20) VALUE SPACES.
 05 PIC X(45) VALUE
 \" AVERAGE SALES =\".
 05 SALES-OUT PIC $ZZZ,ZZZ.99 VALUE ZEROS.
 05 PIC X(4) VALUE SPACES.
 PROCEDURE DIVISION.
 000-MAIN-MODULE.
 PERFORM 100-INITIALIZATION-MODULE
 PERFORM UNTIL ARE-THERE-MORE-RECORDS = \"NO \"
 READ SALES-FILE
 AT END MOVE \"NO \" TO ARE-THERE-MORE-RECORDS   
 NOT AT END
 PERFORM 200-PROCESS-MODULE
 END-READ
 END-PERFORM
 PERFORM 301-COMPUTATION-MODULE
 PERFORM 900-TERMINATION-MODULE
 STOP RUN.
 100-INITIALIZATION-MODULE.
 OPEN INPUT SALES-FILE
 OUTPUT SALES-REPORT
 MOVE FUNCTION CURRENT-DATE TO DATE-WS
 MOVE YEAR-WS TO MONTH-OUT
 MOVE DAY-WS TO DAY-OUT
 MOVE YEAR-WS TO YEAR-OUT
 READ SALES-FILE
 AT END MOVE \"NO \" TO ARE-THERE-MORE-RECORDS
 NOT AT END
 MOVE CITY-IN TO CITY-HOLD
 PERFORM 700-HEADER-MODULE
 PERFORM 200-PROCESS-MODULE
 END-READ.
 200-PROCESS-MODULE.
 IF NUMBER-IN NOT = CITY-HOLD
 PERFORM 301-COMPUTATION-MODULE
 END-IF
 PERFORM 300-SALES-MODULE
 MOVE NUMBER-IN TO NUMBER-OUT
 MOVE NAME-IN TO NAME-OUT
 MOVE ADDRESS-IN TO ADDRESS-OUT
 MOVE CITY-IN TO DETAIL-SALES-OUT
 MOVE DETAIL-LINE-1 TO REPORT-OUT
 MOVE 1 TO WS-SPACING
 PERFORM 701-WRITE-MODULE.
 300-SALES-MODULE.
 IF CITY-IN = \"1\"
 ADD SALES-IN TO DALLAS-TOTAL
 ADD 1 TO DALLAS-TOTAL
 MOVE \" DALLAS \" TO CITY-OUT
 ELSE
 IF CITY-IN = \"2\"
 ADD SALES-IN TO HOUSTON-TOTAL
 ADD 1 TO HOUSTON-CITY
 MOVE \" HOUSTON \" TO CITY-OUT
 ELSE
 IF CITY-IN = \"3\"
 ADD SALES-IN TO AUSTIN-TOTAL
 ADD 1 TO AUSTIN-CITY
 MOVE \" AUSTIN \" TO CITY-OUT
 ELSE
 IF CITY-IN = \"4\"
 ADD SALES-IN TO OTHER-TOTAL
 ADD 1 TO OTHER-CITY
 MOVE \" OTHER \" TO CITY-OUT
 ELSE
 PERFORM 900-TERMINATION-MODULE
 STOP RUN
 END-IF.
 301-COMPUTATION-MODULE.
 IF DALLAS-CITY = ZERO
 CONTINUE
 ELSE
 MOVE DALLAS-TOTAL TO SALES-TOTAL-OUT
 MOVE TOTAL-LINE-1 TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 COMPUTE SALES-TOTAL ROUNDED = DALLAS-TOTAL
 / DALLAS-CITY
 MOVE SALES-TOTAL TO SALES-OUT
 MOVE SUMMARY-TOTAL TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 MOVE 2 TO WS-SPACING   
 MOVE SPACES TO REPORT-OUT
 PERFORM 701-WRITE-MODULE
 MOVE ZEROS TO SALES-TOTAL DALLAS-CITY
 END-IF
 IF HOUSTON-CITY = ZERO
 CONTINUE
 ELSE
 MOVE HOUSTON-TOTAL TO SALES-TOTAL-OUT
 MOVE TOTAL-LINE-1 TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 COMPUTE SALES-TOTAL ROUNDED = HOUSTON-TOTAL
 / HOUSTON-CITY
 MOVE SALES-TOTAL TO SALES-OUT
 MOVE SUMMARY-TOTAL TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 MOVE SPACES TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 MOVE ZEROS TO SALES-TOTAL HOUSTON-CITY
 END-IF
 IF AUSTIN-CITY = ZERO
 CONTINUE
 ELSE
 MOVE AUSTIN-TOTAL TO SALES-TOTAL-OUT
 MOVE TOTAL-LINE-1 TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 COMPUTE SALES-TOTAL ROUNDED = AUSTIN-TOTAL
 / AUSTIN-CITY
 MOVE SALES-TOTAL TO SALES-OUT
 MOVE SUMMARY-TOTAL TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 MOVE SPACES TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 END-IF
 IF OTHER-CITY = ZERO
 CONTINUE
 ELSE
 MOVE \" OTHER \" TO CITY-OUT
 MOVE OTHER-TOTAL TO SALES-TOTAL-OUT
 MOVE TOTAL-LINE-1 TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 COMPUTE SALES-TOTAL ROUNDED = OTHER-TOTAL
 / OTHER-CITY
 MOVE SALES-TOTAL TO SALES-OUT
 MOVE 2 TO WS-SPACING
 MOVE SUMMARY-TOTAL TO REPORT-OUT
 PERFORM 701-WRITE-MODULE
 MOVE SPACES TO REPORT-OUT
 MOVE 2 TO WS-SPACING
 PERFORM 701-WRITE-MODULE
 MOVE ZEROS TO SALES-TOTAL OTHER-CITY
 END-IF
 MOVE CITY-IN TO CITY-HOLD.
 700-HEADER-MODULE.
 ADD 1 TO PAGE-NO-WS
 MOVE PAGE-NO-WS TO PAGE-NO-HL
 MOVE HEADING-LINE-1 TO REPORT-OUT
 WRITE REPORT-OUT
 AFTER ADVANCING PAGE
 MOVE HEADING-LINE-1 TO REPORT-OUT
 WRITE REPORT-OUT
 AFTER ADVANCING 2 LINES
 MOVE SPACES TO REPORT-OUT
 WRITE REPORT-OUT
 AFTER ADVANCING 1 LINES.
 701-WRITE-MODULE.
 WRITE REPORT-OUT
 AFTER ADVANCING WS-SPACING LINE.
 900-TERMINATION-MODULE.
 CLOSE SALES-FILE
 SALES-REPORT.
The output is suppose to look like this:
SALES REPORT PAGE 1 11/05/2016
CITY NO. CLIENT NAME CLIENT ADDRESS SALES
DALLAS 003 T. PETERSON 1223 MAIN $ 2,795.00
 DALLAS 005 J. SMITH 364 LINCOLN $ 2,150.00
TOTAL SALES = $ 4,945.00
AVERAGE SALES = $ 2,472.50
 HOUSTON 002 L. ROBERTSON 274 WASHINGTON $ 550.00
 HOUSTON 006 C. HERNANDEZ 1950 FREEWAY $ 395.90
TOTAL SALES = $ 945.90
AVERAGE SALES = $ 472.95
 AUSTIN 010 T. MCDONALD 1105 IOWA $ 299.00
 AUSTIN 020 T. LEHMAN 646 7TH ST. $ 575.00
TOTAL SALES = $ 874.00
AVERAGE SALES = $ 437.00
 OTHER 001 R. HUMBOLDT 909 INDEPENDENCE $ 1,189.99
 OTHER 030 C. BENJAMIN 56 FOREST LANE $ 1,585.00
 OTHER 045 D. LEE 199 ROOSEVELT $ 1,985.00
TOTAL SALES = $ 4,759.99
AVERAGE SALES = $ 1,586.66
Solution
Kindly consider assigning a program-id to your code as shown below:
Also, my recommendation is to use Notepad++ for editing your code.
A typical example of cobol code for files has to be in the below format:
IDENTIFICATION DIVISION.
 . . .
 ENVIRONMENT DIVISION.
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
 SELECT filename ASSIGN TO assignment-name
 ORGANIZATION IS org ACCESS MODE IS access
 FILE STATUS IS file-status
 . . .
 DATA DIVISION.
 FILE SECTION.
 FD filename
 01 recordname
 nn . . . fieldlength & type
 nn . . . fieldlength & type
 . . .
 WORKING-STORAGE SECTION.
 01 file-status PIC 99.
 . . .
 PROCEDURE DIVISION.
 OPEN iomode filename
 . . .
 READ filename
 . . .
 WRITE recordname
 . . .
 CLOSE filename
 STOP RUN.
Apart from these, i dont see any issue with your code. Happy Compiling !!!






