Bei Schlüssel-Wort CONST wird dann eine Hilfs-Variable mit dem erwarteten Datentyp und der erwarteten Länge erstellt, wenn die übergebne Variable von der Definition des Prototypen abweicht.

An die aufgerufene Prozedur wird allerdings nicht die (Hilfs-)Variable, sondern lediglich die Adresse der Hilfs-Variable übergeben.

Da aus diesem Grund in der aufgerufenen Prozedur nie sicher ist, ob auf eine Kopie oder die Original-Daten zugegriffen wird, dürfen mit CONST übergebene Variablen in den aufgerufenen Prozeduren nie geändert werden (Compile-Fehler)

Es gab tatsächlich (vor urdenklichen Zeiten) einen Bug, dass auch Original-Felder z.B. durch CLEAR überklatscht werden können. Dieser Bug ist jedoch bereits seit einigen Releasen behoben.

Die Option VARSIZE ist nur für Ein/Ausgabe oder reine Ausgabe-Parameter interessant. Da an dieser Stelle wirklich nur der Pointer zurückgegeben wird. In der aufgerufenen Prozedur dürfen nur die entweder in einem Längen-Parameter übergebenen Bytes oder über die Prozedur CEEDOD (in Verbindung mit dem Schlüssel-Wort OPDESC) ermittelten Bytes geändert werden.

Die Gefahr, dass z.B. bei inkorrekt berechneten Länge globaler Speicher überschrieben wird, ist sehr groß und solche Fehler dann zu finden ziemlich schwierig.

Ansonsten finde ich es auch nicht ganz fäir Antworten von anderen als "sooo falsch" zu betiteln. Nobody is perfect und nicht alles was man sich selber zusammenreimt ist korrekt.

Birgitta