Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Inhaltsübersicht

Table of Contents
maxLevel3

Bibliotheken

Für die WOPIX-Entwicklung wurden zunächst die folgenden Bibliotheken angelegt.

  • WOPIXObjekt-Bibliothek
  • WOPIXSRCQuellen-Bibliothek

In der Quellen-Bibliothek WOPIXSRC befindet sich der Source Code für alle WOPiXX-Programme und Service-Programme, sowie die DDS-Datei-Beschreibungen und die SQL-Skripte zur Erstellung von Datenbankenobjekten (Tabellen, Views, Indices, Sequences, etc.).
Die Quellenbibliothek WOPIXSRC wird nicht ausgeliefert.
Alle zur Erstellung von WOPiXX-Programmen benötigten Quellen, d.h. Prototypen, Referenz-Felder und Referenz-Datenstrukturen sind in der Bibliothek WOPIX hinterlegt und werden somit ausgeliefert.
Da WOPiXX auf Directweb basiert wird auch die Bibliothek DIRWEB ausgeliefert. In dieser Bibliothek befinden sich alle zur Laufzeit benötigten Programm- und Service-Programm-Objekte, sowie Prototypen und Referenz-Felder und Referenz-Datenstrukturen, die zur Erstellung von Directweb und/oder WOPiXX-Programmen erforderlich sind.
Für die Umwandlung von WOPiXX-Programmen sollten die beiden Objekt-Bibliotheken in der folgenden Reihenfolge in der Bibliotheksliste hinterlegt sein:

  • QTEMP
  • WOPIX
  • DIRWEB

Die Bibliothekslisten, die zur Laufzeit verwendet werden, werden in Directweb gesetzt. Wartungsprogramme über die die Bibliothekslisten vordefiniert und zugeordnet werden können, werden zur Verfügung gestellt.
Werden die Bibliotheken WOPIX und DIRWEB nicht in der Bibliotheksliste für die individuellen WOPiXX-Programme hinterlegt, werden sie zur Laufzeit (der WOPiXX-Programme) automatisch in die Bibliotheksliste aufgenommen

...

Alle WOPiXX- und Directweb-Prozeduren sind in Service-Programmen hinterlegt.
Um die Auflistung der Service-Programme beim Erstellen der individuellen WOPiXX-Programme zu vermeiden, wurden die Service-Programme in Binder-Verzeichnissen zusammengefasst.
Alle Service-Programme, in denen WOPiXX-Prozeduren enthalten sind, sind in Binderverzeichnis WXBNDDIR in Bibliothek WOPIX hinterlegt. Die Service-Programme mit den Dirweb-Prozeduren sind in Binderverzeichnis DWBNDDIR in Bibliothek DIRWEB hinterlegt.
Die Binder-Verzeichnisse müssen beim Erstellen der individuellen WOPiXX-Programme angegeben werden.
Toolmaker stellt die Copy-Strecke WX_HSPECS (1.4.3 Copy-Strecke WX_HSPECS – H-Bestimmungen) in Datei QCPYLESRC in Bibliothek WOPIX zur Verfügung. Wird diese Copy-Strecke in die individuellen WOPiXX-Programme integriert, werden die Binder-Verzeichnisse beim Erstellen der Programme mit Option 14 in PDM bzw. dem CL-Befehl CRTBNDRPG (CRPG-Binderprogramm erstellen) automatisch integriert.
* Binding Directories
/IF NOT DEFINED(HBndDir)
H BndDir('WXBNDDIR': 'DWBNDDIR': 'QC2LE')
/ENDIF
Source Code 1: H-Bestimmungen – Binderverzeichnisse – Auszug aus Copy-Strecke WX_HSPECS

...

Da es sich sowohl bei den WOPiXX- als auch bei den Dirweb-Prozeduren um echte ILE Prozeduren handelt, können die individuellen WOPiXX-Programme nicht in der Default-Aktivierungsgruppe (= Default-Wert in Befehl CRTBNDPRG) erstellt werden, d.h. die Option DFTACTGRP=*NO ist nicht zulässig.
Da in dem steuernden Dirweb-Programm intensiv mit Pointern gearbeitet wird und Pointer bzw. die zugeordneten Speicherbereiche nicht in unterschiedlichen Aktivierungsgruppen verwaltet werden können, müssen die individuellen WOPiXX-Programme in der gleichen Aktivierungsgruppe wie das steuernde Dirweb-Programm ausgeführt werden, d.h. die Option ACTGRP = '*CALLER' muss im Compile-Befehl oder den H-Bestimmungen angegeben werden.
Bei Einbindung der Copy-Strecke WX_HSPECS (1.4.3 Copy-Strecke WX_HSPECS – H-Bestimmungen), wird beim Erstellen der individuellen WOPiXX-Programme mit Option 14 im PDM bzw. dem CL-Befehl CRTBNDRPG die Aktivierungsgruppe auf *CALLER gesetzt.
* Activation Group
/IF NOT DEFINED(HActGrp)
/DEFINE HActGrp
/IF Defined (*CRTBNDRPG)
H DftActGrp(*No) ActGrp('QILE')
/ENDIF
/ENDIF
Source Code 2: H-Bestimmungen – Aktivierungsgruppe – Auszug aus Copy-Strecke WX_HSPECS

