Wie Sie Bildschirm, Drucker- und i5-Dateien verarbeiten, ist Ihnen allen geläufig. Aber wussten Sie schon, dass Sie die gewohnten RPG I/O-Operationen auch dazu benutzen können, um zum Beispiel Daten aus XML-Dateien, von mobilen Geräten und aus Browsern zu verarbeiten? Hier zeigen wir Ihnen, wie Sie das mit RPG Open Access machen können.

In klassischen Anwendungen beziehen Sie Ihre Eingaben aus Bildschirm- oder i5-Dateien, verarbeiten die Daten und erstellen Ausgaben für Bildschirm, Drucker oder i5-Dateien. Im modernen Umfeld reicht das nicht mehr aus. Neben der Verarbeitung von Bildschirm-, Drucker- und i5-Dateien besteht die Notwendigkeit, auch Informationen aus anderen Ressourcen und von anderen Geräten zu verarbeiten, wie zum Beispiel aus Browsern, von mobilen Geräten, aus XML-Dateien, Excel-Tabellen oder Web-Services. RPG Open Access ist eine der Möglichkeiten, dies mit den vorhandenen RPG I/O-Operationen zu bewerkstelligen.

RPG Open Access setzt voraus, dass Sie die IBM i Version 6.1 oder 7.1 installiert haben. Noch bis vor kurzem erforderte RPG Open Access eine separate Lizenz für das Produkt IBM Rational Open Access: RPG Edition (5733-OAR). Seit dem 1. Februar dieses Jahres ist das nicht mehr nötig. IBM hatte zuvor angekündigt, dass diese Funktionen Ihnen in Form von PTFs als Teil des RPG Compilers und damit des Produkts Rational Development Studio für i zur Verfügung gestellt werden.

Einzelheiten zu dieser Ankündigung können Sie im RPG-Cafe nachlesen:

http://tinyurl.com/rpgoa-cafe

Anmerkung: Mit den PTFs können Sie dann sowohl bestehende Programme für Open Access-Dateien ohne Lizenz laufen lassen als auch neue Open Access-Programme ohne Lizenz umwandeln und ausführen.

Das Konzept von RPG Open Access beruht darauf, die bestehenden RPG I/O-Operationen beizubehalten und die Komplexität, die sich aus dem Zugriff auf andere Ressourcen und Geräte ergibt, in einen Handler auszulagern.

Abbildung 1: RPG – Open-Access-Modell

Eine Anwendung, die von Open Access Gebrauch macht, besteht somit aus drei Teilen:

Dem RPG-Programm, in dem Sie für eine Open-Access-Datei die gewohnten RPG-Spezifikationen zur Definition und für die Ein-Ausgabe-Operationen codieren.

Einem Handler-Programm oder einer Handler-Prozedur, die während der Ausführung des RPG-Programms automatisch aufgerufen wird und die Ein-Ausgabe-Operationen übernimmt.

Dem Gerät oder der Datei, mit dem der Handler kommuniziert.

Beachten Sie, dass Open Access nur die Verbindung zwischen dem RPG-Programm und dem Handler übernimmt, der Handler selbst ist nicht Teil von Open Access. Sie können den Handler entweder selber schreiben oder einen bereits vorhandenen erwerben. Profound logic und looksoftware sind zwei Softwarefirmen, die Handler für moderne Benutzerschnittstellen anbieten.

Ein detailliertes Beispiel für einen Handler können Sie sich auf IBMs developerWorks-Webseite ansehen. Dort wird ein Handler beschrieben, der es erlaubt, den Datenbankzugriff mit den RPG I/O-Operationen automatisch auf SQL umzustellen. Der Handler ersetzt den traditionellen i5 OS-Datenbankzugriff. In einem existierenden RPG-Programm brauchen Sie nur eine Zeile pro Datei hinzuzufügen, um diese Änderung zu bewirken.

Hier ist der Link zur developerWorks-Webseite:

http://www.ibm.com/developerworks/ibmi/library/i-roaforsql/

Für Open Access enthält RPG ein neues Schlüsselwort: HANDLER. Sie können es für DISK, PRINTER und WRKSTN angeben. Welchen Gerätetyp Sie als Open Access spezifizieren, hängt davon ab, was der Handler ansprechen soll. Für eine moderne Benutzerschnittstelle zum Beispiel passt WORKSTN am Besten, für die Erstellung einer Excel-Tabelle PRINTER und für einen Web-Service DISK. Das RPG-Programm kann dann alle I/O-Operationen für den gegebenen Typ wie bisher nutzen, also beispielsweise für READ, WRITE, CHAIN, EXFMT etc. Sie müssen allerdings sicherstellen, dass der Handler in der Lage ist, alle verwendeten Operationen auch zu bearbeiten.

Anmerkung: Sie können Funktionen wie %OPEN, %EOF, %Found etc. ebenfalls für Ressourcen verwenden, die Sie als Open Access definiert haben.

Mit dem Schlüsselwort HANDLER geben Sie an, dass Sie ein Programm oder eine Prozedur für die Ein- und Ausgabeoperationen verwenden wollen. Mit dem ersten Parameter identifizieren Sie den Handler. Dafür sind alle üblichen Kombinationen von Bibliothek und Programm-/Prozedur-Namen erlaubt.

Um eine Datei als Open Access zu definieren, benutzen Sie das Schlüsselwort HANDLER in Ihrem F-Spec. Hier zwei Beispiele:

 FDatei1    cf   e             workstn extdesc('BIBL1/DATEIA')
 F                                     handler('BIBL1/SRVPGMA(DateiHDL)')
 F                                     usropn

 FIfsDatei  if   e             disk    extdesc('BIBL1/IFSD') USROPN
 F                                     handler(IfsHDL : ifsDs)

Ein zweiter Parameter zum Schlüsselwort HANDLER ermöglicht es Ihnen, wahlweise zusätzliche Informationen aus dem RPG-Programm an den Handler weiterzugeben. Dafür geben Sie den Namen einer RPG-Variable an. Es kann sich hierbei auch um eine Datenstruktur handeln.

Wenn Sie beispielsweise eine Datei verarbeiten wollen, die im Integrated File System (IFS) gespeichert ist, muss der Handler wissen, wo sich die Datei befindet. Dafür ist der Pfad erforderlich. Im zweiten Parameter können Sie diese Information zur Verfügung stellen.

Wie Sie sehen, erfordert Open Access nur minimale Änderungen an Ihrem RPG-Programm. Die eigentliche Arbeit besteht darin, einen Handler zu schreiben, dessen Komplexität mit den Anforderungen beliebig wachsen kann.