Die folgenden Adress-Informationen wurden in einer Feldgruppe gespeichert.
Name Strasse Land PLZ Ort
EDV Beratung Am Berg 47 DE 88214 Ravensburg
A&A Friedmann Hauptstr 70 DE 42781 Haan
L + P CARL-ZEISS-STR. DE 63755 ALZENAU
abc-Nachhilfe Tullastr 47 DE 75237 KARLSRUHE
Mike's Kneipe Sandstr.128 DE 12623 BERLIN
Biggi's Lädle Alexandrastr 9 DE 12623 Berlin
Meier & Co Birkenweg 2-8 DE 75125 Karlsruhe
edv consulting spandauer str.4 DE 10559 berlin
Erwin Müller KG Industriestr.23 DE 63755 Alzenau
Berger & Sohn Waldstr. 97 DE 88214 RAVENSBURG
Diese Informationen sollen nach jeder Spalte sortiert werden können. Weiterhin soll es möglich sein in den einzelnen Spalten mit einem Lookup-Befehl gezielt nach einzelnen Werten zu suchen.
Es stellt sich nun die Frage, wie kann diese Aufgabe am einfachsten gelöst werden?
- Definition der Feldgruppe
Die Feldgruppe wird als Datenstruktur-Unterfeld angelegt. Die einzelnen Spalten sind ebenfalls Datenstruktur-Unterfelder, die die Feldgruppe überlagern. Durch die Überlagerung werden die Datenstruktur-Unter-Felder automatisch als Feldgruppen definiert.D DS D Adresse Dim(10) D Name Overlay(Adresse) like(AdName) D Strasse Overlay(Adresse: *Next) like(AdStr) D Land Overlay(Adresse: *Next) like(AdLand) D PLZ Overlay(Adresse: *Next) like(AdPLZ) D Ort Overlay(Adresse: *Next) like(AdOrt) - Verwendung der Datenstruktur-Feldgruppen-Elemente
Die Feldgruppen-Elemente, der Spalten, können direkt angesprochen werden./Free Name(1) = 'Egon Meier KG'; Strasse(1) = 'Waldstrasse 22'; If Land(Index) = Land(Index + 1); EndIf For Index=1 to %Elem(PLZ); Dsply PLZ(Index); EndFor; /End-Free - Sortierung der Feldgruppe nach Spalten
Beim Sortieren nach einzelnen Spalten wird nicht nur diese Spalte neu angeordnet, sondern die komplette Datenstruktur./Free SortA Adresse; //Sortierung nach Name SortA PLZ; //Sortierung der Feldgruppe Adresse nach Postleitzahl SortA Ort; //Sortierung der Feldgruppe Adresse nach Ort /End-Free - Lookup
Mit LOOKUP können nur gleiche Elemente verglichen werden. Die anderen Vergleichsoperationen (>, >=, <, <=) erfordern sortierte Feldgruppen, d.h. das Schlüssel-Wort ASCEND oder DESCEND muß in den D-Bestimmungen bei der Feldgruppen-Definition angegeben werden. Diese Schlüssel-Wörter sind bei Feldgruppen-Unterfeldern nicht zulässig./Free Monitor; Dsply Adresse(%Lookup('Karlsruhe': ORT)); On-Error; Dsply 'Nicht gefunden'; EndMon; /End-Free - Sortierung unabhängig von Gross- und Kleinschreibung
Die Sortierreihenfolge und Sprachen-Id kann entweder- beim Compilieren (CRTRPGMOD / CRTBNDRPG) oder
- in den H-Bestimmungen (Schlüssel-Wörter SRTSEQ und LANGID) angegeben werden.
Angaben in den H-Bestimmungen werden durch die Compile-Parameter nicht überschrieben. Unterlassungs-Werte:
Sortierreihenfolge: *HEX
Sprachen-Id: *JOBRUN
Sortierreihenfolge:
Bei Sortierreihenfolge *HEX wird keine Sortierfolgetabelle verwendet.
Bei Sortierreihenfolge *LANGIDSHR wird eine Tabelle mit gleicher Wertigkeit verwendet, d.h. das gleiche Wort wird unabhängig von Gross- oder Kleinschreibung gleich bewertet.
Bei Sortierreihenfolge *LANGIDUNQ wird eine Tabelle mit Zeichen unterschiedlicher Wertigkeit verwendet, d.h. gleiche Wort wird in Gross-Buchstaben anders bewertet als in Kleinbuchstaben.
Bei Sortierreihenfolge *JOB wird die Sortierreihenfolge des Jobs zur Compile-Zeit verwendet.
Bei Sortierreihenfolge *JOBRUN wird die Sortierreihenfolge des Jobs zur Laufzeit verwendet.
Die Auswahl der korrekten Sortierfolgetabelle erfolgt in Verbindung mit angegebenen Sprachen-Id. Schlüssel-Wort ALTSEQ: Das Schlüssel-Wort ALTSEQ gibt an, ob eine alternative Sortierreihenfolge verwendet wird. Wenn ja, ob die Definition innerhalb der Quelle oder extern erfolgt.H SrtSeq(*LangIdShr) LangId(*JobRun) AltSeq(*Ext)
Diese Art der Sortierung von Teil-Elementen einer Feldgruppe ist nicht möglich für:
Qualifizierte Datenstrukturen
- Datenstrukturen, die als Feldgruppen definiert werden
- Datenstrukturen, die über Schlüssel-Wort LIKEDS definiert werden
Verwendung
Sortierung von Subfiles nach jedem angezeigten Feld.
Beim Füllen der Subfile werden alle Felder des Subfile-Satzes in die Feldgruppe geladen.
Bei einer anderen Sortierreihenfolge wird die Feldgruppe sortiert und die Subfile aus der Feldgruppe neu gefüllt.
Die Subfile sollte komplett geladen sein, da bei einer Umsortierung u.U. nicht alle Sätze angezeigt werden.


