Dieses Dokument behandelt folgende Systemvariablen:
Format/Länge: | A8 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die ID der Library, in der der Benutzer zurzeit angemeldet ist.
Format/Länge: | A32 |
Inhalt änderbar | Nein |
Wenn Natural Security installiert ist, enthält diese Systemvariable den
Namen der Library , in der der Benutzer zurzeit angemeldet ist, oder, wenn der
Benutzer über einen speziellen Link angemeldet ist, den Link-Namen. Wenn
Natural Security nicht installiert ist, enthält diese Systemvariable den Namen
SYSTEM
.
Die allgemeine Option Set *APPLIC-NAME always to library
name
kann so gesetzt werden, dass
*APPLIC-NAME
immer den Namen der Library enthält,
und zwar unabhängig davon, ob der Benutzer über einen speziellen Link
angemeldet ist oder nicht. Siehe
Set
*APPLIC-NAME always to library name in der
Natural Security-Dokumentation.
Format/Länge: | A128 |
Inhalt änderbar | Ja |
Diese Systemvariable stellt einen Kommunikationsbereich dar, der es ermöglicht, Daten von außerhalb eines Bildschirmfensters zu verarbeiten.
Wenn ein Fenster aktiv ist, können normalerweise keine Daten außerhalb
des Fensters auf dem Bildschirm eingegeben werden. Wenn jedoch eine Map
*COM
als modifizierbares Feld enthält, kann ein
Benutzer in dieses Feld auch dann Daten eingeben, wenn gerade ein Fenster auf
dem Bildschirm aktiv ist.
Die weitere Verarbeitung kann dann vom Inhalt von
*COM
abhängig gemacht werden. Auf diese Weise
können Sie Benutzeroberflächen implementieren, bei denen ein Benutzer auch dann
Daten in der Kommandozeile eingeben kann, wenn ein Fenster mit eigenen
Eingabefeldern aktiv ist.
Anmerkung:
Obwohl *COM
als modifizierbares Feld in
einem INPUT
-Statement
verwendet werden kann, wird es nicht als Eingabefeld, sondern als
Systemvariable behandelt; d.h. Eingaben, die in
*COM
gemacht werden, werden genommen, wie sie
sind, ohne dass eine Eingabeverarbeitung (z.B. Umsetzung in Großbuchstaben)
erfolgt. Sobald *COM
über ein
INPUT
-Statement auf dem Bildschirm angezeigt wurde, wird mit jedem
anschließenden INPUT
- oder REINPUT
-Statement
der jeweils aktuelle Inhalt von *COM
ausgegeben.
Siehe auch die folgenden Abschnitte im Leitfaden zur Programmierung:
Format/Länge: | I4 |
Inhalt änderbar | Ja |
Diese Systemvariable enthält die Konversations-ID des aktuellen
konversationalen Remote Procedure Calls (RPC). Diese ID wird von einem
OPEN
CONVERSATION
-Statement gesetzt.
Mit einem OPEN CONVERSATION
-Statement kann ein Client einen
Server zur alleinigen Benutzung erhalten, um eine Reihe von Services
(Subprogrammen) innerhalb eines Server-Prozesses auszuführen. Diese alleinige
Benutzung wird als Konversation bezeichnet. Das OPEN
CONVERSATION
-Statement dient dazu, eine Konversation zu eröffnen und die
an ihr beteiligten Subprogramme anzugeben. Wenn ein OPEN
CONVERSATION
-Statement ausgeführt wird, weist es der Systemvariablen
*CONVID
eine eindeutige ID zu, die die
Konversation identifiziert.
Es können mehrere Konversationen gleichzeitig offen sein. Um von einer
offenen Konversation zu einer anderen zu wechseln, weisen Sie
*CONVID
die entsprechende Konversations-ID zu.
Weitere Informationen zu Natural RPC finden Sie in der Natural RPC (Remote Procedure Call)-Dokumentation.
Format/Länge: | P10 |
Inhalt änderbar | Ja |
Diese Systemvariable enthält die Anzahl, wie oft eine mit einem
FIND
-,
READ
-,
HISTOGRAM
- oder
PARSE
-Statement
initiierte Verarbeitungsschleife durchlaufen wurde.
Durch Angabe von (r)
in Klammern hinter
*COUNTER
können Sie eine bestimmte Schleife
referenzieren, wobei r
das Statement-Label bzw. die
Sourcecode-Zeilennummer des betreffenden FIND
-,
READ
-, HISTOGRAM
- oder PARSE
-Statements
ist. Wenn Sie keine bestimmte Schleife referenzieren, bezieht sich
*COUNTER
auf die gerade aktive
Verarbeitungsschleife.
Datensätze, die aufgrund einer WHERE
-Klausel nicht
weiterverarbeitet werden, werden im *COUNTER
nicht
mitgezählt. Datensätze, die aufgrund eines ACCEPT
/REJECT
-Statements nicht
weiterverarbeitet werden, werden mitgezählt.
Format/Länge: | I4 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die aktuell vom Natural-Prozess benutzte CPU-Zeit in Einheiten von 10 ms.
Diese Systemvariable enthält den Wert Null für die folgenden Betriebs- oder TPMonitor-Systeme auf Großrechnern:
z/VSE
CICS
IMS TM
openUTM
Format/Länge: | A32 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält den Namen der aktuell ausgeführten Einheit. Dies ist
im Falle des Objekttyps Function der Name der Function,
der Name der internen Subroutine, falls eine interne Subroutine ausgeführt wird,
der Name der externen Subroutine im Falle des Objekttyps Subroutine
(siehe auch Systemvariable *SUBROUTINE
),
im Falle aller anderen Objekttypen (Programm, Subprogramm, Map, Dialog
usw.) der Name des Objekts (siehe auch Systemvariable
*PROGRAM
).
Der Inhalt von *CURRENT-UNIT
liegt immer in
Großbuchstaben vor.
Format/Länge: | N3 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die Anzahl der im Natural-Stack gelagerten
Datenelemente, die dem nächsten INPUT
-Statement als
Eingabedaten zur Verfügung stehen. Ist der Stack leer, enthält
*DATA
den Wert null (0
). Ein Wert von
−1
bedeutet, dass das zuoberst im Stack gelagerte Element ein
Kommando oder der Name einer Natural-Transaktion ist.
Die Werte der Profil/Session-Parameter IA
und
ID
zum
Zeitpunkt der Ausführung des STACK
-Statements dienen dazu, den
Wert von *DATA
zu bestimmen.
Format/Länge: | L |
Inhalt änderbar | Nein |
Diese Systemvariable gibt an, ob der Natural-Programm-Editor, der Datenbereich-Editor (Data Area Editor) und der Masken-Editor (Map Editor) eingeschaltet (aktiviert) sind und benutzt werden können.
Die Systemvariable kann einen der folgenden Werte enthalten:
Wert | Beschreibung |
---|---|
TRUE | Die Editoren sind eingeschaltet (aktiviert). |
FALSE | Die Editoren sind nicht eingeschaltet (deaktiviert) und können nicht benutzt werden (Standard-Lizenz-Einstellung). |
Weitere Informationen siehe Abgeschaltete Natural-Editoren in der Editoren-Dokumentation.
Format/Länge: | N4 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die Sourcecode-Zeilennummer des Statements, das einen Fehler verursacht hat.
*ERROR-LINE
wird auf Null (0
)
zurückgesetzt, wenn ein Level-1-Programm mit der Ausführung beginnt.
Als alternative Schreibweise können Sie auch
*ERROR
verwenden.
Format/Länge: | N7 |
Inhalt änderbar | Ja |
Diese Systemvariable enthält die Fehlernummer des Fehlers, der die
Verzweigung zu einer ON ERROR
-Bedingung bewirkt hat.
Es werden nur Fehlernummern im Bereich von 0 bis 9999 unterstützt.
Normalerweise enthält *ERROR-NR
die
Natural-System-Fehlernummer, die das Eintreten der Fehlerbedingung verursacht
hat; wenn allerdings ein Statement
REINPUT WITH TEXT
*nnnn
ausgeführt wird, wird
*ERROR-NR
mit der betreffenden
anwendungsspezifischen Fehlernummer
nnnn
gefüllt.
Sie können dieser Systemvariablen in einem Natural-Programm einen
anderen Wert zuweisen, allerdings nicht innerhalb eines
ON
ERROR
-Statement-Blocks.
*ERROR-NR
wird auf Null (0
)
zurückgesetzt, wenn ein Level-1-Programm mit der Ausführung beginnt.
Format/Länge: | A8 |
Inhalt änderbar | Ja |
Diese Systemvariable enthält den Namen des Programms, an das die Kontrolle im Falle einer Fehlerbedingung übergeben wird.
Im Falle eines Fehlers führt Natural ein STACK TOP DATA
-Statement aus und
legt folgende Informationen, welche von einer Error-Transaktion als
INPUT
-Daten verwendet werden können, oben auf dem Stack ab:
Fehlernummer (N4 bei SG=OFF
; N5 bei
SG=ON
)
Zeilennummer (N4)
Status (A1)
Programmname (A8)
Level (N2)
Status kann sein:
C | Kommandoverarbeitungsfehler. |
---|---|
L | Logon-Fehler. Bei Status L ist die Zeilennummer
0 .
|
O | Objektzeitfehler. |
S | Nicht korrigierbarer Syntaxfehler. |
R | Fehler auf Remote-Server (im Zusammenhang mit Natural RPC). |
Wenn der Natural-Profilparameter SYNERR
auf
ON
gesetzt ist und ein Syntaxfehler auftritt, ist
*LEVEL
Null, und die folgenden Informationen
werden außerdem in den Stack gestellt:
Position des Fehler verursachenden Elements in der Source-Zeile (N3).
Länge des Fehler verursachenden Elements (N3).
Format/Länge: | A8 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält den Wert zur Identifizierung von Transaktionsdaten (End of Transaction ID) für Adabas. Dieser Wert kann folgendes sein:
der Wert des Natural-Profilparameters
ETID
,
die vom TP-Monitor übergebene Benutzer-ID (nur auf Großrechnern),
der bei der Natural-Initialisierung im User Exit angegebene Wert (nur auf Großrechnern),
die im Security-Profil des gerade aktiven Benutzers definierte ETID (falls Natural Security eingesetzt wird).
Format/Länge: | P10 |
Inhalt änderbar | Ja |
Diese Systemvariable enthält die Adabas-ISN des Datensatzes, der gerade
in einer mit einem FIND
-
oder READ
-Statement
initiierten Verarbeitungsschleife verarbeitet wird.
Mit r
in Klammern hinter
*ISN
können Sie eine bestimmte Schleife
referenzieren, wobei r
das Label bzw.
die Sourcecode-Zeilennummer des betreffenden FIND
- oder
READ
-Statements ist. Wenn Sie keine bestimmte Schleife
referenzieren, bezieht sich *ISN
auf die gerade
aktive Verarbeitungsschleife.
Bei einer mit HISTOGRAM
initiierten
Verarbeitungsschleife enthält *ISN
die Nummer der
Ausprägung, in der der zuletzt gelesene Wert des gerade verarbeiteten
Deskriptors enthalten ist. Ist der Deskriptor nicht Teil einer Periodengruppe,
enthält *ISN
den Wert null (0
).
Format/Länge: | I4 |
Inhalt änderbar | Nein |
*LBOUND
enthält die aktuelle Untergrenze
(Indexwert) eines Arrays für die angegebene(n) Dimension(en) (1, 2 oder 3) oder
für alle Dimensionen (Stern-Notation (*)).
Syntax:
*LBOUND
(operand1 [,dim])
|
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | A | A | U | N | P | I | F | B | D | T | L | C | G | O | ja | nein |
operand1 ist das Array, für das die Untergrenze angegeben wird. Die Index-Notation des Arrays ist optional. Als Index-Notation ist nur die Stern-Notation (*) für den vollständigen Bereich für jede Dimension zulässig.
dim ist die Dimensionsnummer, für die die aktuelle Untergrenze zurückgegeben wird:
dim = | 1 | ||
2 | |||
3 | |||
* |
Wenn keine Dimension angegeben wird, wird die Untergrenze der ersten Dimension zurückgegeben.
Wenn 1, 2 oder 3 angegeben wird, wird die Untergrenze der ersten, zweiten oder dritten Dimension zurückgegeben.
Wird Stern-Notation (*) verwendet, wird die Untergrenze aller definierten Dimensionen zurückgegeben, d.h.
1 | im Falle eines eindimenisionalen Arrays |
2 | im Falle eines zweidimensionalen Arrays |
3 | im Falle eines dreidimensionalen Arrays |
Wenn ein X-Array nicht zugewiesen wird und die Untergrenze der
angegebenen Dimension dieses X-Arrays die variable Indexgrenze ist, d.h., wenn
sie durch einen Stern (*) in der Indexdefinition dargestellt wird, dann ist die
Untergrenze dieses X-Arrays nicht definiert, und der Zugriff auf
*LBOUND
führt zu einem Laufzeitfehler. Um den
Laufzeitfehler zu vermeiden, kann die Systemvariable
*OCCURRENCE
benutzt werden, um auf Null-Ausprägungen abzuprüfen:
DEFINE DATA LOCAL 1 #XA(A5/1:*) END-DEFINE IF *OCCURRENCE (#XA) NE 0 AND *LBOUND(#XA) > 10 THEN ...
Beispiele:
DEFINE DATA LOCAL 1 #I (I4) 1 #J (I4/1:3) 1 #XA (A5/10:*,20:*) END-DEFINE #I := *LBOUND(#XA) /* lower bound of 1st dimension is 10 #I := *LBOUND(#XA,1) /* lower bound of 1st dimension is 10 #I := *LBOUND(#XA,2) /* lower bound of 2nd dimension is 20 #J(1:2):= *LBOUND(#XA,*) /* lower bound of all dimensions /* #J(1) is 10 and #J(2) is 20 END
Siehe auch Systemvariablen *UBOUND
und
*OCCURRENCE
.
Format/Länge: | I4 |
Inhalt änderbar | Nein |
Diese Systemvariable gibt die gerade benutzte Länge (in Bytes) eines Feldes zurück, das als dynamische Variable in Form von Code-Einheiten definiert ist. Für Format A und B ist die Länge einer Code-Einheit 1 Byte, und für Format U ist die Länge einer Code-Einheit 2 Bytes (UTF−16).
*LENGTH(field)
gilt nur für dynamische Variablen.
Siehe auch Aktuell für eine dynamische Variable benutzter Wertespeicher im Leitfaden zur Programmierung.
Format/Länge: | N2 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die Stufennummer (Level Number) des Objekts
(Programm, Subprogramm, externe Subroutine, Map, Helproutine oder Dialog), das
gerade ausgeführt wird. Stufennummer 1 bezeichnet jeweils ein Hauptprogramm.
Falls zur Laufzeit höhere Stufennummern auftreten (maximal 1024
),
dann hat *LEVEL
den Inhalt 99
.
Interne
Subroutinen werden von *LEVEL
nicht
berücksichtigt.
Siehe auch Verwendung eines Fehlertransaktionsprogramms im Leitfaden zur Programmierung.
Format/Länge: | A8 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die (mit dem
LOGON
-Kommando
angegebene) Kennung der Bibliothek (Library-ID), in der der Benutzer gerade
arbeitet.
Diese Systemvariable entspricht der Systemvariablen
*APPLIC-ID
.
Format/Länge: | I4 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die Nummer der gerade in einem Natural-Objekt ausgeführten Zeile.
Wenn ein Natural-Programmierobjekt mit dem
Natural Optimizer Compiler
kompiliert wurde, reflektiert der Wert von *LINE
möglicherweise nicht die korrekte Zeilennummer, wenn die Source-Zeile, in der
die Systemvariable benutzt wird, Bestandteil einer Folge von Statements ist,
die vom Natural Optimizer Compiler optimiert wurden.
Format/Länge: | A100 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die Zeilennummer des gerade ausgeführten
Statements und alle Zeilennummern der verwendeten
INCLUDE
-Statement-Ebenen.
Wenn diese Systemvariable im Sourcecode des Haupt-Programms (nicht
innerhalb eines Copycode) verwendet wird, enthält sie nur die Nummer der Zeile,
in der sie referenziert wird. In diesem Fall handelt es sich um den gleichen
Wert, der von der Systemvariablen *LINE
geliefert wird,
lediglich das Format ist ein anderes (A100).
Wird die Systemvariable *LINEX
in einer
geschachtelten INCLUDE
-Statement-Struktur verwendet, dann enthält
dieses Feld alle Zeilennummern vom ersten bis zum letzten
INCLUDE
-Statement und die Zeilennummer des Statements, wobei die
einzelnen Nummern durch einen Schrägstrich voneinander abgetrennt sind.
Beispiel:
.... 3200 3210 INCLUDE COPY01 0010 ... 0020 ... .... 0200 INCLUDE COPY02 0010 ... 0020 ... .... 0050 PRINT *LINEX
In diesem Beispiel erzeugt das PRINT
-Statement die Ausgabe
3210/0200/0050
. Diese gibt den vollständigen Zeilennummernpfad an,
der benötigt wird, um genau die Stelle im Programm zu lokalisieren, an der die
Systemvariable *LINEX
zuerst referenziert worden
ist.
Format/Länge: | A8 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die ID der Library, aus der das zurzeit ausgeführte Objekt geladen wurde.
Format/Länge: | P10 |
Inhalt änderbar | Ja |
Diese Systemvariable enthält eine der folgende Informationen:
Die Anzahl der Datensätze, die mit einem
FIND
-Statement (unter
Erfüllung der WITH
-Bedingung) gelesen wurden.
Die Anzahl der Werte, die als Ergebnis eines
HISTOGRAM
-Statements
ausgewählt wurden.
Den Ende-Versatz des abgerufenen Segments als Ergebnis eines
READLOB
-Statements.
Den Ende-Versatz des eingefügten Segments als Ergebnis eines
UPDATELOB
-Statements.
Mit der Notation
(r)
hinter
*NUMBER
können Sie ein zugehöriges Statement
referenzieren, wobei r
das Label bzw.
die Sourcecode-Zeilennummer des Statements ist. Wenn Sie
r
nicht angeben, bezieht sich
*NUMBER
standardmäßig automatisch auf die innerste
aktive FIND
-,
HISTOGRAM
- oder READLOB
-Schleife. Die
Notation r
ist immer erforderlich, wenn
sich *NUMBER
auf ein
UPDATELOB
-Statement bezieht.
Anmerkung:
Wenn *NUMBER
zusammen mit einem
FIND
-Statement benutzt wird und die Adabas-Datei, auf die
zugegriffen wird, durch die Adabas-Funktion Security By Value
geschützt ist, enthält *NUMBER
den Wert
9999999999
, wenn mehr als 1 Datensatz gefunden wurde. Wenn 1
Datensatz gefunden wurde, enthält *NUMBER
den Wert
1. Wenn kein Datensatz gefunden wurde, enthält
*NUMBER
den Wert 0
.
VSAM | Bei VSAM-Datenbanken enthält
*NUMBER die Anzahl der gefundenen Datensätze nur
bei einem HISTOGRAM -Statement oder bei
einem FIND -Statement, in dem der Operator EQUAL TO im
Suchkriterium verwendet wird. Bei jedem anderen Operator enthält
*NUMBER nicht die Anzahl der gefundenen
Datensätze: Werden keine Datensätze gefunden, enthält
*NUMBER den Wert 0 ; jeder andere Wert
bedeutet, dass Datensätze gefunden wurden, aber der Wert steht in keinem
Zusammenhang mit der tatsächlichen Anzahl der gefundenen Datensätze.
|
---|---|
SQL-Datenbanken | Bei SQL-Datenbanken enthält
*NUMBER nur die Anzahl der gefundenen Zeilen, wenn
*NUMBER mit einem
FIND NUMBER -
oder einem HISTOGRAM -Statement ohne
WHERE -Klausel benutzt wird. In allen anderen Fällen enthält
*NUMBER nicht die Anzahl der gefundenen Zeilen:
Werden keine Zeilen gefunden, enthält *NUMBER den
Wert null (0 ); jeder andere Wert bedeutet, dass Zeilen gefunden
wurden, aber der Wert steht in keinem Zusammenhang mit der tatsächlichen Anzahl
der gefundenen Zeilen.
|
DL/I | Bei DL/I-Datenbanken enthält
*NUMBER nicht die Anzahl der gefundenen
Segment-Ausprägungen. *NUMBER enthält
0 , wenn keine Segment-Ausprägung das Suchkriterium erfüllt, und
den Wert 8.388.607=X'7FFFFF' , wenn mindestens eine
Segment-Ausprägung das Suchkriterium erfüllt.
|
Format/Länge: | I4 |
Inhalt änderbar | Nein |
Diese Systemvariable liefert die aktuelle Anzahl der Ausprägungen eines variablen Arrays. Sie kann bei allen Arten von Array-Feldern mit einer festen oder änderbaren Anzahl an Ausprägungen angewendet werden.
Dazu gehören:
statische Arrays mit einer konstanten Anzahl an Ausprägungen
Beispiel: (1:5)
X-Arrays mit einer änderbaren Anzahl an Ausprägungen
Beispiel: (1:*)
Parameter-Arrays, definiert als (1:V)
Syntax:
*OCCURRENCE
(operand1 [,dim])
|
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | A | A | U | N | P | I | F | B | D | T | L | C | G | O | ja | nein |
Operand1 ist das Array, für das die Anzahl
der Ausprägungen zurückgegeben wird. Die Index-Notation des Arrays ist
optional. Falls sie angegeben wird, ist nur die Stern-Notation (*) für den
vollständigen Bereich für jede Dimension zulässig, zum Beispiel
*OCC(#X(*))
oder *OCC(#Y(*,*))
.
dim ist die Dimensions-Nummer, für die die aktuelle Anzahl der Ausprägungen zurückgegeben wird:
dim = | 1 | ||
2 | |||
3 | |||
* |
Erklärung:
1 | Eindimensionales Array. Dies ist die Voreinstellung, wenn dim nicht angegeben wird. |
---|---|
2 | Zweidimensionales Array. |
3 | Dreidimensionales Array. |
* | Alle für das entsprechende Array definierten Dimensionen sind gültig. |
In einer Parameter Data Area können Sie mit der Index-Notation
1:V
ein Array mit einer variablen Anzahl von Ausprägungen
definieren (vgl. DEFINE
DATA
-Statement). Die tatsächliche Anzahl der
Ausprägungen eines solchen variablen Arrays wird erst zur Laufzeit bestimmt.
Mit *OCCURRENCE
können Sie die tatsächliche Anzahl
der Array-Ausprägungen ermitteln.
Beispiele:
DEFINE DATA PARAMETER 1 #PARR (I2/1:V) LOCAL 1 #FARR (I2/1:5) 1 #XARR1 (I2/1:*) 1 #XARR2 (I2/1:*,1:*) 1 #I (I2) 1 #J (I2) END-DEFINE FOR #I = 1 TO *OCC(#PARR) /* Parameter array WRITE 2X #I END-FOR FOR #I = 1 TO *OCC(#FARR) /* Fixed array WRITE 4X #I END-FOR EXPAND ARRAY #XARR1 TO (1:4) FOR #I = 1 TO *OCC(#XARR1) /* X-Array WRITE 6X #I END-FOR EXPAND ARRAY #XARR2 TO (1:3,1:4) FOR #I = 1 TO *OCC(#XARR2,1) /* X-Array FOR #J = 1 TO *OCC(#XARR2,2) WRITE 8X #I #J END-FOR END-FOR END
Siehe auch Beispiel-Programme OCC1P
und
OCC2P
.
In Zusammenhang mit X-Arrays enthält
*OCCURRENCE
die aktuelle Anzahl der
Ausprägungen:
DEFINE DATA LOCAL 1 #I (I4) 1 #J (I4/1:3) 1 #XA (A5/1:*,1:*) END-DEFINE EXPAND ARRAY #XA TO (1:10,1:20) #I := *OCC(#XA) /* #I=10 #I := *OCC(#XA,1) /* #I=10 #I := *OCC(#XA,2) /* #I=20 #J(1:2) := *OCC(#XA,*) /* #J(1)=10 #J(2)=20 END
Format/Länge: | U (dynamisch) |
Inhalt änderbar | Nein |
Diese Systemvariable enthält den von Natural for Ajax gelieferten Namen des aktuellen Ereignisses.
Diese Systemvariable wird mit dem PROCESS PAGE-Statement zur Programmierung von Rich GUI-Anwendungen verwendet.
Weitere Informationen finden Sie in der Natural for Ajax-Dokumentation.
Format/Länge: | I4 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält den Level des aktiven
PROCESS PAGE
MODAL
-Statement-Blocks.
Ist kein
PROCESS
PAGE MODAL
-Statement-Block aktiv ist, dann ist der
Wert von *PAGE-LEVEL
Null (0).
Anmerkung:
Ist der Wert von *PAGE-LEVEL
größer als
Null, dann ist keine Ausgabe an Report 0 über ein INPUT
-,
PRINT
-, WRITE
- oder DISPLAY
-Statement
möglich.
Format/Länge: | A8 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält den Namen des Natural-Objekts, das gerade ausgeführt wird.
Format/Länge: | A16 |
Inhalt änderbar | Nein |
Diese Systemvariable gibt an, ob sich die Anwendung in einem Status
befindet, der die Ausführung eines REINPUT
- oder eines
PROCESS PAGE
UPDATE
-Statements zulässt.
Eine Anwendung kann ein INPUT
-Statement und (falls sie
mit Natural for Ajax läuft) ein
PROCESS PAGE
USING
-Statement verwenden, um eine Ein-/Ausgabeverarbeitung
auszuführen. Unter bestimmten Bedingungen kann eine Anwendung diese
Ein-/Ausgabe-Statements mit einem REINPUT
- oder PROCESS PAGE
UPDATE
-Statement zurückgeben oder erneut ausführen.
Der von dieser Systemvariablen zurückgegebene Wert gibt an, ob ein solches Statement zur erneuten Ausführung an dieser Stelle möglich ist oder nicht. Sie enthält einen der folgenden Werte:
Wert | Beschreibung |
---|---|
(Leerzeichen) | Die Anwendung kann weder ein
REINPUT - noch ein PROCESS PAGE UPDATE -Statement
ausführen.
|
REINPUT |
Die Anwendung kann ein
REINPUT -Statement, aber kein PROCESS PAGE
UPDATE -Statement ausführen.
|
UPDATE |
Die Anwendung kann ein PROCESS PAGE
UPDATE -Statement, aber kein REINPUT -Statement
ausführen.
|
Format/Länge: | I4 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält die Anzahl der Zeilen, die mit einem der
Natural-SQL-Statements "Searched"
DELETE
,
"Searched"UPDATE
oder INSERT
(mit
select-expression)
in einer Datenbanktabelle gelöscht, geändert bzw. hinzugefügt wurden.
*ROWCOUNT
bezieht sich jeweils auf das zuletzt
ausgeführte dieser Statements.
Format/Länge: | A8 |
Inhalt änderbar | Ja |
Das Programm, dessen Name in dieser Systemvariablen steht, wird immer
dann ausgeführt, wenn Natural normalerweise die Kommandoeingabeaufforderung
(NEXT
-Prompt bzw. Direktkommando-Zeile/-Fenster) anzeigen
würde.
- Anfangseinstellung ohne Natural Security
Wenn Natural Security nicht benutzt wird, ist der Wert von
*STARTUP
abhängig von der Einstellung des ProfilparametersMENU
.
Wenn
MENU=OFF
gesetzt ist, dann ist*STARTUP
leer.Wenn
MENU=ON
gesetzt ist, dann enthält*STARTUP
den WertMAINMENU
, d.h., es wird das Natural-Hauptmenü angezeigt.- Anfangseinstellung mit Natural Security
Wenn Natural Security benutzt wird und wenn eine Anmeldung (Logon) bei einer Library ausgeführt wird, dann enthält
*STARTUP
den Namen des Programms, das in Natural Security im Profil der betreffenden Library als Eröffnungstransaktion eingetragen worden ist (außer im Batch-Modus, siehe auch Natural Security-Dokumentation).- Einstellung zur Laufzeit
Sie können der Systemvariablen
*STARTUP
einen Programmnamen zuweisen, der den Inhalt von*STARTUP
immer überschreibt.
Führen Sie folgende Schritte aus, um das in
*STARTUP
angegebene Programm zu deaktivieren:
Je nach dem Kontext, in dem *STARTUP
benutzt wird, können Sie eine der folgenden Möglichkeiten wählen, um ein
Eröffnungsprogramm ordnungsgemäß zu beenden, ohne eine Programmschleife bzw.
den Natural-Fehler NAT9969 zu verursachen:
Setzen Sie den Wert der Systemvariablen
*STARTUP
auf leer (zum Beispiel, indem Sie das
Statement RESET *STARTUP
benutzen) und beenden Sie den
Eröffnungsvorgang danach.
Beenden Sie die Session.
Erzwingen Sie eine Abmeldung (Logoff) oder eine Anmeldung (Logon) bei einer anderen Library.
Falls das *STARTUP
-Programm die
Kommandoeingabeaufforderung MORE
ausgibt, geben Sie ein Kommando
oder eine andere Eingabe ein, um das Programm zu unterbrechen.
Falls das *STARTUP
-Programm eine beliebige Ausgabe
ausgibt, fordern Sie ein Kommandoeingabeaufforderung an, indem Sie das
Natural-Terminalkommando %%
absetzen.
Das Kommando %%
deaktiviert das
Eröffnungsprogramm in einer Nicht-Security-Umgebung oder in einer
Security-Umgebung, in der der Kommando-Modus für die aktuelle Library erlaubt
ist.
Bei der Definition eines Eröffnungsprogramms sollten Sie
berücksichtigen, dass das Ergebnis des Programms durch Werte beeinträchtigt
werden kann, die für die Systemvariablen *DEVICE
,
*SERVER-TYPE
oder *SCREEN-IO
zurückgegeben werden. Um unerwünschte Ergebnisse zu vermeiden, können Sie
beispielsweise folgende Schritte ausführen:
Nehmen Sie im Batch-Modus (*DEVICE
oder
*SCREEN-IO
) ein
FETCH
-Statement
oder ein STACK
COMMAND
-Statement in das Eröffnungsprogramm auf. Andernfalls
kann eine Programmschleife bzw. der Natural-Fehler NAT9969 auftreten.
Wenn Sie von NaturalONE aus eine Natural Development Server-Umgebung
(*SERVER-TYPE
)
per Mapping aufrufen und eine Library mit einer aktiven
*STARTUP
-Systemvariablen auswählen, vergewissern
Sie sich, dass das Eröffnungsprogramm keine Bildschirm-Ein-/Ausgaben ausführt
und in der betreffenden Library ordnungsgemäß beendet wird (eine Anmeldung
(Logon) bei einer anderen Library ist nicht erlaubt). Sie können die
Anwendungsprogrammierungsschnittstelle USR4218N benutzen, um herauszufinden, ob
NaturalONE in Ihrer aktuellen Systemumgebung ist. Siehe auch Beschreibung der
Eröffnungstransaktionen in den Abschnitten Using an Exisiting Natural
Development Server Environment und Frequently Asked
Questions und im Glossary in der
NaturalONE-Dokumentation.
In einer Natural-Security-Umgebung, in der der Kommando-Modus für die
aktuelle Library untersagt ist, bewirkt %%
, dass das Programm aufgerufen
wird, dessen Name in der Systemvariablen *STARTUP
steht.
Im Eröffnungsprogramm muss ein FETCH
-Statement oder ein
STACK COMMAND
-Statement
enthalten sein, wenn im Security-Profil der Library, in der das Programm
gespeichert ist, die NEXT/MORE
-Zeile nicht erlaubt ist. Siehe
Einstellung der entsprechenden Option im Abschnitt
Security Options im Kapitel
Library Maintenance in der Natural
Security-Dokumentation.
Wenn ein durch eine Eröffnungstransaktion
(*STARTUP
) verursachter Natural-Laufzeitfehler
auftritt, kann die Fehlerverarbeitung durch Natural dazu führen, dass die
Eröffnungstransaktion erneut ausgeführt wird. Das würde eine
Fehlerschleifensitutation verursachen. Um eine solche Schleife zu verhindern,
steht die allgemeine Option Logoff in error case if *STARTUP is
active zur Verfügung. Siehe
Logoff in Error
Case if *STARTUP is Active in der Natural
Security-Dokumentation.
Format/Länge: | A8 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält den Namen der Steplib-Library, die mit der Natural-Library, in der der Benutzer gerade arbeitet, verknüpft ist.
Wenn Natural Security nicht installiert ist, enthält
*STEPLIB
den mit dem Profilparameter
STEPLIB
angegebenen Namen.
Wenn Natural Security installiert ist, kann die Steplib im Security-Profil der betreffenden Library eingetragen werden.
Anmerkung:
Bei der Steplib-Library wird immer davon ausgegangen, dass sie
dieselbe Datenbank-ID und Dateinummer hat wie die aktuelle Library des
Benutzers. Es wird davon ausgegangen, dass außer der Library
SYSTEM
die Libraries mit dem Namen
SYSxxx
sich in der Systemdatei
FNAT
und andere Libraries sich in FUSER
befinden.
Format/Länge: | A32 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält den Namen der externen Subroutine, die
gerade ausgeführt wird. Der Inhalt von *SUBROUTINE
steht stets in Großbuchstaben.
Format/Länge: | HANDLE OF OBJECT |
Inhalt änderbar | Nein |
Diese Systemvariable enthält eine Handle zum gerade aktiven Objekt. Das
gerade aktive Objekt benutzt *THIS-OBJECT
, um
entweder seine eigenen Methoden auszuführen oder eine Referenz auf sich selbst
an ein anderes Objekt zu übergeben.
*THIS-OBJECT
enthält nur einen
tatsächlichen Wert, wenn eine Methode ausgeführt wird. Sonst enthält es
NULL-HANDLE
.
Format/Länge: | A32 |
Inhalt änderbar | Nein |
Diese Systemvariable enthält den Typ des Natural-Objekts, das gerade ausgeführt wird.
Gültige Werte für *TYPE
:
Wert | Objekttyp |
---|---|
PROGRAM |
Programm |
FUNCTION |
Function |
SUBPROGRAM |
Subprogramm |
SUBROUTINE |
Subroutine |
HELPROUTINE |
Helproutine |
MAP |
Map |
ADAPTER |
Adapter |
Format/Länge: | I4 |
Inhalt änderbar | Nein |
*UBOUND
enthält die aktuelle Obergrenze
(Indexwert) eines Arrays für die angegebene(n) Dimension(en) (1, 2 oder 3) oder
für alle Dimensionen (Stern-Notation (*)).
Syntax:
*UBOUND
(operand1 [,dim])
|
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | A | A | U | N | P | I | F | B | D | T | L | C | G | O | ja | nein |
operand1 ist das Array, für das die Obergrenze angegeben wird. Die Index-Notation des Arrays ist optional. Als Index-Notation ist nur die *-Notation für den vollständigen Bereich für jede Dimension zulässig.
dim ist die Dimensionsnummer, für die die aktuelle Obergrenze zurückgegeben wird:
dim = | 1 | ||
2 | |||
3 | |||
* |
Wenn keine Dimension angegeben wird, wird die Obergrenze der ersten Dimension zurückgegeben.
Wenn 1, 2 oder 3 angegeben wird, wird die Obergrenze der ersten, zweiten oder dritten Dimension zurückgegeben.
Wenn * angegeben wird, wird die Obergrenze aller definierten Dimensionen zurückgegeben, d.h.
1 | im Falle eines eindimenisionalen Arrays |
2 | im Falle eines zweidimensionalen Arrays |
3 | im Falle eines dreidimensionalen Arrays |
Wenn ein X-Array nicht zugewiesen wird und die Obergrenze der
angegebenen Dimension dieses X-Arrays die variable Indexgrenze ist, d.h., wenn
sie durch einen Stern (*) in der Indexdefinition dargestellt wird, dann ist die
Obergrenze dieses X-Arrays nicht definiert, und der Zugriff auf
*UBOUND
führt zu einem Laufzeitfehler. Um den
Laufzeitfehler zu vermeiden, kann die Systemvariable
*OCCURRENCE
benutzt werden, um auf Null-Ausprägungen abzuprüfen:
DEFINE DATA LOCAL 1 #XA(A5/1:*) END-DEFINE IF *OCCURRENCE (#XA) NE 0 AND *UBOUND(#XA) > 10 THEN ...
Beispiele:
DEFINE DATA LOCAL 1 #I (I4) 1 #J (I4/1:3) 1 #XA (A5/*:10,*:20) END-DEFINE #i := *UBOUND(#XA) /* upper bound of 1st dimension is 10 #i := *UBOUND(#XA,1) /* upper bound of 1st dimension is 10 #i := *UBOUND(#XA,2) /* upper bound of 2nd dimension is 20 #j(1:2):= *UBOUND(#XA,*) /* upper bound of all dimensions /* (1st and 2nd) /* #J(1) is 10 and #J(2) is 20
Siehe auch die Systemvariablen *LBOUND
und
*OCCURRENCE
.