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.

graphic showing an NDZ static generation done for Natural programs PROG1 and PROG2 contained in the         SQLJ profile and package PROF1 and an NDB static generation done for Natural programs PROG2 and PROG3 contained in package PACK1

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


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.