harl3kin@buhaboard.de
1.)
Logik des RPG-Zyklus :
2.) IF/END Logik:
IFxx – Operation:
3.)
Weitere IF-Operationen:
4.)
DO-Schleifen:
Schleifen:
5.)
CABxx und CASxx:
·
Der Operationscode CABxx prüft eine
Bedingung und verzweigt zu einem anderen Programmteil, wenn diese Bedingung
wahr (erfüllt) ist.
·
Der Operationscode CASxx prüft eine
Bedingung und verzweigt zu einem Unterprogramm wenn diese Bedingung wahr (erfüllt)
ist.
·
Falls die von einer CABxx-Anweisung
geprüfte Bedingung falsch ist, fährt das Programm mit der Ausführung der nächsten
Anweisung fort.
·
Es können n Verbindung mit den Operationscodes
CABxx und CASxx dieselben Vergleichsoperatoren verwendet werden, die auch in
Ifxx-Anweisungen benutzt werden können.
·
Wird für die letzte Anweisung in einer
CAS-Gruppe kein Vergleichsoperator angegeben, wird das angesprochene Unterprogramm
unbedingt ausgeführt, wenn alle vorher abgefragten Bedingungen falsch waren.
·
Das Ergebnisfeld einer CASxx-Anweisung
muss den Namen eines Unterprogramms enthalten.
6.) Benutzung extern beschriebener Dateien:
·
RPG-Programme können sich auf die Dateibeschreibung
einer extern beschrieben Datei beziehen und diese benutzen.
·
Schlüssellänge und – position werden
in einer F-Bestimmung nicht angegeben, wenn die externe Beschreibung dieser
Datei in einem Programm benutzt werden soll.
·
Wird keine Satzbezugszahl benutzt, muss
für eine extern beschriebene Datei keine Eingabebestimmung auf Satzebene definiert
werden.
·
Die Felddefinitionen werden automatisch
in das Programm übernommen, wenn die externe Beschreibung einer Datei benutzt
wird.
·
Die Schlüsselfelder werden automatisch
in das Programm übernommen, wenn eine extern beschriebene Datei in Schlüsselfolge
verarbeitet wird.
·
Der Satzformatname extern beschriebenen
Datei wird in den Eingabebestimmungen auf Satzebene benutzt.
7.) Schlüssellisten und zusammengesetzte Schlüssel:
·
Wird eine CHAIN-Anweisung benutzt, um
Sätze aus einer extern beschriebenen Datei abzurufen, muss das Suchargument
in Faktor1 dieser Anweisung dieselben Attribute aufweisen wie der entsprechende
Schlüssel in der Datei.
·
Werden mehrere Felder für die Definition
eines Schlüssels verwendet, spricht man auch von einem „zusammengesetzten Schlüssel.
·
Mit dem Operationscode KLIST kann man
einer Liste von Schlüsselwörtern einen bestimmten Name zuordnen.
·
Der Operationscode KFLD wird benutzt,
um die einzelnen Schlüsselfelder einer Schlüsselliste zu definieren.
·
Der Name einer Schlüsselliste kann als
Suchargument in Faktor1 einer CHAIN-Anweisung verwendet werden.
·
Mit dem Schlüsselwort *IN können Bezugszahlen
in einem Programm als Programmvariable behandelt werden.
·
Die Attribute der Felder einer Schlüsselliste
müssen mit den Attributen der korrespondierenden Felder in extern beschriebenen
Dateien übereinstimmen.
8.) Verarbeitung von Teilschlüsseln:
·
Wird nur der Teil eines zusammengesetzten
Dateischlüssels in einer Schlüsselliste definiert, spricht man von einer „Teil-Schlüsselliste“.
·
Eine READE-Anweisung liest den nächsten
Satz in einer Datei, wenn der Inhalt des Satzschlüssels mit dem in der Schlüsselliste
definierten Wert übereinstimmt.
·
Wenn die Inhalte der Schlüsselfelder
des nächsten Satzes nicht mit den in den in der Schlüsselliste definierten Werten
übereinstimmen, wird kein weiterer Satz durch die READE-Anweisung gelesen.
·
In einer Schlüsselliste müssen die Schlüsselfelder
streng fortlaufend definiert werden, wobei mit dem ersten Schlüsselfeld der
Datei begonnen werden muss und kein Schlüsselfeld der Datei ausgelassen werden
darf.
·
Bei einer CHAIN-Anweisung, die eine
Teil-Schlüsselliste benutzt, wird der erste Satz gelesen, dessen Teil-Schlüssel
mit den Werten in der Schlüsselliste übereinstimmt.
·
Stößt eine READE-Anweisung auf einen
Satz, dessen Schlüsselwerte nicht mehr mit den Werten in der Schlüsselliste
übereinstimmen, wird die angegebene Bezugszahl für das Dateiende angesetzt.
·
Die Attribute der in einer Teil-Schlüsselliste
definierten Felder müssen mit den Attributen der entsprechenden Schlüsselfelder
in der extern beschriebenen Datei übereinstimmen.
9.)
Weitere Techniken der Datenverarbeitung:
·
READP liest den ersten Satz vor dem
Dateizeiger
·
Mit einer WRITE-Anweisung kann man eine
Datei ,die als ausgabefähige Datei definiert wurde, Sätze hinzufügen.
·
Die Operation DELET entfernt einen Satz
physisch aus einer Datei.
·
Bei einer EXCPT-Ausgabe kann jeder in
den Ausgabebestimmungen definierte Ausgabesatz mit einem Namen angesprochen
werden.
Operationscodes:
10.)
Druckerdateien/Berichtsentwurfsprogramm (RLU – Report Layout Utility):
·
Interaktives Dienstprogramm
zum Entwurf von Berichten
·
Erstellt:
-
Quellenteildatei mit DDS
für die Druckerdatei
-
Druckerdatei als Objekt
-
Wahlweise einen Beispielbericht
Arbeitsschritte beim Berichtsentwurf:
1.)
Definition
von Text:
Einbeziehen
von Konstanten und benannten Feldern als Text
2.)
Definition
von Satzanfang und –ende:
RLU weist
anfangs einen Standardnamen zu.
3.)
Definition
von Konstanten und benannten Feldern:
RLU weist
Standardnamen für Texte hinzu, die durch 2 oder mehr Leerstellen voneinander
getrennt sind.
11.)
Feldgruppen und Datenstrukturen:
Vor der MOVE-Operation:
12345
6789
101
0 |
Datenstruktur
Feldschablone
0,00 |
A
B
C
D
E
Unterfelder
C
MOVE *ZEROS
(FELD)B |
Nach der MOVE-Operation:
·
Bei
einer Feldgruppe handelt es sich um eine Reihe von Feldern, die dieselben Attribute
und meist auch dieselbe Verwendung haben.
·
Die
einzelnen Felder einer Feldgruppe werden Elemente genannt
·
Mit
dem Operationscode XFOOT werden die einzelnen Elemente einer Feldgruppe addiert
und deren Summe wird in das angegebene Ergebnisfeld übertragen.
·
Man
kann eine ganze Feldgruppe mit einer einzigen Operation auf einen bestimmten
Wert setzen.
·
Durch
eine Datenstruktur wird ein Arbeitsbereich für ein Programm definiert.
·
Felder,
die in den Eingabebestimmungen für eine Datenstruktur definiert wurden, werden
auch Unterfelder genannt.
12.)
Datenstrukturen mit Mehrfachvorkommen:
·
Datenstrukturen
mit Mehrfachvorkommen definieren einen programminternen Arbeitsbereich der entsprechend
der definierten Anzahl an Vorkommen mehrere Male vorkommt.
·
Man
kann nur ein bestimmtes Vorkommen einer Datenstruktur mit Mehrfachvorkommen
zu einem Zeitpunkt ansprechen.
·
Der
Operationscode OCUR wird verwendet, um das Vorkommen der Datenstruktur zu identifizieren,
das bearbeitet werden soll.
·
Die
Anzahl der Vorkommen für eine Datenstruktur mit Mehrfachvorkommen wird in den
Eingabebestimmungen für diese Datenstruktur festgelegt.
·
Eine
Datenstruktur mit Mehrfachvorkommen muss einen Namen haben, der an Stelle 7
der ersten Eingabebestimmung für diese Datenstruktur beginnt.
·
Der
Faktor 2 des Operationscodes OCUR muss den Namen der Datenstruktur mit Mehrfachvorkommen
enthalten.
12.)
Datenbereiche:
·
Datenbereiche enthalten nur ein Datenfeld
·
Ein Datenbereich, der in einer Datenbereichsdatenstruktur
definiert wurde, wird bei der Initialisierung des Programms an dieses übertragen.
·
Ein Datenbereich, der in einer Datenbereichsdatenstruktur
definiert wurde, wird fortgeschrieben, wenn das Anwendungsprogramm normal endet.
·
Datenbereiche können mit dem Operationscode
IN abgerufen werden.
·
Der Operationscode OUT kann nur benutzt
werden, wenn der angesprochene Datenbereich vorher von dem Programm „gesperrt“
wurde.
·
Eine UNLCK-Anweisung gibt einen vorher
„gesperrten“ Datenbereich frei, ohne diesen fortzuschreiben.
14.) Parameter:
15.)
Testhilfe (DEBUG):
16.) Testhilfe (DEBUG):
17.) Weitere RPG/400 Techniken:
Benannte Konstanten:
Initialisierung von Datenstrukturen:
· Bei der Initialisierung des Programms werden alle Felder in der Datenstruktur mit Nullen oder Leerstellen vorbesetzt.
Initialisierung von Unterfeldern einer
Datenstruktur:
Operationscode RESET:
· Wird zum Zurücksetzen der Inhalte von Sätzen, Datenstrukturen, Feldgruppen, Tabellen oder Variablen auf die Werte benutzt, die am Ende der Programminitialisierung aktuell waren.
· Kann auch zum Zurücksetzen der Inhalte von Unterfeldern einer Datenstruktur auf die Werte benutzt werden, die in den Eingabebestimmungen angegeben sind.
· Kann auch zum zurücksetzen der Werte von Variablen benutzt werden, deren Inhalte in der Subroutine *INZR geändert wurden.
· Die Inhalte der Felder etc., die in Verbindung mit dem Operationscode RESET im Programm benutzt werden, werden nach erfolgter Programminitialisierung in einem besonderen Bereich gespeichert.
Operationscode
CLEAR:
·
Wird zum Vorbesetzen von Sätzen, Datenstrukturen, Feldgruppen,
Tabellen oder Variablen mit Nullen, Leerstellen oder dem Wert „0“ benutzt.
·
Der Wert ergibt sich aus der jeweiligen Datenart:
Numerische Felder = Nullen
Zeichenfelder = Leerstellen
Bezugszahlen = „0“
· Wird der Operationscode CLEAR in Verbindung mit einem Satzformatnamen benutzt, werden nur die reinen Ausgabefelder mit den entsprechenden Werten vorbesetzt.
· Wird der Operationscode in Verbindung mit einer Datenstruktur mit Mehrfachvorkommen benutzt, wird nur das aktuelle Vorkommen mit den entsprechenden Werten vorbesetzt.