PROCESS PAGE

Dieses Dokument behandelt folgende Themen:


Funktion

Das PROCESS PAGE-Statement bildet eine allgemeine Schnittstellen-Beschreibung zu einer externen Rendering-Maschine, wie z.B. Natural for Ajax, wobei somit die interne Natural-Datendarstellung mit einer externen Datendarstellung verknüpft wird. Über diese Verknüpfung werden Daten und Ereignisse, aber keine Rendering-Informationen an und von eine/r externen browser-basierte/n Anwendung versandt.

Weitere Informationen entnehmen Sie der Natural for Ajax-Dokumentation.

Syntax 1 - PROCESS PAGE

PROCESS PAGE [(parameter)] operand1
  [WITH PARAMETERS
    {[NAME] operand3 [VALUE] operand4 [(parameters)]} ...
  END-PARAMETERS]
  [GIVING operand11]

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Gehört zur Funktionsgruppe: Bildschirmgenerierung für interaktive Verarbeitung

Syntax-Beschreibung - Syntax 1

Die Syntax 1 des PROCESS PAGE-Statements wird normalerweise nur in einem Natural-Adapter benutzt. Ein Adapter ist ein Natural-Objekt, das die Schnittstelle zwischen dem Natural-Anwendungscode und der Webseite bildet. Er wird automatisch von Natural for Ajax erstellt/aktualisiert, wenn das Layout gespeichert wird.

Operanden-Definitionstabelle:

Operand Possible Structure Possible Formats Referencing Permitted Dynamic Definition
operand1 C S       A U                       yes no
operand2   S A                         C     no no
operand3 C S       A U                       yes no
operand4 C S A     A U N P I F B D T L       yes yes
operand5   S A                         C     no no
operand11   S               I4                 yes yes

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
parameter
Attribut-Kontrollvariable(n):

Den Parameter CV können Sie in Klammern angeben, um eine oder mehrere der in operand2 angebenenen Kontrollvariablen zu referenzieren:

(CV=operand2)

Siehe auch Logische Bedingungen, MODIFIED-Option im Leitfaden zur Programmierung.

operand1
Name des externen Seiten-Layouts:

operand1 enthält den Namen des externen Seiten-Layouts.

operand2
Name der Attribut-Kontrollvariable(n):

operand2 enthält den Namen der Kontrollvariablen, muss Format C haben und entweder ein Skalar oder eine einzelne Array-Ausprägung sein.

operand3
Namen der externen Datenfelder:

operand3 enthält den/die Namen des/der externen Datenfelder, in die oder aus denen operand4 übertragen wird.

operand4
Namen der Natural-Datenfelder:

operand4 enthält den/die Namen des bzw. der externen Natural-Datenfelder, die übertragen werden.

parameters
Parameter:

Unmittelbar nach operand4 können Sie einen oder mehrere Parameter in Klammern angeben:

EM or EMU

Während des Datentransfers verwendete Editiermaske.

Weitere Informationen siehe Session-Parameter EM in der Parameter-Referenz.

Weitere Informationen zu Unicode-Editiermasken siehe Session-Parameter EMU in der Parameter-Referenz.

CV Den Parameter CV, können Sie angeben, um eine oder mehrere in operand5 angegebene Kontrollvariable zu referenzieren:
(CV=operand5)

Siehe auch Logische Bedingungen, MODIFIED-Option im Leitfaden zur Programmierung.

operand5
Name der Attribut-Kontrollvariable(n):
operand5 enthält den Namen der Kontrollvariablen. Die Variable must Format C haben.

Falls operand4 ein Skalar-Ausdruck oder eine einzelne Array-Ausprägung ist, muss operand5 folgendes sein:

  • ein Skalar-Ausdruck

  • oder eine einzelne Array-Ausprägung.

Falls es sich bei operand4 um den vollen Bereich eines Array der Dimension 1 handelt, muss operand5 folgendes sein:

  • ein Skalar-Ausdruck

  • oder eine einzelne Array-Ausprägung

  • oder der volle Bereich eines Array der Dimension 1 mit der gleichen Größe.

