Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

06.03.1992 - 

Eine Mainframe-Prozedursprache im PC-Umfeld

Rexx-Programmierung für den Datenbank-Manager von OS/2

Mainframe-Anwender kennen die IBM-Prozedursprache Rexx. Der Computerkonzern hat die Sprache aber auch in das PS/2-Betriebssystem OS/2 integriert. Christian Eichenauer, Alfred Moos und Karl Rauland haben im Rahmen eines Studienprojektes untersucht, wie sich die Prozedursprache für die Programmierung des SQL-basierten Datenbank-Managers von OS/2 eignet.

Ein derzeit laufendes AD/Cycle-Studienprojekt, das die Fachhochschule Heidelberg mit der IBM Deutschland GmbH durchfuhrt, soll herausfinden, inwieweit eine praxisorientierte Ausbildung im Fach Datenbanken mit der SQL-Implementierung des Datenbank-Managers von OS/2 möglich ist. Als Wirtssprache für die prozedurale Einbettung der SQL-Anweisungen dient dabei die Programmiersprache Rexx (Restructured Extended Executor), die vom Hersteller in das Betriebssystems OS/2 integriert wurde.

PS/2-Systeme unter das und OS/2

Die Fachhochschule Heidelberg vermittelt praxisnahe Studieninhalte der Kerninformatik vorwiegend mit und an IBM-Systemen. Hierzu stehen ein Großrechner IBM 1390, Modell 190, unter MVS/ESA und mehr als 100 PS/2-Systeme zur Verfügung. Die Workstations sind durch zwei Token-Ring-Netze miteinander gekoppelt. Diese stehen wiederum über eine Kommunikationsbrücke mit dem Großrechner in Verbindung. Dadurch ist es möglich, daß jedes PS/2-System sowohl als Arbeitsplatz-Rechner als auch als Terminal des Großrechners eingesetzt werden kann. Die Kleinrechner laufen derzeit je zur Hälfte unter den PC-Betriebssystemen DOS und OS/2.

Im Zuge der Ablösung des bisher eingesetzten Texteditors Roscoe und ISPF/PDF wurde die Sprache Rexx als Prozedursprache ausgewählt. Sie ist als Alternative der Prozedursprache Clist unter TSO auf dem Großrechner verfügbar. Da Rexx von der IBM in den Kreis der SAA-Sprachen aufgenommen wurde, konnte das für den Großrechner in der Fachhochschule aufgebaute Know-how auf die OS/2-betriebenen Kleinrechner portiert werden.

Die Eignung von Rexx für das Programmieren von TSO-Prozeduren und TSO-Anwendungen ist unser Ansicht nach erwiesen. Das gleiche Zertifikat kann man dieser Sprache auch als prozeduralem Formulierungsinstrument im Kleinrechner-Bereich unter OS/2 ausstellen. Mit ihr ist sowohl das Programmieren von umfangreichen OS/2-Kommandoprozeduren als auch das Erstellen kürzerer Programme möglich. Der Umgang mit dieser Sprache hat Ähnlichkeit mit der einfachen Entwicklung von Basic-Programmen. Die Sprache und auch die hiermit verfaßten Programme haben aber eher das Aussehen und die Mächtigkeit von PL/I. Rexx ist die Implementierung einer typfreien, vollständig strukturierten Programmiersprache.

Die in der Sprache vorgesehenen Ablaufkonstrukte Folge und Alternative eignen sich besonders für die prozedurale Formulierung. Damit lassen sich die verschiedenen Varianten der einfachen und mehrfachen Alternative ebenso einfach realisieren wie das Wiederholungskonstrukt. Dieses verfügt sowohl über die geschlossene, zählende als auch über die offenen Wiederholung mit vorausgehender und nachfolgender Bedingungsprüfung. Zum Überspringen eines Restes des Wiederholungskörpers und zum Abbruch einer Wiederholung sind die erforderlichen Sprachkonstrukte implementiert.

Neben den fundamentalen Ablaufkonstrukten beinhaltet der Sprachumfang von Rexx die höheren Ablaufkonstrukte der Prozedur und der Funktion. Die Kommunikation zwischen diesen Blöcken und deren Außenwelt erfolgt streng über den Argument-/Parametermechanismus. Hierfür ist aber nur die Positions-Parametertechnik eingebaut. Die Daten in diesen Blöcken sind prinzipiell nur lokal bekannt, damit keine Seiteneffekte entstehen. Nur durch eine explizite Angabe lassen sie sich auch global bekanntmachen. Prozeduren und Funktionen können sich in Rexx rekursiv aufrufen.

Eine hohe Rechengenauigkeit

Die drei fundamentalen Konstrukte der Informatik, das Element, die Folge und die Wiederholung, sind ebenfalls auf der Datenbeschreibungsseite von Rexx vorhanden. Leider fehlt hier die Alternative als explizites Datenkonstrukt. Die Folge und die Alternative wurden mit Hilfe eines nicht häufig in Programmiersprachen vorkommenden Konstruktionselementes, der sogenannten Stammvariablen, implementiert. Mit ihrer Hilfe können dynamische Bereiche (Array, Feld) und dynamische Strukturen (Records) erzeugt werden. Weiterhin eignet sie sich für die Simulation assoziativer Speicher.

