Dieser Abschnitt beschreibt die zwei von Natural unterstützten Programmiermodi.
Anmerkung
Generell wird empfohlen, ausschließlich im Structured Mode zu programmieren, weil
dieser Programmiermodus übersichtlicher strukturierte Anwendungen ergibt. Deshalb gelten die
Erläuterungen und Beispiele in diesem Leitfaden zur Programmierung
normalerweise nur für den Structured Mode.
Die folgenden Themen werden behandelt:
Natural bietet zwei Formen der Programmierung.
Anmerkung
Grundsätzlich empfiehlt es sich, ausschließlich im Structured Mode zu arbeiten, um
klar strukturierte Anwendungen zu erhalten.
Der Reporting Mode eignet sich nur für die Erstellung einfacher Reports und Programme, die keine komplexe Daten- und Programmstruktur erfordern. (Falls Sie sich entschließen sollten, ein Programm im Reporting Mode zu schreiben, sollten Sie bedenken, dass kleine Programme schnell umfangreicher und komplexer werden können.)
Bitte achten Sie darauf, dass manche Natural-Statements nur im Reporting Mode verfügbar sind, wohingegen andere eine spezifische Struktur aufweisen, wenn Sie im Reporting Mode benutzt werden. Eine Übersicht der Statements, die im Reporting Mode verwendet werden können, entnehmen Sie dem Abschnitt Statements im Reporting Mode in der Statements-Dokumentation.
Der Structured Mode ist für komplexe Anwendungen gedacht, bei denen es auf eine klare und sinnvoll gegliederte Programmstruktur ankommt. Wesentliche Vorteile des Structured Mode sind:
Die Programme müssen strukturierter geschrieben werden und sind daher leichter zu lesen und folglich auch leichter zu pflegen.
Da alle in einem Programm verwendeten Felder an einer zentralen Stelle definiert werden müssen (und nicht, wie im Reporting Mode, über das ganze Programm verstreut sein dürfen), wird der Überblick über die verwendeten Daten erheblich erleichtert.
Darüber hinaus zwingt der Structured Mode zu einer genaueren Anwendungsplanung, bevor es an das eigentliche Programmieren geht. Viele Fehler und Unzulänglichkeiten bei der Programmierung werden dadurch von vorneherein vermieden.
Eine Übersicht der im Structured Mode zu benutzenden Statements entnehmen Sie dem Abschnitt Statements nach Funktionen in der Statements-Dokumentation.
Der Standardprogrammiermodus wird vom Natural-Administrator mit dem Profilparameter
SM festgelegt.
Weitere Informationen zum Profil- und Session-Parameter SM siehe
Abschnitt SM - Programmierung im Structured
Mode in der
Parameter-Referenz-Dokumentation.
Sie können den vorgegebenen Modus mit dem Systemkommando GLOBALS und dem
Session-Parameter SM ändern:
| Structured Mode: | GLOBALS SM=ON |
|---|---|
| Reporting Mode: | GLOBALS SM=OFF |
Weitere Informationen, wie Sie den Programmiermodus ändern können, finden Sie in folgenden Dokumenten: Programmiermodus in Natural benutzen und SM - Programmierung im Structured Mode in der Parameter-Referenz-Dokumentation.
Die wichtigsten funktionalen Unterschiede zwischen Reporting Mode und Structured Mode lassen sich wie folgt zusammenfassen:
Anmerkung
Ausführliche Informationen zu funktionalen Unterschieden zwischen den zwei Modi
finden Sie in der Statements-Dokumentation. Sie enthält
verschiedene Syntax-Diagramme und Syntax-Elementbeschreibungen für jedes modusabhängig
Statement. Eine Funktionsübersicht der im Reporting Mode zu benutzenden Statements finden
Sie im Abschnitt Reporting Mode-Statements in der
Statements-Dokumentation.
| Reporting Mode: |
|
|---|---|
| Structured Mode: |
Jede Schleife oder logische Verarbeitungsbedingung muss ausdrücklich mit
einem entsprechenden |
Die beiden folgenden Beispiele veranschaulichen die je nach Programmiermodus unterschiedliche Konstruktion von Verarbeitungsschleifen und logischen Bedingungen.
Im Reporting-Mode-Beispiel werden die Statements DO und DOEND verwendet, um den Statement-Block
einzugrenzen, der an die AT END OF
DATA-Bedingung geknüpft ist.
READ EMPLOYEES BY PERSONNEL-ID
DISPLAY NAME BIRTH
AT END OF DATA
DO
SKIP 2
WRITE / 'LAST SELECTED:' OLD(NAME)
DOEND
END
Das END-Statement beendet
sämtliche aktiven Verarbeitungsschleifen.
Im Structured-Mode-Beispiel wird ein END-ENDDATA-Statement verwendet, um
die AT END OF DATA-Bedingung
zu beenden, sowie ein END-READ-Statement, um die READ-Schleife zu beenden. Das Ergebnis
ist ein deutlicher strukturiertes Programm, in dem Sie sofort sehen können, wo welche
Konstruktion anfängt und aufhört:
DEFINE DATA LOCAL
1 MYVIEW VIEW OF EMPLOYEES
2 PERSONNEL-ID
2 NAME
2 BIRTH
END-DEFINE
READ MYVIEW BY PERSONNEL-ID
DISPLAY NAME BIRTH
AT END OF DATA
SKIP 2
WRITE / 'LAST SELECTED:' OLD(NAME)
END-ENDDATA
END-READ
END
Zum Beenden einer Verarbeitungsschleife können Sie im Reporting Mode die Statements
END, LOOP (bzw. CLOSE LOOP) oder
SORT verwenden.
Mit dem LOOP-Statement können Sie mehrere Schleifen gleichzeitig
schließen. Mit dem END-Statement können Sie sämtliche noch nicht beendeten
Schleifen schließen. Diese Möglichkeit, mehrere Schleifen mit einem einzigen Statement
zu beenden, stellt einen grundlegenden Unterschied zum Structured Mode dar.
Ein SORT-Statement beendet alle Schleifen und initiiert gleichzeitig eine
neue Schleife.
FIND ... FIND ... ... ... LOOP /* closes inner FIND loop LOOP /* closes outer FIND loop ... ...
FIND ... FIND ... ... ... END /* closes all loops and ends processing
FIND ... FIND ... ... ... SORT ... /* closes all loops, initiates loop ... END /* closes SORT loop and ends processing
Im Structured Mode gibt es zum Beenden jeder Verarbeitungsschleife ein bestimmtes
Statement. Mit dem END-Statement
werden keine Schleifen geschlossen. Bei Verwendung des SORT-Statements müssen Sie vorher ein
END-ALL-Statement verwenden, sowie zum Beenden der
SORT-Schleife ein END-SORT-Statement.
FIND ... FIND ... ... ... END-FIND /* closes inner FIND loop END-FIND /* closes outer FIND loop ...
READ ... AT END OF DATA ... END-ENDDATA ... END-READ /* closes READ loop ... ... END
READ ... FIND ... ... ... END-ALL /* closes all loops SORT /* opens loop ... ... END-SORT /* closes SORT loop END
Im Reporting Mode können Datenbankfelder benutzt werden, ohne dass diese vorher in
einem DEFINE DATA-Statement
definiert werden müssen; außerdem können Benutzervariablen an jeder Stelle eines
Programms, d.h. über das ganze Programm verstreut, definiert werden.
Im Structured Mode dagegen müssen alle verwendeten Datenelemente an einer
zentralen Stelle (entweder im DEFINE DATA-Statement am Anfang des Programms
oder in einer externen Data Area) definiert
werden.
Im Reporting Mode ist es möglich, Datenbankfelder oder DDMs zu benutzen, ohne diese in einer Data Area definiert zu haben.

Im Structured Mode dagegen muss jedes Datenbankfeld, das benutzt werden soll, in einem
DEFINE DATA-Statement
angegeben werden (wie in den Abschnitten Felder definieren und Datenbankzugriffe
beschrieben).