Falls es sich bei operand4 um den vollen Bereich eines Array der Dimension 2 handelt, muss operand5 folgendes sein:

  • ein Skalar-Ausdruck

  • oder eine einzelne Array-Ausprägung

  • oder der volle Bereich eines Array der Dimension 2 mit der gleichen Größe in beiden Dimensionen

  • oder der volle Bereich eines Array der Dimension 1 mit der gleichen Größe, die operand4 in Dimension 2 hat.

GIVING operand11
GIVING-Klausel:

operand11 enthält den Natural-Fehler, wenn die Anfrage nicht ausgeführt werden konnte.

Beispiel eines Adapters, der vom Natural for Ajax erstellt wurde:

* PAGE1: PROTOTYPE       --- CREATED BY Natural for Ajax --- 
* PROCESS PAGE USING 'XXXXXXXX' WITH
* INFOPAGENAME RESULT YOURNAME
DEFINE DATA PARAMETER
1 INFOPAGENAME (U) DYNAMIC
1 RESULT (U) DYNAMIC
1 YOURNAME (U) DYNAMIC
END-DEFINE
*
PROCESS PAGE U'/njxdemos/helloworld' WITH
PARAMETERS
 NAME U'infopagename'
  VALUE INFOPAGENAME
 NAME U'result'
  VALUE RESULT
 NAME U'yourname'
  VALUE YOURNAME
END-PARAMETERS
*
*  TODO: Copy to your calling program and implement.
/*/*( DEFINE EVENT HANDLER
* DECIDE ON FIRST *PAGE-EVENT
*  VALUE U'nat:page.end'
*   /* Page closed.
*   IGNORE
*  VALUE U'onHelloWorld'
*   /* TODO: Implement event code.
*   PROCESS PAGE UPDATE FULL
*  NONE VALUE
*   /* Unhandled events.
*   PROCESS PAGE UPDATE
* END-DECIDE
/*/*) END-HANDLER
*
END

Syntax 2 - PROCESS PAGE USING

PROCESS PAGE USING operand6

WITH {operand7} ...
NO PARAMETER

  [GIVING operand11]

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Gehört zur Funktionsgruppe: Bildschirmgenerierung für interaktive Verarbeitung

Syntax-Beschreibung - Syntax 2

Diese Syntax wird benutzt, um eine Rich-GUI-Eingabe/Ausgabeverarbeitung mittels eines Objekts des Typs Adapter auszuführen, das aus einem Seiten-Layout angelegt wurde, welches mit Natural for Ajax oder einem ähnlichen Tool erstellt wurde.

Operanden-Definitionstabelle:

Operand Possible Structure Possible Formats Referencing Permitted Dynamic Definition
operand6 C S       A                         yes no
operand7   S A G   A U N P I F B D T L       yes yes
operand11   S               I4                 yes yes

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
USING operand6
Adapter-Name:

Ruft eine Adapter-Definition auf, die vorher in einer Natural-Systemdatei gespeichert wurde. Siehe auch Adapter im Leitfaden zur Programmierung.

Der Adapter-Name (operand6) kann eine 1 bis 8 Zeichen umfassende, alphanumerische Konstante oder Benutzervariable sein. Wenn eine Variable benutzt wird, muss sie vorher definiert worden sein.

Der Adapter-Name kann ein Kaufmännisches Und (&) enthalten; zur Ausführungszeit wird dieses Zeichen durch den aktuellen Wert der Natural-Systemvariablen *LANGUAGE ersetzt. Diese Funktion gibt es aus historischen Gründen. Wenn Sie mehrsprachige Adapter benötigen, machen Sie sich die Funktionalität des externen Rendering-Systems (zum Beispiel: Natural for Ajax) zunutze.

Anmerkung:
Bei neuen Anwendungen muss die &-Funktion nicht mehrsprachig sein. Seiten, die zum Beispiel mit Natural for Ajax gestaltet wurden, können mehrsprachige Informationen als Bestandteil des Layout-Designs aufnehmen. Siehe Multi Language Management in der Natural for Ajax-Dokumentation.

