zur Homepage

Willkommen in den 70er Jahren

oder RPG eine moderne Programmiersprache

Und es bewegt sich doch, RPG lebt und wird weiter entwickelt, mit atemberaubender Geschwindigkeit, schneller in jedem Fall, als die RPG Programmierer nachkommen. Die Frage: programmieren Sie mit RPG in ILE RPG wird meist mit einem freudigen JA beantwortet, steigt man jedoch tiefer in die Diskussion ein, wird schnell deutlich, dass damit oft wenig mehr als CVTRPGSRC und Umwandlung aus PDM mit Auswahl 14 gemeint ist. In der Folge wird dann mit neuem Lochkartenformat in gewohnten Pfaden weiter programmiert.

Ganz mutige nehmen dann /free in ihr Repertoire auf, gelobt sei das größte, blauste Wesen für diese mutige Großtat, diesen Meilenstein der Programmierkunst, der nun endlich den Abschied von der Lochkarte in der Programmierung einläutet und dem Software Engineering auch in der RPG Programmierung Bahn bricht. Die ganze Welt ist beherrscht von Java, die ganze Welt? nein, nicht die ganze Welt, da gibt es ja noch die iSeries, das Klein Bonum der EDV mit den wackeren Recken OS/400 und DB2/400, die mit ihrem Zaubertrank RPG wacker der feindlichen Welt von Java trotzen.

Java ist tot, es lebe RPG und das für immer und ewig – und RPG wird es richten, es wird die AS/400 retten und die Programmiersprache der Zukunft sein. Es ist nur noch eine Frage der Zeit, bis Umsteigerkurse auf RPG für Java Programmierer der Renner im Ausbildungsbereich sein werden. Zeit für eine kritische Bestandsaufnahme von ILE RPG und der Welt der real existierenden RPG Programme.

Wo ist ILE RPG einzuordnen

Von den echten Fossilien, die für kaufmännische Programmierung verwendet wurden, ASSEMBLER, COBOL und RPG, haben alle überlebt. Der älteste Vertreter Assembler ist zur reinen Altlast geworden, COBOL hat sich relativ stetig entwickelt und ist vom aktuellen Stand mit RPG vergleichbar. RPG hat nur auf der AS/400 überlebt und dort lange stagniert, wurde eher unwillig in ILE aufgenommen (sonst hätte sich das Thema erledigt).

Mit der Aufnahme in diesen erlauchten Kreis hat RPG einen ungeahnt weiten Schritt in die Moderne vollzogen, gemessen am vorherigen Stand. Zieht man jedoch andere Programmiersprachen als Maßstab heran, wie zum Beispiel das nur unwesentlich jüngere PASCAL, oder das eine Dekade jüngere C, so relativiert sich die Schrittweite deutlich.

Free format RPG, ein Meilenstein?

Die Entwicklungen, die seit ILE noch stattgefunden haben, sehen auf den ersten Blick wesentlich bedeutender aus als sie sind. Das mit großem Getöse propagierte free RPG entpuppt sich bei näherem Hinsehen als halbherzige Kosmetik, in die nur wenige Tage an Aufwand investiert wurden, es sei denn, es handelt sich um eine Art Maut System. Die Lochkarte ist in den halbfreien Sektionen immer noch vorhanden, zumindest die Stelle 7 und der unsägliche rechte Rand für die Kommentare.

Die vorher schon überflüssigen Anweisungen Machs wirklich (EVAL und CALLP) wurden zwar beseitigt, dafür wurden neue überflüssige Anweisungen /free und /end-free erfunden. Jeder Programmier Anfänger hätte das besser bewerkstelligen müssen, schließlich muss ja nur vor dem Compile in den alten Spaltencode einsortiert werden. Es wurde selbst der Aufwand gescheut, die Procedure Interfaces in Free-Format zu ermöglichen (geschätzter Aufwand 3 Tage), von Deklarationen ganz zu schweigen (geschätzter Aufwand 5 Tage).

