Trotzdem verwechselst du da was.
"dcl-s String" ist eine Single-Variable während "dta" ein Prozedurparameter ist.
Und "options(*varsize)" entspricht nicht "varchar".
*varsize = Parameter per reference aber beliebiger Länge, die Länge wird nicht übergeben.
varchar = Feld mit einer 2/4-Byte Längeninformation vorneweg

Die klassische Definition im RPGLE erlaubt hier bis 7 Stellen, also knapp 10MB, ich habe 99.999.999 ausprobiert (also 99999999A) ohne Fehler.
Die Free-Definition erlaubt da dann eben die klassische Grenze von knapp 16MB.