operand7
Feld-Spezifikation:

Eine Liste der Datenbank-Felder und/oder Benutzervariablen, die alle vorher definiert sein müssen. Die Felder müssen in Anzahl, Reihenfolge, Format, Länge und (für Arrays) der Anzahl der Ausprägungen mit den Feldern im referenzierten Adapter übereinstimmen; sonst tritt ein Fehler auf.

Wenn der Inhalt eines Datenbank-Feldes als Ergebnis der PROCESS PAGE-Verarbeitung geändert wird, wird nur der Wert geändert, wie er in der Data Area abgelegt ist. Um den Inhalt der Datenbank zu ändern, müssen die passenden UPDATE-/STORE-Statements für die Datenbank benutzt werden.

Siehe PROCESS PAGE USING mit im Programm definierten Feldern.

NO PARAMETER
NO PARAMETER-Option:

Siehe PROCESS PAGE USING ohne Parameter-Liste.

GIVING operand11
GIVING-Klausel:

operand11 enthält den Natural-Fehler, wenn die Anfrage nicht ausgeführt werden konnte.

Anmerkung:
Die GIVING-Klausel unterbricht die allgemeine Natural-Fehlerbehandlung, wenn ein Fehler auftritt, während das Adapter-Objekt aktiviert oder ausgeführt wird. Anstatt die Natural-Module zurückzuverfolgen, um eine ON ERROR-Klausel zu finden, wird der Natural-Fehlercode an eine Variable (operand11) übergeben, und die Ausführung wird mit dem nächsten Statement fortgesetzt.

PROCESS PAGE USING ohne Parameter-Liste

Die folgenden Anforderungen müssen erfüllt sein, wenn PROCESS PAGE USING ohne Parameter-Liste benutzt wird:

  • Der Adapter-Name (operand6) muss als eine alphanumerische Konstante (bis zu 8 Zeichen) angegeben werden.

  • Der auf diese Art benutzte Adapter muss vor der Kompilierung des Programms erstellt worden sein, welches den Adapter referenziert.

  • Die Namen der zu verarbeitenden Felder werden dynamisch aus der Adapter-Quelldefinition zur Kompilierungszeit übernommen. Die sowohl im Programm als auch im Adapter verwendeten Feldnamen müssen identisch sein.

  • Alle im PROCESS PAGE-Statement zu referenzierenden Felder müssen an diesem Punkt aufrufbar sein.

  • Im Structured Mode müssen die Felder vorher definiert worden sein (Datenbank-Felder müssen für Verarbeitungsschleifen oder Views (Datenbanksichten) ordnungsgemäß referenziert werden).

  • Wenn das Seiten-Layout geändert wird, müssen die den Adapter verwendenden Programme nicht neu katalogisiert werden. Wenn aber die Array-Strukturen oder Namen, Formate/Längen der Felder geändert werden, oder wenn Felder zum Adapter hinzugefügt oder aus ihm gelöscht werden, müssen die den Adapter benutzenden Programme neu katalogisiert werden.

  • Der Adapter-Quellcode muss zur Programm-Kompilierung zur Verfügung stehen; sonst kann das PROCESS PAGE USING-Statement nicht kompiliert werden.

Anmerkung:
Wenn Sie das Programm kompilieren möchten, auch wenn der Adapter noch nicht zur Verfügung steht, geben Sie NO PARAMETER an. Das PROCESS PAGE USING-Statement kann dann kompiliert werden, auch wenn der Adapter noch nicht verfügbar ist.

PROCESS PAGE USING mit im Programm definierten Feldern

Wenn Sie die Namen der Felder angeben, die innerhalb des Programms (operand7) verarbeitet werden sollen, ist es möglich, dass Sie es so einrichten können, dass die Namen der Felder im Programm sich von den Namen der Felder im Adapter unterscheiden.