Embedded SQL muss weiterhin in Lochkarten gestanzt werden (geschätzter Aufwand 2 Tage), wobei der Aufwand embedded SQL erst mal ILE fähig zu machen weit höher liegen dürfte. Hier liegt es gleich mehrfach im Argen, die Verwendung lokaler Variablen wird spätestens dann zum Problem, wenn Namens Kollisionen vorliegen, oder lokale Variablen für SQL Zugriffe als Host Variablen verwendet werden sollen. Deklarationen mit LIKEDS und die Verwendung des Schlüsselwortes QUALIFIED bei Datenstrukturen, führen selbst dann zu Problemen, wenn die betroffenen Variablen nicht für SQL Zugriffe verwendet werden.

Wunschlos glücklich mit RPG, Bescheidenheit ist eine Zier

Vergleicht man das aktuellste RPG mit all seinen Möglichkeiten nüchtern mit PASCAL und C, so mangelt es an einigem wichtigen, dass nicht nur für diese beiden Programmiersprachen nicht wegzudenken ist.

RPG hat keine durchgängige Typprüfung, selbst bei neuen Datentypen hat man diese weitgehend gescheut; so weiß ein RPG Pointer nicht worauf er da eigentlich zeigt, was nicht nur bei Zeichenketten fatale Auswirkungen haben kann, zumal man solche Variablen nicht terminieren oder begrenzen kann und Datenstrukturen intern als ebendiese behandelt werden. Die Semikolons innerhalb von Anweisungen (zur Kennzeichnung des Endes der Lochkarte), sind nicht nur lästig, sondern verhindern auch dass in einem logischen Ausdruck eine Zuweisung geschachtelt werden kann. Wer nur Birnen kennt, vermisst keine Äpfel, aber spätestens beim Apfelwein wird der Hesse dann empfindlich.

Zu den Trauben, die dem echten RPG Fuchs ebenfalls zu sauer sind, gehören selbstredend echte Typdeklarationen, Utilities zur Programmerstellung, wie make oder Ant, die man in C oder Java weit weniger benötigen würde als in ILE RPG. Das Beste an RPG ist, ähnlich wie bei Wolfgang Petry, die Schar der treuen Anhänger und Fans. Ich kenne aus meiner aktiveren Zeit bei Common kein einziges Requirement, dass irgend jemand statisches Binden haben wollte und heute bricht mancher in Jubel aus angesichts von Binding Directories, Binder Language und selbstverwalteten Signaturen von Service Programmen – wie sind wir nur früher ohne so was ausgekommen? und wie kommt man in Java, bei ungleich größerer Mächtigkeit ohne so was aus?

Nebenläufigkeit in Programmen, auf EDV deutsch Multithreading, ging bereits in den 70er Jahren in Pascal und C relativ problemlos, in RPG sucht man noch heute so was vergeblich, was allerdings manchen nicht davon abhält einen wilden Mix von RPG und Java für den kommenden Programmierstil und den aktuellen Stand des Software Engineerings zu halten. An der Stelle der Einbindung von Java Aufrufen in RPG Programme ist zwar ungleich mehr Aufwand getrieben worden als zum Beispiel für Free Format RPG vonnöten war, aber stabile und wartbare Anwendungen sind auf diesem Weg, gerade wegen der mangelnden Threading Fähigkeiten der RPG Runtime selber, nie zu erreichen. Java und C verhalten sich wie Großhirn und Stammhirn, das eine bedingt das andere und baut darauf auf und trotzdem ist Mix von Java und C zu Recht verpönt.

Zusammenfassend kann man sagen. Dass RPG sich mit und seit ILE dynamisch entwickelt hat wie nie und damit, optimistisch formuliert, in etwa am Anfang von Pascal und C angekommen ist, die Schwelle des achten Jahrzehnts des zwanzigsten Jahrhunderts erreicht hat.

Wunsch und Realität

Wie sieht es nun mit dem real existierenden RPGismus aus? Dieser hat sich mit und seit ILE weit weniger dynamisch entwickelt als die Programmiersprache selber, nicht zuletzt deswegen, weil selbst im neuesten RPG fast alles aus dem ältesten RPG noch geht. Hoffnungsvolles Zeichen ist hier, dass der Verlust des Auto Reports ohne Murren und Klagen hingenommen worden ist, nur an den Office Vision Gedenktagen wird zuweilen ein kleines Transparent mitgeführt, selbst Common hat den Protest verschlafen.

