Toolmaker Produkt-Dokumentation
Erstellen von RPGWX-Programmen
Inhaltsübersicht
Bitte beachten Sie die folgenden Hinweise, damit Ihre RPGWX-Programme sauber umgewandelt werden können:
Einzubindende Copystrecken
Es gibt zwei Copystrecken, die in jedes Anwendungsprogramme eingebunden werden müssen:
/INCLUDE QCPYLESRC,RX_HSPECS /INCLUDE QPROLESRC,WX_PROTO
Die Copystrecken sind zum Teil noch in Fixed-Form RPG geschrieben. Sie können aber problemlos mit Free Format RPG-Quellen (auch in Full-Free) eingebunden werden.
Die von Toolmaker zur Verfügung gestellten Copy-Strecken können wahlweise mit /COPY oder /INCLUDE in die individuellen Quellen eingebunden werden.
Der Unterschied zwischen beiden Angaben liegt darin wie der SQL-Precompiler die Copy-Strecken behandelt.
- Bei Verwendung von /COPY wird die Copy-Strecke vom SQL-Precompiler aufgelöst,
- Bei Einbindung mit /INCLUDE wird sie vom SQL-Precompiler übergangen.
Dies hat besonders bei verschachtelten Copy-Strecken Konsequenzen, da er SQL Precompiler verschachtelte Copy-Strecken nicht unbedingt verarbeiten kann.
Kompatibilität mit WOPiXX (Vorgängersystem von RPGWX)
In Anwendungsprogrammen, die unter WOPiXX ausgeführt werden waren diese Copystrecken erforderlich:
RPGWX/QCPYLESRC
WX_HSPECS
WX_FLDREF
WX_HCOPYR
WOPIX/QPROLESRC
WX_PROTO
Die Copystrecken existieren für die Kompatiblität weiterhin und können weiterhin verwendet werden.
Es ist empfohlen, neue Quellen an RPGWX anzpassen und bestehende Quellen bei einer Überarbeitung anzupassen.
Referenzierung und Prototypen
Um Probleme mit unterschiedlichen Definitionen zu vermeiden, und um Änderungen (z.B. Feldlänge oder Anzahl Elemente einer Feldgruppe) ohne Anpassungen zu ermöglichen, wird empfohlen alle individuellen Variablen, über die Informationen mit den RPGWX-Funktionen ausgetauscht werden, über die Referenzen zu definieren.
H-Bestimmungen in HX_HSPECS
Optional. Es wird empfohlen, die Copy-Strecke WX_HSPECS
zu verwenden.
- Wird die Copy-Strecke WX_HSPECS verwendet, können die individuellen RPGWX-Programme direkt mit CRTBNDRPG (Auswahl 14 in PDM) kompiliert werden.
- Wird die Copy-Strecke nicht verwendet, muss sichergestellt werden, dass das RPGWX-Programm mit Aktivierungsgruppe *CALLER erstellt wird und das Binderverzeichnis WXBNDDIR im Binderschritt verwendet wird.
Wenn individuelle Anforderungen an H-Bestimmungen bestehen, dann beachten Sie bitte den Abschnitt Individuelle Anpassung der H-Bestimmungen.
D-Bestimmungen: Copystrecke WX_PROTO
Alle Prototypen (incl. Referenz-Datenstrukturen) für die RPGWX-Prozeduren sind in der Copy-Strecke WOPIX/QPROLESRC(WX_PROTO)
zusammengefasst. Um sinnvoll RPGWX-Funktionen nutzen zu können muss diese Copy-Strecke verwendet werden.
Weitere Informationen zu dieser Copystrecke finden Sie im Abschnitt Deklarationen in der Copystrecke WX_PROTO.
D-Bestimmungen: Copystrecke WX_FLDREF
In dieser Copystrecke sind alle Datenstrukturen und Felder hinterlegt.Hierzu gehören die im Abschnitt Referenz-Datenstrukturen für lange Text-Felder beschriebenen Referenz-Variablen.
Die Referenz-Felder und –Datenstrukturen sind bis einschließlich Release V5R4 mit dem Schlüsselwort BASED definiert, ab Release 6.1 mit Schlüssel-Wort TEMPLATE, d.h. die Felder- und Datenstrukturen dürfen/können nur zur Referenzierung verwendet werden und dürfen nicht direkt angesprochen werden.
Copyright: Copystrecke WX_HCOPYR
In der Copy-Strecke WX_HCOPYR in Datei QCPYLESRC in Bibliothek WOPIX ist das Copyright hinterlegt.
Diese Copy-Strecke ist in der Copy-Strecke WX_HSPECS integriert.
In der ausgelieferten Copy-Strecke sind aktuell die Toolmaker-Daten hinterlegt. Für die eigenen Programme können die Daten vom Programmierer überschieben werden. Dabei sollte jedoch berücksichtigt werden, dass bei einem Upgrade die Copy-Strecke ausgetauscht wird und damit die individuell geänderten Daten verloren gehen.
/IF NOT DEFINED(HCopyRight)
/DEFINE HCopyRight
H COPYRIGHT('(C) Toolmaker Advanced Efficiency (www.toolmaker.de)')
/ENDIF
Source Code 5: Copy-Strecke WX_HCOPYR
Anstatt die Daten in der Copy-Strecke zu ändern, kann das Copyright über eine Compiler-Direktive deaktiviert und durch eigene Angaben in den jeweiligen Programmen ersetzt werden.
Im folgenden Beispiel werden die Copyright-Informationen im individuellen RPGWX-Programm deaktiviert und durch die eigenen Daten ersetzt.
/Define HCopyRightH CopyRight('MyCompany, Wald-und-Wiesenweg 17, 12345 MeineStadt')
Source Code 6: Austausch von Copyright Informationen
Beispiele für das Einbinden der relevanten Copystrecken
FixedForm RPG
************************************************************************
* H - H E A D E R S P E C I F I C A T I O N S
************************************************************************
* Copy-Strecke - Optional
H/INCLUDE QCPYLESRC,WX_HSPECS
***********************************************************************
* F - F I L E S P E C I F I C A T I O N S
************************************************************************
F**** Globale Datei-Definitionen für Native I/O
************************************************************************
* D – D E F I N I T I O N S P E C I F I C A T I O N S
************************************************************************
* PROTOTYPING
*---------------------------
* Folgende Copy-Strecke abh. vom Release für embedded SQL erforderlich
D/COPY QCPYLESRC,D_FLDREF
* Copy-Strecke - Erforderlich
D/INCLUDE QPROLESRC,WX_PROTO
*
* PROCEDURE INTERFACE
*---------------------------
**** Keine Parameter für RPGWX-Programme
* GOBALE FELD-DEFINITONEN
*---------------------------
D**** Globale Variablen und Datenstruktur-Definitionen
************************************************************************
* M A I N P R O C E D U R E
************************************************************************
C**** Globale C-Bestimmungen – Hauptprogramm
C**** inklusive Subroutines (sofern erforderlich)
************************************************************************
* I N T E R N A L P R O C E D U R E S
************************************************************************
**** Interne Prozeduren
Copy-Strecken und Grob-Aufbau von RPGWX-Programmen
FreeForm RPG
**FREE
/COPY QCPYLESRC,WX_HSPECS
/COPY QCPYLESRC,WX_FLDREF
dcl-f ...
/COPY QPROLESRC,WX_PROTO
dcl-s ...
Referenz-Datenstrukturen für lange Text-Felder
Da physische (Feld-Referenz-)Dateien nur bis zu einer maximalen Satz-Länge von 32740 Byte definiert werden können, wurden für längere Text-Felder separate Referenz-Datenstrukturen angelegt.
Die folgenden Referenz-Datenstrukturen wurden definiert. Diese Definitionen sind in der Copystrecke WOPIX/QCPYLESRC(WX_FLDREF)
hinterlegt.
Referenz-Datenstruktur FLDREFLA – Lange alphanumerische Referenz-Text-Felder
In der Referenz-Datenstruktur wurden alphanumerische Referenz-Text-Felder mit fixer und variabler Länge hinterlegt.
Die Feldlänge wurde auf 16350 Bytes/Zeichen beschränkt, da bei Verarbeitung mit (embedded) SQL die maximale Länge eines Double-Byte-Strings auf 16383 Zeichen beschränkt ist und ein problemloser Austausch (ohne Abschneiden) zwischen Single- und Double-Byte-Texten erfolgen soll.
/IF NOT DEFINED(FldRefLA)
/DEFINE FldRefLA
D FldRefLA DS Qualified based(DummyPtr)
D FixLen 16350A
D VarLen 16350A Varying
/ENDIF
Referenz-Datenstruktur FldRefLA
Im folgenden Beispiel wird ein Text-Feld basierend auf dem Datenstruktur-Unterfeld VARLEN in der Datenstruktur FLDREFLA definiert
D MyText S Like(FldRefLA.VarLen)
/Free
MyText = 'Dies ist eine Nachricht';
/End-Free
Definition und Verwendung von langen alphanumerischen Texten
Referenz-Datenstruktur FLDREFMA – mittlere alphanumerische Referenz-Text-Felder
In der Referenz-Datenstruktur wurden alphanumerische Referenz-Text-Felder mit fixer und variabler Länge hinterlegt.
Die Feldlänge wurde auf 4096 Zeichen festgelegt, um eine Zwischenstufe zwischen den langen (Referenz-)Texten (16350 Zeichen) und den kurzen (Referenz-)Texten (256 Zeichen) zu schaffen.
/IF NOT DEFINED(FldRefMA)
/DEFINE FldRefMA
D FldRefMA DS Qualified based(DummyPtr)
D FixLen 4096A
D VarLen 4096A Varying
/ENDIF
Referenz-Datenstruktur FLDREFMA
Im folgenden Beispiel wird ein Text-Feld basierend auf dem Datenstruktur-Unterfeld VARLEN in der Datenstruktur FLDREFMA definiert
D MyText S Like(FldRefMA.VarLen)
/Free
MyText = 'Dies ist eine Nachricht';
/End-Free
Definition und Verwendung von mittleren alphanumerischen Texten
Referenz-Datenstruktur FLDREFLU – lange Unicode Referenz-Text-Felder
In der Datenstruktur FLDREFLU werden Unicode-Referenz-Textfelder mit fixer und variabler Länge hinterlegt.
Die Länge der Datenstruktur-Unterfelder entspricht der Länge der Datenstruktur-Unterfelder in der Referenz-Datenstruktur FLDREFLA.
/IF NOT DEFINED(FldRefLU)
/DEFINE FldRefLU
D FldRefLU DS Qualified based(DummyPtr)
D FixLen 16350C
D VarLen 16350C Varying
/ENDIF
Referenz-Datenstruktur FLDREFLU
Im folgenden Beispiel wird ein Text-Feld basierend auf dem Datenstruktur-Unterfeld VARLEN in der Datenstruktur FLDREFLU definiert und verwendet.
D MyText S Like(FldRefLU.VarLen)
/Free
MyText = %UCS2('Dies ist eine Nachricht');
/End-Free
Definition und Verwendung von langen Unicode-Texten
Referenz-Datenstruktur FLDREFMU – mittlere Unicode Referenz-Text-Felder
In der Datenstruktur FLDREFMU werden Unicode-Referenz-Textfelder mit fixer und variabler Länge hinterlegt.
Die Länge der Datenstruktur-Unterfelder entspricht der Länge der Datenstruktur-Unterfelder in der Referenz-Datenstruktur FLDREFMA.
/IF NOT DEFINED(FldRefMU)
/DEFINE FldRefMU
D FldRefMU DS Qualified based(DummyPtr)
D FixLen 4096C
D VarLen 4096C Varying
/ENDIF
Referenz-Datenstruktur FLDREFMU
Im folgenden Beispiel wird ein Text-Feld basierend auf dem Datenstruktur-Unterfeld VARLEN in der Datenstruktur FLDREFMU definiert und verwendet.
D MyText S Like(FldRefMU.VarLen)
/Free
MyText = %UCS2('Dies ist eine Nachricht');
/End-Free
Definition und Verwendung von mittleren Unicode-Texten
Bibliotheksliste
Zur Umwandlung müssen die Bibliotheken WOPIX und DIRWEB in der Bibliotheksliste vorhanden sein. Wir empfehlen die folgende Reihenfolge:
- QTEMP
- <ihre bibliothek1 - n>
- WOPIX
- DIRWEB
- QGPL
Umwandlung
RPGWX-Programme können direkt mit dem Befehl CRTBNDRPG
(bzw. CRTSQLPGMI
) umgewandelt werden, sofern nur ILE-Prozeduren von RPGWX oder Directweb aufgerufen werden.
Sofern aufgrund der individuellen Programmierung eine zweistufige Kompilierung erforderlich sein sollte (z.B. wenn mehrere Module gebunden werden sollen), so muss der Programmierer dafür sorgen, dass im Binderschritt (CRTPGM) die Aktivierungsgruppe *CALLER und das Binderverzeichnis WXBNDDIR angegeben werden.