...

Für die Entwicklung von Web-Anwendungen mit WOPIXX werden die folgenden Copy-Strecken zur Verfügung gestellt.

  • WX_HSPECSH-Bestimmungen- Alle wichtigen Schlüssel-Worte
  • WX_HCOPYRH-Bestimmung- Schlüsselwort Copyright
  • WX_FLDREFD-Bestimmungen – Referenz-Felder und -Datenstrukturen
  • WX_PROTOD-Bestimmungen – Alle WOPiXX-Prototypen

Alle Copy-Strecken und Prototypen, die in den Bibliotheken DIRWEB und WOPIX ausgeliefert werden, können vom Programmierer zur Definition von Referenz-Feldern oder Datenstrukturen bzw. zum Aufruf von Prozeduren verwendet werden.
Anmerkung:Die in den Bibliotheken WOPIX und DIRWEB zur Verfügung gestellten Copy-Strecken können vom Programmierer in die Programme eingebunden werden.
Der Source Code in den Copy-Strecken sollte jedoch vom Programmierer nicht verändert werden. Toolmaker übernimmt keine Verantwortung für Fehler, die durch Manipulation der zur Verfügung gestellten Quellen auftreten könnten.

...

Diese Copy-Strecken werden jeweils bei einem Upgrade von WOPiXX ausgetauscht.
Referenz-Felder und –Datenstrukturen, die in den Copy-Strecken hinterlegt sind werden von Toolmaker nur in Ausnahmefällen geändert.
Alle Parameter-Felder, die in Prototypen definiert sind, basieren auf diesen Referenz-Definitionen.
Vorhandene Prozeduren bzw. deren Prototypen werden von Toolmaker allenfalls dahingehend erweitert, dass optionale Parameter ans Ende der Parameter-Liste hinzugefügt werden.
Anmerkung:Nach einem Upgrade sollten die individuellen WOPiXX-Programme erneut kompiliert werden, um sicherzustellen, dass die Parameter- und Variablen-Definitionen übereinstimmen.
Um Probleme mit abweichenden Feld-Definitionen zu vermeiden, sollten Variablen und Parameter-Felder, die an WOPiXX-Prozeduren übergeben werden mit Schlüssel-Wort LIKE oder LIKEDS basierend auf den entsprechenden Referenz-Felder bzw. –Datenstrukturen definiert 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, während sie bei Einbindung mit /INCLUDE übergangen wird. Dies hat besonders bei verschachtelten Copy-Strecken Konsequenzen, da er SQL Precompiler verschachtelte Copy-Strecken nicht unbedingt verarbeiten kann.
Anmerkung: Copy-Strecken mit Informationen, die von SQL nicht verwendet werden mit /INCLUDE eingebunden werden.

...

Die Copy-Strecke WX_HSPECS in der Quellen-Datei QCPYLESRC in der Bibliothek WOPIXX enthält die H-Bestimmungen, die von Toolmaker zur Verfügung gestellt werden.
Die Copy-Strecke WX_HSPECS bzw. die integrierte Copy-Strecke H_SPECS (in Quellen-Datei QCPYLESRC in Bibliothek DIRWEB) enthält die folgenden Schlüssel-Worte:
* Binding Directory
/IF NOT DEFINED(HBndDir)
/Define HBndDir
H BndDir('WXBNDDIR': 'DWBNDDIR': 'QC2LE')
/ENDIF
* Copyright
/INCLUDE QCPYLESRC,HCopyRight
* Activation Group
/IF NOT DEFINED(HActGrp)
/DEFINE HActGrp
/IF Defined (*CRTBNDRPG)
H DftActGrp(*No) ActGrp('QILE')
/ENDIF
/ENDIF
/IF NOT DEFINED(HDebug)
/DEFINE HDebug
H Debug
/ENDIF
* Edit Numeric Fields
/IF NOT DEFINED(HDecEdit)
/DEFINE HDecEdit
H DECEDIT('0,')
/ENDIF
* Edit Date/Time Values
/IF NOT DEFINED(HDateEdit)
/DEFINE HDateEdit
H DATEDIT(*DMY.)
/ENDIF
* Instructions for Compile and Source Debugging
/IF NOT DEFINED(HOption)
/DEFINE HOption
/If Defined (*V6R1M0)
H Option(*NoDebugIO: *ShowCpy: *Ext: *SRCSTMT: *NoUnref)
/Else
H Option(*NoDebugIO: *ShowCpy: *Ext: *SRCSTMT)
/EndIf
/EndIf
* Work with NULL Values
/IF NOT DEFINED(HAlwNull)
/Define HAlwNull
H AlwNull(*UsrCtl)
/ENDIF
* Integer Fields defined within files/tables will not be converted into packed
/IF NOT DEFINED(HExtBinInt)
/Define HExtBinInt
H ExtBinInt(*YES)
/ENDIF
* CCSID From/To convert UCS2 and for calling java methods
/IF NOT DEFINED(HCCSID)
/Define HCCSID
H CCSID(*CHAR: *JOBRUN)
/ENDIF
* Interim results will never have less decimal positions as the final result
* --> Reduces the risc of problems caused by rounding interim results
/If Not Defined (HExprOpts)
/Define HExprOpts
H ExprOpts(*ResDecPos)
/EndIf
* RPG without multithreading
/If Defined (*V6R1M0)
/If Not Defined (HThread)
/Define HThread
H Thread(*SERIALIZE)
/EndIf
/EndIf
Source Code 3: Copy-Strecke WX_HSPECS - H-Bestimmungen
Bei Einbindung der Copy-Strecke WX_HSPECS können individuelle WOPiXX-Programme direkt mit Befehl CRTBNDRPG (Option 14 in PDM) umgewandelt werden, ohne dass die Default-Einstellungen (insbesondere Aktivierungsgruppe und Binderverzeichnisse) manuell angepasst werden müssen.
Die Verwendung der Copy-Strecke WX_HSPECS ist weder zwingend erforderlich, noch müssen alle Optionen mit den angegebenen Ausprägungen verwendet werden. Die Aktivierungsgruppe muss jedoch auf *CALLER gesetzt werden und das Binderverzeichnis WXBNDDIR im Binderschritt verwendet werden.
Alle Schlüssel-Worte in der Copy-Strecke WX_HSPECS sind durch Compiler-Direktiven bedingt und können deshalb beliebig deaktiviert und ersetzt werden.

