ist table leer??

aus einer tabelle (table1) mache ich ein

proc means

und erstelle eine neue tabelle (table2) welche ich danach zum weiterrechnen brauche.

wenn nun aber die table1 leer ist fällt es mir schwer weiter zu rechnen. (keine wert vorhanden)

wie kann ich die abfragen ob table1 leer ist und dem so ist die tabelle mit 0 abfüllen??

gruss

stefan

makro erforderlich

Hierzu braucht man zwei Dinge: eine Funktion, die die Anzahl Datensätze einer SAS-Datei abfragt und die Möglichkeit, Anweisungen in Abhängigkeit von einer Bedingung auszuführen. Zu ersterem gab es den Hinweis auf das Makro von Devenezia, siehe unten, außerdem gibt es noch weitere Möglichkeiten, siehe mein Beispiel. Zu letzterem muss man ein wenig Makrocode schreiben.

Das folgende Beispiel prüft, ob die Datei work.class leer ist (oder nicht existiert) und erzeugt sie in diesem Fall.

%macro runConditional();

%
* ermittle Anzahl Datensätze in work.class;
%local nobs; %let nobs=0;/* falls dataset nicht existiert */
proc sql noprint;
   select nobs into :nobs from sashelp.vtable
   where libname=
'WORK' and memname='CLASS';
run;

%
*wenn die Datei work.class leer ist, so erstelle sie;
%if &nobs=0 %then %do;
   data work.class;
      set sashelp.class;
   run;
%end;

%mend runConditional;

/* den Makro aufrufen */
options mprint;
%runConditional()

proc print data=class;
run;

Macro-Funktion

Hallo,

hierzu gibt es Macro-Funktionen, die abfragen, ob z.B. eine Tabelle Werte enthält, siehe etwa hier:

http://www.devenezia.com/downloads/sas/macros/index.php?m=anyobs

Gruß Roman Kolbe

auch in unserer Makrosammlung

Die Makros von Devenezia sind auch in unserer Makrosammlung unter com.devenezia.* abrufbar.

makro erstellt...

..super funzt..!!

danke leute..!!