Wann kommt das Datum "0001-01-01" denn ?
Wenn du mit UPDDTA versuchst Daten einzugeben, dann schlägt DFU automatisch diesen Wert vor.
Beim Select in einem Programm must du eine Indicator-Variable verwenden. Der Wert NULL ist im Feld selbst nicht darstellbar, sondern wieder *LOVAL:

select date, f2 from file into :mydate :dateflag, :myf2

if dateflag = -1
... NULL vorhanden
endif

In RPGLE kannst du die interne Funktion %NULLIND(mydate) verwenden um den NULL-Inhalt abzufragen bzw. zu setzen.
Beim READ wird das Feld halt immer mit *LOVAL gefüllt.