Natural im Batch-Modus - Allgemeines

#### Search Results

Search

# 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

- Sort-Datasets

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

## 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

- Voraussetzungen

- Funktionalität

- Starten einer Natural-Sitzung

- Starten einer Subtask

- Zugriff auf den Benutzer-Parameterbereich

### 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.

### On this page

- Adabas-Datasets
- Sort-Datasets
- Subtasking-Session-Unterstützung bei Batch-Modus-Umgebungen