I have written code to get the number that appears the most in an array. The main function will make a call to readData which will read data into the array that I passed to the readData subroutine. After the readData subroutine has executed, i use the mode function to find the number that appears most in an array.
Example array: |1|2|2|1|1|
Output generated: 1
My c++ code is as follows:
#include <iostream>
using namespace std;
void mode(int array[]){
int max = 0, num;
int count;
for(int i=0; i<5; ++i){
count = 0;
for(int j=0; j<5; ++j){
if(array[i] == array[j]){
++count;
}
if(max < count){
max = count;
num = array[i];
}
}
}
cout << num << endl;
}
void arrayData(int array[]){
for(int i=0; i<5; i++){
cin >> array[i];
}
mode(array);
}
int main()
{
int array[5];
arrayData(array);
return 0;
}
I would like to convert the above c++ code to cobol, I am using gnuCobol. The code i have generated so far is bellow.
IDENTIFICATION DIVISION.
PROGRAM-ID. Main.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 array.
05 val PIC X(1) OCCURS 5 TIMES.
PROCEDURE DIVISION.
CALL 'READDATA' USING array.
STOP RUN.
*> readData: fills the array with user diffined digits
IDENTIFICATION DIVISION.
PROGRAM-ID. READDATA.
WORKING-STORAGE SECTION. ***> error appears here**
01 array.
05 val PIC X(1) OCCURS 5 TIMES.
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1
UNTIL I > 5
SET I TO 1
ACCEPT array(I) FROM SYSIN.
SET I UP BY 1
END-PERFORM.
CALL 'MODE' USING array.
EXIT PROGRAM.
*> mode: gets the number that appears most in the array
IDENTIFICATION DIVISION.
PROGRAM-ID. MODE.
WORKING-STORAGE SECTION.
01 array.
05 val PIC X(1) OCCURS 5 TIMES.
01 maxv PIC(1) VALUE 0.
01 counter PIC(1).
01 num PIC(1).
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1
UNTIL I > 5
MOVE 0 TO counter
PERFORM VARYING J FROM 1 BY 1
UNTIL J > 5
IF array(I) = array(I) THEN
SET counter UP BY 1
END-IF
IF maxv < counter THEN
MOVE counter TO maxv
MOVE array(I) TO num
END-IF
SET J UP BY 1
END-PERFORM.
SET I UP BY 1
END-PERFORM.
DISPLAY "Mode: "num.
EXIT PROGRAM.
I am getting the following error:
Error: syntax error, unexpected "WORKING-STORAGE", expecting "END PROGRAM" or "PROGRAM-ID"