Home The Company Publications Products Links Tips

Publikationen

Mit NATURAL ins Web ohne Middleware

Von Dieter W. Storr
im Februar 2001

Letzte Aenderung: 27. April 2004

Bevor ich mit einer kanadischen Firma waehrend eines Symposiums in San Francisco ins Gespraech kam, glaubte ich, eine Middleware und ein Web-Server, installiert an einer Unix- oder NT-Box, waere die einzige Moeglichkeit, um von Natural mit Adabas-Daten ins Web zu kommen. Erstaunlicherweise zeigten mir die Entwickler aber einen Weg, mit dem man praktisch ohne Middleware und TP-Monitor ins Web gelangen kann. Wir diskutierten sehr eingehend die Loesung und zuhause in Los Angeles musste ich es natuerlich ausprobieren. Und es funktionierte, was ich natuerlich insgeheim auch erhoffte.

Ausgangspunkt war Natural Version 2.2.8 und Adabas Version 5.2. Es funktioniert auch mit anderen Versionen, da die Loesung versionsunabhaengig ist. Die Frage stellte sich nun mir, wie kann ein Natural-Programm Anfragen vom Web erhalten und Adabas-Daten zurueckschicken. Ein TP-Monitor kam nicht in Frage, da diese Loesung auch ohne ihn funtionieren sollte. Ein Web-Browser (Internet Explorer oder Netscape) musste die Funktion eines TP-Monitors uebernehmen. Das war alles sehr preisguenstig, mit keiner grossen Wartung verbunden und die neueste Software war kostenlos vom Web herunterladbar.

Bekannt war, dass Natural nicht direkt mit einem Web-Browser kommunizieren kann. Zumindest muesste ich auf eine neue Com-plete Version warten oder auf CICS mit einer TCP/IP Schnittstelle umsteigen. So musste eine Schnittstelle geschaffen werden, ein CGI (Common Gateway Interface). Da ich mich in einer Grossrechner-Welt (Mainframe) bewegte, lag nahe, eine REXX-Prozedur einzusetzen und sie via TSO zu starten. In den IBM Redbooks gibt es hierzu einige CGI-Beispiele. Es dauerte allerdings eine Weile bis ich die noetigen Job-Kontroll-Anweisungen fuer OS/390 herausfand. Die Helfer von SAG-L (Internet Listserver) gaben mir eine grosse Unterstuetzung.

Die REXX-Prozedur (CGI) erhaelt eine Anfrage vom Web ueber einen Web-Server. Die kanadische Firma setzte zuerst eine Shareware (WebShare fuer VM) fuer VM/ESA ein, ersetzte sie spaeter aber durch eine kommerzielle Software EnterpriseWeb von Beyond Software, letztlich durch Neon Systems aufgekauft. Fuer meine Loesung am Grossrechner mit dem Betriebssystem OS/390 war gluecklicherweise ein Web-Server vorhanden, WebSphere von IBM. Er war quasi kostenlos mit anderen Produkten gebuendelt seit Jahren installiert.

Der Web-Server aktiviert das CGI (REXX-Prozedur), welches Daten vom Web erhaelt, in eine OS-Datei schreibt, einen Natural Batch-Nukleus startet und ein Natural Programm aufruft. Das Natural Programm liest die Daten ein (Read Work File 1) und uebergibt sie (z.B. Natual Programmname und Startwert) an ein Natural Unterprogramm zur Ausfuehrung weiter, um Adabas-Daten zu lesen. Ein anderes Natural Unterprogramm erstellt HTML-Seiten, fuegt die ADABAS Daten ein und schreibt alles zusammen in eine zweite OS-Datei (Write Work File 2). Hier enden alle Programme und das CGI (REXX-Prozedur) erhaelt wieder die Kontrolle zurueck, um die erstellte zweite OS-Datei zu lesen und die fertigen HTML-Seiten an das Web zurueckzugeben. Was das CGI und die Natural-Programme betrifft war mir alles klar.

Doch nun zurueck zur Kommunikation mit dem Web. Wie wird das CGI vom Web aus aufgerufen und wie gibt das CGI Informationen zurueck an das Web?

In HTML-Code gibt es die Form-Anweisung, die die Adresse eines CGI's angeben und Informationen als einzelne Parameter (GET) oder als String (POST) weiterleiten. Nehmen wir an, die Eingabe im Web sieht die Felder Vorname (first), Nachname (last) und E-Mail (email) vor, dann sieht die HTML-Anweisung fuer die GET-Methode wie folgt aus ( < und > wurden durch @@ ersetzt):

@@form action="../cgi-bin/cgirexx.cmd" method="GET"@@

Und nach dem Absenden wird der folgende Code erzeugt:

/cgi-bin/cgirexx.cmd?first=Dieter&last=Storr&email=dwstorr@aol.com

Mit der parse-Anweisung wird im CGI der Eingabetext analysiert und in die einzelnen Felder zerlegt.

Eingangs habe ich einen Web-Server (WebSphere) erwaehnt, der am Mainframe installiert ist. Er ist das Bindeglied zwischen dem Web-Browser und dem CGI .

Die Loesung laeuft hier als Prototyp in einer Anwendung und soll zeigen, dass mit wenig Aufwand Adabas und Natural mit dem Web verbunden werden kann.