LesezeichenAbonnierenRSS-Feed abonnieren
wmueller
Fluorite | Level 6

Hallo zusammen,

wenn ich in einem Datenschritt einen Tippfehler mache, z.b. BEZEICHER (falsch) statt BEZEICHNER (richtig),

laufe ich in die Gefahr bei Abfragen/Vergleichen auf missing value unabsichtlich zu reagieren.

 

Gibt es eine Option / Systemoption, welche Tippfehler in (Makro-)Variablennamen kategorisch unmöglich macht?

 

 

Beste Grüße

Wolfgang Müller

 

7 ANTWORTEN 7
Kurt_Bremser
Super User

Da SAS nicht deklarativ ist und Variablen dynamisch aus dem Code heraus generiert, ist eine solche Fehlerbedingung unmöglich zu erkennen. Man kann nur durch aufmerksames Studium des Logs (... is unitialized!) Tippfehler aufspüren. Und natürlich die Spalten in den Ausgabebeständen kontrollieren, weil falsch benannte Variablen dort auch auftauchen, wenn man nicht eine taxative keep-Liste verwendet.

wmueller
Fluorite | Level 6

Ist es denn möglich bei "uninitialized" im Log, einen Fehler auszuwerfen?

Bei 8 Mio. Records in 300 Spalten ist das sichten doch etwas schwierig ...

 

Wann verwendet man taxative keep-Listen?

 

Beste Grüße

Wolfgang Müller

 

jakarman
Barite | Level 11

Das abahandling mit fehlers im code gibt es unglaublich vieles met SAS.
http://support.sas.com/documentation/cdl/en/lrcon/68089/HTML/default/viewer.htm#n1nzmsupywf45qn1m6j1...
Die meisten optionen sind wie die altere gewohnheit.  

VARINITCHK=
specifies whether to stop or continue processing a DATA step when a variable is not initialized. You can also specify the type of message that is written to the SAS log.
http://support.sas.com/documentation/cdl/en/lesysoptsref/68023/HTML/default/viewer.htm#n039l39682ccg...

Das ubliche ist "note"  andere das im "error"

Mit Eguide 7.1 gibt es ein speziellen venster mit alle notes warning errors.
---->-- ja karman --<-----
wmueller
Fluorite | Level 6

Vielen Dank ja karmann, dass ist die Lösung!!!

 

options VARINITCHK=ERROR;

 

Beste Grüße

Wolfgang Müller

 

Kurt_Bremser
Super User

Log öffnen, Strg-F tippen und "unitialized" eingeben ist doch kein Problem.

Wer bei der Entwicklung einese SAS-Programms nicht intensiv das Log studiert, kommt sowieso auf keinen grünen Zweig.

Wenn es in weiterer Folge in einem Batchjob auftritt, kann man das ja im Wrapper-Script mit einem grep auf das Logfile abfangen.

 

Ob die 300 Spalten in 1 Satz oder in 8 Millionen sind, ist irrelevant. Sind immer nur 300 Spalten.

Um sich die Fehlersuche zu erleichtern, kann man ja die Spalten eines Bestandes aus SASHELP.VCOLUMN extrahieren und dann wieder mit SAS-Mitteln nach Fast-Doubletten suchen, die auf einen Tippfehler hindeuten.

 

wmueller
Fluorite | Level 6

Herr Bremser, das log ist voll mit Informationen. Davon auch einige verwirrend, oder wie ist der Zusammenhang mit der Zeilennummer zu verstehen? Die Zeile zeigt nicht auf den Code sondern auf irgendetwas anderes ....

 

Wenn ich nach jeder Fehlermeldung in 10 Prozessflüssen, bei jeweils 10 Programmen händisch suchen muss, werde ich auf keinen grünen Zweig mit SAS kommen.

 

Beste Grüße

Wolfgang Müller

 

Kurt_Bremser
Super User

Wenn man entweder die keep= data set option oder das keep statement verwendet, werden nur die aufgeführten Variablen in den Ausgabebestand aufgenommen. Das meinte ich mit taxativ. In so einem Fall kann man falsch getippte Variablen nicht im Bestand sehen.

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

Diskussionsstatistiken
  • 7 Antworten
  • 1709 Aufrufe
  • 1 Kudo
  • 3 in Unterhaltung