Du hast es richtig verstanden. Die Definition als Pointer ist korrekt.
When OPTIONS(*STRING) is specified for a basing pointer parameter passed by
value or by constant-reference, you may either pass a pointer or a character
expression. If you pass a character expression, a temporary value will be created
containing the value of the character expression followed by a null-terminator
(x’00’). The address of this temporary value will be passed to the called program
or procedure.

Jetzt könnte ggf. noch das Speichermodell ein Problem sein, da die Pointer sich dann unterscheiden.
Prüfe bei der Erstellung der Module das Speichermodell.
*SNGLVL = 16-Byte-Pointer, max. 16MB je Variable
*TERASPACE = 8-Byte-Pointer, max. 2^64-1 Bytes insgesamt.
Ggf. erwartet deine C-Funktion Teraspace-Pointer, dein RPG übergibt SNGLVL-Pointer.