...

Alle Schlüssel-Worte in der Copy-Strecke WX_HSPECS sind durch Compiler-Direktiven bedingt und können beliebig aktiviert oder deaktiviert werden.
Im folgenden Beispiel wird die Option BNDDIR um das individuelle Binderverzeichnis MYBNDDIR erweitert. Anschließend wird die Copy-Strecke WX_HSPECS eingebunden. Durch das Setzen der Compiler-Direktive /Define HBNDDIR werden die in der Copy-Strecke WX_HSPECS angegebenen Binder-Verzeichnis-Einträge übergangen.
/Define HBndDir
H BndDir('WXBNDDIR': 'DWBNDDIR': 'QC2LE', 'MYBNDDIR')
/INCLUDE WX_HSPECS
Source Code 4: Deaktivieren / Ändern Aktivierungsgruppe in Copy-Strecke
Die Verwendung der Copy-Strecke WX_HSPECS ist nicht zwingend erforderlich, d.h. der Anwender kann nicht nur einzelne Optionen ändern, sondern die kompletten H-Bestimmungen austauschen.

...

Wird die Copy-Strecke WX_HSPECS verwendet, können die individuellen WOPiXX-Programme direkt mit CRTBNDRPG (Auswahl 14 in PDM) kompiliert werden.
Bei der Verwendung von individuellen H-Bestimmungen muss folgendes beachtet werden:

Umwandlung mit CRTBNDRPG (RPG-Binderprogramm erstellen)

      • Da aus WOPiXX-Programmen ILE-Prozeduren aufgerufen werden, dürfen die Programme nicht in der Default-Aktivierungsgruppe ausgeführt werden.

Aus diesem Grund muss die Option DFTACTGRP (Standardaktivierungsgruppe) in dem Compile-Befehl CRTBNDRPG auf *NO gestellt werden.

      • Individuelle WOPiXX-Programme müssen in der gleichen Aktivierungsgruppe wie das steuernde Dirweb-Programm laufen.

Deshalb muss die Option ACTGRP (Aktivierungsgruppe) im Compile-Befehl mit *CALLER angegeben werden.

      • Die Service-Programme, in denen die WOPiXX-Funktionen hinterlegt sind, sind in Binderverzeichnis WXBNDDIR hinterlegt.

Die Service-Programme mit den Dirweb-Funktionen sind in Binderverzeichnis DWBNDDIR hinterlegt.
Aus diesem Grund muss bei Kompilierung mit CRTBNDRPG zumindest das Binderverzeichnis WXBNDDIR in der Option BNDDIR (Binderverzeichnis) angegeben werden.
Falls zusätzlich auch Directweb-Prozeduren in den individuellen CGI-Programmen verwendet werden sollen, muss auch das Binderverzeichnis DWBNDDIR in der Option BNDDIR angegeben werden.
Anstatt den Compile-Befehl anzupassen, können die notwendigen Informationen auch in den H-Bestimmungen hinterlegt werden. Die Kompilierung kann anschließend über CRTBNDRPG ohne Anpassung erfolgen.
Bei Programmen, die embedded SQL beinhalten erfolgt die Kompilierung über den Befehl CRTSQLRPGI (SQL ILE RPG-Objekt erstellen). Dieser Befehl hat keine Optionen um die Aktivierungsgruppe oder Binderverzeichnisse vorzugeben. Deshalb müssen bei Programmen mit embedded SQL die benötigten Informationen in den H-Bestimmungen hinterlegt werden.

