Vorbereiten von Programmen für die statische Ausführung

#### Search Results

Search

# Vorbereiten von Programmen für die statische Ausführung

Die statische Generierung für NDZ ist unabhängig von der statischen Generierung von NDB. Das bedeutet, dass Natural-Programme statisch für NDZ generiert werden können. Deren SQL-Statements werden in einem SQLJ-Profil abgelegt, der Name des SQLJ-Profils und die SQLJ-Folgenummern werden für die statische Ausführung in Natural-Objekten gespeichert, und ein Paket mit den SQL-Statements wird in Db2 gebunden.

Unabhängig von der statischen NDZ-Generierung können Natural-Programme statisch für NDB generiert werden. Deren SQL-Statements werden in einem Assembler-Programm vorkompiliert, der DBRM-Name sowie die Abschnitts- und Statement-Nummern werden zur statischen Ausführung in den Natural-Objekten gespeichert, und ein Paket mit den SQL-Statements wird in Db2 gebunden.

Die Natural-Programme, die der statischen NDZ-Generierung und der statischen NDB-Generierung unterliegen, müssen nicht identisch sein. Ein Natural-Programm kann jedoch nur in einem SQLJ-Profil und/oder in einem NDB DBRM/PACKAGE enthalten sein. Die folgende Abbildung zeigt eine statische NDZ-Generierung für die Natural-Programme PROG1 und PROG2, die im SQLJ-Profil und -Paket PROF1 enthalten sind, und eine statische NDB-Generierung für die Natural-Programme PROG2 und PROG4, die im Paket PACK1 enthalten sind.

Die folgenden Informationen beschreiben die Schritte der statischen NDZ-Generierung, wie sie im NDZSTATG-Job der Installation geliefert werden.

- Schritt 1 – GENERATE

- Schritt 2 – GENSQLJ

- Schritt 3 – GENPROF

- Schritt 4 – MODIFYZ

- Schritt 5 – BINDSQLJ

- Shell-Skripte für die statische Vorbereitung

- Vergleich zwischen statischer NDZ- und NDB-Generierung

## Schritt 1 – GENERATE

Der erste Schritt bezieht sich auf Natural Batch und ist identisch mit dem ersten Schritt der statischen NDB-Generierung. Mit dem Kommando CMD CREATE DBRM wird ein SQL-Assembler-Programm erstellt. Einzelheiten finden Sie in der NDB-Dokumentation, Abschnitt Generierungsprozedur – Kommando: CMD CREATE..

## Schritt 2 – GENSQLJ

Sie müssen das in Schritt 1 generierte temporäre Assembler-Programm in ein SQLJ-Programm umwandeln. Für diese Konvertierung steht das Java-Programm `com.softwareag.ndz.sqljgen.SQLJGenerator` zur Verfügung. Um dieses Programm auszuführen, müssen Sie den IBM JZOS Batch Launcher verwenden.

#### Input-Parameter

`DBRM name` – der Name des generierten SQLJ-Programms. Dieser Name muss muss derselbe sein wie der in Schritt 1 verwendete.

#### DD-Namen

`INPUT` – das in Schritt 1 generierte temporäre Assembler-Programm

`OUTPUT` – das temporäre SQLJ-Programm.

