Für NULL-Werte benötigt man NULL-Anzeiger.
Diese dienen nicht nur zum Lesen sondern auch zum schreiben:

D MyVar 10
d MyVarNull 5I 0

if MyVar = *blank;
MyVarNull = -1; // NULL setzen
else;
MyVarNull = 0;
endif;

exec sql update mytable
set MyField = : MyVar : MyVarNull, MyField2 ...
where ...
...;

Zu beachten ist halt, dass für jede NULL-mögliche Spalte ein NULL-Anzeiger benötigt wird.

Ansonsten prüfe mal die Tabelle (DSPFFD) ob das Feld tatsächlich NULL erlaubt (ALLOWNULL).