H-Bestimmungen

      • Das Schlüssel-Wort DFTACTGRP in den H-Bestimmungen überschreibt zur Compile-Zeit den Eintrag in Option DFTACTGRP im Compile-Befehl CRTBNDRPG.

Werden H-Bestimmungen verwendet, sollte DFTACTGRP(*NO) angegeben werden.

      • Das Schlüssel-Wort ACTGRP in den H-Bestimmungen überschreibt zur Compile-Zeit den Eintrag in Option ACTGRP im Compile-Befehl CRTBNDRPG.

Werden H-Bestimmungen verwendet sollte ACTGRP(*CALLER) angegeben werden.

      • Werden im Schlüssel-Wort BNDDIR in den H-Bestimmungen Binderverzeichnisse angegeben, wird die Option im BNDDIR im Compile-Command nicht überschrieben, sondern die in den H-Bestimmungen hinterlegten Binderverzeichnisse werden zusätzlich zu den im Compile-Befehl hinterlegten Binderverzeichnisse verwendet.

...

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 WOPiXX-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

...

In der Copy-Strecke WX_FLDREF in Datei QCPYLESRC in Bibliothek WOPIX bzw. in der integrierten Copy-Strecke D_FLDREF in Datei QCPYLESRC in Bibliothek DIRWEB sind alle Referenz-Felder und Referenz-Datenstrukturen, die zur Definition von Variablen und Parameter-Feldern in den WOPiXX-Prozeduren verwendet wurden hinterlegt.
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.
Die folgenden Referenz-Datenstrukturen sind in der Copy-Strecke D_FLDREF und damit auch in der Copy-Strecke WX_FLDREF integriert.

  • FLDREF Qualifizierte Externe Datenstruktur auf Feld-Referenz-Datei DWFLDREF
  • FLDREFLAQualifizierte Referenz-Datenstruktur für lange alphanumerische Variablen (RPG-Datentyp A)
  • FLDREFMAQualifizierte Referenz-Datenstruktur für (mittlere) alphanumerische Variablen (RPG-Datentyp A)
  • FLDREFLUQualifizierte Referenz-Datenstruktur für lange Unicode-Variablen (RPG-Datentyp C)
  • FLDREFMUQualifizierte Referenz-Datenstruktur für (mittlere) Unicode-Variablen (RPG-Datentyp C)

Die übrigen Referenz-Datenstrukturen, in Copy-Strecke D_FLDREF sind zur Definition von Variablen für individuelle WOPiXX-Programme nicht relevant.

...

Die Copy-Strecken, die zur Definition von Parameter-Feldern verwendet werden, sind jeweils direkt in den Copy-Strecken für die Prototypen integriert. Da die Prototypen in die individuellen WOPiXX-Programme eingebunden werden müssen, werden die Referenz-Felder und Datenstrukturen ebenfalls eingebunden. Eine separate Einbindung der Copy-Strecken mit den Referenz-Informationen ist somit in den individuellen WOPiXX-Programmen nicht erforderlich.
Da alle Referenz-Datenstrukturen durch Compiler-Direktiven bedingt sind, treten bei mehrfacher Einbindung der gleichen Copy-Strecke bzw. bei mehrfacher Definition der gleichen Datenstruktur keine Probleme auf. Die erste Definition wird verwendet, die folgenden Definitionen werden ignoriert.
Bei WOPiXX-Programmen mit embedded SQL muss ggf. die Copy-Strecke D_FLDREF angegeben werden, da der SQL Precompiler verschachtelte Copy-Strecken abhängig vom Release u.U. nicht auflösen kann.

...

Alle in den Prototypen hinterlegten Parameter-Felder wurden basierend auf den Feldern in der Feld-Referenz-Datei oder anderen in den Copy-Strecken WX_FLDREF und D_FLDREF definiert.
Variablen oder Datenstruktur-Unterfelder, über die Daten mit den WOPiXX-Funktionen ausgetauscht werden, können genau wie die Parameter-Felder in den Prototypen definiert werden.
Anmerkung: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 WOPiXX-Funktionen ausgetauscht werden, über die Referenzen zu definieren.

...

Die Feld-Referenz-Datei (DWFLDREF) wird in der Copy-Strecke WX_FLDREF (bzw. in der Copy-Strecke D_FLDREF) als externe qualifizierte Datenstruktur definiert. Durch die Angabe des Schlüssel-Wortes BASED (bzw. TEMPLATE) kann die Datenstruktur bzw. können die Datenstruktur-Unterfelder nur zur Referenzierung verwendet, jedoch nicht direkt angesprochen werden.
/IF NOT DEFINED(FldRef)
/DEFINE FldRef
D FldRef E DS EXTNAME(DWFLDREF) Qualified
D based(DummyPtr)
/EndIf
Source Code 7: Referenz-Datenstruktur FLDREF für Feld-Referenz-Datei DWFLDREF
Im folgenden Beispiel werden eine stand-alone Variable und Datenstruktur-Unterfelder basierend auf in der Feld-Referenz-Datei hinterlegten Feldern definiert.
D LocMsgText S Like(FldRef.MsgText)
D DSObjQual DS Qualified
D Obj Like(FldRef.Obj)
D Lib Like(FldRef.Lib) inz('*LIBL')
/Free
LocMsgText = 'Dies ist eine Nachricht';
DSObjQual.Obj = 'MYFILE';
/End-Free
Source Code 8: Definition von Variablen und Datenstruktur-Unterfelder über Feld-Referenz-Datei)

