Das Projekt Jura
Das Ziel des Projekts Jura ist der Aufbau einer verteilten Bibliothek von SAS-Makros im Internet. ‚Verteilt’ bedeutet dabei, dass die Teile der Bibliothek auf unterschiedlichen Servern liegen können, und dass dennoch jeder Server Zugriff auf die gesamte Bibliothek bietet.
Der Zugriff auf die Makro-Bibliothek soll auf zwei Wegen möglich sein:
Der Zugriff aus laufenden SAS-Programmen soll so erfolgen, dass keine Notwendigkeit mehr besteht, Makros explizit aus dem Internet herunterzuladen und zu installieren. Es soll vielmehr ausreichend sein, die zu verwendenden Makros zu benennen; der Zugriff auf die Makro-Bibliothek (genauer: auf denjenigen Server, der die geforderten Makros tatsächlich bereitstellt) soll dann transparent erfolgen.
Es sind also zwei Eigenschaften, die Jura von der Veröffentlichung des Quellcodes von Makros auf einem Internet-Server unterscheiden:

Neben der Schaffung der im folgenden detailiert beschriebenen Infrastruktur ist die Erschließung der Vielzahl bereits existierender Makro-Bibliotheken ein wichtiges Ziel des Projekts Jura.
Änderungshistorie dieses Beitrags:
25.10.2005, S. Frenzel
- Gründliche Überarbeitung entsprechend neuem Abstract
- Anfügen des (gezipten) WARs mit Version 0.51
29.9.2005, S. Frenzel:
- Anfügen eines Abstracts in PDF-Format und eines ZIP-Files mit dem WAR der Version 0.47.
- Das angefügte WAR-Files enthält die aktuelle Version 0.47 incl. des vollständigen Source Codes.
Die zentrale Infrastruktur-Komponente von Jura ist der Jura-Server, durch den die Makros veröffentlicht werden. Jeder Jura-Server ist in der Lage, sich mit allen anderen Servern auszutauschen, sodass jeder Server nicht nur die auf ihm veröffentlichten Makros zur Verfügung stellt, sondern auch die auf allen anderen Servern veröffentlichten Makros. Mit anderen Worten: Jeder Server stellt jedes Makros zur Verfügung unabhängig davon, ob es auf diesem Server selbst oder auf einem anderen Server liegt.
In der Konsequenz ist es gleichgültig, auf welchen Jura Server zugegriffen wird, da alle Server den gleichen Inhalt zur Verfügung stellen.
Technische Implementierung des Jura-Servers
Der Jura-Server ist als Java-Servlet implementiert. Der Zugriff auf den Server aus einem SAS-Programm heraus erfolgt durch ein SAS-Makro, das Makro RESOURCE.
Installation eines Jura-Servers
Der Jura-Server wird als WAR-Datei (WAR = Web Archive) verteilt. Die Installation erfolgt durch Kopieren des WAR-Files in das dafür vorgesehene Verzeichniss des Application Servers (z.B. Apache Tomcat) und Starten des Application Servers. Alternativ kann natürlich der Server-spezifische Dialog zum Deployment von Web-Anwendungen verwendet werden.
Bei jedem Start des Servers oder bei Reinitialisierung des Servers über die Web-Oberfläche synchronisiert der Jura-Server sich mit anderen Servern. Er agiert dabei sowohl aktiv (d.h. er teilt die auf ihm veröffentlichten SAS-Makros anderen Servern mit) als auch passiv (d.h. er antwortet auf Anfragen anderer Server).
Details des Synchronisations-Prozesses können in der Konfigurationsdatei "jura.config" im Unterverzeichnis "/config" der Web-Anwendung festgelegt werden.
Zugriff mit dem Web-Browser
Die Web-Oberfläche des Jura-Servers ist verfügbar über die Adresse http://[Server-Adresse]:[Server-Port]/jura/JuraProxy, wobei [Server-Adresse] und [Server-Port] natürlich installationsspezifisch sind.
Es gibt einen Jura-Server, der von den Initiatoren des Jura-Projekts betrieben wird. Seine Adresse ist
http://www.jura-root.net:8080/jura/JuraProxy.
Die folgenden Screen-Shots zeigen die Web-Oberfläche des Jura-Servers:

Anzeige der Makro-Dokumentation

Anzeige des Source-Codes
Zugriff aus SAS-Programmen
Um aus laufenden SAS-Programmen auf einen Jura-Server zuzugreifen, muß die SAS-Sitzung mit den folgenden Optionen gestartet werden:
Beispiel:
"C:\Programme\sas.com\SAS 9.1\sas.exe" -initstmt '%let JuraURL=http://www.jura-root.net:8080/jura; filename resource url "&JuraURL./resource.sas"; %inc resource;'
Bei erfolgreichem Aufbau der Verbindung zum angegebenen Jura-Server schickt der Server das Makro RESOURCE, das danach zum Zugriff auf den Server verwendet wird, sowie eine Welcome-Meldung; die Meldung wird im Log-Fenster angezeigt.

