Verweis auf Makrobibliothek

Guten Tag,

ich habe eine, hoffentlich einfach zu lösende Aufgabe, die mir schon seit längerem Kopfzerbrechen macht.

Ich habe einen neuen Ordner angelegt, in den nun alle Makroprogramme (*.sas) abgespeichert werden sollen. Nun möchte ich in den normalen SAS-Programme gegebenenfalls auf diese Makrobibliothek zugreifen.
(Bemerkungen: Die Makros einzeln über %INCLUDE(name) einzulesen ist mir zu aufwändig! Ich möchte auch vermeiden, eine Art Autoexe.sas zu schreiben, in den ich die einzelnen Makros compiliere.)

Ich verwende aktuell folgende Variante, welche funktioniert und beim erstmaligen durchlaufen auch keine Fehler im Logfenster ausgibt.

PROC DATASETS KILL LIBRARY=work MEMTYPE=all;RUN;

TITLE; FOOTNOTE;

LIBNAME _ALL_ CLEAR;

FILENAME mymacros 'D:\SAS_Macros';
OPTIONS NODATE NOCENTER NONUMBER SASAUTOS = mymacros MAUTOSOURCE ;

Jedoch ab dem zweiten Durchlauf erhalte ich folgende Meldung:

519 FILENAME mymacros 'D:\SAS_Macros';
ERROR: Mindestens eine mit Fileref MYMACROS verknüpfter Datei wird noch verwendet.
ERROR: Fehler in der FILENAME-Anweisung.

Woran liegt das? Beziehungsweise gibt es einen eleganteren Weg um auf die Makrobibliothek zuzugreifen?

Mit besten Grüßen

Chris86

...filename Variante ohne Autoexec

...versuch mal, nach dem Durchlauf das FILENAME zu de-assignen (filename mymacros;)...

Filename "de-Assignen"

Hallo dolic,

dies klappt leider nicht wie gewünscht. Es taucht beim "De-Assignen" die gleiche Fehlermeldung auf, wie in meinen obersten Eintrag.
Aber es ist nach Programmdurchlauf kein Makro mehr aktiv! Ich bin vollkommen ahnungslos, was da schiefläuft...

Denn ich kann aus welchen Grund auch immer den Makro-Katalog nicht löschen. Z.B. ist es aber möglich die Makros per Hand zu löschen, aber auch dann kann ich den Makro-Katalog nicht entfernen. Hat jemand schon mal ein solches Problem mit dieser Verknüpfung gehabt?!?

P.S: Eine Ergänzung noch dazu, die Funktionalität ist vollkommen da, nur dieser ERROR im Log "sieht nicht gut aus".

Hallo Chris, versuchs mal

Hallo Chris,

versuchs mal so:

%include "D:\SAS_Macros\*.sas";

Schöne Grüße

Jan

Makrobib mit SASAUTOS einbinden

Hallo.

Ich binde meine Makros mit Hilfe der Autoexec ein:

filename maclib "C:\Users\dubravko.dolic\SAS\macros\";
/* Macro library */
sasautos=(
"!sasroot\core\sasmacro"
"!sasext0\graph\sasmacro"
"!sasext0\stat\sasmacro"
maclib
)
mautosource
;

Damit das funktioniert, müssen alle Makros in jeweils eigenen Files (*.sas) gespeichert werden. Dabei muss der Dateiname dem Macronamen entsprechen. Funktioniert einwandfrei.
Viele Grüße

D. Dolic

options sasautos

Hallo zusammen,

ich setze in der Regel einfach die option sasautos (ohne filename), also etwa:

options sasautos = ('d:\sas\macro-bibliothek');

Das hat bislang immer einwandfrei funktioniert unter Windows und SAS 8.2 bzw. 9.1.3

Gruß, Roman Kolbe

Hallo Herr Kolbe, das nenn

Hallo Herr Kolbe,

das nenn ich mal einen Zufall. Just in dem Moment ihrer Antwort habe ich eine für mich passende Lösung gefunden, die ihrer sehr nahe kommt!

OPTIONS NODATE NOCENTER NONUMBER SASAUTOS = ('D:\SAS_Macros' sasautos) MAUTOSOURCE ;

Somit kann ich auch bestätigen dass dies und SAS 9.2 läuft.