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.
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..
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.
DBRM name – der Name des generierten
SQLJ-Programms. Dieser Name muss muss derselbe sein wie der in Schritt 1
verwendete.
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
/*
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>
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.
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>
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.
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.
|