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-Befehle für die notwendigen Copysterecken
  /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.

Copy-Strecken mit Informationen, die von SQL nicht verwendet werden, sollten mit /INCLUDE eingebunden werden.

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 HCopyRight
H 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:

  1. QTEMP
  2. <ihre bibliothek1 - n>
  3. WOPIX
  4. DIRWEB
  5. 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.