Community deutschsprachiger SAS-Anwender und -Programmierer

Antworten
Dies ist eine offene Gruppe. Melden Sie sich an und klicken Sie auf die Schaltfläche „Gruppe beitreten“, um Mitglied zu werden und damit zu beginnen, Beiträge in dieser Gruppe zu veröffentlichen.
Highlighted
Contributor
Beiträge: 20
Bearbeiten und Starten von SAS-Programmen in SAS-Katalogen mit EG

Hallo,

 

ich habe heute mal eine allgemeine Frage. Derzeit sind wir damit beschäftigt, unsere Nutzer von lokalen SAS-Einzelplatzanwendungen (SAS EG und SAS Editor) auf SAS-BI-Server umzustellen, in der für die Bearbeitung und das Starten von SAS-Programmen nur noch der EG genutzt werden kann. Dabei hat es sich herausgestellt, dass einige Nutzer bisher sehr intensiv mit dem SAS Editor in der Form gearbeitet haben, dass sie Ihre SAS-Programme in Katalogen organisiert haben. Der Aufruf dieser SAS-Programme sowie deren Bearbeitung ist mit dem EG, nach unseren bisherigen Erkenntnissen, nicht ohne Weiteres oder gar nicht möglich. Vielleicht fehlt uns aber auch nur das entsprechende Wissen ;-)

 

Hat jemand Erfahrungen bei der Verwendung und Bearbeitung von SAS-Programmen, die in SAS-Katalogen organisiert sind, mit dem EG? Oder kennt jemand einen elegannten Weg, um die SAS-Programme aus einem SAS-Katalog in ein SAS-Projekt für den EG zu überführen?

 

Vielen Dank im Voraus und viele Grüße

 

Holger

Esteemed Advisor
Beiträge: 5.956
Betreff: Bearbeiten und Starten von SAS-Programmen in SAS-Katalogen mit EG

Hi!

 

Wir mussten auch solche Programme mit Base SAS aus den Katalogen ziehen und als .sas Files speichern, um sie dem EG (und noch viel wichtiger: dem Versionierungssystem!) zugänglich zu machen.

EG sieht die Kataloge nicht mal.

Hat wahrscheinlich damit zu tun, dass Kataloge immer versionsabhängig sind.

Ich würde also im Vorfeld der Migration alle User anweisen, ihre Programme aus den Katalogen in eine entsprechende hierarchische Verzeichnisstruktur zu transferieren.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Frequent Contributor
Beiträge: 108
Betreff: Bearbeiten und Starten von SAS-Programmen in SAS-Katalogen mit EG

Hallo,

 

eventuell helfen diese beiden englischen Quellen:

 

Add-In für eGuide (aus dem Jahre 2010, daher evtl. nicht mehr funktionstüchtig)

http://blogs.sas.com/content/sasdummy/2010/05/10/viewing-sas-catalogs-from-sas-enterprise-guide/

 

Und hier eine generelle Übersicht zur Arbeit mit Katalogen:

http://www.lexjansen.com/nesug/nesug09/as/AS08.pdf

Vermutlich dürfte der Abschnitt

"Print Contents of Each Source Element in
 Catalog to a PDF (or any other) File."

interessant sein, um die Programme aus den Katalogen zu bekommen.

 

Viele Grüße

Michael

Frequent Contributor
Beiträge: 118
Re: Bearbeiten und Starten von SAS-Programmen in SAS-Katalogen mit EG

Hallo Holger,

also ich würde auch empfehlen die Programme aus dem Katalog in das Dateisystem zu exportieren.

Ich meine PROC CATALOG hat hierfür eine Option mit der man ein Katalogelement in eine Fileref kopieren kann.

 

Zum Thema EG und Kataloge: es gibt ein Addin für den EG mit dem man Kataloge auch im EG anzeigen kann, siehe:

http://blogs.sas.com/content/sasdummy/2010/05/10/viewing-sas-catalogs-from-sas-enterprise-guide/

 

Viele Grüße,

Andreas

Contributor
Beiträge: 21
Betreff: Bearbeiten und Starten von SAS-Programmen in SAS-Katalogen mit EG
[ Bearbeitet ]

Hallo Holger,

 

der EG kann nicht direkt auf die Kataloge zugreifen, der SAS-Server schon. Wenn die Library allokiert ist, reicht folgendes Programm aus, um das als Source-Entry gespeicherte Programm auszuführen:

Filename in Catalog "pgms.test";

%Include in(test.source) / source2;

Das Filenamestatement referenziert den Katalog und mit %Include wir der Source-Entry angegeben, der ausgeführt werden soll.

Programme ändern und wieder als Katalog-Entry speichern geht über den EG erst mal nicht, deshalb bin ich, wie die anderen Kollegen, auch der Meinung dass es vernünftiger ist, die Entries zu exportieren und im Filesystem zu speichern, auch hier ein Beispiel, wie das gehen könnte:

Options mcompilenote = all;

* GP Catalog Entries im Dateisystem speichern *;

%* Cat2File
   exportiert einen Source-Entry in eine Datei
   fref   Fileref auf den Katalog
   entry  Name des Entries [name.source]
   file   Zieldatei ["dir/file.sas"]
*;

%Macro Cat2File(fref,entry,file);
  Data _Null_;
    Infile &fref(&entry);
    File &file;
    Input;
    Put _infile_;
  Run;
%Mend;

%* ExportSources
   steuert den Export fuer einen Katalog
   cat  Name des Kataloges (lib muss allokiert sein)
   dir  Zielverzeichnis in dem die Dateien angelegt werden
*;

%Macro ExportSources(cat,dir);
  %Local fref listEntries i curEntry;
  %Let cat = pgms.test;
  %Let fref = in;
Ods exclude all; Ods Output catalog_random=Work.TestContents; Proc Catalog c=&cat; Contents; Run; Quit; Proc Sql noprint; Select objname Into :listEntries Separated By " " From Work.TestContents
      Where type = "SOURCE"
; Drop Table Work.TestContents; Quit; Filename &fref Catalog "&cat"; %Do i=1 %To %Sysfunc(countw(&listEntries)); %Let curEntry = %Scan(&listEntries,&i); %Cat2File(&fref,&curEntry..source,"&dir./&curEntry..sas"); %End; %Mend; %ExportSources(pgms,f:/temp/test);

Makro %Cat2File exportiert den Code eines Entries in eine Datei, %ExportSources enthält die Steuerung: Der Inhalt des Kataloges wird ausgelesen und die SOURCE-Entries in eine Tabelle gespeichert. Daraus wird eine Liste gebildet und in einer Makrovariable gespeichert. Die anschließende Schleife ruft den Export für jeden Entry auf. Das Zielverzeichnis muss natürlich im Filesystem des SAS-Servers liegen, damit er dorthin schreiben kann.

 

Hoffe das hilft weiter, viele Grüße,

 

Grischa

 

Edit 11.11.2016

Da waren noch zwei Fehler im Programm, Beim Drop hat das TABLE gefehlt und beim Namen der Datei der zweite Punkt in &curEntry..sas Außerdem habe ich noch ein Ods Exclude all; ergänzt, damit die Ausgabe von Proc Contents nicht im Output-Fenster ausgegeben wrid.

 

Contributor
Beiträge: 20
Betreff: Bearbeiten und Starten von SAS-Programmen in SAS-Katalogen mit EG

Hallo,

 

ganz, ganz herzlichen Dank für die sehr hilfreichen Tipps. Ich glaube, mit diesen Informationen können wir jetzt einen Plan für das weitere Vorgehen bei unserer Migration erarbeiten. 

 

Viele Grüße

 

Holger