Dieses Dokument behandelt allgemeine Aspekte, die bei der Ausführung von Natural im Batch-Modus zu berücksichtigen sind.
Dieses Kapitel behandelt die folgenden Themen:
Adabas-Datasets dürfen nur im Einzelbenutzermodus angegeben werden. Sie sind identisch mit denen, die für die Ausführung eines normalen Anwendungsprogramms mit Adabas erforderlich sind. Ausführliche Informationen zu Adabas-Datasets finden Sie in der entsprechenden Adabas-Dokumentation.
Sort-Datasets müssen angegeben werden, wenn ein Natural-Programm,
das ein SORT-Statement enthält,
während der Natural-Sitzung ausgeführt werden soll.
Die Erfordernisse sind identisch mit denen für die Ausführung eines normalen COBOL- oder PL/1-Anwendungsprogramms, das das Sortierprogramm des Betriebssystems aufruft, und können je nach verwendetem Sortierprogramm variieren.
Natural benötigt die Zwischen-Datasets SORTIN und
SORTOUT nicht, sondern kommuniziert mit dem Sortierprogramm über
die Schnittstellen der User-Exit-Routinen E15 und
E35.
Mit der Unterstützung von Subtasking können Sie mehrere Natural-Batch-Modus-Sitzungen innerhalb eines Adressraums ausführen. Dies ermöglicht eine parallele Verarbeitung innerhalb eines Adressraums, anstatt aufeinander folgende Job-Steps auszuführen, was den Durchsatz erheblich steigern kann.
Typischerweise nutzen Client/Server-Anwendungen und -Produkte diese Funktionalität, z. B. der Natural Remote Procedure Call (RPC). Es können mehrere Server-Subtasks gestartet werden, um mit entfernten Clients zu kommunizieren.
Wenn Sie den Natural-Nukleus neu starten wollen, muss er als Modul
"reentrant" gelinkt sein (Linkage-Editor-Option
RENT).
Die Adabas-Link-Routine (ADALNK) muss mit
Reentrancy-Unterstützung generiert werden.
Sie starten eine Subtask, indem Sie ein
CALL-Statement aus einem
Natural-Programm heraus absetzen. Die neue Natural-Sitzung
("Subtask") wird mit einer erweiterten Frontend-Parameterliste
gestartet. Diese Liste enthält bis zu drei Parameter-Sets:
dynamische Natural-Profilparameter,
Startup-Parameter,
Benutzerparameter.
Variablennamen für Standard-E/A-Datasets (z. B.
CMPRINT) und andere Parameter für den Start der
Batch-Modus-Schnittstelle können vom startenden Programm im
Startup-Parameterbereich übergeben werden. Standard-E/A-Datasets können
undefinierte oder Dummy-Datasets sein. Sie können einer Sitzung zugehören oder
von mehreren Sitzungen gemeinsam genutzt werden.
Außerdem steht eine CALL-Schnittstelle zum Lesen des
Benutzer-Parameterbereichs mit einem Natural-Programm zur Verfügung.
- Erweiterte Parameterliste
Die Natural-Batch-Modus-Schnittstelle ohne erweiterte Parameterliste erhält die initiale Kontrolle vom Betriebssystem über den Standard-Linkage-Aufruf. Register 1 zeigt auf eine Adresse, bei der das höherwertige Bit als letzter Adressindikator eingeschaltet ist. Diese Adresse verweist auf ein Halbwortfeld, das die Länge des folgenden Parameterbereichs enthält.
Die erweiterte Parameterliste enthält bis zu drei Parameteradressen. Dies wird durch das höherwertige Bit in der letzten Adresse angezeigt, die die erste, zweite oder dritte Adresse sein kann. Alle Parameteradressen verweisen auf ein Halbwortfeld, das die Parameterlänge des folgenden Parameterbereichs enthält. Die Länge Null bedeutet, dass es keinen Parameterbereich gibt.
Der erste Parameterbereich enthält die dynamischen Profilparameter für die Natural-Sitzung.
Der zweite enthält spezielle Startup-Parameter für die Initialisierung der Batch-Modus-Schnittstelle.
Der dritte enthält einen Benutzer-Parameterbereich, auf den während der Natural-Sitzung zugegriffen werden kann.
- Startup-Parameterbereich
Wenn mehrere Natural-(Sub-)Tasks im Batch-Modus in derselben Region laufen, greifen diese Sitzungen standardmäßig auf dieselben Natural-Standard-E/A-Datasets zu (z. B.
CMPRINT,CMSYNINusw.), da es keine Natural-Profilparameter gibt, um diese Dateinamen festzulegen. Auch die Natural-Systemvariablen*INIT-IDund*INIT-USERsind standardmäßig identisch, da sie für den Batch-Modus definiert sind.Um eindeutige Standard-E/A-Dataset-Namen und eindeutige Kennungen (IDs) für Natural-Subtask-Sitzungen bereitzustellen, können die Startup-Parameter in der erweiterten Parameterliste verwendet werden, um die Standardeinstellungen des Natural-Systems zu überschreiben. Der Startup-Parameterbereich ist eine Tabelle mit Paaren von 8-Zeichen-Feldern:
Der erste Eintrag enthält das 8-Byte-Schlüsselwort, das ersetzt werden soll,
der zweite Eintrag enthält den 8-Byte-Ersetzungswert.
Schlüsselwörter und Ersetzungswerte müssen ggf. mit Leerzeichen am Ende aufgefüllt werden.
Die folgenden Schlüsselwörter sind gültig:
Schlüsselwort Erläuterung CMHCOPYStändiges Ziel der Hardcopy CMSYNINName des Kommando-Eingabe-Dataset CMOBJINName des Objekt-Eingabe-Dataset CMPRINTName des Standard-Ausgabe-Dataset CMPRMINName des Eingabe-Dataset für dynamische Parameter CMPLOGName des Ausgabe-Dataset für dynamische Parameter CMTRACEName des Trace-Ausgabe-Dataset INITIDName des Job-Step (Systemvariable *INIT-ID)MSGCLASSSpool-Klasse für die dynamische Zuordnung von CMPRINTundCMTRACENATRJEName des Job-Submit-Dataset STEPLIBName der Programm-Load-Library (siehe auch Profilparameter LIBNAM)SUBPOOLz/OS-Speicher-Subpool (0 - 127, rechtsbündig) USERIDInitiale Benutzerkennung (Systemvariable *INIT-USER)Die Verwendung dieser Einträge ist optional. Es ist keine bestimmte Reihenfolge vorgeschrieben. Ein leerer Wert für einen Dataset bedeutet, dass dieser Dataset nicht verfügbar oder leer ist.
- Benutzer-Parameterbereich
Das Format des Benutzer-Parameterbereichs ist frei. Auf ihn kann von jedem Natural-Programm aus über eine spezielle CALL-Schnittstelle zugegriffen werden, siehe Zugriff auf den Benutzer-Parameterbereich.
Das folgende Call Interface wird bereitgestellt, damit Natural-Programme eine Subtask im selben Adressraum starten können.
PGMNAME
|
Name des Natural-Nukleus, der die Kontrolle übernimmt (obligatorisch). Um mit demselben Nukleus neu zu starten, kann als erstes Zeichen ein Stern angegeben werden. Der eigentliche Nukleus-Name wird in diesem Feld zurückgegeben. |
NATPARML
|
Dynamischer Natural-Parameterbereich |
STRPARML
|
Startup-Parameterbereich |
USRPARML
|
Benutzerparameterbereich |
Alle Parameterbereiche müssen mit der Länge der folgenden
Parameter beginnen. Das folgende Beispiel veranschaulicht die Verwendung von
CMTASK.
Beispiel:
DEFINE DATA LOCAL 01 PGMNAME (A8) INIT <'*'> 01 PARM1 02 NATPARML (I2) INIT <30> 02 NATPARMS (A30) INIT <'INTENS=1,IM=D,STACK=MYPROG'> 01 PARM2 02 STRPARML (I2) INIT <32> 02 STRPARM1 (A16) INIT <'CMPRINT SYSPRINT'> 02 STRPARM2 (A16) INIT <'CMPRMIN MYPARMS'> 01 PARM3 02 USRPARML (I2) INIT <80> 02 USRPARMS (A80) INIT <'special user parameters'> END-DEFINE CALL 'CMTASK' PGMNAME NATPARML STRPARML USRPARML END
Ein Beispielprogramm, ASYNBAT, ist in der Library
SYSEXTP vorhanden.
Der beim Startup übergebene Benutzerparameterbereich kann von
jedem Natural-Programm mit dem folgenden CALL-Statement gelesen werden:
CALL 'CMUPARM' USRPARML USRPARMS
USRPARML ist die Länge (I2) des Bereichs
USRPARMS (vor dem Aufruf) und die Länge der zurückgegebenen Daten
(nach dem Aufruf). USRPARMS ist der Parameterdatenbereich.
Wenn die Länge der zurückzugebenden Daten größer als die Bereichslänge ist, werden die Daten auf die Bereichslänge abgeschnitten. Die folgenden Rückgabecodes sind möglich:
0 |
Daten erfolgreich verschoben |
4
|
Daten verschoben, aber abgeschnitten |
8 |
Keine Daten vorhanden |
12
|
Längenwert nicht positiv |
16
|
Unzureichende Anzahl an Parametern |
Ein Beispielprogramm, GETUPARM, ist in der Library
SYSEXTP vorhanden.