Das liegt an der neuen Optiomierungsstrategie, dass die Reihenfolge der Interpretation nicht mehr gewährleistet ist.
Man muss sich nun verstärkt der Aussage widmen:
Ist ein Teilausdruck NULL, dann ist der Gesamtausdruck NULL.
In deinem Fall kann ich im Moment eigentlich nichts erkennen.
Schalte mal den Debugmodus ein, dann wird der eigentliche Ausdruck (ggf. optimiert) ausgeworfen, wo der Fehler liegt.

Evtl. ist das Feld OLDKDN nicht NULL sondern Blank, dann fällt der DEC(...) auf die Schnautze.
Hier wäre dann Nullif(OLDKDN, ' ') erforderlich.
Andererseits verstehe ich dann die CHAR(OLDKDN) nicht.