I am doing a project that deals with 2d array. I am having trouble with add 1 to the array to load the data into it. I am getting the message that the operand needs to be numeric. I have set it up to be numeric. I am not sure why this is happening
IDENTIFICATION DIVISION.
PROGRAM-ID. PROJECT4.
AUTHOR. CHAD FRANKS.
DATE-WRITTEN. APRIL 23, 2002.
******************************************************************
* THIS PROGRAM WILL DISPLAY THE AMOUNT OF EMPLOYEES PER
* DEPARTMENT FOR EACH AREA.
******************************************************************
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO
'A:\EMP-FILE.DAT'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT PRINT-FILE ASSIGN TO
'A:\PRINT.rpt'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
******************************************************************
* THIS IS THE INPUT SECTION OF THE PROGRAM.
******************************************************************
FD EMP-FILE LABEL RECORDS ARE STANDARD.
01 EMP-REC.
05 DEPT-IN PIC 99.
05 AREA-IN PIC 99.
05 EMP-INFO PIC X(76).
FD PRINT-FILE LABEL RECORDS ARE STANDARD.
01 PRINT-REC PIC X(80).
WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PIC X(3) VALUE 'YES'.
01 WS-COUNTERS.
05 WS-REC-CT PIC 999.
05 WS-ERR-CT PIC 999.
05 WS-WRITE-REC-CT PIC 999.
05 SUB1 PIC 99 VALUE 1.
05 SUB2 PIC 99 VALUE 1.
01 WS-DATE.
05 RUN-YEAR PIC 9999.
05 RUN-MONTH PIC 99.
05 RUN-DAY PIC 99.
01 DL-TITLE.
05 PIC X(30) VALUE SPACES.
05 PIC X(47)
VALUE 'TOTAL NO OF EMPLOYEES BY AREA WITHIN DEPARTMENT'.
05 PIC X(3) VALUE SPACES.
05 DATE-OF-RUN.
10 MON-OUT PIC 99.
10 PIC X VALUE '/'.
10 DAY-OUT PIC 99.
10 PIC X VALUE '/'.
10 YEAR-OUT PIC 9999.
01 DL-AREA-HEADINGS.
05 PIC X(20) VALUE SPACES.
05 PIC X(5) VALUE 'AREA1'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA2'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA3'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA4'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA5'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA6'.
01 DETAIL-LINE.
05 PIC X(28) VALUE SPACES.
05 DEPT PIC X(5) VALUE 'DEPT-'.
05 DEPT-OUT PIC Z9.
05 PIC X(10) VALUE SPACES.
05 OUT-ROW OCCURS 6 TIMES.
10 OUT-NUM PIC Z9.
10 PIC X(2) VALUE SPACES.
01 TOTALS.
05 PIC X(4) VALUE SPACES.
05 REC-READ-OUT PIC X(12)
VALUE 'RECORDS READ'.
05 PIC X(4) VALUE SPACES.
05 ERROR-OUT PIC X(19)
VALUE 'RECORDS WITH ERRORS'.
05 PIC X(4) VALUE SPACES.
05 PRINTED-OUT PIC X(15)
VALUE 'RECORDS PRINTED'.
01 DEPT-TOTALS.
05 DEPT-1 OCCURS 10 TIMES.
10 AREA-1 OCCURS 6 TIMES.
15 EMP-NUM PIC 99.
PROCEDURE DIVISION.
100-MAIN-MODULE.
OPEN INPUT EMP-FILE
OUTPUT PRINT-FILE
PERFORM 120-INITIALIZE-WS-COUNTERS
PERFORM UNTIL ARE-THERE-MORE-RECORDS = ' NO'
READ EMP-FILE
AT END
MOVE 'NO' TO ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM 300-VALIDATION
ADD 1 TO WS-REC-CT
END-READ
END-PERFORM
Perform 500-detail
PERFORM 600-TOTALS
CLOSE EMP-FILE
CLOSE PRINT-FILE
STOP RUN.
120-INITIALIZE-WS-COUNTERS.
INITIALIZE WS-COUNTERS.
PERFORM 200-WRITE-HEADINGS.
200-WRITE-HEADINGS.
MOVE FUNCTION CURRENT-DATE TO WS-DATE
MOVE RUN-MONTH TO MON-OUT
MOVE RUN-DAY TO DAY-OUT
MOVE RUN-YEAR TO YEAR-OUT
WRITE PRINT-REC FROM DL-TITLE.
WRITE PRINT-REC FROM DL-AREA-HEADINGS.
300-VALIDATION.
IF (DEPT-IN >= 0 AND < 11)
AND (AREA-IN >= 0 AND < 07)
ADD 1 TO EMP-NUM (DEPT-1, DEPT-1)
ELSE ADD 1 TO WS-ERR-CT
END-IF.
500-DETAIL.
*MOVE SPACES TO DETAIL-LINE
*MOVE SPACES TO PRINT-REC
PERFORM VARYING SUB1 FROM 1 BY 1
UNTIL SUB1 > 10
MOVE SUB1 TO DEPT-OUT
PERFORM VARYING SUB2 FROM 1 BY 1
UNTIL SUB2 > 6
MOVE EMP-NUM (SUB1, SUB2) TO OUT-NUM (SUB2)
END-PERFORM
ADD 1 TO WS-WRITE-REC-CT
WRITE PRINT-REC FROM DETAIL-LINE
END-PERFORM.
600-TOTALS.
MOVE WS-WRITE-REC-CT TO PRINTED-OUT
MOVE WS-ERR-CT TO ERROR-OUT
MOVE WS-REC-CT TO REC-READ-OUT
WRITE PRINT-REC FROM TOTALS
IDENTIFICATION DIVISION.
PROGRAM-ID. PROJECT4.
AUTHOR. CHAD FRANKS.
DATE-WRITTEN. APRIL 23, 2002.
******************************************************************
* THIS PROGRAM WILL DISPLAY THE AMOUNT OF EMPLOYEES PER
* DEPARTMENT FOR EACH AREA.
******************************************************************
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO
'A:\EMP-FILE.DAT'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT PRINT-FILE ASSIGN TO
'A:\PRINT.rpt'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
******************************************************************
* THIS IS THE INPUT SECTION OF THE PROGRAM.
******************************************************************
FD EMP-FILE LABEL RECORDS ARE STANDARD.
01 EMP-REC.
05 DEPT-IN PIC 99.
05 AREA-IN PIC 99.
05 EMP-INFO PIC X(76).
FD PRINT-FILE LABEL RECORDS ARE STANDARD.
01 PRINT-REC PIC X(80).
WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PIC X(3) VALUE 'YES'.
01 WS-COUNTERS.
05 WS-REC-CT PIC 999.
05 WS-ERR-CT PIC 999.
05 WS-WRITE-REC-CT PIC 999.
05 SUB1 PIC 99 VALUE 1.
05 SUB2 PIC 99 VALUE 1.
01 WS-DATE.
05 RUN-YEAR PIC 9999.
05 RUN-MONTH PIC 99.
05 RUN-DAY PIC 99.
01 DL-TITLE.
05 PIC X(30) VALUE SPACES.
05 PIC X(47)
VALUE 'TOTAL NO OF EMPLOYEES BY AREA WITHIN DEPARTMENT'.
05 PIC X(3) VALUE SPACES.
05 DATE-OF-RUN.
10 MON-OUT PIC 99.
10 PIC X VALUE '/'.
10 DAY-OUT PIC 99.
10 PIC X VALUE '/'.
10 YEAR-OUT PIC 9999.
01 DL-AREA-HEADINGS.
05 PIC X(20) VALUE SPACES.
05 PIC X(5) VALUE 'AREA1'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA2'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA3'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA4'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA5'.
05 PIC X(5) VALUE SPACES.
05 PIC X(5) VALUE 'AREA6'.
01 DETAIL-LINE.
05 PIC X(28) VALUE SPACES.
05 DEPT PIC X(5) VALUE 'DEPT-'.
05 DEPT-OUT PIC Z9.
05 PIC X(10) VALUE SPACES.
05 OUT-ROW OCCURS 6 TIMES.
10 OUT-NUM PIC Z9.
10 PIC X(2) VALUE SPACES.
01 TOTALS.
05 PIC X(4) VALUE SPACES.
05 REC-READ-OUT PIC X(12)
VALUE 'RECORDS READ'.
05 PIC X(4) VALUE SPACES.
05 ERROR-OUT PIC X(19)
VALUE 'RECORDS WITH ERRORS'.
05 PIC X(4) VALUE SPACES.
05 PRINTED-OUT PIC X(15)
VALUE 'RECORDS PRINTED'.
01 DEPT-TOTALS.
05 DEPT-1 OCCURS 10 TIMES.
10 AREA-1 OCCURS 6 TIMES.
15 EMP-NUM PIC 99.
PROCEDURE DIVISION.
100-MAIN-MODULE.
OPEN INPUT EMP-FILE
OUTPUT PRINT-FILE
PERFORM 120-INITIALIZE-WS-COUNTERS
PERFORM UNTIL ARE-THERE-MORE-RECORDS = ' NO'
READ EMP-FILE
AT END
MOVE 'NO' TO ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM 300-VALIDATION
ADD 1 TO WS-REC-CT
END-READ
END-PERFORM
Perform 500-detail
PERFORM 600-TOTALS
CLOSE EMP-FILE
CLOSE PRINT-FILE
STOP RUN.
120-INITIALIZE-WS-COUNTERS.
INITIALIZE WS-COUNTERS.
PERFORM 200-WRITE-HEADINGS.
200-WRITE-HEADINGS.
MOVE FUNCTION CURRENT-DATE TO WS-DATE
MOVE RUN-MONTH TO MON-OUT
MOVE RUN-DAY TO DAY-OUT
MOVE RUN-YEAR TO YEAR-OUT
WRITE PRINT-REC FROM DL-TITLE.
WRITE PRINT-REC FROM DL-AREA-HEADINGS.
300-VALIDATION.
IF (DEPT-IN >= 0 AND < 11)
AND (AREA-IN >= 0 AND < 07)
ADD 1 TO EMP-NUM (DEPT-1, DEPT-1)
ELSE ADD 1 TO WS-ERR-CT
END-IF.
500-DETAIL.
*MOVE SPACES TO DETAIL-LINE
*MOVE SPACES TO PRINT-REC
PERFORM VARYING SUB1 FROM 1 BY 1
UNTIL SUB1 > 10
MOVE SUB1 TO DEPT-OUT
PERFORM VARYING SUB2 FROM 1 BY 1
UNTIL SUB2 > 6
MOVE EMP-NUM (SUB1, SUB2) TO OUT-NUM (SUB2)
END-PERFORM
ADD 1 TO WS-WRITE-REC-CT
WRITE PRINT-REC FROM DETAIL-LINE
END-PERFORM.
600-TOTALS.
MOVE WS-WRITE-REC-CT TO PRINTED-OUT
MOVE WS-ERR-CT TO ERROR-OUT
MOVE WS-REC-CT TO REC-READ-OUT
WRITE PRINT-REC FROM TOTALS