JCL-Beispiel:

    //GENSQLJ  EXEC PROC=JVMPRC86,REGSIZE=1024M,
    //         JAVACLS='com.softwareag.ndz.sqljgen.SQLJGenerator'
    //INPUT    DD DSN=&&TMP6,DISP=(OLD,PASS)
    //OUTPUT   DD PATH='&NDZPATH./static/&PROFILE..sqlj',
    //         PATHDISP=(KEEP,DELETE),
    //         PATHOPTS=(OCREAT,ORDWR),
    //         PATHMODE=(SIRUSR,SIWUSR,
    //             SIRGRP,SIWGRP,
    //             SIROTH,SIWOTH),
    //         FILEDATA=TEXT
    //MAINARGS DD *,SYMBOLS=JCLONLY
    &PROFILE
    //STDENV   DD *,SYMBOLS=JCLONLY
    . /etc/profile
    . &NDZPATH./bin/setenv.sh

    /*

## Schritt 3 – GENPROF

Anschließend müssen Sie den IBM Db2 SQLJ Translator (sqlj) verwenden, um ein SQLJ-Profil zu erstellen, das das im vorherigen Schritt erstellte SQLJ-Programm als Eingabe verwendet. Sie können den SQLJ Translator mit der mitgelieferten IBM Db2-Klasse `sqlj.tools.Sqlj` aufrufen. Um dieses Programm auszuführen, müssen Sie den IBM JZOS Batch Launcher verwenden.

JCL-Beispiel:

    //GENPROF  EXEC PROC=JVMPRC86,REGSIZE=1024M,
    //         JAVACLS='sqlj.tools.Sqlj'
    //MAINARGS DD *,SYMBOLS=JCLONLY
    -compile=true -d=&NDZPATH./static
    &NDZPATH./static/&PROFILE..sqlj
    //STDENV   DD *,SYMBOLS=JCLONLY
    . /etc/profile
    . &NDZPATH./bin/setenv.sh

    /*

Oder:

Sie können das mitgelieferte Shell-Skript `genprof.sh` verwenden, um diesen Schritt auszuführen. Das Skript befindet sich im Unterverzeichnis `bin` Ihrer NDZ-Installation.

    Usage: genprof <NDZ_PATH> <program>

## Schritt 4 – MODIFYZ

Anschließend müssen Sie die Natural-Programme mit dem SQLJ-Profilnamen und den SQLJ-Folgenummern mit dem Kommando CMD MODIFYZ ändern. Geben Sie das in Schritt 1 erstellte temporäre Assembler-Programm ein.

## Schritt 5 – BINDSQLJ

Verwenden Sie zum Abschluß den NDZ SQLJ Profile Binder `com.softwareag.ndz.sqljbinder`, um Pakete für das im vorherigen Schritt generierte SQLJ-Profil zu binden. Um dieses Programm auszuführen, müssen Sie den IBM JZOS Batch Launcher verwenden.

JCL-Beispiel:

    //BIND     EXEC PROC=JVMPRC86,REGSIZE=1024M,
    //         JAVACLS='com.softwareag.ndz.sqljbinder.Main'
    //MAINARGS DD *,SYMBOLS=JCLONLY
    -profile &PROFILE -bindoptions &BINDOPTS
    //STDENV   DD *,SYMBOLS=JCLONLY
    . /etc/profile
    . &NDZPATH./bin/setenv.sh
    /*

Oder:

Sie können das mitgelieferte Shell-Skript `bind.sh` verwenden, um diesen Schritt auszuführen.

    Usage: bind <NDZ_PATH> <url> <user> <password> <program> <bind_opts>

## Shell-Skripte für die statische Vorbereitung

`setenv.sh` – Setzt die Umgebungsvariablen für Java, Db2 und NDZ. Diese Variablen werden von anderen Skripten benötigt.

`genprof.sh` – Generiert Profile für die statische Ausführung.

ates profiles for static execution. Syntax:

    genprof ndz_path program

Dabei ist ndz_path der NDZ-Installationspfad und program das SQLJ-Programm, das zum Generieren des Profils verwendet wird.

`bind.sh` – Bindet ein statisches Profil an Db2.

Syntax:

    bind NDZ_PATH url user password program bind_opts

Dabei ist ...

- NDZ_PATH der Installationspfad von NDZ.

- url die URL für den Db2-Zugang.

- user der Benutzername für den Db2-Zugang.

- password das Passwort für den gewählten Benutzernamen für den Db2-Zugang.

- program der Name des Natural-Prgramms, das auf Db2 zugreift.

- bind_opts eine Liste von Bind-Optionen. Jede Option muss durch ein Leerzeichen getrennt werden und hat die gleiche Funktion wie die Db2 Precompile- und Bind-Optionen. Weitere Informationen finden Sie im Abschnitt über das Kommando BIND PACKAGE in der IBM Db2 Dokumentation.

## Vergleich zwischen statischer NDZ- und NDB-Generierung

In der folgenden Tabelle werden die verschiedenen Schritte der statischen NDZ-Generierung und der statischen NDB-Generierung verglichen.

Schritt-Nr. | Statische NDZ-Generierung | Statische NDB-Generierung
--- | --- | ---
Schritt 1 | `GENERATE` – generiert ein temporäres SQL-Assembler-Programm mit `CMD CREATE DBRM`. | `GENERATE/GENERATION` – generiert ein temporäres SQL-Assembler-Programm mit `CMD CREATE DBRM`.
Schritt 2 | `GENSQLJ` – generiert ein temporäres SQLJ-Programm. | Dieser Schritt wird bei der statischen NDB-Generierung ausgelassen.
Schritt 3 | `GENPROF` – generiert das SQLJ-Profil. | `PC` – Db2 prekompiliert das SQL-Assembler-Programm.
Schritt 4 | `MODIFYZ` – ändert die Natural-Programme mit den SQLJ-Profilnummern und SQLJ-Folgenummern mit `CMD MODIFYZ` | `MODIFY` – ändert die Natural-Programme mit dem DB2 DBRM-Namen und den Abschnitts- und Statement-Nummern mit `CMD MODIFY`
Schritt 5 | `BINDSQLJ` – platziert statische SQL-Informationen in DB2 zu `BIND PACKAGE`. | `BIND` – platziert statische SQL-Informationen in DB2 zu `BIND PACKAGE`.

### On this page

- Schritt 1 – GENERATE
- Schritt 2 – GENSQLJ
- Schritt 3 – GENPROF
- Schritt 4 – MODIFYZ
- Schritt 5 – BINDSQLJ
- Shell-Skripte für die statische Vorbereitung
- Vergleich zwischen statischer NDZ- und NDB-Generierung