Es sagt sich leicht, dass vorhandenes Knowhow die Basis für Neues ist, ein Vergleich von C++ und Java Programmen zeigt aber meist, dass das auch umgekehrt sein kann. Vorhandenes Wissen kann sich hemmend auswirken und ein Neubeginn ist oft nur mit einem Schnitt erreichbar, die Fähigkeit des Vergessens ist die Basis des Lernens und hier liegt auch einer der Gründe für die Schwierigkeiten mit der künstlichen Intelligenz.

Die schmäler werdende Softwarebasis, der Niedergang einiger, selbst renommierter Softwarehäuser im RPG Bereich spiegelt genau diesen Effekt wieder. Die unbegrenzte Rückwärtskompatibilität hat viele davor bewahrt kontinuierlich in ihre Software zu investieren, das Aufwachen erfolgt erst, wenn Änderungen unumgänglich werden und sich die Software dann als unverkäuflich oder wirtschaftlicher Totalschaden entpuppt.

Jumpstart to Java oder RPG forever

Ob oder wie tot RPG ist, das ist die falsche Fragestellung, eine Programmiersprache lebt solange, wie es noch Programme gibt, die darin geschrieben sind und da wird selbst das Siechtum von Assembler noch lange anhalten. Eine völlig andere Frage ist allerdings mit welchen Sprachen und Techniken heute Anwendungen geschrieben werden und das sind auf allen nicht AS/400 Rechnern andere Sprachen als RPG und auf und für AS/400 werden nur noch wenige Anwendungen neu programmiert.

Bei der Beantwortung der Frage wie aktuell RPG Kenntnisse heute sind, muss zuerst einmal unterschieden werden zwischen der Pflege bestehender RPG Anwendungen und der Neuentwicklung von Anwendungen. Für bestehende RPG Anwendungen ist RPG Knowhow unerlässlich und wird dies solange bleiben, wie diese Anwendungen noch in Betrieb sind und das können noch viele Jahre sein. Solche Anwendungen sollten auch im Rahmen der Programmpflege und Änderung konsequent auf ILE umgestellt werden, hierfür gibt es durchaus bessere Tools als CVTRPGSRC. Minimal sollten hier Prototypen konsequent genutzt werden, der Modularisierungsgrad erhöht werden und die Programme durch Bevorzugung lokaler Variablen verschlankt werden. Auch der Einsatz von embedded SQL sollte trotz des miserablen Pre Compilers, Record level access ablösen. Unterbleibt der konsequente Schritt zu ILE, so wird das mit höheren Wartungskosten in der Perspektive abgestraft werden.

Bei Neuentwicklung schlägt das Pendel eindeutig Richtung Java aus, nicht weil es schöner, oder mächtiger, oder schicker ist, was alles drei stimmen mag. Das wichtigste Argument für Java ist hier die Menge an einsetzbaren Komponenten und Frameworks, meist Freeware und Open Source. An nächster Stelle rangiert die Verfügbarkeit an Programmierer Nachwuchs, Java ist die bevorzugte Programmiersprache an Schulen und Universitäten. Will man diese beiden Faktoren nutzen, so bleibt ein radikaler Schnitt nicht erspart. Der Traum vorhandene RPG Programme hier einzubinden, wird sich als Alptraum entpuppen, dessen Facetten man täglich in Newsgroups und Mailinglisten betrachten kann. Mit den prozeduralen Techniken von gestern im Kopf, lassen sich keine Anwendungen mit den Objekt orientierten Werkzeugen von heute entwickeln, von den technischen Problemen des Java, RPG Cocktails ganz zu schweigen.

Wenn ich versuche aus dem Stand auf einen Stuhl zu springen, so muss ich mir Mühe geben; viel höher komme ich auch mit Mühe nicht. Sollte das bei Ihnen ähnlich sein, werden Sie vermutlich mit dem Jumpstart to Java Versuch auch nicht viel weiter kommen als ich gekommen bin. Der Weg von RPG nach Java erfordert zu aller erst vergessen zu lernen, vieles über Bord zu werfen, was man bisher für wichtig hielt, um den Kopf frei zu bekommen für neue Blickwinkel.

Um das mit dem Blickwinkel einmal auszuprobieren: ich werde häufig gefragt, ob der konsequente Umstieg zu ILE RPG eine Vorbereitung für den Wechsel zu Java sein könne? Wechseln Sie mal den Blickwinkel: könnte das Lernen von Java nicht beim konsequenten Umstieg zu ILE RPG hilfreich sein?

zur Homepage