Verarbeitungsregeln

Dieder Abschnitt stellt existierende Verarbeitungsregeln vor und beschreibt, wie Sie diese Regeln bearbeiten können:


Feldbezogene Verarbeitungsregeln

Es können drei Arten von feldbezogenen Verarbeitungsregeln definiert werden.

  • Inline-Verarbeitungsregeln
    Diese Regeln werden innerhalb eines Map Source-Objekts definiert. Ihnen wird kein Name zugewiesen. Predict braucht nicht vorhanden sein.

  • Predict Free Rules
    Diese Regeln haben einen zugewiesenen Namen. Gespeichert werden sie in Predict.

    Um eine Predict Free Rule zu bearbeiten, müssen Sie die Regel beim Anlegen der Maske eingeben und ihr einen Namen zuweisen.

  • Predict Automatic Rules
    Diese Regeln betreffen Datenbankfelder. Definiert werden Sie vom Predict-Administrator. Wird ein Feld von den Datendefinitionen in einem anderen Natural-Objekt ausgewählt, werden alle automatischen Regeln für dieses Feld mit der Maskendefinition verknüpft. Alle automatischen Regeln werden miteinander verkettet und als eine einzige Maskenregel behandelt.

    Der Rang der automatischen Regeln wird in den Maskeneinstellungen definiert (die Standardeinstellung ist 1).

    Im Masken-Editor können Sie die automatischen Regeln nicht ändern. Sie können ihnen jedoch einen anderen Rang zuweisen. Dazu können Sie entweder das Kommando P=n benutzen oder einfach den alten Rang überschreiben.

Anmerkungen:

  1. Sie können eine Inline-Verarbeitungsregel zu einer Predict Free Rule machen (und umgekehrt), indem Sie den Namen der Regel zuweisen (bzw. ihn entfernen).
  2. Wird ein Feld mit verlinkten Predict-Verarbeitungsregeln umbenannt, gehen die Regeln verloren, und Sie müssen sie erneut verlinken.

Ein Und-Zeichen (&) im Quellcode einer Verarbeitungsregel wird dynamisch durch den vollständigen Namen des Feldes ersetzt, für das die Regel definiert ist. Array-Indices sind von der Ersetzung nicht betroffen. Sie müssen dazu nach dem Und-Zeichen (&) ausdrücklich die Index-Notation angeben, siehe folgendes Beispiel:

Beispiele:

IF &    = ' ' THEN REINPUT 'Enter NAME' MARK *&   /* For a scalar field
IF &(1) = ' ' THEN MOVE 'X' TO &(*)               /* For an array field

Die Feldnamen-Notation &.field-name im Quellcode einer Verarbeitungsregel ermöglicht es, DDM-spezifische Regeln zu haben, die die Integrität von Werten zwischen Datenbankfeldern gegenprüfen, ohne dazu die Felder ausdrücklich mit einem View-Namen vollständig benennen zu müssen. Anstelle von field-name geben Sie den Namen des Datenbankfeldes an, so wie er in dem DDM definiert ist. Beim Kompilieren qualifiziert Natural das Feld, indem es das Und-Zeichen (&) durch den entsprechenden View-Namen ersetzt. Dadurch haben Sie die Möglichkeit, dieselbe Verarbeitungsregel für bestimmte Felder zu benutzen, ohne berücksichtigen zu müssen, aus welcher View die Felder genommen werden.

Funktionstastenbezogene Verarbeitungsregeln

Es können zwei Arten von funktionstastenbezogenen Verarbeitungsregeln definiert werden.

  • Inline-Verarbeitungsregeln

  • Predict Free Rules

Funktionstastenbezogene Verarbeitungsregeln können Sie benutzen, um programmsensitiven Funktionstasten (PF-Tasten) bei der Maskenverarbeitung bestimmte Aktivitäten zuzuweisen. Bei PF-Tasten, denen bereits ein Kommando durch das Programm zugewiesen ist, wird dieses Kommando ohne Regelverarbeitung ausgeführt.

Beispiel:

IF *PF-KEY = 'PF3'
   ESCAPE ROUTINE
END-IF

Wird diese Regel ausgeführt, dann wird die Maskenverarbeitung ohne weitere Regelverarbeitung beendet.

Verarbeitungsregel bearbeiten

Beginn der AnweisungslisteUm eine Verarbeitungsregel zu bearbeiten:

  • Geben Sie das Feld-Kommando .P ein.

    Oder:
    Setzen Sie das Zeilenkommando ..E ab und platzieren Sie dann den Funktionscode P neben dem Feld, für das eine Verarbeitungsregel-Bearbeitung erfolgen soll.

Beginn der AnweisungslisteUm eine funktionstastenbezogene Verarbeitungsregel zu bearbeiten:

  • Setzen Sie das Zeilenkommando ..P ab.

Beim Feld-Kommando .P können Sie einen Parameter (.Prr) angeben, der den Rang (Priorität) der zu definierenden oder zu bearbeitenden Verarbeitungsregel angibt. Ein Feld kann bis zu 100 Verarbeitungsregeln (Rang 0 bis 99) haben. Bei der Ausführung der Maske werden die Verarbeitungsregeln in aufsteigender Reihenfolge oder nach Rang und Position auf dem Bildschirm ausgeführt.

Bei den funktionstastenbezogenen Verarbeitungsregeln wird immer angenommen, dass sie die erste Position auf dem Bildschirm haben.

Bei der Zuweisung von Rängen für Verarbeitungsregeln werden folgende Zuweisungen empfohlen, um eine optimale Performance zu erzielen:

Rang Verarbeitungsregel
0 Beendigungsregel
1 - 4 Automatische Regel
5 - 24 Formatprüfung
25 - 44 Wertprüfung bei einzelnen Feldern
45 - 64 Gegenkontrolle des Wertes zwischen Feldern
65 - 84 Datenbankzugriff
85 - 99 Für einen besonderen Zweck

Anmerkung:
Denken Sie bitte beim Ändern oder Hinzufügen einer Verarbeitungsregel daran, dass Sie alle Map-Objekte, die diese Regel referenzieren, neu katalogisieren müssen.

Dieser Abschnitt behandelt Informationen zu folgenden Themen:

Verarbeitungsregel zur Bearbeitung auswählen

Wenn Sie das Feld-Kommando .P* in ein Maskenfeld eingeben, wird eine Liste aller zu diesem Feld definierten Verarbeitungsregeln angezeigt.

Wenn Sie das Zeilenkommando ..P* in einer beliebigen Maskenzeile eingeben, wird eine Liste aller Verarbeitungsregeln angezeigt, die zu den in dieser Maske verwendeten PF-Tasten definiert sind.

In jeder dieser Listen sind die Predict-Regeln durch ihre Namen, die Inline-Regeln durch ihre ersten drei Quellcode-Zeilen identifiziert. Sie können aus der Liste eine Regel zum Bearbeiten auswählen, indem Sie ihren Rang eingeben.

Der Bildschirm zum Bearbeiten einer Regel (mit Beispiel einer Verarbeitungsregel) sieht wie folgt aus:

  Variables used in current map                                             MOD  
  MODTXT(A3)                                                                  U  
  FVAR(A75/1:6)                                                               U  
  FTYP(A1/1:6)                                                                U  
  RULEMODE(A6)                                                                U  
  RULE-NAME(A32)                                                              D  
  FIELDAN(A5)                                                                 D  
                                                                                 
  Rule ________________________________ Field FULCB3.CBCOM                       
  >                                      > + Rank 0     S 1   L 1    Struct Mode 
  ALL   ....+....10...+....20...+....30...+....40...+....50...+....60...+....70..
    0010 *                                                                       
    0020 IF & EQ MASK('?')                                                       
    0030  REINPUT USING HELP                                                     
    0040 END-IF                                                                  
    0050 *                                                                       
    0060                                                                         
    0070                                                                         
    0080                                                                         
    0090                                                                         
    0100                                                                         
  Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
        Help  Mset  Exit  Test        --    -     +     Full  Sc=         Let

Während der Bearbeitung einer Verarbeitungsregel können Sie zwischen Split-Screen- und Vollbild-Modus hin und her schalten., indem Sie PF9 drücken oder das Kommando SPLIT/SPLIT E absetzen. Beim Split-Screen-Modus zeigt der obere Bildschirmbereich die Definitionen aller Maskenfelder (außer Systemvariablen) an. Sie können die Position der Anzeige mittels Editor-Kommandos zum Positionieren verändern.

Die Eingabe bzw. Bearbeitung des Quellcodes zum Definieren der Verarbeitungsregel erfolgt so wie beim Natural-Programm-Editor.

Direktkommandos

Wenn Sie eine Verarbeitungsregel bearbeiten, können Sie eines der folgenden Direktkommandos in der Kommandozeile (>) eingeben, um bestimmte Funktionen auszuführen. Ein unterstrichener Teil eines Schlüsselworts stellt die minimal mögliche Abkürzung dar.

Weitere Informationen siehe Systemkommando-Syntax in der Systemkommandos-Dokumentation.

Kommando Erläuterung
ADD[(n)] Fügt n Leerzeilen zum Quellcode hinzu.

Weitere Informationen siehe ADD-Kommando in Editor-Kommandos in der Programm-Editor-Dokumentation.

CHANGE 'string1'string2' Durchsucht den Quellcode nach der als Suchwert (string1) eingegebenen Zeichenkette und ersetzt jeden gefundenen Suchwert mit der als Ersetzungswert (string2) eingegebenen Zeichenkette.
CHECK Prüft die Regel.
CLEAR Löscht den Inhalt des Editierbereichs (auch die Markierungen X und Y).
DX

oder

DY

oder

DX-Y
Löscht die mit X markierte Zeile

oder die mit Y markierte Zeile

oder den mit den Markierungen X und Y eingegrenzten Zeilenblock.

EX

oder

EY

oder

EX-Y
Löscht alle Zeilen ab dem Anfang des Editierbereichs bis zur mit X markierten Zeile (die jedoch nicht gelöscht wird)

oder ab der Zeile, die auf die mit Y markierte Zeile folgt, bis zum Ende des Editierbereichs

oder alle Quellcodezeilen im Quellcodebereich mit Ausnahme des Zeilenblocks, der mit den Markierungen X und Y eingegrenzt ist.

.
EXIT Beendet die Bearbeitung der Verarbeitungsregel. Anschließend Rückkehr zur Maskenbearbeitung.
.
P Positioniert vorwärts zur nächsten für das Feld definierten Regel.
P* Auswahl einer Regel aus dem Auswahlmenü.
Prr Auswahl der Regel mit Rang rr.
P=rr Ändert den Rang einer Verarbeitungsregel in den Rang rr.
POINT Positioniert die Zeile, in der das Zeilenkommando .N eingegeben wurde, an den Anfang des aktuellen Bildschirms.
RESET Löscht die aktuellen Markierungen X und/oder Y sowie jede zuvor mit dem Zeilenkommando .N gesetzte Markierung.
SAVE name Speichert die Verarbeitungsregel als Copycode unter dem Namen name.
SCAN ['scan-value'] Durchsucht den Quellcode-Arbeitsbereich nach Daten.

Wenn Sie das SCAN-Kommando ohne Parameter eingeben, wird das SCAN/REPLACE-Fenster angezeigt.

Sie können dann zusätzlich zum Suchwert (scan-value) Folgendes eingeben:

Wenn Sie SCAN 'scan-value' eingeben, erfolgt die Suche nach dem Suchwert scan-value.

SCAN = [+|-] Sucht nach der nächsten Ausprägung des mit dem SCAN-Kommando angegebenen Suchwerts in der angegebenen Richtung.

Weitere Informationen siehe SCAN=[+|-] unter Editor-Kommandos beim Programm-Editor.

SHIFT [-|+nn] Verschiebt jede Quellcode-Zeile, die mit den Markierungen X und Y begrenzt ist, nach links oder nach rechts. Der Parameter nn gibt die Anzahl der Zeichen an, um die die Zeile verschoben werden soll. Kommentarzeilen werden nicht verschoben.
SHIFT -- Verschiebt jede Zeile, die mit den Markierungen X und Y begrenzt ist, ganz nach links. Kommentarzeilen werden nicht verschoben.
SHIFT ++ Verschiebt jede Zeile, die mit den Markierungen X und Y begrenzt ist, ganz nach rechts (maximal um 99 Stellen). Kommentarzeilen werden nicht verschoben.
SPLIT [E] Umschalten zwischen Split-Screen-Modus und Vollbild-Modus. Siehe auch SPLIT in Editor-Kommandos zum Positionieren.
TEST Testet eine Maskendefinition.
UNLINK Trennt die Verknüpfung zwischen einer Inline-Regel (Inline Rule) oder einer Predict Free Rule und dem Feld.

Anmerkung:
Um aus den vorhanden Predict Free Rules eine Regel auszuwählen, müssen Sie ein Fragezeichen (?) in das Regelnamensfeld des Editier-Bildschirms für die Verarbeitungsregel eingeben.

Editor-Kommandos zum Positionieren

Editor-Kommandos zum Positionieren werden in der Kommandozeile (>) des Regel-Editors eingegeben. Die folgenden Kommandos stehen zum Positionieren zur Verfügung. Ein unterstrichener Teil eines Schlüsselworts stellt die minimal mögliche Abkürzung dar.

Kommando Erläuterung
+P  Eine Seite vorwärts positionieren.
+
-P  Eine Seite rückwärts positionieren.
-
+H Eine halbe Seite vorwärts positionieren.
-H Eine halbe Seite rückwärts positionieren.
TOP  An den Anfang der Regel positionieren.
BOTTOM  An das Ende der Regel positionieren.
++
+nnnn Um nnnn (maximal 4 Ziffern) Zeilen vorwärts positionieren.
-nnnn Um nnnn (maximal 4 Ziffern) Zeilen rückwärts positionieren.
nnnn Auf Zeile Nummer nnnn positionieren.
X Auf die mit X markierte Zeile positionieren.
Y Auf die mit Y markierte Zeile positionieren.
SPLIT[-|--|+|++] Im Split-Screen rückwärts (- oder ) oder vorwärts positionieren (+ oder ++).

Zeilenkommandos

Zusätzlich zu den Editor-Kommandos stehen beim Bearbeiten einer Verarbeitungsregel die folgenden Zeilenkommandos zur Verfügung:

Kommando Erläuterung
.C(nnnn) Kopiert die Zeile, in der das Kommando eingegeben wurde.
.CX(nnnn)

oder

.CY(nnnn)

Kopiert die Zeile, die mit X oder mit Y markiert ist. Siehe auch Zeilenkommandos .X und .Y in den folgenden Abschnitten.
.CX-Y(nnnn) Kopiert den Zeilenblock, der mit den Markierungen X und Y eingegrenzt ist.

Ist die Richtungsanzeige auf + (Pluszeichen) gesetzt, werden die kopierten Zeilen nach der Zeile platziert, in der das entsprechende Kommando eingegeben wurde.

Ist die Richtungsanzeige auf - (Minuszeichen) gesetzt, werden die kopierten Zeilen vor die Zeile platziert, in der das entsprechende Kommando eingegeben wurde.

.D(nnnn) Löscht eine oder mehrere Zeilen. Der Standardwert ist 1 Zeile.
.I(n) Fügt n Leerzeilen ein. Zeilen, die leer gelassen werden, werden beim nächsten Drücken von Enter wieder entfernt.
.I(obj,ssss,nnnn) Fügt in den Quellcode ein Objekt ein, das in der aktuellen Library oder in der Steplib enthalten ist.

Der Eintrag ssss kann benutzt werden, um die Zeile anzugeben, ab der die Einfügung beginnen soll.

Der Eintrag nnnn kann benutzt werden, um die Anzahl der einzufügenden Zeilen anzugeben.

Weitere Informationen zu den Zeilenkommandos .I siehe Zeilenkommandos im Abschnitt Maske bearbeiten.

.J Führt die aktuelle Zeile mit der nächsten Zeile zusammen.

Ist die resultierende Zeile länger als die Editor-Bildschirmzeile, wird die Zeile mit einem L markiert und muss mit dem Zeilenkommando .S in zwei Zeilen geteilt werden (siehe unten), bevor sie geändert werden kann.

.L Macht alle seit dem letzten Drücken der Enter-Taste an der Zeile vorgenommenen Änderungen rückgängig.
.MX

oder

.MY
Verschiebt die mit X oder mit Y markierte Zeile. Siehe auch Zeilenkommandos .X und .Y (weiter unten).
.MX-Y Verschiebt den Zeilenblock, der mit den Markierungen X und Y eingegrenzt ist.

Ist die Richtungsanzeige auf + (Pluszeichen) gesetzt, werden die verschobenen Zeilen nach der Zeile platziert, in der das entsprechende Kommando eingegeben wurde.

Ist die Richtungsanzeige auf - (Minuszeichen) gesetzt, werden die verschobenen Zeilen vor die Zeile platziert, in der das entsprechende Kommando eingegeben wurde.

.P Positioniert die mit diesem Kommando markierte Zeile an den Anfang des Bildschirms.
.S Spaltet die Zeile an der mit dem Cursor markierten Position.
.W Fügt n Leerzeilen ein.

Zeilen, die leer gelassen werden, werden beim nächsten Drücken von Enter wieder entfernt.

.X Markiert eine Zeile oder den Anfang eines Zeilenblocks, die bzw. der bearbeitet werden soll.
.Y Markiert eine Zeile oder das Ende eines Zeilenblocks, die bzw. der bearbeitet werden soll.

Anmerkung:
Wenn sowohl das Kommando .X als auch das Kommando .Y bei einer Zeile angewendet werden, wird sie behandelt, als ob sie mit einem X und mit einem Y markiert ist; die tatsächlich angezeigte Zeilenmarkierung, die diesen Status wiedergeben soll, ist ein Z.