...

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:

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
Source Code 9: 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
Source Code 10: 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
Source Code 11: 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
Source Code 12: 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
Source Code 13: 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
Source Code 14: 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
Source Code 15: 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
Source Code 16: Definition und Verwendung von mittleren Unicode-Texten
Die Copy-Strecke WX_FLDREF ist in der Quellen-Datei QCPYLESRC in Bibliothek WOPIX hinterlegt.

...

Die Prototypen für die WOPiXX-Prozeduren sind in Teildateien mit dem gleichen Namen wie die Quelle, in der die Prozedur codiert wurde, in der Datei QPROLESRC in der Bibliothek WOPIX hinterlegt.
Die Prototypen für Directweb-Prozeduren sind in Teildateien mit dem gleichen Namen wie die Quelle, in der die Prozedur codiert wurde, in der Datei QPROLESRC in der Bibliothek DIRWEB hinterlegt.
In allen Teildateien, in denen Prototypen definiert werden, werden die Copy-Strecken mit den Feld-Referenzen, die zur Definition der Parameter-Felder verwendet wurden, integriert. Damit ist eine zusätzliche Einbindung der Feld-Referenzen im WOPiXX-Programm nicht erforderlich.
Alle Prototypen und Referenz-Datenstrukturen sind durch Compiler-Direktiven bedingt, so dass eine (versehentliche) Mehrfacheinbindung der gleichen Copy-Strecke bzw. Datenstruktur nicht zu Problemen führt.
Um das Handling für WOPiXX-Programmierer zu vereinfachen, wurden alle Prototypen (incl. Referenz-Datenstrukturen) für die WOPiXX-Prozeduren in der Copy-Strecke WX_PROTO in der Dateien QPROLESRC in der Bibliothek WOPIX zusammengefasst.
Durch Einbindung der Copy-Strecke WX_PROTO werden alle WOPiXX-Prototypen eingebunden, d.h. der Programmierer kann jede beliebige Prozedur aufrufen.
Das folgende Beispiel zeigt die Einbindung der Copy-Strecken WX_PROTO und D_FLDREF. Die Einbindung von Copy-Strecke D_FLDREF mit Anweisung /COPY ist nur in Programmen mit embedded SQL erforderlich. Wenn das Programm embedded SQL enthält ist die Einbindung nur dann erforderlich, wenn Hostvariablen (in embedded SQL verwendete Variablen) basierend auf den zur Verfügung gestellten Feldreferenzen definiert und eingesetzt werden.
Im folgenden Beispiel werden die Copy-Strecken D_FldRef und WX_PROTO in den Source Code eingebunden.
H**** H-Bestimmungen
F**** F-Bestimmungen
D* Folg. Copy-Strecke nur bei embedded SQL
D/COPY QCPYLESRC,D_FLDREF
D/INCLUDE QCPYLESRC,WX_PROTO
Source Code 17: Einbindung der Copy-Strecken D_FLDREF und WX_PROTO

...

Inhaltsübersicht

Table of Contents
maxLevel3

Bibliotheken

Alle zur Erstellung von RPGWX-Programmen benötigten Quellen, d.h. Prototypen, Referenz-Felder und Referenz-Datenstrukturen sind in der Bibliothek RPGWX hinterlegt und werden somit ausgeliefert. Außerdem befinden sich in dieser Bibliothek alle Service-Programme, in denen alle RPGWX-Funktionen enthalten sind, die der RPGWX-Programmierer aufrufen kann.

Da RPGWX auf Directweb basiert wird auch die Bibliothek DIRWEB ausgeliefert. In dieser Bibliothek befinden sich alle zur Laufzeit von directweb benötigten Programm- und Service-Programm-Objekte, sowie Prototypen und Referenz-Felder und Referenz-Datenstrukturen, die zur Erstellung von Directweb (Service)-Programmen erforderlich sind.

Für die Umwandlung von RPGWX-Programmen sollten die beiden Objekt-Bibliotheken in der folgenden Reihenfolge in der Bibliotheksliste hinterlegt sein:

  1. QTEMP
  2. <ihre eigenen Bibliotheken>
  3. WOPIX
  4. DIRWEB

Die Bibliothekslisten, die den Anwendungen zugeordnet sind, werden zur Laufzeit von der RPGWX-Engine gesetzt. Wartungsprogramme über die die Bibliothekslisten vordefiniert und zugeordnet werden können, werden zur Verfügung gestellt.

