LesezeichenAbonnierenRSS-Feed abonnieren
HPietschmann
Fluorite | Level 6

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

5 ANTWORTEN 5
Kurt_Bremser
Super User

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.

mfab
Quartz | Level 8

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

AndreasMenrath
Pyrite | Level 9

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

GrischaPfister
Fluorite | Level 6

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.

 

HPietschmann
Fluorite | Level 6

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

 

 

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

Diskussionsstatistiken
  • 5 Antworten
  • 1778 Aufrufe
  • 9 Kudos
  • 5 in Unterhaltung