Die Reihenfolge der Felder im Programm muss mit der Reihenfolge im Adapter übereinstimmen. Wenn Sie Natural-Maps als Adapter-Objekte benutzen, beachten Sie, dass der Map-Editor die Felder so sortiert, wie in der Map angegeben, und zwar in alphabetischer Reihenfolge nach Feldnamen. Weitere Informationen siehe Masken-Editor (Map Editor) in der Editoren-Dokumentation.

Das Programmeditorzeilenkommando .I(adaptername) kann benutzt werden, um ein vollständiges PROCESS PAGE USING-Statement mit einer Parameter-Liste zu erhalten, die aus den im angegebenen Adapter definierten Feldern abstammt.

Wenn das Layout des Adapters geändert wird, braucht das den Adapter verwendende Programm nicht neu katalogisiert zu werden. Wenn aber Feldnamen, Feldformate/längen oder Array-Strukturen im Adapter geändert werden, oder wenn Felder zum Adapter hinzugefügt oder aus ihm gelöscht werden, dann muss das Programm neu katalogisiert werden.

Zur Ausführungszeit findet eine Überprüfung statt, um sicherzustellen, dass das im Programm angegebene Format und die im Programm angegebene Länge der Felder mit den Feldern übereinstimmt, die im Adapter spezifiziert sind. Falls die beiden Layouts nicht miteinander übereinstimmen, wird eine Fehlermeldung erzeugt.

Syntax 3 - PROCESS PAGE UPDATE

PROCESS PAGE UPDATE
  

FULL
DATA

[event-option] [GIVING operand11]

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Gehört zur Funktionsgruppe: Bildschirmgenerierung für interaktive Verarbeitung

Syntax-Beschreibung - Syntax 3

Das PROCESS PAGE UPDATE-Statement wird benutzt, um zu einem vorangegangenen PROCESS PAGE-Statement zurückzukehren und es neu auszuführen. Es wird im Allgemeinen benutzt, um von der Ereignisverarbeitung zurückzukehren, da die Dateneingabe-Verarbeitung des vorangegangenen PROCESS PAGE-Statements unvollständig war.

Anmerkung:
Es kann kein INPUT-, WRITE-, PRINT- oder DISPLAY-Statement zwischen einem PROCESS PAGE- und seinem entsprechenden PROCESS PAGE UPDATE-Statement ausgeführt werden.

Wenn es erst einmal ausgeführt ist, repositioniert das PROCESS PAGE UPDATE-Statement den Programm-Status bezüglich Subroutine, Sonderbedingungen und die Schleifenverarbeitung, wie sie existierten, als das PROCESS PAGE-Statement ausgeführt wurde (solange der Status des PROCESS PAGE-Statements noch aktiv ist). Wenn die Schleife nach der Ausführung des PROCESS PAGE-Statements initialisiert wurde und sich das PROCESS PAGE UPDATE-Statement innerhalb dieser Schleife befindet, wird die Schleife unterbrochen und dann neu gestartet, nachdem das PROCESS PAGE-Statement als infolge eines PROCESS PAGE UPDATE-Statements neu verarbeitet worden ist.

Wenn eine Hierarchie von Subroutinen nach der Ausführung des PROCESS PAGE-Statements aufgerufen wurde und wenn das PROCESS PAGE UPDATE-Statement innerhalb einer Subroutine ausgeführt wird, verfolgt Natural automatisch alle Subroutinen zurück und setzt den Programm-Status auf den des PROCESS PAGE-Statements zurück.

Es ist aber nicht möglich, es so einzurichten, dass ein PROCESS PAGE-Statement in einer Schleife, einer Subroutine oder einem speziellen Bedingungsblock positioniert wird, und dann das PROCESS PAGE UPDATE-Statement auszuführen, wenn der Status, unter dem das PROCESS PAGE-Statement ausgeführt wurde, bereits beendet worden ist. Eine Fehlermeldung wird erzeugt und die Programmausführung beendet, wenn eine solche Fehlerbedingung festgestellt wird.

Operanden-Definitionstabelle:

Operand Possible Structure Possible Formats Referencing Permitted Dynamic Definition
operand11   S               I4                 yes yes

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
FULL
FULL-Option:

