Das Problem ist manchmal nur schwer zu finden, vor allem wenn das "&"-Zeichen an wichtiger Stelle fehlt.
In CLP werden Variablen immer mit "&" deklariert!
Der vollständige Name ist also grundsätzlich "&Name".

Bei allen Kommandos sind (bis auf wenige Ausnahmen) sowohl Variablen als auch Konstanten möglich.
Übergibst du also CALL ... PARM(FEHLER) statt PARM(&FEHLER) lehnt der Compiler das nicht ab (denn sie (die Programmierer) wissen was sie tun....).
Für die Konstante "FEHLER" wird nun intern eine Variable angelegt und an das Programm übergeben.
Wenn dieses dann den Wert verändert, kommt das rufende Programm halt nicht mehr dran.
Bei nächsten Aufruf (in einer Schleife) wird nun allerdings der veränderte Wert weitergegeben.