Fehlerbehandlung in SAS

Hallo zusammen,

ein SAS-Programm, das aus mehreren DATA-Steps besteht läuft -sofern man nicht nur bestimmte Teile ausführt- immer bis zum Ende durch. Oft bauen aber die aneindergereihten Steps aufeinander auf, was bei einem Fehler dazu führt, dass auch die nachfolgenden Anweisungen kein sinnvolles Ergebnis liefern.

Gibt es denn eine Option, die SAS sagt: Wenn ein Fehler auftritt, egal an welcher Stelle, dann brich die weitere Verarbeitung des Programms ab ?

Aus VB kenn ich die "On Error" - Anweisung.

In der Hilfe hab ich schon nachgelesen und bin auf die ERRABEND-Option gestossen, aber ich möchte nicht, dass SAS komplett geschlossen wird, es soll lediglich bei Auftreten eines Fehlers die weitere Ausführung angehalten werden.

Abbruch nach Fehler

Hallo,
ein schwieriges Thema.
Wir arbeiten oft mit Batch-Programmen und bei denen setzen wir

options errorcheck=strict errorabend;
Im Batch ist es kein Problem wenn SAS sich beendet, denn die LOG- und LST-Dateien stehen für die Fehler-Analyse zur Verfügung.
Das klappt aber nur wenn SAS einen Fehler erkennt.
Deshalb setzen wir bei Bedarf einen absichtlich falschen Data-Step ab, um SAS zur Erkenntnis "Fehler" zu verhelfen und erzwingen dadurch den Abbruch (der absichtlich fehlerhafte Data-Step ist Teil eines Macros:
%macro abbruch;
  
%if &errcode. NE 0
  
%then %do;
    data _null_;
      set start_zt(keep=err_code);    
/* absichtl. mit Fehler! Es */
    
run;                              /* gibt kein Feld err_code! */
  
%end;
%mend abbruch;

Ansonsten arbeiten wir mit "überspringe Code wenn Fehler", also ungefähr so:

%if &errcode. EQ 0  %then %do;   /* Wenn bisher alles OK, dann ... */
  
Aktion 1
%end;
%if &errcode. EQ 0  %then %do;   /* Wenn bisher alles OK, dann ... */
  
Aktion 2
%end;
Wobei wir natürlich die "Feinheit" auch grober wählen, statt Aktion 1 also Teil 1 (z.B. Aktion 1-7) und statt Aktion 2 dann Teil 2 (z.B. Aktion 8-Ende). Damit kann man super die nach Fehler unnötige Rechen- und Benutzerwartezeit einsparen.
Gruß
Hans Kneilmann, Schäfer Shop GmbH (SSI)