The jarray class provides an native OO COBOL wrapper for manipulating Java arrays. It is fully documented in the Java Run-time Class Library Reference, which is in help\mfcobol.docs.zip (Windows) or docs/mfcobol.docs.zip (UNIX) in your COBOL development system installation.
The following COBOL program gets an array from a Java object, finds its dimensions, and displays the contents of the array.
$set ooctrl(+p-f) Program-id. ReadArray. class-control. arraydemo is class "$Java$arraydemo" . thread-local-storage section. 01 aJavaObj object reference. 01 theTotal pic 9(9). 01 CDims pic x(4) comp-5. 01 Dims. 03 Dims-entry pic x(4) comp-5 occurs 256. 01 Bounds. 03 Bounds-entry pic x(4) comp-5 occurs 256. 01 ind0 pic x(4) comp-5. 01 ind1 pic x(4) comp-5. 01 arrayElement pic x(4) comp-5. 01 wsTable object reference. 01 wsResult pic x(4) comp-5. procedure division. invoke arraydemo "new" returning aJavaObj invoke aJavaObj "getArray" returning wsTable *> find out the number of elements in the array invoke wsTable "getDimensions" returning CDims display "The array has " CDims " dimension(s)" *> get the number of elements in each dimension display "dimensions are " with no advancing invoke wsTable "getBounds" using Bounds perform varying ind0 from 1 by 1 until ind0 > CDims display Bounds-entry(ind0) with no advancing if ind0 < CDims display " by " with no advancing end-if end-perform display " " *> display each element in the array perform varying ind0 from 0 by 1 until ind0 = Bounds-entry(1) move ind0 to Dims-entry(1) perform varying ind1 from 0 by 1 until ind1 = Bounds-entry(2) move ind1 to Dims-entry(2) invoke wsTable "getElement" using by value CDims by reference Dims by reference arrayElement display "Element " ind0 "," ind1 " is " arrayElement *> modify the contents of the array add 50 to arrayElement invoke wsTable "putElement" using by value CDims by reference Dims by reference arrayElement end-perform end-perform
This is an implementation of the Java arraydemo class used by ReadArray. This program creates a two-dimensional array.
import com.microfocus.cobol.*; import java.io.*; public class arraydemo extends RuntimeSystem { int myArray[][]; public arraydemo() { myArray = new int[5][2]; int i,j; for (i = 0; i < 5; i++) { for (j = 0; j < 2; j++) myArray[i][j] = i * 100 + j; } } public int[][] getArray() { return myArray; } }