Reputation: 55
Taking a class on Cobol and having issues getting a program to run. I'm using opencobol to run through command prompt. The program is:
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPLOYEE-DATA
ASSIGN TO "C:\COBOL\EMPLOYEE-INFO.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT PAYROLL-LISTING
ASSIGN TO "C:\COBOL\PAYROLL-OUT.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-DATA.
01 EMPLOYEE-RECORD.
05 EMPLOYEE-NAME-IN PICTURE X(20).
05 HOURS-WORKED-IN PICTURE 9(2).
05 HOURLY-RATE-IN PICTURE 9V99.
FD PAYROLL-LISTING.
01 PRINT-REC.
05 PICTURE X(20).
05 NAME-OUT PICTURE X(20).
05 PICTURE X(10).
05 HOURS-OUT PICTURE 9(2).
05 PICTURE X(8).
05 RATE-OUT PICTURE 9.99.
05 PICTURE X(6).
05 WEEKLY-WAGES-OUT PICTURE 999.99.
WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PICTURE XXX VALUE 'YES'.
PROCEDURE DIVISION.
100-MAIN-MODULE.
OPEN INPUT EMPLOYEE-DATA
OUTPUT PAYROLL-LISTING
PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO '
READ EMPLOYEE-DATA
AT END
MOVE 'NO ' TO ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM 200-WAGE-ROUTINE
END READ
END PERFORM
CLOSE EMPLOYEE-DATA
PAYROLL-LISTING
STOP RUN.
200-WAGE-ROUTINE.
MOVE SPACES TO PRINT-REC
MOVE EMPLOYEE-NAME-IN TO NAME-OUT
MOVE HOURS-WORKED-IN TO HOURS-OUT
MOVE HOURLY-RATE-IN TO RATE-OUT
MULTIPLY HOURS-WORKED-IN BY HOURLY-RATE-IN
GIVING WEEKLY-WAGES-OUT
WRITE PRINT-REC.
STOP RUN.
When running the program I'm getting the following error:
Sample.cob: In paragraph '100-MAIN-MODULE':
Sample.cob:35: Error: PERFORM statement not terminated by END-PERFORM
Sample.cob:41: Error: syntax error, unexpected END
I saw another post similar to this but they had close statements in their paragraph, but I don't here. This program is gotten from the textbook also so not sure why it isn't working for me.
Upvotes: 0
Views: 671
Reputation: 10543
Try using END-PERFORM
with the - in it and not END PERFORM
Also it is End-Read
not end read
Upvotes: 2