Werden die Bibliotheken WOPIX und DIRWEB nicht in der Bibliotheksliste für die individuellen RPGWX-Programme hinterlegt, werden sie zur Laufzeit (der RPGWX-Programme) automatisch in die Bibliotheksliste aufgenommen.

Binderverzeichnisse

Alle RPGWX- und Directweb-Prozeduren sind in Service-Programmen hinterlegt.

Um die Auflistung der Service-Programme beim Erstellen der individuellen RPGWX-Programme zu vermeiden, wurden die Service-Programme in Binder-Verzeichnissen zusammengefasst.

Alle Service-Programme, in denen RPGWX-Prozeduren enthalten sind, sind in Binderverzeichnis WXBNDDIR in Bibliothek WOPIX hinterlegt. Die Service-Programme mit den Dirweb-Prozeduren sind in Binderverzeichnis DWBNDDIR in Bibliothek DIRWEB hinterlegt.

Die Binder-Verzeichnisse müssen beim Erstellen der individuellen RPGWX-Programme angegeben werden.

Toolmaker stellt die Copystrecke WX_HSPECS in Datei QCPYLESRC in Bibliothek WOPIX zur Verfügung. Wird diese Copystrecke in die individuellen RPGWX-Programme integriert, werden die Binder-Verzeichnisse beim Erstellen der Programme mit Option 14 in PDM bzw. dem CL-Befehl CRTBNDRPG (CRPG-Binderprogramm erstellen) automatisch integriert.


Code Block
languagetext
titleH-Bestimmungen - Binderverzeichnisse - Auszug aus der Copy-Strecke WX_HSPECS
* Binding Directories 
  /IF NOT DEFINED(HBndDir)                       
 H BndDir('WXBNDDIR': 'DWBNDDIR': 'QC2LE')       
  /ENDIF


Aktivierungsgruppen

Da es sich sowohl bei den RPGWX- als auch bei den Dirweb-Prozeduren um echte ILE Prozeduren handelt, können die individuellen RPGWX-Programme nicht in der Default-Aktivierungsgruppe (= Default-Wert in Befehl CRTBNDPRG) erstellt werden, d.h. die Option DFTACTGRP=*NO ist nicht zulässig.

Da in dem steuernden Dirweb-Programm intensiv mit Pointern gearbeitet wird und Pointer bzw. die zugeordneten Speicherbereiche nicht in unterschiedlichen Aktivierungsgruppen verwaltet werden können, müssen die individuellen RPGWX-Programme in der gleichen Aktivierungsgruppe wie das steuernde Dirweb-Programm ausgeführt werden, d.h. die Option ACTGRP = '*CALLER' oder ACTGRP = 'QILE' muss im Compile-Befehl oder den H-Bestimmungen angegeben werden.

Bei Einbindung der Copystrecke WX_HSPECS (H-Bestimmungen in HX_HSPECS), wird beim Erstellen der individuellen RPGWX-Programme mit Option 14 im PDM bzw. dem CL-Befehl CRTBNDRPG die Aktivierungsgruppe auf *CALLER (bzw. QILE) gesetzt.

Code Block
languagetext
titleH-Bestimmungen - Binderverzeichnisse - Weiterer Auszug aus der Copy-Strecke WX_HSPECS
* Activation Group
  /IF NOT DEFINED(HActGrp)
  /DEFINE HActGrp
  /IF Defined (*CRTBNDRPG)
H DftActGrp(*No) ActGrp('QILE')
  /ENDIF
  /ENDIF

Copystrecken

Für die Entwicklung von Web-Anwendungen mit RPGWX werden die folgenden Copystrecken zur Verfügung gestellt.

  • WX_HSPECS - H-Bestimmungen- Alle wichtigen Schlüssel-Worte
  • WX_HCOPYR - H-Bestimmung- Schlüsselwort Copyright
  • WX_FLDREF - D-Bestimmungen – Referenz-Felder und -Datenstrukturen
  • WX_PROTO - D-Bestimmungen – Alle RPGWX-Prototypen

Die in den Bibliotheken WOPIX und DIRWEB zur Verfügung gestellten Copystrecken können vom Programmierer in die Programme eingebunden werden. Weitere Informationen dazu finden Sie auf der Seite Erstellen von RPGWX-Programmen.

Note
iconfalse

Der Source Code in den Copystrecken sollte jedoch vom Programmierer nicht verändert werden. Toolmaker übernimmt keine Verantwortung für Fehler, die durch Manipulation der zur Verfügung gestellten Quellen auftreten könnten.

Copystrecken zur Referenzierung von Variablen

Die Copystrecken, die zur Definition von Parameter-Feldern verwendet werden, sind jeweils direkt in den Copystrecken für die Prototypen integriert. Da die Prototypen in die individuellen RPGWX-Programme eingebunden werden müssen, werden die Referenz-Felder und Datenstrukturen ebenfalls eingebunden. Eine separate Einbindung der Copystrecken mit den Referenz-Informationen ist somit in den individuellen RPGWX-Programmen nicht erforderlich.