Wenn Sie die FULL-Option in einem PROCESS PAGE UPDATE-Statement angeben, wird das entsprechende PROCESS PAGE-Statement vollständig neu ausgeführt:

  • Mit einem normalen PROCESS PAGE UPDATE-Statement (ohne FULL-Option) wird der Inhalt von Variablen, die zwischen dem PROCESS PAGE- und dem PROCESS PAGE UPDATE-Statement geändert wurden, nicht angezeigt; das heisst, alle Variablen auf dem Bildschirm zeigen den Inhalt an, den sie hatten, als das PROCESS PAGE-Statement ursprünglich ausgeführt wurde.

  • Mit einem PROCESS PAGE UPDATE FULL-Statement werden alle Änderungen, die nach der anfänglichen Ausführung des PROCESS PAGE-Statements erfolgt sind, auf das PROCESS PAGE-Statement angewandt, wenn es neu ausgeführt wird; das heisst, alle Variablen auf dem Bildschirm enthalten die Werte, die sie hatten, als das PROCESS PAGE UPDATE-Statement ausgeführt wurde.

Kennzeichnend für das PROCESS PAGE UPDATE FULL-Statement ist, dass der Status der Attributkontrollvariablen auf NOT MODIFIED zurückgesetzt wird. Dies ist bei einem gewöhnlichen PROCESS PAGE UPDATE-Statement nicht der Fall. Sie können die MODIFIED-Option benutzen, um zu prüfen, ob einer Attributkontrollvariablen der Status MODIFIED zugewiesen worden ist.

DATA
DATA-Option:

Die DATA-Option verhält sich wie die FULL-Option, jedoch mit der Ausnahme, dass der MODIFIED-Status der Kontrollvariablen nicht zurückgesetzt wird.

event-option
EVENT-Option:

Siehe EVENT-Option weiter unten.

GIVING (operand11)
GIVING-Klausel:

operand11 enthält den Natural-Fehler, wenn die Anfrage nicht durchgeführt werden konnte.

Beispiel eines Benutzerprogrammfragments:

