Natural im Batch-Modus - Allgemeines

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

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

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.

Subtasking-Session-Unterstützung bei Batch-Modus-Umgebungen

Zweck

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.

Voraussetzungen

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.

Funktionalität

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.

Starten einer Natural-Sitzung

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, CMSYNIN usw.), da es keine Natural-Profilparameter gibt, um diese Dateinamen festzulegen. Auch die Natural-Systemvariablen *INIT-ID und *INIT-USER sind 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
CMHCOPY Ständiges Ziel der Hardcopy
CMSYNIN Name des Kommando-Eingabe-Dataset
CMOBJIN Name des Objekt-Eingabe-Dataset
CMPRINT Name des Standard-Ausgabe-Dataset
CMPRMIN Name des Eingabe-Dataset für dynamische Parameter
CMPLOG Name des Ausgabe-Dataset für dynamische Parameter
CMTRACE Name des Trace-Ausgabe-Dataset
INITID Name des Job-Step (Systemvariable *INIT-ID)
MSGCLASS Spool-Klasse für die dynamische Zuordnung von CMPRINT und CMTRACE
NATRJE Name des Job-Submit-Dataset
STEPLIB Name der Programm-Load-Library (siehe auch Profilparameter LIBNAM)
SUBPOOL z/OS-Speicher-Subpool (0 - 127, rechtsbündig)
USERID Initiale 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.

Starten einer Subtask

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.

Zugriff auf den Benutzer-Parameterbereich

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.