Das Datum ist leider nicht das einzige Problem.
Früher klappte folgender SQL:

select dec(myFeld, 10, 0) from myfile where myFeld <> ''

myFeld enthält entweder Leerzeichen oder eine Zahl.
Heute kann es eben passieren, das "dec()" schon mal durchgeführt wird und der Where-Ausschluss erst danach kommt.
Da hilft auch nicht unbedingt ein "case when myFeld = '' then null else dec(myFeld, 10, 0) end", da ggf. alle Teilausdrücke schon mal ausgewertet werden.
Daher halt den Umkehrschluss:
"dec(case when MyFeld = '' then null else MyFeld end, 10, 0)"

Zu beachten ist, dass es egal sein muss in welcher Reihenfolge der Ausdruck berechnet wird um ohne Fehler weiter zu kommen.
Weiteres Beispiel:

case F2 when 0 then null else F1 / F2 end

Auch hier ist eben nicht garantiert, dass die Division nicht bereits vor dem Case ausgeführt wird.
coalesce(F1 / nullif(F2, 0), 0) garantiert aber das gewünschte Ergebnis, da nicht durch NULL dividiert wird.
Usw. usf.

Übrigens alles Erfahrungen aus meinem BI-Leben wo eben die fehlende Datenqualität nicht zum Absturz eines SQL's führen darf. Gerade bei ODBC liefert die AS/400 dann u.U. Teilergebnisse oder sogar falsche Ergebnisse, da im ODBC alle Felder einen NULL-Anzeiger haben, aber die Differenzierung zwischen tatsächlich NULL (-1) oder TRUNCATE (-2) auf Feldebene nicht mehr getroffen werden kann.
Der ODBC-Treiber wertet nämlich nur "-1" aus als NULL aus.