Wenn der Natural Optimizer aktiviert wurde, können Sie Prüfungen angeben, indem Sie die in diesem Abschnitt erklärten Optionen einstellen.
Die Optionen können nicht benutzt werden, um Statements anzugeben, die optimiert werden sollen.
Dieser Abschnitt behandelt folgende Themen:
Die folgende Tabelle enthält eine Liste mit den Beschreibungen der Natural Optimizer Compiler-Optionen. Unterstrichene Werte sind Standardwerte (Default Values), d.h. dieser Wert wird angenommen, wenn die Option nicht vorhanden ist.
Eine Natural Optimizer Compiler-Option besteht aus einer
Zeichenkette, die von Klammern oder einzelnen Ausrufungszeichen umschlossen ist
(Ausnahme: im Natural-Statement OPTIONS
), wobei die Optionen
durch Kommas voneinander abgetrennt sind. Einige Optionen haben Werte, während
die bloße Existenz einiger Optionen in der Optionszeichenfolge ausreicht, um
die Umgebung zu ändern.
Es gelten folgende Regeln:
Optionale Klauseln sind von rechteckigen Klammern [
]
umgeben.
Wahlmöglichkeiten sind von geschweiften Klammern {
}
umgeben.
Wahlmöglichkeiten sind voneinander durch senkrechte Linien
|
abgetrennt.
Es kann nur eine dieser Wahlmöglichkeiten angegeben werden.
ON
ist gleichbedeutend mit Y
(Yes),
OFF
ist gleichbedeutend mit N
(No).
Optionen, die ohne die optionale Klausel ON
oder
OFF
(falls zutreffend) oder deren Äquivalenzwerte angegeben
werden, werden so interpretiert, als ob sie auf ON
gesetzt sind.
Beispiel: OVFLW
ist identisch zu OVFLW=ON
.
Mit Ausnahme der Option OFF
gelten alle beim
Optimieren angegebenen Optionsschalter (als ob ON
angegeben wäre)
und der Standardwert. Beispiel: INDEX
ist identisch zu
ON,INDEX
.
Option | Erklärung |
---|---|
ABEND |
Zwingt den Natural Optimizer Compiler, Code zu
generieren, der bewirkt, dass Natural sofort abnormal beendet wird, wenn der
Natural Optimizer Compiler während des Kompilierens die Option
ABEND antrifft. Die Option muss selbständig erscheinen, sonst wird
sie ignoriert. Andere Parameter werden durch diese Option nicht geändert oder
zurückgesetzt. Diese Option kann für Debugging-Zwecke nützlich sein.
|
CACHE[={ON| OFF |Y|N}] |
Schaltet die Variablen-Zwischenspeicherung (Variable Caching) ein oder aus. Siehe auch Variablen-Zwischenspeicherung (Caching) im Abschnitt Performance-Überlegungen. |
CPU= /370 |
Gibt die Ziel-Architektur an. |
DIGTCHCK[={ON| OFF |Y|N}] |
Gibt an, ob die Ziffern
von gepackten oder ungepackten Feldern (Formate P und N) geprüft werden sollen,
wenn sie in eine andere Variable gleichen Typs und gleicher Genauigkeit
verschoben werden. Wenn beispielsweise DIGTCHCK auf
ON gesetzt ist und eine ungepackte Variable (Format N) eine
ungültige Ziffer enthält, z.B. X'FA' , dann generiert das
Verschieben in eine andere ungepackte numerische Variable gleichen Typs den
Fehler S0C7 (oder NAT0954 ). Wenn
DIGTCHCK auf OFF gesetzt ist, wird kein Fehler
generiert, aber der generierte Code ist viel schneller.
|
ERRDUMP[={ON| OFF |Y|N}] |
Gibt an, ob der Natural Optimizer Compiler abbrechen soll, wenn während der Kompilierungsphase ein Fehler festgestellt wird. Dies ist nützlich, um am Natural Optimizer Compiler selbst eine Fehlerbehebung (Debugging) durchzuführen. |
INDEX[={ON| OFF |Y|N}] |
Gibt an, ob Array-Indizes auf Out-of-Bound-Werte im
optimierten Code überprüft werden.
Siehe auch die folgende Anmerkung. |
INDX[={ON| OFF |Y|N}] |
Gibt an, ob Array-Indizes auf Out-of-Bound-Werte im
optimierten Code überprüft werden.
Zusätzlich wird Siehe auch die folgende Anmerkung. |
IO[={ON| OFF|Y|N}] |
Nur aus Kompatibilitätsgründen vorhanden. Keine Wirkung. |
LOOPS[={ON| OFF |Y|N}] |
Nur aus Kompatibilitätsgründen vorhanden. Keine Wirkung. |
MIX[={ON| OFF |Y|N}] |
Nur aus Kompatibilitätsgründen vorhanden. Keine Wirkung. |
NODBG [={ON|
OFF|Y|N}] |
Wenn NODBG=OFF/N (Standardeinstellung)
gesetzt ist, kann der
Natural
Debugger benutzt werden, um Fehler im optimierten Code zu beheben
(dann wird zusätzlicher Code generiert, um zu prüfen, ob der Test-Modus
eingeschaltet worden ist (TEST ON ).
Bei Siehe auch |
NOSGNTR[={ON| OFF |Y|N}] |
Gilt nur bei gepackten Zahlen.
Bei Bei |
ON |
Schaltet die Optimierung ein.
Wenn keine zusätzliche Option angegeben wird, gilt der
für jede Option definierte Standardwert. Wie in der folgenden Anmerkung
mitgeteilt, kann dies unerwünschte Ergebnisse zur Folge haben. Dies gilt
insbesondere für die Optionen |
OFF |
Schaltet die Optimierung aus. |
OPTLEV={ 2|3} |
Gibt die Optimierungsstufe an - entspricht in etwa der
Anzahl der Durchläufe durch das Programm.
|
OVFLW[={ON| OFF |Y|N}] |
Gibt an, ob Überlaufprüfungen bei arithmetischen
Operationen oder Zuweisungen in den optimierten Code aufgenommen werden.
Siehe auch die folgende Anmerkung. |
PGEN[={ON| OFF |Y|N}] |
Gibt an, ob eine Disassemblierung des optimierten Code ausgegeben werden soll. Mit dieser Option werden auch alle anderen Nachverfolgungsoptionen aktiviert, siehe PGEN Option im folgenden Abschnitt. |
RANGE[={ON| OFF |Y|N}] |
Gibt an, ob bei Operationen mit Arrays
Bereichsprüfungen durchgeführt werden. Dadurch wird sichergestellt, dass
Array-Bereiche eine gleiche Anzahl an Elementen in allen entsprechenden
Dimensionen aller Operanden haben.
Siehe auch die folgende Anmerkung. |
SIGNCHCK[={
ON|OFF|Y|N}] |
Gibt an, ob das Ergebnis einer Multiplikation mit
einem gepackten oder nicht gepackten Multiplikator auf eine negative Null
geprüft werden soll. Wenn Null mit einer negativen Zahl multipliziert wird,
generiert die Maschineninstruktion MP ein negatives Null-Ergebnis. Wenn
SIGNCHCK auf ON gesetzt ist, wird diese negative Null
in eine positive Null umgewandelt. Die Prüfung auf eine negative Null erfolgt
bei jeder Multiplikation mit einem gepackten oder nicht gepackten
Multiplikator.
|
TRENTRY |
Nur für den internen Gebrauch durch Software AG bestimmt. Die Einstellung dieses Parameters nicht ändern. |
UNICC |
Gibt an, ob optimierter Code für
IF - und DECIDE -Statements mit Unicode-Operanden
generiert wird, siehe UNICC
Option im folgenden Abschnitt.
|
ZD [={
ON|OFF|Y|N}] |
Gibt an, ob Divisoren auf Null geprüft werden sollen.
Ist diese Option angegeben, dann wird Code eingefügt,
damit sich das Programm gemäß dem Natural-Profilparameter
Ist diese Option nicht angegeben, tritt der
Natural-Fehler Siehe auch ZD - Division durch Null in der Natural Parameter-Referenz-Dokumentation. |
Anmerkung zu INDEX, INDX, OVFLW und RANGE
Wenn die Option INDEX
, INDX
,
OVFLW
oder RANGE
gesetzt ist, werden zusätzliche
Instruktionen zu dem generierten Code hinzugefügt, um Datenüberlauf- und
Index-außerhalb-Bereich-Situationen zu entdecken, falls solche während der
Programmausführung auftreten sollten. Zwar vergrößert die Benutzung dieser
Optionen den generierten Code, sie wird aber empfohlen, um sicherzustellen,
dass fehlerhafte Programme aufgespürt werden und nicht zu unvorhersehbaren
Ergebnissen, Speicherbeschädigungen oder abnormalen Programmabbrüchen führen
können.
Folgende Themen werden behandelt:
DEFINE DATA LOCAL ... 1 P1 (P1/9) ... 1 P3 (P3/9) ... 1 I (I4) 1 J (I4) 1 K (I4) 1 L (I4) END-DEFINE ... P1(I:J) := P3(K:L) ... END
Bei INDX=ON
oder INDEX=ON
wird Code
generiert, um zu überprüfen, dass I
, J
,
K
und L
innerhalb der für P1
bzw.
P3
definierten Bereiche sind.
Bei INDX=ON
oder RANGE=ON
wird Code
generiert, um zu überprüfen, dass I:J
und K:L
Bereiche gleicher Länge bezeichnen.
Bei OVFLW=ON
wird Code generiert, um zu überprüfen,
dass der Wert von P3
in die entsprechende P1
-Variable
passt.
Zum Beispiel: Der Wert 100
würde hier einen
Überlauf verursachen.
Beispiel-Fehlersituation:
Wenn bei gesetztem OVFLW=OFF
eine der Ausprägungen
von P3
den Wert 100
enthält, ist der Wert, der der
entsprechenden P1
-Ausprägung zugewiesen wird, Null. Ist bei
gesetztem INDX=OFF
die Index-Variable I
Null oder
größer als 9
, werden Speicherbereiche, die nicht zu Array
P1
gehören, beschädigt. Sind diese Optionen (OVFLW
und INDX
) auf ON
gesetzt, tritt ein Natural-Fehler
auf, so wie es in der Standard-Natural-Laufzeit der Fall ist.
Für die oben angegebenen NOC-Optionen wird zusätzlicher Code generiert. Dies wird jedoch durch den Vorteil einer Prüfung gut kompensiert, die z. B. vor schwer zu entdeckenden und bereinigenden Fehlern schützt. Unentdeckte Fehler können natürlich zu unvorhersehbaren Ergebnissen führen.
Um sicherzustellen, dass die geringste Menge an Code generiert wird, und somit optimale Leistung zu erreichen, verwenden Sie:
OPT='NODBG,NOSGNTR,SIGNCHCK=OFF,ZD=OFF'
Wenden Sie diese Einstellung jedoch nur auf Objekte an, die gründlich mit dem Debugger fehlerbereinigt wurden, siehe auch Anmerkung zu INDEX, INDX, OVFLW und RANGE.
Die Option ARROPT
bestimmt den
Generierungsalgorithmus, der für Array-Zuweisungen des Typs
A(*):=scalar
verwendet werden soll.
Gültige Werte für ARROPT
:
Value | Explanation |
---|---|
ON |
Empfohlene Einstellung für Arrays mit
einem Minimum von 50 Ausprägungen.
|
OFF |
Empfohlene Einstellung für Arrays mit weniger als 50 Ausprägungen. |
Die PGEN
-Option bewirkt, dass der Natural Optimizer
Compiler den generierten Code und interne Natural-Strukturen ausgibt. Dies
ermöglicht es, Code und Strukturen zu untersuchen, z.B. zur Fehlerbehebung,
Performance-Überprüfung und für Support-Fragen.
Um die von der PGEN
-Option gelieferten Ergebnisse
interpretieren zu können, ist ein Verständnis der Arbeitsweise des
/370-Assemblers von IBM erforderlich.
Wir empfehlen Ihnen, diese Option mit Unterstützung durch Ihren lokalen Software AG-Vertreter zu benutzen.
Folgende Themen werden behandelt:
Um die PGEN
-Funktion zu benutzen, müssen Sie die
PGEN
-Option setzen, wenn Sie den Optimizer Compiler
aktivieren.
Da der Pufferbereich im Speicher vorgehalten wird, kann es
vorkommen, dass der Benutzer-Thread nicht groß genug ist, um die
Trace-Informationen aufzunehmen. In diesem Fall sollten Sie versuchen,
PGEN
nur für den Teil des Programms zu setzen, dessen Ablauf
verfolgt werden soll, zum Beispiel:
OPTIONS
MCG=(PGEN=ON,TRGPT=ON) oder OPTIONS MCG=+PGEN,TRGPT |
Schaltet die Ablaufverfolgung (Tracing) ein, einschließlich der Ablaufverfolgung der GPT-Einträge. |
OPTIONS MCG=(PGEN=OFF) oder OPTIONS MCG=-PGEN |
Schaltet die Ablaufverfolgung aus. |
Es sind verschiedene Optionen verfügbar, die den Inhalt der
Ausgabe beeinflussen. In ihrer Grundform bewirkt die PGEN
-Option
eine formatierte Auflistung von Natural-Quellcode-Zeilen und eine
Disassemblierung des entsprechenden Codes, der generiert und im Speicher
abgelegt werden soll, um von dort mittels der NOCSHOW
-Utility
extrahiert zu werden, siehe Beschreibung in
Ausgabe der
PGEN-Option.
Die Optionen TRSTMT
, TRGPT
,
TRMPT
und TRVDT
bewirken, dass Hex-Dumps von internen
Datenstrukturen, die mit jeder Zeile verbunden sind, ausgegeben werden.
Die Optionen TRBASES
und TRCACHE
bewirken, dass Informationen über Basisregister und Cache-Variablen ausgedruckt
werden.
In der folgenden Tabelle werden die Optionen beschrieben, die
bei PGEN=ON
verfügbar sind. Die Erklärung der verwendeten Syntax
finden Sie in der Einleitung zum Abschnitt Liste der Optionen
weiter oben.
Option | Erklärung |
---|---|
LPP={5|..| 55 |..|255} |
Zeilen pro Seite für die Trace-Ausgabe. Nur bei
TREXT=ON benutzt.
|
NOsrcE[={ON| OFF |Y|N}] |
Bei NOsrcE=OFF wird das
Natural-Quellcode-Statement in die Ausgabe aufgenommen.
|
TRACELEV={ 0 |..|255} |
Gibt den Trace Level an. Jedes Bit in diesem
Ein-Byte-Wert gibt einen Puffertyp für die Verfolgung an; diese Bits können mit
den Optionen TRxxx ebenfalls
eingeschaltet werden.
|
TRBASES[={ON| OFF |Y|N}] |
Gibt an, ob Basisregisterzuweisungen verfolgt werden. |
TRCACHE[={ON|
OFF|Y|N}] |
Gibt an, ob CACHE -Einträge verfolgt
werden.
|
TREXT[={ON| OFF |Y|N}] |
Bei |
TRGPT[={ON| OFF |Y|N}] |
Gibt an, ob GPT -Einträge verfolgt
werden.
|
TRMPT[=ON| OFF |Y|N}] |
Gibt an, ob MPT -Einträge verfolgt
werden.
|
TRSTMT[={ON| OFF |Y|N}] |
Gibt an, ob STMT -Einträge verfolgt
werden.
|
TRVDT[={ON| OFF |Y|N}] |
Gibt an, ob VDT -Einträge verfolgt
werden.
|
Siehe auch die folgenden Beispiele.
Es gibt zwei Stellen, an die der Natural Optimizer Compiler die
Ausgabe von PGEN
leiten kann.
Der Inhalt dieses Pufferspeichers wird jedes Mal
überschrieben, wenn eines der Kommandos CHECK
,
CAT
, STOW
oder
RUN
ausgeführt wird.
Es wird ein Systemdienstprogramm (Utility)
NOCSHOW
bereitgestellt, mit dem der Inhalt dieses Puffers
angesehen, durchsucht oder gedruckt werden kann.
Um die Utility NOCSHOW aufzurufen:
Geben Sie das Direktkommando
NOCSHOW
ein, nachdem eines der Kommandos
CHECK
, STOW
,
CAT
oder RUN
ausgeführt
worden ist, während der Natural Optimizer Compiler aktiv gewesen ist.
Im Bildschirm sind folgenden PF-Tasten belegt:
PF-Taste | Funktion |
---|---|
PF2 | Position am oberen Rand der Ausgabe. |
PF4 | Position eine Zeile zurück |
PF5 | Position eine Zeile vor |
PF6 | In Report (1) drucken |
PF7 | Position eine Seite zurück |
PF8 | Position eine Seite vorwärts |
PF9 | Via Entire Connection in Report (7) drucken |
PF10 | Nach Zeichenkette durchsuchen |
PF11 | Suche wiederholen |
Wenn TREXT=ON
angegeben ist, übergibt der Natural
Optimizer Compiler jede Ausgabezeile an den User Exit NOCPRINT
,
anstatt sie im Trace-Pufferspeicher hinzuzufügen.
Der Aufruf von NOCPRINT
erfolgt gemäß normalen
Betriebssystem-Registerkonventionen. Register 1 zeigt auf ein Vollwort, das die
Adresse der 81-Byte-Druckzeile mit ANSI-Vorschubsteuerzeichen in Position 1
enthält. Register 13 zeigt auf einen Bereich von 18*4 Bytes, der als
Speicherregister benutzt werden kann. Register 14 enthält die Rückgabeadresse
und Register 15 enthält die Eingabeadresse von NOCPRINT
.
Der User Exit NOCPRINT
kann in einer beliebigen
Sprache geschrieben sein, die die oben genannten Registerkonventionen
unterstützt. Der User Exit muss zusammen mit dem Natural Optimizer
Compiler-Nukleus mit dem Natural-Nukleus verlinkt sein.
Dieser Abschnitt enthält Hinweise und Erläuterungen, wie die mit
der PGEN
-Option erstellte Ausgabe zu interpretieren ist.
Oben in der PGEN
-Ausgabe stehen einige
disassemblierte Zeilen, die scheinbar nicht zu einer Quellcode-Zeile gehören.
Es handelt sich um die Instruktionen, aus denen der Prolog besteht, der immer
dann ausgeführt wird, wenn die Steuerung vom nicht-optimierten zum optimierten
Code übergeben wird. Permanente Basisregister werden geladen und die Steuerung
wird an den korrekten Punkt im Prolog übergeben. Siehe
Beispiel Abschnitt
A weiter unten.
Manchmal werden viele Zeilen ohne Code gedruckt. Dies bedeutet, dass dort kein Code erforderlich war oder das diese Statements von der NOC-Optimierung ausgeschlossen sind. Siehe Beispiel Abschnitt B weiter unten.
Besteht daraüber hinaus der für ein Natural-Statement generierte Code nur aus Folgendem:
BAS R14,RETH DC X'....'
so bedeutes dies eine Rückkehr zur Standardlaufzeit, weil
dieses Statement nicht von NOC optimiert werden konnte (siehe Zeile
0170
).
Wenn NODBG=OFF
(Standardeinstellung) angegeben
worden ist, wird zu Beginn eines jeden neuen Natural-Statement eine
Instruktionsfolge generiert.
BALR R9,R11 DC X'....'
Diese Instruktionsfolge setzt (im Fehlerfall) die
Zeilennummer und prüft, ob der Test-Modus eingeschaltet ist (TEST
auf ON
). Ohne diese Instruktionsfolge ist ein Debugging von
NOC-kompilierten Statements durch den Natural Debugger nicht möglich. Siehe
Beispiel Abschnitt
C weiter unten.
Manchmal ist zwischen disassemblierten Zeilen ein Zeilenumbruch vorhanden. Der Umbruch zeigt eine interne Statement-Trennung an. Dies kommt vor, weil ein einzelnes Natural-Statement oft mehrere interne (Pseudo-Code-)Statements generiert.
Die bedienten Natural-Variablen werden in den Assembler-Code eingefügt.
Die Angaben auf der rechten Seite (z.B. START
8FEC
) sind interner Art. Sie dokumentieren den Pfad, wie der Code von
den NOC-Modulen generiert wurde.
Alle Adressarten innerhalb des Codes werden aufgelöst und in
der Form =(00044)
zur Verfügung gestellt. Dies dokumentiert den
Versatz im Code, an dem die Verzweigung ausgeführt wird.
Die erste und die letzte Code-Instruktion enthält die zum
Kompilieren dieses Programms benutzte NOC-Version: 4700 8410
bedeutet NOC-Version V841.
000000 4700 8410 NOP 1040(,R8) START 8FEC 000004 5880 D354 L R8,CONST D9DC 000008 5870 D370 L R7,LOCAL D9DC 00000C 4810 6006 LH R1,6(,R6) 90A0 000010 1F60 SLR R6,R0 90BA 000012 47F1 A000 B 0(R1,R10) 90C0 000016 4DE0 B040 BAS R14,RETH RETN F0AA 00001A 0034 DC X'0034' F0C0
0010 0010 OPTIONS MCG=(PGEN,OVFLW,INDX) 0020 DEFINE DATA LOCAL 0030 1 I(I4) 0040 1 P(P7.2) 0050 1 T(P7.2) 0060 END-DEFINE 0070 * 0080 SETTIME 0090 *
0100 FOR I=1 TO 100000 00001C 0D9B BASR R9,R11 MOVE 1724A 00001E 004A DC X'004A' 17278 000020 D203 7000 8148 MVC I(4),#KST0148 97D2 000026 47F0 A044 B 68(,R10) =(00044) GOTO EF44 00002A 0D9B BASR R9,R11 ADD 1724A 00002C 006A DC X'006A' 17278 00002E BF0F 7000 ICM R0,B'1111',I BB20 000032 5A00 8148 A R0,#KST0148 1E4E 000036 0D90 BASR R9,0 F12A 000038 4710 B15C BO NAT1301 1E9E 00003C BE0F 7000 STCM R0,B'1111',I A9CC 000040 0D9B BASR R9,R11 IF 1724A 000042 007C DC X'007C' 17278 000044 BF0F 7000 ICM R0,B'1111',I BB20 000048 5900 819B C R0,#KST019B 3FDA 00004C 47D0 A054 BNH 84(,R10) =(00054) EF44 000050 47F0 A078 B 120(,R10) =(00078) GOTO EF44 0110 ADD 1.00 TO P 000054 0D9B BASR R9,R11 ADD 1724A 000056 0092 DC X'0092' 17278 000058 FA41 7004 819F AP P(5),#KST019F(2) 20A0 00005E 0D90 BASR R9,0 F12A 000060 4710 B15C BO NAT1301 1071C 000064 910D 7008 TM P+4,X'0D' 120B0 000068 4710 A070 BO 112(,R10) =(00070) 120F6 00006C 960F 7008 OI P+4,X'0F' 1210ª 0120 END-FOR 0130 * 000070 0D9B BASR R9,R11 GOTO 1724A 000072 00A4 DC X'00A4' 17278 000074 47F0 A02A B 42(,R10) =(0002A) EF44 0140 T:=*TIMD(0080) 000078 0D9B BASR R9,R11 SYFU 1724A 00007A 00AE DC X'00AE' 17278 00007C 4DE0 B0D8 BAS R14,SYSFUNC 5F1A 000080 0190 B881 DC X'0190B881' 5F28 000084 F246 7009 8190 PACK T(5),#KST0190(7) MOVE AD18 00008A 910F 700D TM T+4,X'0F' 12130 00008E 4710 A0A0 BO 160(,R10) =(000A0) 12176 000092 17EE XR R14,R14 1218E 000094 43E0 700D IC R14,T+4 12194 000098 43EE B488 IC R14,PSGNTR(R14) 121AA 00009C 42E0 700D STC R14,T+4 121B2 0000A0 F040 7009 0002 SRP T(5),2,0 ACA2 0000A6 17EE XR R14,R14 1218E 0000A8 43E0 700D IC R14,T+4 12194 0000AC 43EE B488 IC R14,PSGNTR(R14) 121AA 0000B0 42E0 700D STC R14,T+4 121B2 0150 T:=T / 10 0160 * 0000B4 0D9B BASR R9,R11 DIV 1724A 0000B6 00C0 DC X'00C0' 17278 0000B8 F864 D100 7009 ZAP OP1(7),T(5) AC60 0000BE FD61 D100 81A1 DP OP1(7),#KST01A1(2) 327A 0000C4 F844 7009 D100 ZAP T(5),OP1(5) AC60 0000CA 910D 700D TM T+4,X'0D' 120B0 0000CE 4710 A0D6 BO 214(,R10) =(000D6) 120F6 0000D2 960F 700D OI T+4,X'0F' 1210A 0170 DISPLAY 'ELAPSED TIME (S)' T 0000D6 4DE0 B040 BAS R14,RETH RETN F0AA 0000DA 00D2 DC X'00D2' F0C0 0180 END 0000DC 40D6 D7E3 F844 2000 DC X'40D6D7E3F8442000' =' OPT8à..' END 927E 0000E4 0000 0000 DC X'00000000' nf 0000E8 40D5 D6C3 F8F4 F140 DC X'40D5D6C3F8F4F140' =' NOC841 ' 92E4
Der globale Parameter ZD
beeinflusst das
Verhalten des NOC-Compiler. Siehe Beschreibung der
ZD
-Option unter Liste der Optionen
weiter oben.
Der COMPOPT
-Subparameter
PSIGNF
(siehe auch Systemkommando COMPOPT
in
der Natural-Systemkommando-Dokumentation) beeinflusst das
Verhalten, indem er erzwingt, dass positive gepackte Dezimalzahlen bei
ON
auf F und bei OFF
auf C gesetzt werden. Der
Parameter wird angewendet, wenn NOSGNTR=OFF
angegeben ist.
Siehe die Tabelle unten für gepackte Daten (Format P):
NOSGNTR=OFF |
und | PSIGNF=ON |
Alle Vorzeichen werden auf F normalisiert (Standard). |
NOSGNTR=OFF |
und | PSIGNF=OFF |
Alle Vorzeichen werden auf C normalisiert. |
NOSGNTR=ON |
Alle Vorzeichen werden so belassen, wie sie bei der letzten Operation erzeugt wurden. |
Für numerische Daten (Format N) werden die Vorzeichen immer auf F
normalisiert, unabhängig von den Einstellungen von NOSGNTR
und
PSIGNF
.