Die vom Server geschickte Meldung enthält Beispiele für die Verwendung des Resource-Makros.
Einige einfache Beispiele:
* Auflisten aller verfügbaren Makros; resource list *; * Durchsuchen aller Makros nach dem Text „ODBC“; resource search * ODBC; * Importieren und Ausführen des HelloWorld-Makros; resource import org.redscope.samples.*; %rdsHelloWorld;
Jura kann wie oben skizziert dazu verwendet werden einzelne Makro-Bibliotheken, die auf einer großen Zahl von Internet-Servern veröffentlicht werden zu einer umfassenden Makro-Bibliothek zu integrieren und auf Basis des HTTP-Protokolls zugreifbar zu machen.
In einem unternehmensinternen Netz (Intranet) kann Jura dazu verwendet werden, Makro-Bibliotheken, die auf einer großen Zahl von Servern und Plattformen genutzt werden sollen, konsolidiert auf einem zentralen Repository-Server zur Verfügung zu stellen, um dadurch beispielsweise das Problem unterschiedlicher Release-Stände auf verschiedenen Rechern zu lösen.
Die Software, die im Rahmen des Projekts Jura erstellt wird, ist Open Source Software und steht unter der GNU General Public License (GPL), Version 2.
Die GNU General Public License wird veröffentlicht durch die Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA unter der Adresse http://www.opensource.org/licenses/gpl-license.php.
Für Kommentare oder Fragen betreffend Jura wenden Sie sich bitte an:
Kybeidos GmbH
Stephan Frenzel
Moltkestrasse 27
69120 Heidelberg
Germany
stephan.frenzel@kybeidos.de
Die angehängte Version des Resource-Makros behebt zwei Programmfehler und einen Dokumentationsfehler bezüglich des Einsatzes auf MVS. Diese Version von Resource.sas ersetzt die mit Jura Version 0.51 ausgelieferte Version. Spätere Jura-Versionen als 0.51 werden diese Änderungen enthalten.
At the old redscope site there was a project called "HttpBridge - Cross Platform Data Access via Http".
You may wonder, why we put this project under the headline or Jura ... and you may guess, what the reason is: We plan to integrate HttpBridge in Jura.
The vision about this "Merger" is to enable SAS programs to include the request "resource read org.lse.ticker ticker=SUNW&start=01jan2005 out=SUNW2005" and thereby retrieve stock quotes of the shares of SUN Microsystems starting at the 1st of January 2005.
... stay tuned :-)
Wir haben in einem unserer aktuellen Projekte die Anforderung, SAS-Makros, die unter Windows entwickelt werden und auf einem Laufwerk im Windows-Netz liegen, auf MVS zu testen. Bisher haben wir die Programme "klassisch" per 3270 auf MVS übertragen, dort getestet, geändert und dann (hoffentlich!) wieder in die Windows-Umgebung zurückübertragen um sie dort zu versionieren.
Die Nachteile dieses Verfahrens liegen auf der Hand:
Dies ist ein Szenarium, in dem man einen großen Produktivitätsgewinn dadurch erzielen kann, dass man aus der MVS-Umgebung direkt auf Programmbibliotheken der Windows-Umgebung zugreift.
Genau das, nämlich zur Laufzeit eines SAS-Programms andere SAS-Programme oder -Makros von einer anderen Plattform nachzuladen und auszuführen zu können, ist eines der Ziele des Projekts "Jura". Jura ist ein Projekt, das hier auf Redscope beheimatet ist. Auf der Projektseite http://www.redscope.org/jura gibt's detaillierte Informationen und eine Beschreibung der Zielsetzung von Jura. Im folgenden beschränken wir uns darauf, zu skizzieren, wie Jura in dem oben beschriebenen Umfeld eingesetzt werden kann.
Die Lösung, die Jura bietet, sieht wie folgt aus:
Wichtig hierbei ist natürlich, dass die Windows-Umgebung die gleichen Security-Standards erfüllt wie die MVS-Umgebung, auf der die Programme laufen sollen, dass also nicht aus einer unsicheren Windows-Umgebung Programme in eine gesicherte MVS-Umgebung transferiert werden.
Die beschriebene Installation und Konfiguration des Jura-Servers und der Host-Umgebung war in unserem Fall innerhalb von 2 Stunden erledigt - ein Zeitaufwand, der sich absehbar innerhalb weniger Tage amortisiert.
... abschließend ein Screen Shot, der die beschriebene Umgebung und Lösung visualisiert: In dem abgebildeten Beispiel greift die SAS-Session auf MVS mit "resource import org.redscope.*;" per Http auf einen unter Windows laufenden Web-Server zu, der als Antwort alle Programme aus dem Paket "org.redscope" liefert. Die gelieferten Programme - im Beispiel das Makro "rdsHelloWorld" - können dann unter MVS aufgerufen werden.