Der Natural Optimizer Compiler ist besonders wirkungsvoll bei Programmen, die eine beträchtliche Menge an Datenmanipulationen enthalten, wie z. B. Berechnung, Transfer und Verarbeitung logischer Bedingungen.
Dieser Abschnitt gibt eine Übersicht über die Statements, die in Maschinencode kompiliert werden, und über die Statements, die nicht kompiliert werden.
Anmerkung
Die Optionen, die der Natural Optimizer Compiler zur Verfügung stellt, können nicht
verwendet werden, um Statements festzulegen, die optimiert werden sollen, wie in den
Optimizer-Optionen
beschrieben.
Der Natural Optimizer Compiler kompiliert die folgenden Statements in Maschinencode:
EXAMINE, mit
folgenden Klauseln:
DIRECTION (nur mit Konstantenwerten, d.h.
FORWARD oder BACKWARD),
GIVING
NUMBER, GIVING
POSITION (auch gleichzeitig),
EXAMINE
.. FOR <fld1> REPLACE <fld2>, wenn das
EXAMINE-Feld den Typ (Alpha/Binär) hat und die
Search/Replace-Felder die gleiche Länge im Bereich (1:256) haben.
Beispiel:
EXAMINE #TEXT FOR #A GIVING NUMBER #NMB1 EXAMINE #TEXT FOR #A GIVING POSITION #POSEX5 EXAMINE #TEXT FOR #A GIVING LENGTH #LGHEX6
Einschränkungen:
GIVING
INDEX wird nicht optimiert.
operand1 und
operand4 können feste
Array-Ausprägungen sein, d.h. es sind keine Bereiche zulässig, zum
Beispiel:
EXAMINE #A(#J) FOR #B(#K)
Der Natural Optimizer Compiler kompiliert nicht die folgenden Statements:
Ein-/Ausgabe-(I/O-)Statements (DISPLAY, WRITE,
READ/WRITE WORK FILE).
Komplexe spezielle Statements, zum Beispiel SEPARATE.
Statements, die die Steuerung an ein anderes Objekt übergeben, zum Beispiel
FETCH, PERFORM, CALLNAT,
CALL.
Statements, die einen Datenbankzugriff ausführen (READ,
FIND, HISTOGRAM, GET, UPDATE,
DELETE, END TRANSACTION, BACKOUT
TRANSACTION)