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

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

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