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 von XML-Dateien, mobilen Geräten und Browsern zu verarbeiten? Hier zeigen wir Ihnen, wie Sie das mit RPG Open Access machen können.

In klassischen Anwendungen beziehen Sie Ihre Eingaben vom Bildschirm oder von i5-Dateien, verarbeiten diese Daten und erstellen Ausgaben für Bildschirm-, Drucker- oder i5-Dateien. Im modernen Umfeld reicht das nicht mehr. Neben Bildschirm-, Drucker- und i5-Dateien besteht die Notwendigkeit, auch Informationen von anderen Ressourcen und Geräten zu verarbeiten, wie zum Beispiel von Browsern, mobilen Geräten, XML-Dateien, Excel-Tabellen und 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 IBM i Version 6.1 oder 7.1 installiert haben. 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 hat 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:

1. dem RPG-Programm, in dem Sie für eine Open Access-Datei die gewohnten RPG-Spezifikationen definieren und für die Ein-Ausgabe-Operationen codieren;

2. 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;

3. 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 selbst 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 Webseite developerWorks 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: 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 Bibliotheknamen und Programm-/Prozedurnamen 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 vom RPG-Programm an den Handler weiterzugeben. Dafür geben Sie den Namen einer RPG-Variablen an. Es kann sich hierbei auch um eine Datenstruktur handeln.

Wenn Sie beispielsweise eine Datei verarbeiten wollen, die im Integrierten 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.