Da alle Referenz-Datenstrukturen durch Compiler-Direktiven bedingt sind, treten bei mehrfacher Einbindung der gleichen Copystrecke bzw. bei mehrfacher Definition der gleichen Datenstruktur keine Probleme auf. Die erste Definition wird verwendet, die folgenden Definitionen werden ignoriert.

Bei RPGWX-Programmen mit embedded SQL muss ggf. die Copystrecke D_FLDREF angegeben werden, da der SQL Precompiler verschachtelte Copystrecken abhängig vom Release u.U. nicht auflösen kann.

Upgrade und Änderung von Copystrecken

Diese Copystrecken werden jeweils bei einem Upgrade von RPGWX ausgetauscht.

Referenz-Felder und –Datenstrukturen, die in den Copystrecken hinterlegt sind werden von Toolmaker nur in Ausnahmefällen geändert.

Alle Parameter-Felder, die in Prototypen definiert sind, basieren auf diesen Referenz-Definitionen.

Vorhandene Prozeduren bzw. deren Prototypen werden von Toolmaker allenfalls dahingehend erweitert, dass optionale Parameter ans Ende der Parameter-Liste hinzugefügt werden.


Note
iconfalse

Nach einem Upgrade sollten die individuellen RPGWX-Programme erneut kompiliert werden, um sicherzustellen, dass die Parameter- und Variablen-Definitionen übereinstimmen.

Referenzierung und Prototypen

Alle in den Prototypen hinterlegten Parameter-Felder wurden basierend auf den Feldern in der Feld-Referenz-Datei oder anderen in den Copystrecken WX_FLDREF und D_FLDREF definiert.

Variablen oder Datenstruktur-Unterfelder, über die Daten mit den RPGWX-Funktionen ausgetauscht werden, können genau wie die Parameter-Felder in den Prototypen definiert werden.

H-Bestimmungen in HX_HSPECS

Die Copystrecke WX_HSPECS enthält Compilerdirektiven, die für RPGWX sinnvoll sind.

Code Block
titleWX_HSPECS (Version 2.40)
collapsetrue
    ‚ **********************************************************************************************                    
    ˆ * H - S P E C I F I C A T I O N S                                                                                 
    ‚ **********************************************************************************************                    
    ‚ * Binding Directory                                                                                               
     H/IF NOT DEFINED(HBndDir)                                                                                          
     H BndDir('WXBNDDIR': 'DWBNDDIR': 'QC2LE')                                                                          
     H/ENDIF                                                                                                            
    ‚ *                                                                                                                 
     H/If Not Defined(HCopyRight)                                                                                       
     H/Include QCPYLESRC,WX_HCOPYR                                                                                      
     H/EndIf                                                                                                            
    ‚ *                                                                                                                 
    ‚ * H-Specs DirectWeb                                                                                               
     H/Include QCPYLESRC,DW_HSpecs                                                                                                        

Individuelle Anpassung der H-Bestimmungen

Alle Schlüssel-Worte in der Copystrecke WX_HSPECS sind durch Compiler-Direktiven bedingt und können beliebig aktiviert oder deaktiviert werden.

Im folgenden Beispiel wird die Option BNDDIR um das individuelle Binderverzeichnis MYBNDDIR erweitert. Anschließend wird die Copystrecke WX_HSPECS eingebunden. Durch das Setzen der Compiler-Direktive /Define HBNDDIR werden die in der Copystrecke WX_HSPECS angegebenen Binder-Verzeichnis-Einträge übergangen.

/Define HBndDir
H BndDir('WXBNDDIR': 'DWBNDDIR': 'QC2LE', 'MYBNDDIR')
/INCLUDE WX_HSPECS

Deaktivieren / Ändern Aktivierungsgruppe in Copystrecke


Bei der Verwendung von individuellen H-Bestimmungen muss folgendes beachtet werden:

Umwandlung mit CRTBNDRPG (RPG-Binderprogramm erstellen)

  • Da aus RPGWX-Programmen ILE-Prozeduren aufgerufen werden, dürfen die Programme nicht in der Default-Aktivierungsgruppe ausgeführt werden. → Aus diesem Grund muss die Option DFTACTGRP (Standardaktivierungsgruppe) in dem Compile-Befehl CRTBNDRPG auf *NO gestellt werden.
  • Individuelle RPGWX-Programme müssen in der gleichen Aktivierungsgruppe wie das steuernde Dirweb-Programm laufen. → Deshalb muss die Option ACTGRP (Aktivierungsgruppe) im Compile-Befehl mit *CALLER angegeben werden.
  • Die Service-Programme, in denen die RPGWX-Funktionen hinterlegt sind, sind in Binderverzeichnis WXBNDDIR hinterlegt. → Aus diesem Grund muss bei Kompilierung mit CRTBNDRPG zumindest das Binderverzeichnis WXBNDDIR in der Option BNDDIR (Binderverzeichnis) angegeben werden.
    Falls zusätzlich auch Directweb-Prozeduren in den individuellen CGI-Programmen verwendet werden sollen, muss auch das Binderverzeichnis DWBNDDIR in der Option BNDDIR angegeben werden.

