Macros ausführen

Hallo, ich habe eine Anfängerfrage:
wie/wo ruft man z.B. so ein Makro auf?

%MDW04970 (file=tsas);

Genau so ;) Was für ein

Genau so ;)
Was für ein Problem gibt es denn?

Gruß
Simon

Das Macro soll den Inhalts

Das Macro soll den Inhalts der Datei mit Fileref tsas in das Output-Fenster ausgeben :-)
Wenn ich diesen Ausdruck (%MDW04970(file=tsas)) in Editor eingebe, kriege ich folgende Meldung:

%MDW04970;
-
180

FEHLER 180-322: Anweisung ist nicht gültig oder wird nicht richtig verwendet.

Makro wird nicht gefunden

Diese Fehlermeldung besagt, dass das Makro MDW04970 nicht gefunden wird.

Falls das Makro irgendeinem Verzeichnis liegt und durch SAS automatisch von dort geladen werden soll, dann muß ein sg. Autocall-Pfad gesetzt sein.

Beispiel: Die folgenden Zeilen sorgen dafür, dass SAS im Verzeichnis C:\TEMP nach Dateien mit der Endung .sas sucht und versucht, sie als Makros zu laden (Dateiname vor ".sas" = Makro-Name).

filename mymacros 'c:\temp';
options sasautos = mymacros mrecall;

Normalerweise ist der Autocall-Pfad in der Arbeitsumgebung konfiguriert ... ggf. also auch mal die Kollegen fragen, warum die Konfiguration nicht stimmt.

Viel Spaß weiterhin!

Es stand noch folgendes

Es stand noch folgendes dabei:

Die Macros müssen vor der ersten Ausführung in einer Session in das Programmfenster geladen und ausgeführt werden.

ich vertsehe nicht so richtig, was es bedeutet, Macros in das Programmfenster zu laden.

Sollte es dann (wenn das

Sollte es dann (wenn das Makro nicht gefunden wurde) nicht auch die Meldung "WARNING: Apparent invocation of macro XYZ not resolved", bzw. das deutsche Äquivalent dazu, geben?
Oder hast du die uns unterschlagen?

Das heißt du musst den Code, der das Makro erzeugt, öffnen und ausführen.

Simon

nein, es gab nur diese

nein, es gab nur diese Fehlermeldung)
wo finde ich diesen Code?)

Na ja, der Code wird sich

Na ja, der Code wird sich wohl irgendwo in den Weiten der FH Bielefeld verstecken. Da haben wir nun recht wenig Einblick. Er wird vermutlich in einer SAS Programm-Datei (*.sas) versteckt sein, wenn ihr ordentlich organisiert seit, evtl. in der Datei MDW04970.sas, aber das ist reine Spekulation.
Du suchst nach etwas in dem "%macro MDW04970(..." steht.
Da kann man dann nur auf den vorherigen Tipp verweisen: Kollegen fragen.

Gruß
Simon

jetzt habe ich es

jetzt habe ich es verstanden)
vielen Dank Euch allen für Geduld :-)

Kannst du bitte die nähere

Kannst du bitte die nähere Umgebung des Aufrufes mit angeben? Daran lässt sich jetzt so nichts erkennen.

...  RUN;%INCLUDE

.
.
.

RUN;

FILENAME TSAS TEMP;
DATA _NULL_;
LENGTH Satz $255.;
SET HASHRULES
HASHACTIONS end = ende;
BY RULENR;
IF RVARIABLE NE " " THEN DO;
Satz = RVARIABLE !! "=" !! RVALUE !! ";";
LINK Ausgabe;
END;
ELSE DO;
Satz = AVARIABLE !! "=" !! AVALUE !! ";";
LINK Ausgabe;
END;
IF LAST.RULENR THEN DO;
Satz = "OUTPUT;" ;
LINK Ausgabe;
END;
IF ENDE THEN DO;
Satz = " RUN; ";
LINK Ausgabe;
END;
RETURN;
Ausgabe:
FILE TSAS;
PUT Satz;
RETURN;
RUN;

%INCLUDE TSAS;

%MEND Probe;

%Probe;

%MDW04970 (file=tsas);

Und %Probe läuft vorher ohne

Und %Probe läuft vorher ohne Beanstandung durch?
Tut mit mir leid, aber da habe ich keine Ahnung woran das liegt.

ja, %probe wird ausgeführt (

ja, %probe wird ausgeführt (

nun ja, das Macro "probe"

nun ja, das Macro "probe" wird ja auc direkt im Code definiert.

data ...;
...
Ausgabe:
FILE TSAS;
PUT Satz;
RETURN;
RUN;

%INCLUDE TSAS;

%MEND Probe; /* hier ist die Macrodefinition beendet */

%Probe; /* und hier erfolgt der Aufruf */

Wo das andere Macro defniert/gespeichert/ggf. compiliert und geladen wird ist so hier nicht ersichlich.

Gruß
Tim_Taylor