2016-04-21 22 views
0

Wahrscheinlich eine dumme Frage, aber ich muss etwas übersehen.SAS Datum (numerisch) zu Zeichen wenn fehlt (.)

Ich habe ein Datumsfeld, in dem manchmal das Datum fehlt (.). Ich muss eine Datei für diesen Datensatz erstellen, aber die Anforderungen, damit diese in eine DB2-Umgebung geladen werden können, verlangen, dass sie anstelle des systemeigenen numerischen NULL-Werts von NULL (.) Eine leere Zeichenfolge benötigen.

Dies sollte eine einfache Aufgabe sein, indem man zunächst die Variable zum Umwandeln des Charakters, und mit dem entsprechenden Format:

LAST_ATTEMPT = PUT(ATTMPT1,YYMMDDS10.); 

Wenn ein proc Inhalt auf dem Datensatz ausgeführt wird, es wird bestätigt, dass dies umgesetzt wurde zu einer Zeichenvariablen.

Das Problem ist, dass, wenn ich den Datensatz ansehe, es immer noch die (.) Für die fehlenden Werte hat. Bei dem Versuch, das fehlende Datum (.) In eine leere Zeichenfolge zu konvertieren, löscht es dann jeden Wert für die Variable ...

Was fehlt mir hier?

Antwort

2

Optionen MISSING = '';

Dies PUT leer für fehlenden Wert, wenn Sie Ihre Aufgabe ausführen.

+0

Wird dies erlauben Sie mir, um die Konvertierung zu umgehen, oder muß ich immer noch zuerst als Zeichen ändern, dann die fehlende Option ? – SMW

+0

Ich weiß nicht, dass du es versuchen musst. Ich habe angesprochen, wie LAST_ATTEMPT erstellt wird. –

+0

Got ... alles gut! Vielen Dank! – SMW

0

Ein Weg ist, Options MISSING=' '; zu verwenden, aber das könnte unerwünschte Auswirkungen auf andere Teile Ihres Programms haben.

Ein weiterer sicherer Weg ist das Hinzufügen nur um einen Test zu dem ursprünglichen Programm:

IF ATTMPT1~=. THEN LAST_ATTEMPT = PUT(ATTMPT1,YYMMDDS10.); 
ELSE LAST_ATTEMPT = ""; 
Verwandte Themen