Ob ein Parameter eine gültige Adresse enthält, schließlich kann man auch NULL-Adressen übergeben (z.B. optionale Parameter bei CMD's mit Rückgabefeldern e.g. RTVJOBA, und die können auch zwischndrin auftauchen), muss man explizit erfragen:

if %addr(parmx) <> *NULL
:
endif

Und da muss ich Dieter Recht geben, CONST dient nur dem Compiler.
Wenn ich sicher sein will, dass ich meinen Übergabewert nicht geändert haben will, muss ich VALUE definieren. In diesem Fall wird dem gerufenen Programm immer eine Kopie übergeben und das kann dann tun und lassen was es will (egal ob CONST oder nicht).

Übrigens: VALUE führt ggf. auch eine TYP-Konvertierung durch, soweit der Compiler das halt kann und ich bin nicht an gleichartige Definitionen gebunden.