For a 3 dimensional array, couldn't you also use a temp-table? It might be a bit clumsy, but I assume this would work...
def var v-x-counter as int no-undo.
def var v-y-counter as int no-undo.
def var v-z-counter as int no-undo.
Def TEMP-TABLE my-table
field v-x as int
field v-y as int
field v-z as int
field v-value as int. /*or char or whatever you want to store*/
/*then an index of your choosing*/
Now, create the table, say a 3x3x3 array
do v-x-counter = 1 to 3:
do v-y-counter = 1 to 3:
do v-z-counter = 1 to 3:
create my-table.
assign my-table.v-x = v-x-counter
my-table.v-y = v-y-counter
my-table.v-z = v-z-counter.
/*can assign array value here too, if you know them and wish to*/
end.
end.
end.
Now, you just do a FIND or FOR EACH to find the "array value" that you want.
Hope that helps, even if it's not the most elegant solution.
(sorry about the bad indenting, not sure how to get it to display nicely)