Als datentechnisches Gegenstück zu den rekursiven Prozeduren und Funkionen gibt es als höheres Datenkonstrukt noch den Stapel (Stack), die Schlange (Queue) und natürlich auch die Datei (File). Somit verfügt Rexx über die ganze Palette der für das prozedurale Programmieren erforderlichen Daten. und Ablaufkonstrukte.

Als selbstverständliches Feature setzen Entwickler die Möglichkeit voraus, mit einer modernen Programmiersprache vielfältige arithmetische Anwendungen zu formulieren. Für Rexx spricht, daß darüber hin. aus die Stellenzahl numerischer Objekte beliebig groß sein und vom Programmierer vorgegeben werden kann. Mit dieser Konzeption ist eine beinahe beliebige Rechengenauigkeit zu erreichen.

Von seiner besten Seite zeigt sich Rexx bei der Zeichenkettenverarbeitung. Hier greift der Programmierer auf Sprachmittel zu, die sogar einen erfahrenen PL/I-Kenner aufgrund ihrer Funktionalität und Reichhaltigkeit in Erstaunen versetzen. Auch für die Unterbrechungsbehandlung und Ablaufverfolgung enthält Rexx die erforderlichen Einrichtungen. An Umfang und Wirkung stellen sie ein wohlausgewogenes Optimum dar.

Eine eklatante Schwäche von Rexx soll nicht verschwiegen werden. Wie viele andere moderne Programmiersprachen enthält auch Rexx keine Sprachmittel zur professionellen Ausgabe von Daten. Die im Präsentations-Manager hierzu vorhandenen Dienste sind derzeit noch nicht über eine adäquate Rexx-Schnittstelle ansteuerbar.

Auch die Möglichkeiten der Datenverwaltung mit der Rexxeigenen Datenmanipulations-Sprache gehen nicht über den üblichen Umfang, den PC-orientierte Programmiersprachen bieten, hinaus. Aus dieser Klemme befreit den Entwickler jedoch die Schnittstelle zwischen. Rexx und dem Datenbank-Manager (DBM) von OS/2. Über sie ist es mögliche in der Datenbank-Abfragesprache SQL Daten zu definieren und zu manipulieren. Der hier zulässige Sprachumfang entspricht dem dynamischen SQL des IBM-Datenbanksystems DB2 auf dem Großrechner. In mancher Hinsicht ist es sogar noch mächtiger. Beim Sort-Aufruf wird beispielsweise im SQL des DBM automatisch ein eindeutiger Index auf einer Spalte angelegt, wenn diese als Primärschlüssel definiert ist.

Neben den in allen SQL-Dialekten verfügbaren Sprachmitteln zur Manipulation von Tabellenzeilen (INSERT, UPDATE und DELETE) oder zur Ausgabe von Tabelleninhalten (SELECT und FETCH) gibt es im DBM-SQL wie auch im DB2-SQL besonders erwähnenswerte Sprachmittel zur Definition der Beziehungsintegrität.

Neben der Entitätsintegrität das Datenbanksystem überwacht die Einmaligkeit eines Primärschlüsselwertes - ist die Aufrechterhaltung der Beziehungsintegrität, besser bekannt als referenzielle Integrität, durch das Datenbank-Verwaltungssystem von zentraler Bedeutung. Um sie aufrechtzuerhalten, muß der Datenbank-Manager (DBM) bei der Definition der Verknüpfungsverhältnisse zwischen den Tabellen darauf vorbereitet werden. Schon zu diesem Zeitpunkt ist zu bestimmen, was bei solchen Änderungen in der Datenbank geschehen soll, die den Zusammenhang der miteinander in Beziehung stehenden Daten berühren.

Die Verhaltensvorgaben für den DBM bei einer bevorstehenden Verletzung der Beziehungsintegrität durch die Ausführung der SQL-Befehle UPDATE und INSERT sind derzeit nur in Ansätzen vorhanden. Hier kann lediglich die Abweisung der Veränderungsanforderung erfolgen. Für Eingriffe zur Aufrechterhaltung der Integrität sind unter OS/2-DBM wie auch unter DB2 die drei SQL-Befehle Delete, Update und Insert vorgesehen.

Rexx und SQL: mächtiges Instrumentarium

Die Sprachmittel für die Festlegung der Verhaltensvorschrift bei Integritätsverletzungen aufgrund der Ausführung des SQL-Befehls DELETE, gestatten die Vorgabe von drei Verhaltensweisen bei einer Gefährdung der Beziehungsintegrität. Als erste ist auch hier wieder die Zurückweisung der Löschanforderung durch den DBM zu nennen. Alternativ hierzu kann dem DBM aber auch das sich fortpflanzende Löschen (Cascading delete) vorgegeben werden. Als dritte Löschstrategie ist das nullsetzende Löschen (Nullifying delete) möglich.

Die beiden ergänzenden Elemente zu OS/2, die Wirtssprache Rexx und die Gastsprache SQL, bilden zusammen ein mächtiges Instrumentarium. Es gestattet, selbsterklärende Anweisungen zu schreiben, die leicht zu lesen und damit leicht zu verstehen sind.

Christian Eichenauer ist Student der Informatik an der FHT Mannheim und arbeitet im Rahm n seines zweiten praktischen Studiensemester am AD/Cycle-Projekt der Fachhochschule. Das Projekt wird geleitet von Professor Alfred Moos. Diplominformatker Karl Rauland ist hauptamtlicher Mitarbeiter für das Studienprojekt.