Anstatt den Compile-Befehl anzupassen, können die notwendigen Informationen auch in den H-Bestimmungen hinterlegt werden. Die Kompilierung kann anschließend über CRTBNDRPG ohne Anpassung erfolgen.

Bei Programmen, die embedded SQL beinhalten erfolgt die Kompilierung über den Befehl CRTSQLRPGI (SQL ILE RPG-Objekt erstellen). Dieser Befehl hat keine Optionen um die Aktivierungsgruppe oder Binderverzeichnisse vorzugeben. Deshalb müssen bei Programmen mit embedded SQL die benötigten Informationen in den H-Bestimmungen hinterlegt werden.

H-Bestimmungen

  • Das Schlüssel-Wort DFTACTGRP in den H-Bestimmungen überschreibt zur Compile-Zeit den Eintrag in Option DFTACTGRP im Compile-Befehl CRTBNDRPG.
    Werden H-Bestimmungen verwendet, sollte DFTACTGRP(*NO) angegeben werden.
  • Das Schlüssel-Wort ACTGRP in den H-Bestimmungen überschreibt zur Compile-Zeit den Eintrag in Option ACTGRP im Compile-Befehl CRTBNDRPG.
    Werden H-Bestimmungen verwendet sollte ACTGRP(*CALLER) angegeben werden.
  • Werden im Schlüssel-Wort BNDDIR in den H-Bestimmungen Binderverzeichnisse angegeben, wird die Option im BNDDIR im Compile-Command nicht überschrieben, sondern die in den H-Bestimmungen hinterlegten Binderverzeichnisse werden zusätzlich zu den im Compile-Befehl hinterlegten Binderverzeichnisse verwendet.
    Werden H-Bestimmungen verwendet, dann sollte zumindest das Binderverzeichnis WXBNDDIR angegeben werden. Sofern auch Directweb-Prozeduren aufgerufen werden sollten, sollte zusätzlich das Binderverzeichnis DWBNDDIR angegeben werden.
    Die Binderverzeichnisse müssen im Schlüssel-Wort BNDDIR in Hochkommata und in Großbuchstaben und durch Kommata getrennt angegeben werden.

Deklarationen in der Copystrecke WX_PROTO

Alle Prototypen (incl. Referenz-Datenstrukturen) für die RPGWX-Prozeduren sind in der Copystrecke WOPIX/QPROLESRC(WX_PROTO) zusammengefasst.

Damit stehen alle Prozeduren zur Verfügung, unabhängig davon, ob sie originär RPGWX- oder directweb- Prozeduren sind. Im Detail sähe das so aus:

  • Die Prototypen für die RPGWX-Prozeduren sind in Teildateien mit dem gleichen Namen wie die Quelle, in der die Prozedur codiert wurde, in der Datei QPROLESRC in der Bibliothek WOPIX hinterlegt.
  • Die Prototypen für Directweb-Prozeduren sind in Teildateien mit dem gleichen Namen wie die Quelle, in der die Prozedur codiert wurde, in der Datei QPROLESRC in der Bibliothek DIRWEB hinterlegt.

In allen Teildateien, in denen Prototypen definiert werden, werden die Copystrecken mit den Feld-Referenzen, die zur Definition der Parameter-Felder verwendet wurden, integriert. Damit ist eine zusätzliche Einbindung der Feld-Referenzen im RPGWX-Programm nicht erforderlich.

Alle Prototypen und Referenz-Datenstrukturen sind durch Compiler-Direktiven bedingt, so dass eine (versehentliche) Mehrfacheinbindung der gleichen Copystrecke bzw. Datenstruktur nicht zu Problemen führt.

Default-HTML-Dokumente

Für Work- und Change-Programme werden Default-HTML-Dokumente zur Verfügung gestellt.

  • Wx_ChgDefault.html - Default-Dokument für Change Tables (Einzel-Anzeige)
  • Wx_WrkDefault.html - Default-Dokument für Work Tables (List-Anzeige)

Die Default-HTML-Dokumente werden beim Einrichten der Anwendung (6.1 Anwendung) in das Verzeichnis für HTML-Vorlagen übertragen.

Zur Laufzeit wird der HTML und JavaScript-Code aufbereitet. Der aufbereitete HTML- und Javascript Code wird in die Default-Dokumente übertragen und an Stelle der Platzhalter ausgegeben.

Die Default-Dokumente können durch individuelle HTML-Dokumente mit individuellem HTML und Java-Script-Code ersetzt werden. Die individuellen HTML-Dokumente müssen jedoch die gleichen Platzhalter wie die Default-Dokumente beinhalten.

Die Platzhalter sind durch ein führendes und folgendes Prozent-Zeichen gekennzeichnet, z.B. %ERRTXT%