DB2 UDB im z/VSE

Werbung
COURSE Tagung Bad Hersfeld 2008
DB2 UDB im z/VSE
Heinz Peter Maassen – Lattwein GmbH
DB2 UDB im z/VSE




Start Parameter
Anpassung
Programmierung CPG/HL1
Ausnahmen
Start Parameter
//
//
//
//
//
//
*
//
JOB DB2START
START DB2 IN MULTIPLE USER MODE mit UDB
LIBDEF *,SEARCH=(PRD2.TCPIP15E,PRD2.DB2740)
SETPFIX LIMIT=120K
EXEC PROC=ARIS74DB
*-- DB2 DATABASE ID PROC
EXEC PROC=ARIS74SL
*-- DB2 PRODUCTION LIBRARY ID PROC
ASSGN SYS098,SYSPCH
DBNAME=SQLDS NCUSER=12 (3 CICSF5, 3 CICSF7, 3 CICSF8, 3 BATCH )
EXEC ARISQLDS,SIZE=8M,PARM='DBNAME=SQLDS,NCUSERS=12,RMTUSERS=3,
PROTOCOL=AUTO,PROCMXAB=12'
/*
/&
//
//
//
//
//
//
*
//
/*
/&
JOB DB2START
START DB2 IN MULTIPLE USER MODE Ohne UDB
LIBDEF *,SEARCH=(PRD2.TCPIP15E,PRD2.DB2740)
SETPFIX LIMIT=120K
EXEC PROC=ARIS74DB
*-- DB2 DATABASE ID PROC
EXEC PROC=ARIS74SL
*-- DB2 PRODUCTION LIBRARY ID PROC
ASSGN SYS098,SYSPCH
DBNAME=SQLDS NCUSER=12 (3 CICSF5, 3 CICSF7, 3 CICSF8, 3 BATCH )
EXEC ARISQLDS,SIZE=AUTO,PARM='DBNAME=SQLDS,NCUSERS=12,RMTUSERS=3'
X
ARISDIRD
CATALOG ARISDIRD.A
REPLACE=YES
* THIS FILE CONVERTED BY ARICCDID PROC 20020208 10:40:44 FROM R51 INPUT
* PRD4.DB2510.ARISDIRD.A INTO PRD2.DB2740.ARISDIRD.A
*
TYPE=LOCAL
DBNAME=SQLDS
APPLID=SYSARI00
TCPPORT=446
SYSDEF=Y
*
TYPE=LOCALAXE
DBNAME=SQLDS
APPLID=SYSARI00
TPN=07F6C4C2
*
TYPE=REMOTE
DBNAME=CPGDB
TCPPORT=50000
IPADDR=192.168.197.20
*
/+
Dann:
// JOB ARISBDID -- DBNAME DIRECTORY SERVICE GENERATION erstellen
Lokal: SQLDS
Remote: CPGDB
DRDA Support Linken
//
//
//
//
JOB ARIS745D
STEP 2
JOB ARIS742D
ARIS74LD:
LINK
LINK
LINK
LINK
EDIT
EDIT
EDIT
EDIT
ONLINE RESOURCE ADPATER WITH DRDA
ONLINE RESOURCE ADPATER DRDA ROUTER
RDS WITH DRDA SERVER SUPPORT
BATCH RESOURCE ADAPTER WITH DRDA CODE
Dann:
// JOB ARIS120D
* **********************************************************
* ARIS120D: RELOAD THE ISQL PACKAGE
* **********************************************************
// EXEC PGM=ARIDBS,SIZE=AUTO,PARM='DBNAME(CPGDB)'
CONNECT CPGDBA IDENTIFIED BY CPGDBAPW TO CPGDB;
RELOAD PROGRAM (SQLDBA.ARIISQL) REPLACE KEEP INFILE(SYSIPT BLKSZ(80)
PDEV(DASD));
READ MEMBER ARIISQLM
/*
COMMIT WORK;
/*
/&
CPG/ HL1 mit DB2 UDB



CPG und HL1 können mit CPGPREP Inline SQL
Statements interpretieren und ausführen.
DB2PREP ist ein Preprozessor, der erst Assembler
DB2 Statements erzeugt, die dann mit Original IBM
DB2 Preprozessor den Source Code ergeben.
QSAT kann sowohl in der VSE DB2 Umgebung als
auch in der UDB eingesetzt werden.
QPG und DB2 UDB


Bei QPG muss das SQL Interface in der UDB installiert sein. Das
sind die Packages HMXPRSQ für CICS und HMYPRSQ für Batch.
Dann kann das QPG Programm nach
SQL CONNECT :UID IDENTIFIED BY :PWD TO :UDB
auf die UDB mit dynamischen SQL Statements (ohne DECLARE
CURSOR FOR ... und SELECT INTO ...) zugreifen.


Ansonsten gibt es die gleichen Einschränkungen wie im
CPG/HL1
Leider unterstützt die UDB bisher nicht alle extended
dynamischen Befehle.
CPG/ HL1 mit DB2 UDB

HL1 / CPG Programme
- SQL UPDATE CPGDBA.KUNDEN *
- SQL SET FIRMA = :FIRMA
*
- SQL WHERE KDNRA = :KDNR
User Application = Sicht
Gen. ASM Code = System Sicht
CALL HOSTVAR
DC
C‘FIRMA‘,X‘2E‘,C‘ ‘
DC
C‘KDNRA‘,X‘05‘,C‘ ‘
CALL SQLCMD
DC
C‘UPDATE‘,X‘002C‘
HOSTVAR
SQLCMD
Defaults setzen:


Ab QSAT 2.5 kann eine Default DB2 DB sowohl für den
Compile als auch für QSAT definiert werden.
Hierzu wird der Source Code von QSATDIR angepasst,
ein Objekt erstellt und die Phasen entsprechend neu
gelinkt.
QSATDIR.A
QSATDIR CSECT
*---------------------------------------------------------------------*
*
QSAT DIRECTORY FUER DB2 TYPE
*
*
---------------------------*
*
DIESE TABELLE WIRD IM QSAT UND BEIM PREPROZESS VERWENDET UM ZU
*
*
ENTSCHEIDEN, WELCHE SQL BEFEHLE ZUR DATENBANK ERLAUBT SIND.
*
*
AUSSERDEM WIRD IM QSAT ENTSCHIEDEN, WELCHE HL1 MODULE AUFGERUFEN *
*
WERDEN, DA DIE SYSTEM TABELLEN UNTERSCHIEDLICHE NAMEN IN DER UDB *
*
ODER IM SQLDS HABEN.
*
*---------------------------------------------------------------------*
* AUFBAU DER TABELLE:
*
* ------------------*
* DBNAME
DC
CL18'SQLDS'
1 - 18 DBNAME
*
* DBTYPE
DC
CL3'VSE'
ODER 'VM ' ODER 'UDB' 19 - 21 DBTYPE
*
* --------------------------------------------------------------------*
SQLDS
DC
CL18'SQLDS',CL3'VSE'
*
CPGDB
DC
CL18'CPGDB',CL3'UDB'
*
DBMAS
DC
CL18'DBMAS',CL3'UDB'
*
ENDDIR
DC
F'-1'
*
*
END
,
END IN ASMA90
, END DO NOT REMOVE COMMA
*
Benutzen:
In ISQL Start
Kann die UDB
Direkt eingetragen werden.
Anzeige Tabelle mit ISQL:
Das ist das
CPGDD für
DB2 Programmierung.
View Table
Direkt in der
Steuerzentrale
der DB2 UDB
unter
Windows XP.
Programmierung:
// JOB DB2UMW
/* EXEC CPGPREP,SIZE=512K,PARM='PUNSOURCE,LIST,NOPRINT,ISOL(CS),DB(SQLD
/*
S),USERID=CPGDBA/CPGDBAPW,QSATDB(CPGDB),QSATPW(CPGDBAPW)'
// EXEC CPGPREPW,SIZE=512K,PARM='PUNSOURCE,LIST,NOPR,ISOL(CS),DB(CPGDB)*
,USERID=CPGDBA/CPGDBAPW,QSATDB(CPGDB),QSATPW(CPGDBAPW)'
- OPTIONS MAIN HL1 H COM ADD 0 TITLE SQL#SERVER PHASE TST039
ASS A DIC DEF BIG.
- *--------------------------------------------------------------*
- *
TEST INSERT MIT NULL FELDERN
*
- *-------------------------------------------------MAS-30.04.08-*
- -D.
- SQL BEGIN DECLARE SECTION
............ Hier folgt das Programm
/*
...
Was nicht geht:
Bei DRDA sind einige wichtige und Performance sparende
Funktionen leider nicht unterstützt, besonders im Bereich
dynamischer Befehle:
Nullwerte werden beim INSERT Befehl nicht unterstützt, es kommt
SQLCODE –309!
DRDA unterstützt kein SELECT ... INTO. Das muss mit einem
DECLARE CURSOR, OPEN, FETCH , CLOSE gelöst werden.
WHERE CURRENT OF ... geht nicht
Zum Teil werden hierdurch erhebliche Programmänderungen
erforderlich!
Noch Fragen ?
Herunterladen