Ein Natural User Exit ist ein Objekt, das von Natural, einer Unterkomponente oder einem Unterprodukt aufgerufen wird. In der Regel wird ein Beispiel-User Exit in Quellcodeform geliefert. Die im User Exit enthaltenen Anweisungen müssen vom Benutzer selbst geschrieben oder angepasst werden. Der Zweck eines User Exit besteht darin, Daten zu beeinflussen oder Entscheidungen zu treffen. Die meisten User Exits nutzen die Vorteile der Programmiersprache Natural. Eine kleine Teilmenge muss in Assembler-Sprache geschrieben werden.
Dieses Dokument beschreibt die folgenden Natural User Exits:
Weitere Natural User Exits und Anwendungsprogrammierschnittstellen werden an den entsprechenden Stellen in der Dokumentation der Natural-Unterkomponenten oder Unterprodukte beschrieben (Natural RPC, TP-Monitor-Schnittstellen, Dienstprogramme (Utilities), Add-on-Produkte usw.).
Der User Exit NATUEX1 wird immer dann aufgerufen, wenn eine Benutzersitzung aktiviert wird. Er kann verwendet werden, um festzustellen, ob der Benutzer berechtigt ist, Natural zu benutzen oder nicht. Die Security-Daten, mit denen dies festgestellt wird, können aus dem verwendeten Security-System (z.B. RACF oder ACF2) abgerufen werden.
NATUEX1 wird unter Verwendung von
Standardaufrufkonventionen aufgerufen:
| Register | Inhalt |
|---|---|
| 15 | Einsprungadresse von NATUEX1 |
| 14 | Rücksprungadresse von Natural |
| 13 | Adresse eines Speicherbereichs von 18 Worten |
| 1 | Adresse einer Parameterliste |
Die Parameterliste enthält fünf Adressen:
| Adresse | Zeigt auf ein 8-Byte-Feld, das den Wert enthält, der zum Füllen folgender Natural-Systemvariablen verwendet wird: |
|---|---|
| 1 | *INIT-USER |
| 2 | *ETID |
| 3 | *INIT-ID |
| 4 | *INIT-PROGRAM |
| 5 | *USER (Beachten Sie, dass
diese Systemvariable bei einer Natural Security-Anmeldung überschrieben
wird.)
|
Diese fünf Werte können durch den User Exit geändert werden.
Für eine normale Beendigung muss der User Exit die Kontrolle mit dem
auf 0 gesetzten Register 15 zurückgeben. Wenn Register 15 nicht
0 enthält, wird die Natural-Sitzung mit dem Condition Code
beendet, der dem Wert in Register 15 entspricht.
NATUEX1 kann mit dem umgebungsunabhängigen Nukleus oder mit einem
umgebungsabhängigen Nukleus verlinkt werden. Es ist auch möglich, ihn mit einem
alternativen Natural-Parametermodul oder als separates Modul zu verlinken, wenn
Sie mit dem Profilparameter RCA arbeiten.
Ein Beispiel für den User Exit ist als Member XNATUEX1
in der Natural Source Library verfügbar.
Für CICS: Siehe auch NCIUIDEX - Benutzerkennung-Exit-Schnittstelle in der Natural-TP-Monitor-Schnittstellen-Dokumentation.
Natural bietet zwei User Exits für die Sortierverarbeitung:
NATSREX2 und NATSREX3.
Die beiden User Exits können sowohl mit dem Natural-eigenen
Sortierprogramm als auch mit einem externen Sortierprogramm verwendet werden.
Die Exits werden automatisch aktiviert, wenn sie mit dem Nukleus verlinkt sind,
so dass ihre Adressen aufgelöst werden. Da viele externe SORT-Programme bereits
mehrere Exit-Funktionen bereitstellen, können die Exits NATSREX2
und NATSREX3 vor allem mit dem internen Sortierprogramm von
Natural verwendet werden.
NATSREX2 wird immer dann aufgerufen, wenn Natural einen
Datensatz an das Sortierprogramm übergibt. NATSREX3 wird
aufgerufen, wenn das Sortierprogramm nach Beendigung des Sortierlaufs einen
Datensatz an Natural übergibt. Das ausgelieferte Beispiel zeigt, wie Sie Ihre
eigene Sortierreihenfolge für einen SORT-Lauf festlegen
können.
Bei der Aktivierung der User Exits müssen die folgenden Registerkonventionen eingehalten werden:
| Register | Inhalt |
|---|---|
| 15 | Einsprungadressen NATSREX2 und
NATSREX3 |
| 14 | Rücksprungadresse von Natural |
| 13 | Adresse des 18-Wort-Speicherbereichs |
| 1 | Adresse des Sortiersatzes |
| 3 | Länge des Sortiersatzes |
Die User Exits müssen die Natural-Register sichern und sie bei der Rückgabe der Kontrolle an Natural wiederherstellen.
Da das Sortier-Exit-Modul mit dem Modul NAT2SORT
verlinkt ist, muss die Programmierung reentrant sein. Das Format und die
Struktur der Sortiersätze dürfen nicht verändert werden.
Einige Landessprachen enthalten Zeichen, die von einem
Sortierprogramm oder Datenbanksystem nicht in der richtigen alphabetischen
Reihenfolge sortiert werden. Mit der Systemfunktion
SORTKEY können
Sie solche "falsch sortierten" Zeichen in andere Zeichen
umwandeln, die alphabetisch "richtig sortiert" werden.
Wenn Sie die Funktion SORTKEY in einem Natural-Programm
verwenden, wird der User Exit NATUSKnn
aufgerufen, wobei nn der aktuelle
Sprachcode ist (d.h. der aktuelle Wert der Systemvariablen
*LANGUAGE).
Ein User Exit NATUSKnn kann
in jeder Programmiersprache geschrieben werden, die eine
Standard-CALL-Schnittstelle bietet. Die mit SORTKEY
angegebene Zeichenkette wird an den User Exit übergeben. Der User Exit muss so
programmiert werden, dass er "falsch sortierte" Zeichen in dieser
Zeichenkette in entsprechende "richtig sortierte" Zeichen
umwandelt. Die konvertierte Zeichenkette wird dann im Natural-Programm zur
Weiterverarbeitung verwendet.
Für die Konvertierung kann
NATUSKnn die Umsetzungstabelle
NTUTAB1 des Konfigurationsmoduls NATCONFG verwenden, d.h.
NTUTAB1 muss ggf. entsprechend angepasst werden.
NATUSKnn wird mit den
Standard-Aufrufkonventionen aufgerufen:
| Register | Inhalt |
|---|---|
| 15 | Einsprungadresse von
NATUSKnn
|
| 14 | Rücksprungadresse von Natural |
| 13 | Adresse eines Speicherbereichs von 18 Vollwörtern |
| 1 | Adresse einer Parameterliste |
Die Parameterliste enthält die folgenden Adressen:
| Offset | Adresse von |
|---|---|
| +0 | Die von Natural übergebene Zeichenkette. |
| +4 | Die Länge der Zeichenkette (Vollwort). |
| +8 | Die aus der Umwandlung resultierende Zeichenkette. |
| +12 | Die Länge der Ergebniszeichenkette (Vollwort). |
| +16 | Die Umsetzungstabelle NTUTAB1.
|
NATUSKnn muss alle Register
mit Ausnahme von 14 und 15 sichern und sie bei der Rückgabe der Kontrolle an
Natural wiederherstellen.
Für eine normale Beendigung muss der User Exit die Kontrolle mit
Register 15 auf Return Code 0 zurückgeben. Wenn Register 15 nicht
0 enthält, wird ein entsprechender Natural-Fehler ausgegeben.
Die folgenden Beispiele für User Exits liegen im Quellcode vor:
| Programm | Funktion |
|---|---|
NATUSK01 |
Gilt für Englisch und wandelt alle englischen Kleinbuchstaben in der Zeichenkette in Großbuchstaben um. |
NATUSK02 |
Gilt für Deutsch und wandelt die deutschen Umlaute ä, ö, ü und ß in die entsprechenden Ersatzzeichen ae, oe, ue, ss um, um eine andere Sortierreihenfolge zu erreichen. |
NATUSKnn kann mit dem
umgebungsunabhängigen Nukleus oder mit einem umgebungsabhängigen Nukleus
verlinkt werden. Es ist auch möglich, ihn mit einem alternativen
Natural-Parametermodul zu verlinken, oder als separates Modul, wenn Sie mit dem
Profilparameter RCA=NATUSKnn
arbeiten.
Weitere Informationen zu Verlinkungs- und Ladekonventionen sind beim
CALL-Statement in der
Natural-Statements-Dokumentation vorhanden.
Das Modul NATPM wird zur Unterstützung von Terminals
mit umgekehrter Schreibrichtung verwendet. Es enthält die User Exit-Routine für
die Feld- und Zeilenumsetzung, die von Natural bei Terminal-Ein-/Ausgaben
aufgerufen wird, wenn für einige Felder der Druckmodus (Profilparameter
PM auf
I gesetzt wurde.
PM=I steht für inverse Richtung und wird verwendet, um
Sprachen zu unterstützen, die von rechts nach links schreiben (z.B.
bidirektionale Sprachen). Siehe auch die Beschreibung des Profilparameters
PM.
Das Modul NATPM wird als Quellcode-Modul ausgeliefert
und kann bei Bedarf geändert werden.
Natural stellt eine User Exit-Routine zur Verfügung, die für jedes
Feld, dessen Ergebnisattribut PM=I ist, und für jede Zeile, die
über Hardcopy, zusätzlichen Report und Primär-Batch-Ausgabe gedruckt werden
soll, aufgerufen wird. Dieser Exit wird mit drei Parametern aufgerufen:
das Quellfeld, das invertiert werden soll,
das Zielfeld, das die invertierten Daten erhalten soll,
ein Längenfeld, das die Länge der Quell- und Zielfelder angibt.
Da diese User Exit-Routine als Quellcode für alle Benutzer
verfügbar ist, kann sie als expliziter Feld-Exit verwendet werden, der durch
das Attribut PM=I ausgelöst wird. Der Benutzer kann dann Zeilen-
oder Feldinhalte prüfen und ändern.
Der User Exit in NATPM wird für jedes Feld
aufgerufen, für das das Attribut PM=I gesetzt ist.
Dieses Attribut kann vom Natural-Programmierer gesetzt werden oder
wird für numerische Felder automatisch gesetzt, wenn der globale Druckmodus auf
PM=I eingestellt ist. Dabei spielt es keine Rolle, ob die Ausgabe
für das Terminal, für den Ausdruck, für zusätzliche Reports oder für die
Primärausgabe im Batch erzeugt wird.
Bei Druckgeräten erwartet Natural keine automatische Invertierung
durch die Hardware, sondern ruft NATPM erneut für die gesamte
Zeile auf. Diese Funktion kann in Ländern verwendet werden, in denen die
Feldinvertierung nicht erforderlich ist, um eine Schnittstellenlogik mit
Natural auf der Grundlage eines Feldattributs einzurichten.
NREXPG ist ein User Exit für Natural Remote Job Entry
(NATRJE). Nach
Beendigung des Jobs wird jede JCL-Karte an den Exit übergeben, bevor sie an das
Betriebssystem übermittelt wird. Dem Exit stehen die folgenden Daten zur
Verfügung:
die zu übergebende JCL-Karte,
ein Rückgabecode-Feld,
der Name des Natural-Programms, das gerade ausgeführt wird,
die Natural-Benutzerkennung,
ein 240 Byte großer Arbeitsbereich.
Nach jedem Aufruf übergibt der Exit einen Rückgabecode an NATRJE, der eines der folgenden Ereignisse anzeigt:
| Code | Erläuterung |
|---|---|
0 |
Übergabe: Die Karte wird übermittelt; der Exit kann die Karte vor der Übergabe ändern. |
4 |
Beendigung: Die Karte wird übermittelt; der Exit ist für weitere Karten des aktuellen Jobs gesperrt. |
8 |
Einfügung: Die Karte wird übersprungen, da davon ausgegangen wird, dass sie nur ein Einfügezeichen, z. B. das Prozentzeichen (%), enthält; weitere angegebene Karten werden übermittelt. |
10 |
Löschung: Die Karte wird nicht übermittelt. |
12 |
Der aktuelle Job wird geleert (flush). |
Ein Beispiel für den User Exit mit der Bezeichnung
NREXPG ist als Member XNATRJE in der Natural Source
Library verfügbar. Der Exit kann nach den Regeln der als CSTATIC angegebenen
Programme assembliert und verlinkt werden. Ein CSTATIC-Eintrag für
NREXPG ist jedoch nicht erforderlich.
Mit der User Exit-Routine USR0070P können Sie die
Parametereinstellungen für den Natural-Programmeditor oder den
Natural-Datenbereichseditor (Data Area Editor) im Standardprofil
SYSTEM ändern.
Weitere Informationen zum Editor-Profil finden Sie unter Editoren — Allgemeine Informationen in der Editoren-Dokumentation.
USR0070P liefert eine Liste aller Parameter, die eine
Standard-Einstellung erhalten sollen.
Mit diesem User Exit können Sie auch festlegen, ob Editor-Profile in der Systemdatei FNAT, in der Systemdatei FUSER oder in der Scratch-Pad-Datei abgelegt werden sollen.
Außerdem berücksichtigt USR0070P die DBCS-Unterstützung
und setzt die Editor-Profil-Optionen Editieren in
Kleinbuchstaben und Dynamische Umwandlung von
Kleinbuchstaben entsprechend.
Ein Beispiel für diese User Exit-Routine ist in der Library
SYSEXT in der
Systemdatei FNAT sowohl in Objekt- als auch in Quellcodeform verfügbar.
Informationen zu ihrer Verwendung sind im Textobjekt USR0070T
enthalten.
Die User Exit-Routine USR2002P kann verwendet werden,
um die Textstrings für das Fenster Current Natural Message
anzupassen, das durch Drücken der Hilfetaste aufgerufen wird, während sich der
Cursor in der Nachrichtenzeile befindet.
Das Objekt USR2002P selbst enthält die Texte, die im
Fenster Current Natural Message verwendet werden, z.B. den
Fenstertitel und die beschreibenden Texte, wie die Feldnamen Sh
(Kurzmeldung), Tx (Langmeldung), Ex (Erklärung) und
Ac (Aktion).
Ein Beispiel für diese User Exit-Routine ist in der Library
SYSEXT in der Systemdatei FNAT sowohl in Objekt- als auch in
Quellcodeform verfügbar. Informationen zu ihrer Verwendung sind im Textobjekt
USR2002T enthalten.
Mit der User Exit-Routine USR2003P können die folgenden
Einstellungen für das Natural-Hauptmenü (Main
Menu) und die untergeordneten Menüs angepasst werden:
Position und Farbe der Nachrichtenzeile,
Position und Farbe der PF-Tastenzeilen.
Ein Beispiel für diese User Exit-Routine ist in der Library
SYSEXT in der Systemdatei FNAT sowohl in Objekt- als auch in
Quellcodeform verfügbar. Informationen zu ihrer Verwendung sind im Textobjekt
USR2003T enthalten.