When a DLL function requires an array of type BYTE, SHORT, UNSIGNED-SHORT, INT, LONG, FLOAT, or DOUBLE, you can pass an array of the appropriate ABL type (INTEGER or DECIMAL) as a parameter. You can use any parameter mode (INPUT, INPUT-OUTPUT, or OUTPUT). For the data type in the prototype, you can use just the type (for example, LONG) or you can specify it with the HANDLE TO option (for example, HANDLE TO). ABL always passes the array of values as a pointer so the HANDLE TO option is redundant, as it is with any INPUT-OUTPUT or OUTPUT parameter.
Here is an example C Code Prototype for a function called updateCounts:
updateCounts(short * parray);
This example is the equivalent ABL for the updateCounts procedure when accessing the function statically:
DEFINE VARIABLE iCnts AS INTEGER NO-UNDO EXTENT 5.