PROCESS PAGE USING "HELLOW-A"
*
/*( DEFINE EVENT HANDLER
DECIDE ON FIRST *PAGE-EVENT
 VALUE U'nat:page.end'
  /* Page closed.
  IGNORE
 VALUE U'onHelloWorld'
  COMPRESS "HELLO WORLD" YOURNAME INTO RESULT
  PROCESS PAGE UPDATE FULL
 NONE VALUE
  /* Unhandled events.
  PROCESS PAGE UPDATE
END-DECIDE
/*) END-HANDLER

EVENT-Option

AND SEND EVENT operand8
  [WITH PARAMETERS
   {[NAME] operand9 [VALUE] operand10 [

(EMU=value)
(EM=value)

]}...
  END-PARAMETERS]

Mit dieser Option können Sie das externe E/A-System veranlassen, Sonderfunktionen zu starten. Diese Funktionen sind Bestandteil des externen E/A-Systems, oder implementieren Sonderfunktionen im Hinblick auf die Ausgabeverarbeitung, wie z.B. Fokus setzen, Meldungsfelder anzeigen usw.

Operanden-Definitionstabelle:

Operand Possible Structure Possible Formats Referencing Permitted Dynamic Definition
operand8 C S       A U                       yes no
operand9 C S       A U                       yes no
operand10 C S A     A U N P I F B D T L       yes yes

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
AND SEND EVENT operand8
Vom externen E/A-System angefordertes Ereignis:

Abhängig von der Implementierung des externen Ein-/Ausgabesystems sind Ereignisse verfügbar, siehe Sending Events to the User Interface in der Natural for Ajax-Dokumentation.

WITH PARAMETERS
WITH PARAMETERS Clause:

With this clause, you can specify the following:

NAME operand9
Externer Datenfeld-Name:

operand9 enthält den externen Namen der Datenfelder, in die/aus denen operand10 übertragen wird.

VALUE operand10
Natural-Datenfelder:

operand10 enthält die Natural-Datenfelder, die übertragen werden.

EMU=
EM=

Editiermaske:

Bei der Datenübertragung verwendete Editiermaske.

Einzelheiten zu Editiermasken siehe Session-Parameter EM in der Parameter-Referenz.

Einzelheiten zu Unicode-Editiermasken siehe Session-Parameter EMU in der Parameter-Referenz.

END-PARAMETERS
Ende der WITH PARAMETERS-Klausel:

The Natural reserved word END-PARAMETERS must be used to end the WITH PARAMETERS clause.

Das für Natural reservierte Wort END-PARAMETERS muss benutzt werden, um die WITH PARAMETERS-Klausel zu beenden.

Syntax 4 - PROCESS PAGE MODAL

PROCESS PAGE MODAL
   statement ...
END-PROCESS

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Verwandtes Statement: PROCESS PAGE

Gehört zur Funktionsgruppe Bildschirmgenerierung für interaktive Verarbeitung.

Syntax-Beschreibung - Syntax 4

Das PROCESS PAGE MODAL-Statement wird benutzt, um einen Verarbeitungsblock zu initialisieren und die Anzeigedauer eines modalen Rich-GUI-Fensters zu steuern.

Mit der Verarbeitung des PROCESS PAGE MODAL-Statementblocks werden folgende Aktionen ausgeführt:

  • Zuerst werden Daten vom Report 0, die noch nicht angezeigt worden sind, angezeigt;

  • die Systemvariable *PAGE-LEVEL wird inkrementiert;

  • das Öffnen einer modalen Seite wird vorbereitet. Das physische Öffnen der modalen Seite wird mit dem nächsten Statement PROCESS PAGE USING operand6 WITH ausgeführt, wobei operand6 der Name des zu verwendenden Adapters ist.

Beim Verlassen des PROCESS PAGE MODAL-Statementblocks werden folgende Aktionen ausgeführt:

  • Falls eine modale Seite für diese Ebene geöffnet wurde, wird das Schließen der modalen Seite vorbereitet. Das physische Schließen der modalen Seite erfolgt mit dem nächsten PROCESS PAGE UPDATE [FULL]-Statement;

  • die Systemvariable *PAGE-LEVEL wird dekrementiert, und die Systemvariable *PAGE-EVENT wird auf den Wert zurückgesetzt, den sie hatte, bevor mit der Abarbeitung des Statement-Blocks begonnen wurde;

  • ein nat:page.default-Ereignis wird in dem Programm ausgelöst, das die modale Seite geöffnet hat.

Anmerkung:
Zwischen einem PROCESS PAGE MODAL-Statement und seinem entsprechenden END-PROCESS-Statement kann kein sich auf Report 0 beziehendes PRINT-, WRITE-, INPUT- oder DISPLAY-Statement ausgeführt werden.

Das PROCESS PAGE MODAL-Statement ist im Batch-Betrieb nicht gültig.

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
statement
Auszuführende Statements:

Anstelle eines Statements müssen Sie in Abhängigkeit von der Situation eines oder mehrere passende Statements angeben. Wenn Sie kein spezifisches Statement angeben möchten, können Sie das IGNORE-Statement angeben.

END-PROCESS
Ende des PROCESS PAGE MODAL-Statements:

Das für Natural reservierte Wort END-PROCESS muss benutzt werden, um das PROCESS PAGE MODAL-Statement zu beenden.

Beispiel:

* Name: First Demo/Open modal! 
*
PROCESS PAGE USING "EMPTY-A"
*
/*( DEFINE EVENT HANDLER
DECIDE ON FIRST *PAGE-EVENT
  VALUE U'nat:page.end', U'onClose'
    /* Page closed.
    IGNORE
  VALUE U'onNextLevel'
    PROCESS PAGE MODAL
      FETCH RETURN "EMPTY-P"
    END-PROCESS
    PROCESS PAGE UPDATE
  NONE VALUE
    PROCESS PAGE UPDATE
END-DECIDE
/*) END-HANDLER
END  

Beispiele

Weitere Beispiele zur Verwendung des PROCESS PAGE-Statements sind in der Library SYSEXNJX enthalten.