Custom parameters and return values
Both custom parameters and return values are referenced by elements
in void pointer arrays. Since parameters and return
values can be of various data types, pointers to them are typecast
to void* and then stored in a single array. Each
such array holds either the custom parameter or the custom return
values, but never both. The following diagram illustrates the structure
of an example custom parameter array:

where params is a pointer to a void array
and each voidPtr in the array is a void pointer
that points to a parameter. Custom return value arrays should be similarly
structured.
The number of elements that should be in a custom parameter or
return value array is dependent upon the CAF information in the CARMA
VSAM clusters (see Creating VSAM records from a RAM model).
Since it is the responsibility of the RAM developer to include information
on the custom parameters and return values in the VSAM clusters, the
RAM developer should already know how many elements to include in
the custom parameter and return value arrays. CARMA client developers
can use the getCAFData or getCAFData2 CARMA
function to retrieve information on the custom actions, parameters,
and return values for a RAM (see getCAFData for
more information). Using this information, CARMA client developers
can determine how many custom parameters and return values are required
for each RAM action.