RPG Programmierung

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

 

Unterfelder

                                 A            B            C            D                                E

 

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.