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.