db2 master title page may

48
May 1999 79 © Xephon plc 1999 3 Recovering tables using image copy dataset 15 DB2 catalog statistics update REXX EXEC – part 2 23 Driving and testing FIELDPROC 34 Verifying start-up parameters – part 2 48 DB2 news

Upload: tess98

Post on 07-Dec-2014

531 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: DB2 Master title page May

May 1999

79

© Xephon plc 1999

3 Recovering tables using image copydataset

15 DB2 catalog statistics update REXXEXEC – part 2

23 Driving and testing FIELDPROC34 Verifying start-up parameters – part 248 DB2 news

Current Support
Xephon magazine issues are now supported at www.cbttape.org. Please go to www.cbttape.org if you have any support questions.
Page 2: DB2 Master title page May

2

DB2 UpdatePublished byXephon27-35 London RoadNewburyBerkshire RG14 1JLEnglandTelephone: 01635 38030From USA: 01144 1635 38030E-mail: [email protected]

North American officeXephon/QNA1301 West Highway 407, Suite 201-405Lewisville, TX 75077-2150USATelephone: 940 455 7050

ContributionsArticles published in DB2 Update are paidfor at the rate of £170 ($250) per 1000 wordsand £90 ($140) per 100 lines of code fororiginal material. To find out more aboutcontributing an article, without anyobligation, please contact us at any of theaddresses above and we will send you a copyof our Notes for Contributors.

DB2 Update on-lineCode from DB2 Update can be downloadedfrom our Web site at http://www.xephon.com; you will need the user-id shown onyour address label.

© Xephon plc 1999. All rights reserved. None of the text in this publication may bereproduced, stored in a retrieval system, or transmitted in any form or by any means, withoutthe prior permission of the copyright owner. Subscribers are free to copy any code reproducedin this publication for use in their own installations, but may not sell such code or incorporateit in any commercial product. No part of this publication may be used for any form ofadvertising, sales promotion, or publicity without the written permission of the publisher.Copying permits are available from Xephon in the form of pressure-sensitive labels, forapplication to individual copies. A pack of 240 labels costs $36 (£24), giving a cost per copyof 15 cents (10 pence). To order, contact Xephon at any of the addresses above. Printed in England.

EditorRobert Burgess

DisclaimerReaders are cautioned that, although theinformation in this journal is presented ingood faith, neither Xephon nor theorganizations or individuals that suppliedinformation in this journal give any warrantyor make any representations as to theaccuracy of the material it contains. NeitherXephon nor the contributing organizations orindividuals accept any liability of any kindhowsoever arising out of the use of suchmaterial. Readers should satisfy themselvesas to the correctness and relevance to theircircumstances of all advice, information,code, JCL, and other contents of this journalbefore making any use of it.

Subscriptions and back-issuesA year’s subscription to DB2 Update,comprising twelve monthly issues, costs£255.00 in the UK; $380.00 in the USA andCanada; £261.00 in Europe; £267.00 inAustralasia and Japan; and £265.50elsewhere. In all cases the price includespostage. Individual issues, starting with theJanuary 1994 issue, are available separatelyto subscribers for £22.50 ($33.50) eachincluding postage.

Page 3: DB2 Master title page May

3© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

Recovering tables using image copy dataset

INTRODUCTION

DBAs regularly take an image copy of all tablespaces; however, mostdo not back-up all tables using DSNTIAUL. Backing-up tables usingDSNTIAUL is much more time-consuming than taking an imagecopy.

Application programmers may sometimes want to see the tables withthe previous day’s content (or earlier), but not want to overwriteexisting data. If the DBA has not taken a DSNTIAUL back-up, he willhave to use an image copy dataset using OBID translation, a processthat takes significant time and effort. This program automates theprocess.

PROGRAM CODE

IMG2UNL:PROC OPTIONS(MAIN); EXEC SQL INCLUDE SQLCA; DCL (ADDR,NULL,LOW,TRANSLATE,SUBSTR,INDEX) BUILTIN, SYSPRINT FILE OUTPUT, JCLMEM FILE OUTPUT, SYSIN FILE INPUT; DCL (DBID1,PSID1) FIXED BIN(15), (DBID2,PSID2) FIXED BIN(15), (ISOBID1(5Ø),ISOBID2(5Ø)) FIXED BIN(15), (ISID1,ISID2) FIXED BIN(15), (IOBID1(5Ø),IOBID2(5Ø)) FIXED BIN(15), (IID1,IID2) FIXED BIN(15), (OBID1(3Ø),OBID2(3Ø)) FIXED BIN(15), (OID1,OID2) FIXED BIN(15), (TSPQTY,TSSQTY) FIXED BIN(31) INIT(Ø), (KEYLEN,MAXKEYLEN,INDEXCNT) FIXED BIN(31) INIT(Ø), WORKSPACE FIXED DEC(15,Ø) INIT(Ø), (TABCNT,MAXTABUNL) FIXED BIN(31) INIT(Ø), (SEGSIZE,PARTCNT) FIXED BIN(15), (CRETABSQL,CNTTABSQL) CHAR(2ØØØ) VARYING, HLQ CHAR(8) VARYING, GIVENMAXTS CHAR(26) VARYING, TBIND FIXED BIN(15) INIT(1), IXIND FIXED BIN(15) INIT(Ø), TSIND FIXED BIN(15) INIT(1),

Page 4: DB2 Master title page May

4 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

(AUTH_ID,TSNAME,DBNAME) CHAR(8) VARYING, (NEWTSNAME,AUTHID,UNITNAME) CHAR(8) VARYING, (III,FIRST_NE) FIXED BIN(15), UNLIND FIXED DEC(2) INIT(1), UNLINDCH CHAR(8), (SSID,VCATNAME) CHAR(8) VARYING, (TABLE_NAME,TABNAM) CHAR(18) VARYING; CALL READ_SYSIN; CALL CREATE_TABLESPACE; EXEC SQL SELECT DBID,PSID INTO :DBID2,:PSID2 FROM SYSIBM.SYSTABLESPACE WHERE NAME=:NEWTSNAME AND DBNAME=:DBNAME; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL DECLARE CRS3 CURSOR FOR SELECT NAME,CREATOR,OBID FROM SYSIBM.SYSTABLES WHERE TSNAME=:TSNAME AND TYPE='T'; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL OPEN CRS3; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL FETCH CRS3 INTO :TABNAM,:AUTHID,:OID1; IF SQLCODE < Ø THEN GOTO HATA; OBID1(TBIND)=OID1; DO WHILE (SQLCODE=Ø); TABNAM=STRIP_SPACES(TABNAM); AUTHID=STRIP_SPACES(AUTHID); MAXKEYLEN=Ø; CALL CREATE_TABLES; EXEC SQL DECLARE KEYS CURSOR FOR SELECT SUM(B.LENGTH) FROM SYSIBM.SYSKEYS A,SYSIBM.SYSCOLUMNS B, SYSIBM.SYSINDEXES C WHERE A.COLNAME=B.NAME AND C.NAME=A.IXNAME AND C.CREATOR=A.IXCREATOR AND C.TBNAME=B.TBNAME AND C.TBCREATOR=B.TBCREATOR AND C.TBNAME=:TABNAM AND C.TBCREATOR=:AUTHID GROUP BY A.IXNAME,A.IXCREATOR; EXEC SQL OPEN KEYS; EXEC SQL FETCH KEYS INTO :KEYLEN; DO WHILE (SQLCODE=Ø); IF KEYLEN > MAXKEYLEN THEN MAXKEYLEN=KEYLEN; EXEC SQL FETCH KEYS INTO :KEYLEN; END; EXEC SQL CLOSE KEYS; EXEC SQL DECLARE C1 CURSOR FOR CNTTAB; CNTTABSQL='SELECT COUNT(*) FROM '||AUTHID||'.'||TABNAM; EXEC SQL PREPARE CNTTAB FROM :CNTTABSQL; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL OPEN C1; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL FETCH C1 INTO :TABCNT;

Page 5: DB2 Master title page May

5© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

IF SQLCODE < Ø THEN GOTO HATA; IF TABCNT*MAXKEYLEN*INDEXCNT>MAXTABUNL THEN MAXTABUNL=TABCNT*MAXKEYLEN*INDEXCNT; EXEC SQL CLOSE C1; EXEC SQL FETCH CRS3 INTO :TABNAM,:AUTHID,:OID1; IF SQLCODE < Ø THEN GOTO HATA; TBIND=TBIND+1; OBID1(TBIND)=OID1; END;

TBIND=TBIND-1; EXEC SQL CLOSE CRS3; IF SQLCODE < Ø THEN GOTO HATA; CALL PREPARE_DSN1CP_JCL; GOTO SON; CREATE_TABLESPACE:PROC; DCL PARTNUM FIXED BIN(15), STORNAME CHAR(8) VARYING, (CRETSPSQL,CRETSPSQL1) CHAR(2ØØØ) VARYING; EXEC SQL SELECT A.DBID,A.PSID,A.NAME,A.DBNAME,A.SEGSIZE INTO :DBID1,:PSID1,:TSNAME,:DBNAME,:SEGSIZE FROM SYSIBM.SYSTABLESPACE A,SYSIBM.SYSTABLES B WHERE B.TSNAME=A.NAME AND B.DBNAME=A.DBNAME AND B.CREATOR=:AUTH_ID AND B.NAME=:TABLE_NAME;

IF SQLCODE=1ØØ THEN DO; PUT SKIP EDIT('COULD NOT FIND TABLE ',AUTH_ID,'.',TABLE_NAME) (A(22),A(8),A(1),A(18)); STOP; END; IF SQLCODE < Ø THEN GOTO HATA;

EXEC SQL SELECT MAX(PARTITION) INTO :PARTCNT FROM SYSIBM.SYSTABLEPART WHERE TSNAME=:TSNAME AND DBNAME=:DBNAME; IF SQLCODE < Ø THEN GOTO HATA;

IF PARTCNT=Ø THEN DO; EXEC SQL SELECT PQTY*4,SQTY*4,VCATNAME,STORNAME INTO :TSPQTY,:TSSQTY,:VCATNAME,:STORNAME FROM SYSIBM.SYSTABLEPART WHERE TSNAME=:TSNAME AND DBNAME=:DBNAME; IF SQLCODE < Ø THEN GOTO HATA;

CRETSPSQL=' IN '||DBNAME|| ' USING STOGROUP '||STORNAME|| ' PRIQTY ' || TSPQTY || ' SECQTY ' || TSSQTY ||

Page 6: DB2 Master title page May

6 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

' FREEPAGE Ø PCTFREE Ø GBPCACHE CHANGED'|| ' BUFFERPOOL BP2 LOCKSIZE ANY CLOSE YES'; IF SEGSIZE¬=Ø THEN CRETSPSQL=CRETSPSQL||' SEGSIZE '||SEGSIZE; END; ELSE DO; CRETSPSQL=' IN '||DBNAME|| ' NUMPARTS '||PARTCNT||' (';

EXEC SQL DECLARE CRS4 CURSOR FOR SELECT PQTY*4,SQTY*4,VCATNAME,STORNAME,PARTITION FROM SYSIBM.SYSTABLEPART WHERE TSNAME=:TSNAME AND DBNAME=:DBNAME ORDER BY PARTITION; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL OPEN CRS4;

EXEC SQL FETCH CRS4 INTO :TSPQTY,:TSSQTY,:VCATNAME,:STORNAME,:PARTNUM; IF SQLCODE < Ø THEN GOTO HATA;

DO WHILE(SQLCODE=Ø); CRETSPSQL= CRETSPSQL||' PART '||PARTNUM|| ' USING STOGROUP '||STORNAME|| ' PRIQTY ' || TSPQTY || ' SECQTY ' || TSSQTY || ' FREEPAGE Ø PCTFREE Ø GBPCACHE CHANGED ';

IF PARTNUM=PARTCNT THEN CRETSPSQL= CRETSPSQL||')'; ELSE CRETSPSQL= CRETSPSQL||',';

EXEC SQL FETCH CRS4 INTO :TSPQTY,:TSSQTY,:VCATNAME,:STORNAME,:PARTNUM; IF SQLCODE < Ø THEN GOTO HATA; END;

EXEC SQL CLOSE CRS4; CRETSPSQL= CRETSPSQL||' BUFFERPOOL BP2 LOCKSIZE ANY CLOSE YES'; END;

LB2:DO III=1 TO 2Ø; UNLINDCH=UNLIND; NEWTSNAME='UNLOAD'||STRIP_SPACES(UNLINDCH); CRETSPSQL1='CREATE TABLESPACE '||NEWTSNAME||CRETSPSQL; EXEC SQL EXECUTE IMMEDIATE :CRETSPSQL1;

IF SQLCODE=-6Ø1 THEN UNLIND=UNLIND+1; ELSE IF SQLCODE=Ø THEN LEAVE LB2; ELSE IF SQLCODE<Ø THEN DO; PUT SKIP LIST(CRETSPSQL1); GOTO HATA;

Page 7: DB2 Master title page May

7© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

END; END; IF III=21 THEN DO; PUT SKIP EDIT('PLEASE DROP ALL UNNECESSARY UNLOADXX TABLESPACES') (A(8Ø)); PUT SKIP EDIT('AND RERUN THIS JCL...') (A(8Ø)); STOP; END;

PUT SKIP EDIT('TABLESPACE ',NEWTSNAME,' CREATED...') (A(11),A(8),A(2Ø)); EXEC SQL COMMIT; END CREATE_TABLESPACE;

CREATE_TABLES:PROC; CRETABSQL='CREATE TABLE UNL.'||TABNAM||' LIKE '|| AUTHID||'.'||TABNAM||' IN '||DBNAME||'.'||NEWTSNAME; EXEC SQL EXECUTE IMMEDIATE :CRETABSQL; IF SQLCODE=-6Ø1 THEN DO; PUT SKIP EDIT('UNL.',TABNAM,' ALREADY EXISTS.')(A(4),A(18),A(2Ø)); PUT SKIP EDIT('PLEASE DROP THE TABLE AND RERUN THIS JCL...') (A(8Ø)); END; IF SQLCODE < Ø THEN DO; PUT SKIP LIST(CRETABSQL); GOTO HATA; END;

PUT SKIP EDIT('TABLE UNL.',TABNAM,' CREATED.')(A(1Ø),A(18),A(9)); EXEC SQL SELECT OBID INTO :OID2 FROM SYSIBM.SYSTABLES WHERE NAME=:TABNAM AND CREATOR='UNL' AND TYPE='T'; OBID2(TBIND)=OID2; IF SQLCODE < Ø THEN GOTO HATA; CALL CREATE_INDEXES; END CREATE_TABLES; CREATE_INDEXES:PROC; DCL FIRST_COME FIXED BIN(15), (PARTCNT1,PARTNUM) FIXED BIN(15), IXNAME CHAR(18) VARYING, (IXCREATOR,STORNAME) CHAR(8) VARYING, COLNAME CHAR(18), (ORDERING,UNIQUERULE) CHAR(1), CREINDSQL CHAR(4ØØØ) VARYING, LIMITKEY CHAR(512) VARYING INIT(' '), PQTY FIXED BIN(31), (COLSEQ,SQTY) FIXED BIN(15); INDEXCNT=Ø; EXEC SQL DECLARE CRS1 CURSOR FOR SELECT NAME,CREATOR,UNIQUERULE,ISOBID,OBID

Page 8: DB2 Master title page May

8 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

FROM SYSIBM.SYSINDEXES WHERE TBNAME=:TABNAM AND TBCREATOR=:AUTHID; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL OPEN CRS1; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL FETCH CRS1 INTO :IXNAME,:IXCREATOR,:UNIQUERULE,:ISID1,:IID1; IF SQLCODE < Ø THEN GOTO HATA; IXIND=IXIND+1; ISOBID1(IXIND)=ISID1; IOBID1(IXIND)=IID1; DO WHILE(SQLCODE=Ø); INDEXCNT=INDEXCNT+1; IXCREATOR=STRIP_SPACES(IXCREATOR); IXNAME=STRIP_SPACES(IXNAME); IF UNIQUERULE='D' THEN CREINDSQL='CREATE TYPE 2 INDEX UNL.'; ELSE CREINDSQL='CREATE TYPE 2 UNIQUE INDEX UNL.'; CREINDSQL=CREINDSQL||IXNAME||' ON UNL.'|| TABNAM||' ('; FIRST_COME=1; EXEC SQL DECLARE CRS2 CURSOR FOR SELECT COLNAME,ORDERING,COLSEQ FROM SYSIBM.SYSKEYS WHERE IXNAME=:IXNAME AND IXCREATOR=:IXCREATOR ORDER BY COLSEQ; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL OPEN CRS2; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL FETCH CRS2 INTO :COLNAME,:ORDERING,:COLSEQ; IF SQLCODE < Ø THEN GOTO HATA; DO WHILE(SQLCODE=Ø); IF FIRST_COME=Ø THEN DO; CREINDSQL=CREINDSQL||','; END; FIRST_COME=Ø; CREINDSQL=CREINDSQL||COLNAME; IF ORDERING='A' THEN CREINDSQL=CREINDSQL||'ASC '; EXEC SQL FETCH CRS2 INTO :COLNAME,:ORDERING,:COLSEQ; END; EXEC SQL SELECT MAX(PARTITION) INTO :PARTCNT1 FROM SYSIBM.SYSINDEXPART WHERE IXNAME=:IXNAME AND IXCREATOR=:IXCREATOR; IF SQLCODE < Ø THEN GOTO HATA; IF PARTCNT1=Ø THEN DO; EXEC SQL SELECT PQTY*4,SQTY*4,STORNAME INTO :PQTY,:SQTY,:STORNAME FROM SYSIBM.SYSINDEXPART WHERE IXNAME=:IXNAME AND IXCREATOR=:IXCREATOR;

Page 9: DB2 Master title page May

9© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

IF SQLCODE < Ø THEN GOTO HATA; CREINDSQL=CREINDSQL||') USING STOGROUP '||STORNAME|| ' PRIQTY '||PQTY||' SECQTY '|| SQTY|| ' FREEPAGE Ø PCTFREE Ø GBPCACHE CHANGED'|| ' BUFFERPOOL BP3 CLOSE YES'; END; ELSE DO; CREINDSQL=CREINDSQL||') CLUSTER ('; EXEC SQL DECLARE CRS5 CURSOR FOR SELECT PQTY*4,SQTY*4,STORNAME,PARTITION FROM SYSIBM.SYSINDEXPART WHERE IXNAME=:IXNAME AND IXCREATOR=:IXCREATOR; IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL OPEN CRS5; EXEC SQL FETCH CRS5 INTO :PQTY,:SQTY,:STORNAME,:PARTNUM; IF SQLCODE < Ø THEN GOTO HATA; DO WHILE(SQLCODE=Ø); EXEC SQL SELECT LIMITKEY INTO :LIMITKEY FROM SYSIBM.SYSTABLEPART WHERE PARTITION=:PARTNUM AND TSNAME=:TSNAME AND DBNAME=:DBNAME AND IXNAME=:IXNAME AND IXCREATOR=:IXCREATOR; IF SQLCODE < Ø THEN GOTO HATA; LIMITKEY=STRIP_SPACES(LIMITKEY); CREINDSQL=CREINDSQL||' PART '||PARTNUM|| ' VALUES('||LIMITKEY||')'|| ' USING STOGROUP '||STORNAME|| ' PRIQTY '||PQTY||' SECQTY '|| SQTY|| ' FREEPAGE Ø PCTFREE Ø GBPCACHE CHANGED'; IF PARTNUM=PARTCNT1 THEN CREINDSQL=CREINDSQL||') BUFFERPOOL BP3 CLOSE YES'; ELSE CREINDSQL=CREINDSQL||','; EXEC SQL FETCH CRS5 INTO :PQTY,:SQTY,:STORNAME,:PARTNUM; IF SQLCODE < Ø THEN GOTO HATA; END; EXEC SQL CLOSE CRS5; IF SQLCODE < Ø THEN GOTO HATA; END; EXEC SQL EXECUTE IMMEDIATE :CREINDSQL; IF SQLCODE < Ø THEN DO; PUT SKIP LIST(CREINDSQL); GOTO HATA; END; PUT SKIP EDIT('INDEX UNL.',IXNAME,' CREATED.') (A(1Ø),A(18),A(9)); EXEC SQL CLOSE CRS2;

Page 10: DB2 Master title page May

10 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

IF SQLCODE < Ø THEN GOTO HATA; EXEC SQL SELECT ISOBID,OBID INTO :ISID2,:IID2 FROM SYSIBM.SYSINDEXES WHERE NAME=:IXNAME AND CREATOR='UNL'; IF SQLCODE < Ø THEN GOTO HATA; ISOBID2(IXIND)=ISID2; IOBID2(IXIND)=IID2; EXEC SQL FETCH CRS1 INTO :IXNAME,:IXCREATOR,:UNIQUERULE,:ISID1,:IID1; IF SQLCODE < Ø THEN GOTO HATA; IXIND=IXIND+1; ISOBID1(IXIND)=ISID1; IOBID1(IXIND)=IID1; END; EXEC SQL CLOSE CRS1; IF SQLCODE < Ø THEN GOTO HATA; IXIND=IXIND-1; END CREATE_INDEXES; PREPARE_DSN1CP_JCL:PROC; DCL JCL_LINE(1ØØØ) CHAR(8Ø) VARYING, DSNAME CHAR(44) VARYING, MAXTS CHAR(26) INIT(''), WORKSPACEC CHAR(15) VARYING, PARTCNTC CHAR(15) VARYING, (III,LNCN) FIXED BIN(15);

VCATNAME=STRIP_SPACES(VCATNAME); PARTCNTC=PARTCNT; PARTCNTC=STRIP_SPACES(PARTCNTC); EXEC SQL SELECT MAX(TIMESTAMP) INTO :MAXTS FROM SYSIBM.SYSCOPY WHERE TSNAME=:TSNAME AND DBNAME=:DBNAME AND ICTYPE='F' AND TIMESTAMP<:GIVENMAXTS; PUT SKIP EDIT('IMAGE COPY TAKEN AT ',MAXTS,' WILL BE USED.') (A(21),A(24),A(14)); EXEC SQL SELECT DSNAME INTO :DSNAME FROM SYSIBM.SYSCOPY WHERE TIMESTAMP=:MAXTS AND TSNAME=:TSNAME AND DBNAME=:DBNAME AND ICTYPE='F'; DSNAME=STRIP_SPACES(DSNAME); JCL_LINE(1)='//DSN1COPY JOB (ACCT(tm)),''DSN1COPY'',MSGCLASS=X,'; JCL_LINE(2)='// MSGLEVEL=(1,1),CLASS=A,NOTIFY=&SYSUID'; JCL_LINE(3)='//STOPTS EXEC PGM=IKJEFTØ1,REGION=1Ø24K'; JCL_LINE(4)='//SYSPRINT DD SYSOUT=*'; JCL_LINE(5)='//STEPLIB DD DISP=SHR,DSN='||HLQ||'.SDSNLOAD'; JCL_LINE(6)='// DD DISP=SHR,DSN='||HLQ||'.SDSNLOAD';

Page 11: DB2 Master title page May

11© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

JCL_LINE(7)='//SYSTSPRT DD SYSOUT=*'; JCL_LINE(8)='//SYSPRINT DD SYSOUT=*'; JCL_LINE(9)='//SYSUDUMP DD DUMMY'; JCL_LINE(1Ø)='//SYSTSIN DD *'; JCL_LINE(11)=' DSN SYSTEM('||SSID||')'; JCL_LINE(12)=' -STOP DB('||DBNAME||') SPACENAM('|| NEWTSNAME||')'; JCL_LINE(13)=' END'; JCL_LINE(14)='/*'; JCL_LINE(15)='//DSN1COPY JOB (ACCT(tm)),''DSN1COPY'',MSGCLASS=X,'; JCL_LINE(16)='// MSGLEVEL=(1,1),CLASS=A,NOTIFY=&SYSUID'; JCL_LINE(17)='//DSN1CP EXEC PGM=DSN1COPY,REGION=1Ø24K,'; IF PARTCNT=Ø THEN JCL_LINE(18)='// PARM=''OBIDXLAT,FULLCOPY,'|| 'RESET'''; ELSE JCL_LINE(18)='// PARM=''OBIDXLAT,FULLCOPY,'|| 'NUMPARTS('||PARTCNTC||')'||',RESET'''; JCL_LINE(19)='//STEPLIB DD DSN='||HLQ||'.SDSNLOAD,DISP=SHR'; JCL_LINE(2Ø)='//SYSPRINT DD SYSOUT=*'; JCL_LINE(21)='//SYSUT1 DD DSN='||DSNAME||','; JCL_LINE(22)='// DISP=OLD,UNIT='||UNITNAME; JCL_LINE(23)='//SYSUT2 DD DSN='||VCATNAME||'.DSNDBC.'||DBNAME|| '.'||NEWTSNAME||'.IØØØ1.AØØ1,'; JCL_LINE(24)='// DISP=OLD'; JCL_LINE(25)='//*'; JCL_LINE(26)='//SYSXLAT DD *'; JCL_LINE(27)=' '||DBID1||','||DBID2; JCL_LINE(28)=' '||PSID1||','||PSID2; DO III=1 TO IXIND; JCL_LINE(28+III)=' '||ISOBID1(III)||','||ISOBID2(III); END; DO III=1 TO IXIND; JCL_LINE(28+IXIND+III)=' '||IOBID1(III)||','||IOBID2(III); END; DO III=1 TO TBIND; JCL_LINE(28+IXIND*2+III)=' '||OBID1(III)||','||OBID2(III); END; LNCN=28+IXIND*2+TBIND; JCL_LINE(LNCN+1)='//DSN1COPY JOB ACCT(tm)),''DSN1COPY'',MSGCLASS=X,'; JCL_LINE(LNCN+2)='// MSGLEVEL=(1,1),CLASS=A,NOTIFY=&SYSUID'; JCL_LINE(LNCN+3)='//STARTTS EXEC PGM=IKJEFTØ1,REGION=1Ø24K'; JCL_LINE(LNCN+4)='//SYSPRINT DD SYSOUT=*'; JCL_LINE(LNCN+5)='//STEPLIB DD DISP=SHR,DSN='||HLQ||'.SDSNLOAD'; JCL_LINE(LNCN+6)='// DD DISP=SHR,DSN='||HLQ||'.SDSNLOAD'; JCL_LINE(LNCN+7)='//SYSTSPRT DD SYSOUT=*'; JCL_LINE(LNCN+8)='//SYSPRINT DD SYSOUT=*'; JCL_LINE(LNCN+9)='//SYSUDUMP DD DUMMY'; JCL_LINE(LNCN+1Ø)='//SYSTSIN DD *'; JCL_LINE(LNCN+11)=' DSN SYSTEM('||SSID||')'; JCL_LINE(LNCN+12)=' -START DB('||DBNAME||') SPACENAM('||

Page 12: DB2 Master title page May

12 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

NEWTSNAME||')'; JCL_LINE(LNCN+13)=' END'; JCL_LINE(LNCN+14)='/*'; IF MAXTABUNL < 1Ø24 THEN MAXTABUNL=1Ø24; WORKSPACEC=MAXTABUNL/1Ø24; WORKSPACEC=STRIP_SPACES(WORKSPACEC); IF MAXTABUNL > Ø THEN DO; JCL_LINE(LNCN+15)='//RECINDX EXEC PGM=DSNUTILB,REGION=1Ø24K,'; JCL_LINE(LNCN+16)='// PARM='''||SSID||',DSNTEX'''; JCL_LINE(LNCN+17)='//STEPLIB DD DSN='||HLQ||'.SDSNLOAD,DISP=SHR'; JCL_LINE(LNCN+18)='//*'; JCL_LINE(LNCN+19)='//SORTWKØ1 DD DSN=SYSPDBA.PSØ.RECIND.WORK1.TEMP,'; JCL_LINE(LNCN+2Ø)='// SPACE=(1Ø24,('||WORKSPACEC|| ','||WORKSPACEC||'),,,ROUND)'; JCL_LINE(LNCN+21)='//SORTWKØ2 DD DSN=SYSPDBA.PSØ.RECIND.WORK2.TEMP,'; JCL_LINE(LNCN+22)='// SPACE=(1Ø24,('||WORKSPACEC|| ','||WORKSPACEC||'),,,ROUND)'; JCL_LINE(LNCN+23)='//SYSUT1 DD DSN=SYSPDBA.PSØ.RECIND.SUT1.TEMP,'; JCL_LINE(LNCN+24)='// SPACE=(1Ø24,('||WORKSPACEC|| ','||WORKSPACEC||'),,,ROUND)'; JCL_LINE(LNCN+25)='//SYSPRINT DD SYSOUT=*'; JCL_LINE(LNCN+26)='//UTPRINT DD SYSOUT=*'; JCL_LINE(LNCN+27)='//SYSIN DD *'; JCL_LINE(LNCN+28)=' RECOVER INDEX ALL TABLESPACE '||DBNAME||'.'|| NEWTSNAME; JCL_LINE(LNCN+29)='/*'; DO III=1 TO LNCN+29; PUT FILE(JCLMEM) SKIP EDIT(JCL_LINE(III))(A(8Ø)); END; END; ELSE DO; DO III=1 TO LNCN+14; PUT FILE(JCLMEM) SKIP EDIT(JCL_LINE(III))(A(8Ø)); END; END; END PREPARE_DSN1CP_JCL; STRIP_SPACES:PROC(TEXT) RETURNS(CHAR(5ØØ) VARYING); DCL TEXT CHAR(1ØØØ), III,FIRST_NE FIXED BIN(15); FIRST_NE=Ø; LB1:DO III=1 TO 1ØØØ; IF FIRST_NE¬=Ø & SUBSTR(TEXT,III,1)=' ' THEN DO; RETURN(SUBSTR(TEXT,FIRST_NE,III-FIRST_NE)); LEAVE LB1; END; IF FIRST_NE=Ø & SUBSTR(TEXT,III,1)¬=' ' THEN DO; FIRST_NE=III; END; END; END STRIP_SPACES;

Page 13: DB2 Master title page May

13© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

READ_SYSIN:PROC; DCL (INPUT_TABNAM,INPUT_AUTHID) CHAR(7Ø), (INPUT_SSID,INPUT_DATE) CHAR(7Ø), (INPUT_HLQ,INPUT_UNITNAME) CHAR(7Ø); GET SKIP EDIT(INPUT_AUTHID)(A(7Ø)); GET SKIP EDIT(INPUT_TABNAM)(A(7Ø)); GET SKIP EDIT(INPUT_SSID)(A(7Ø)); GET SKIP EDIT(INPUT_HLQ)(A(7Ø)); GET SKIP EDIT(INPUT_DATE)(A(7Ø)); GET SKIP EDIT(INPUT_UNITNAME)(A(7Ø)); AUTH_ID=STRIP_SPACES(INPUT_AUTHID); TABLE_NAME=STRIP_SPACES(INPUT_TABNAM); SSID=STRIP_SPACES(INPUT_SSID); HLQ=STRIP_SPACES(INPUT_HLQ); GIVENMAXTS=STRIP_SPACES(INPUT_DATE); UNITNAME=STRIP_SPACES(INPUT_UNITNAME); END READ_SYSIN;

HATA: PUT SKIP LIST(SQLCA); EXEC SQL ROLLBACK; STOP; SON: END IMG2UNL;

PROGRAM EXPLANATION

The table to be recovered is entered in the first two lines of SYSIN.This program creates a new tablespace with the same type as thetablespace to which the table belongs. The name of the new tablespacealways starts with UNLOAD (UNLOAD1, UNLOAD2, etc). A newtable is created, identical to the given table, with the same name butwith a different authorization-id (UNL). All other tables in the originaltablespace are also created in the new tablespace with authorization-id UNL. All indexes for all tables are created on the newly createdtables. For example UNL.CST_PSTG_ENT table is created for tableTHST.CST_PSTG_ENT. All other tables in the tablespace ofTHST.CST_PSTG_ENT are created with the authorization-id UNL.All indexes are also created with authorization-id UNL.

DBID, PSID, and ISOBIDs for all indexes, and OBIDs for all tables,are written for current and newly created objects for OBID translation.

If the new tables are not needed any more, you should drop theUNLOADxx tablespaces since this occupies unnecessary space ondisk.

Page 14: DB2 Master title page May

14 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

The JCLMEM DD of the JCL points to a sequential dataset that willbe used for DSN1COPY JCL. Three jobs will be submitted within thisJCL. The first stops the new tablespace. The second runs DSN1COPYjob with OBID translation, and the third starts the tablespace andreorganizes all indexes of the new tablespace.

The DB2 subsystem-id, the HLQ of the DB2 datasets, and the tape unitname must also be entered from SYSIN DD.

We also give a timestamp in SYSIN. This timestamp is used fordefining which image copy will be used. The newest image copy thatis older than the given timestamp will be used for the DSN1COPY job.

SAMPLE JCL TO RUN PROGRAM

//IMG2UNL1 JOB (ACCTO),,MSGCLASS=X,MSGLEVEL=(1,1),CLASS=A//SQL EXEC PGM=IKJEFTØ1,REGION=512K//STEPLIB DD DISP=SHR,DSN=TDSN.SDSNLOAD//JCLMEM DD DSN=SYSPDBA.PSØ.DSN1CP,DISP=OLD//SYSTSPRT DD SYSOUT=*//SYSPRINT DD SYSOUT=*//SYSUDUMP DD DUMMY//SYSIN DD * THST CST_PSTG_ENT DBTØ TDSN 1998-12-3Ø-11.ØØ.ØØ.ØØØØØØ CART/*//SYSTSIN DD * DSN SYSTEM(DBTØ) RUN PROGRAM(IMG2UNL) PLAN(IMG2UNL) LIB('SYSPDBA.LOADLIB') END/*//RUNJCL EXEC PGM=IKJEFTØ1,REGION=512K,COND=(4,LT)//SYSPRINT DD SYSOUT=*//SYSTSPRT DD SYSOUT=*//SYSTSIN DD * SUBMIT 'SYSPDBA.PSØ.DSN1CP'/*

Abdullah OngulDB2 DBAPamukbank (Turkey) © Xephon 1999

Page 15: DB2 Master title page May

15© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

DB2 catalog statistics update REXX EXEC – part 2

This month we conclude the article providing a REXX EXEC that canbe used to update DB2 catalog statistics.

/*————————————————————————————————————————————————————————*/ /* If we are connected to DB2 ( DB2CON = 1) then updates */ /* have been performed, therefore a 'COMMIT' is required. */ /*————————————————————————————————————————————————————————*/ if DB2CON = 1 then do address db2 "COMMIT" if SQLCODE <> Ø then do MESS = 'Error on DB2 Commit sqlcode ' SQLCODE return end MESS = 'Table/Index statistics updated' end else MESS = 'No updates required for Table/Index statistics' /*———————————————————————————————————————————————————————— */ /* Set DUPD flag to show that new number of rows is active */ /*———————————————————————————————————————————————————————— */ DUPD = 1return

/*————————————————————————*/ /* Process Index Columns */ /*————————————————————————*/E_Columns: if DB2CON = Ø then do address db2 "SIGNON" DB2S if RC > Ø then do MESS = "Error - Unable to connect to " DB2S RETURN16 end end DB2CON = 1 /*———————————————————————————————————————————— */ /* Define ISPF Table T£CLM to hold column data */ /*———————————————————————————————————————————— */ address ispexec "TBCREATE T£CLM", "NAMES(CNAME CFLD NCDATAD NCDATAE CCDATAE CCDATAD CTYPE", " CLEN)", "NOWRITE REPLACE" CNAME = "" CCFLD = "" CTYPE = ""

Page 16: DB2 Master title page May

16 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

NCDATAD= "" NCDATAE= "" CCDATAE= "" /*—————————————————————————————————————————————————————————————— */ /* Set up SQL statement to retrieve column data from syscolumns, */ /* using correlated subquery on sysindexes and syskeys to ensure */ /* returned values are for index columns. */ /* Declare and open cursor and fetch required data. */ /*—————————————————————————————————————————————————————————————— */ SLCT = "SELECT A.TBCREATOR,A.TBNAME,A.NAME,", "A.COLCARD,HEX(A.LOW2KEY),HEX(A.HIGH2KEY)", ",A.COLTYPE,A.LENGTH FROM SYSIBM.SYSCOLUMNS A" WHRCLS = "WHERE A.TBCREATOR='"CRTR"' AND A.TBNAME='"TBNAM"'" SUBSLCT = "AND EXISTS (SELECT * FROM SYSIBM.SYSINDEXES B", ",SYSIBM.SYSKEYS C WHERE B.TBCREATOR = A.TBCREATOR", "AND B.TBNAME=A.TBNAME AND B.CREATOR=C.IXCREATOR", "AND B.NAME=C.IXNAME AND A.NAME=C.COLNAME)" ORDBY = " ORDER BY A.TBCREATOR,A.TBNAME,A.NAME" address db2 "DECLARE RXCSR4 CURSOR FOR", SLCT, WHRCLS, SUBSLCT, ORDBY if RC ¬= Ø then MESS = 'Error declaring cursor - RC ' RC else do address db2 "OPEN RXCSR4" do A = 1 by 1 until SQLCODE ¬= Ø address db2 "FETCH RXCSR4" if SQLCODE ¬= Ø then iterate A /*—————————————————————————————————————— */ /* Populate Table T£CLM with column data */ /*—————————————————————————————————————— */ CNAME = RXCSR4.3 CFLD = 'Colcard' CTYPE = RXCSR4.7 CLEN = RXCSR4.8 CCARD = RXCSR4.4 CCDATAD= RXCSR4.4 NCDATAD= RXCSR4.4 CCDATAE= RXCSR4.4 NCDATAE= RXCSR4.4 address ispexec "TBADD T£CLM" CNAME = CTYPE if CTYPE = 'CHAR' | CTYPE = 'DECIMAL' then CNAME = CTYPE || ' ' || CLEN CFLD = 'Lo2key' CCDATAE= RXCSR4.5 call EB_DECODE NCDATAE= CCDATAE

Page 17: DB2 Master title page May

17© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

NCDATAD= CCDATAD address ispexec "TBADD T£CLM" CNAME = ' ' CFLD = 'Hi2key' CCDATAE= RXCSR4.6 call EB_DECODE NCDATAE= CCDATAE NCDATAD= CCDATAD address ispexec "TBADD T£CLM" end address db2 "CLOSE RXCSR4" end address db2 "SIGNOFF" DB2CON = Ø ZCMD = '' address ispexec "TBTOP T£CLM" /*———————————————————————————————— */ /* Process column statistics panel */ /*———————————————————————————————— */ do forever address ispexec "TBDISPL T£CLM PANEL(CSCLM) AUTOSEL(NO)" if rc > 4 then leave MESS = ' ' K = ZTDSELS + Ø do until K < 1 if K > Ø then do I = 1 by 1 to K if NCDATAD = '' | NCDATAD = ' ' then do NCDATAE = CCDATAE NCDATAD = CCDATAD end else /*————————————————————————————————*/ /* Process data depending on CFLD */ /*————————————————————————————————*/ if CFLD = 'Colcard' then NCDATAE = NCDATAD else call EC_ENCODE address ispexec "TBPUT T£CLM" address ispexec "TBDISPL T£CLM" MESS = ' ' end /* I LOOP */ K = ZTDSELS + Ø end /* K LOOP */ MESS = ' ' if rc > 4 then leave if ZCMD = exit then exit if ZCMD = end then leave if ZCMD = 'UPD' then do

Page 18: DB2 Master title page May

18 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

ZCMD = '' call EA_UPDATE leave end end return

/*————————————————————*/ /* Update column data */ /*————————————————————*/EA_UPDATE: address ispexec "TBTOP T£CLM" do forever CFLAG = Ø address ispexec "TBSKIP T£CLM" if rc > Ø then leave if CNAME = ' ' then error UCNAME = CNAME /*———————————————————————————————————————— */ /* Ensure first table entry is for colcard.*/ /* Three table entries for each update. */ /*———————————————————————————————————————— */ if CFLD <> 'Colcard' then do MESS = 'Error first table entry not colcard' return end if CCDATAE <> NCDATAE then CFLAG = 1 NCCARD = NCDATAD address ispexec "TBSKIP T£CLM" if CCDATAD <> NCDATAD then CFLAG = 1 NL2KEY = x2c(NCDATAE) address ispexec "TBSKIP T£CLM" if CCDATAD <> NCDATAD then CFLAG = 1 NH2KEY = x2c(NCDATAE) /*———————————————————————————————————————*/ /* CFLAG set if any updates are required */ /*———————————————————————————————————————*/ if CFLAG = 1 then do CFLAG = Ø if DB2CON = Ø then do address db2 "SIGNON" DB2S if RC > Ø then do MESS = "Error - Unable to connect to " DB2S RETURN16 end DB2CON = 1 end UPDT = "UPDATE SYSIBM.SYSCOLUMNS ", "SET COLCARD="NCCARD",LOW2KEY='"NL2KEY"',", "HIGH2KEY='"NH2KEY"'"

Page 19: DB2 Master title page May

19© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

WHRCLS = "WHERE TBCREATOR='"CRTR"' AND TBNAME='"TBNAM"'", "AND NAME='"UCNAME"'" address db2 UPDT, WHRCLS if SQLCODE <> Ø then do MESS = 'Error on DB2 update rc ' RC ' sqlcode ' SQLCODE return end end end /*————————————————————————————————————————————————————————*/ /* If we are connected to DB2 ( DB2CON = 1) then updates */ /* have been performed, 'SIGNOFF SYNC' required for COMMIT*/ /*————————————————————————————————————————————————————————*/ if DB2CON = 1 then do DB2CON = Ø address db2 "SIGNOFF SYNC" if SQLCODE <> Ø then do MESS = 'Error on DB2 SIGNOFF SYNC sqlcode ' SQLCODE return end MESS = 'Column statistics updated' EUPD = 1 end else MESS = 'No updates required for column statistics'return

/*——————————————————————*/ /* Decode Lo2key/Hi2key */ /*——————————————————————*/EB_DECODE: /*—————————————————————————————————————— */ /* If colcard = -1 set fields to default */ /*—————————————————————————————————————— */ if CCARD = -1 then do CCDATAD = ' ' return end if CCDATAE = '4Ø4Ø4Ø4Ø4Ø4Ø4Ø4Ø' then do CCDATAD = ' ' return end /*——————————————————*/ /* Character Decode */ /*——————————————————*/ if CTYPE = 'CHAR' then do CCDATAD = X2C(CCDATAE) return end

Page 20: DB2 Master title page May

20 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

/*————————————————*/ /* Decimal Decode */ /*————————————————*/ if CTYPE = 'DECIMAL' then do if left(CCDATAE,1) = 'F' then DEFLD = '+' || substr(CCDATAE,2) else do DEFLD = '-' do I = 2 BY 1 TO 16 wkf = x2d(substr(CCDATAE,I,1)) wkf = 15 - wkf wkf = d2x(wkf,1) DEFLD = DEFLD || wkf end end CSIZE = CLEN + 1 CCDATAD = left(DEFLD,CSIZE) return end /*————————————————*/ /* Integer Decode */ /*————————————————*/ if CTYPE = 'INTEGER' then do DEFLD = '' wkf = left(CCDATAE,8) wkf = x2b(wkf) if left(wkf,1) = '1' then wkf = 'Ø' || substr(wkf,2) else wkf = '1' || substr(wkf,2) defld = b2x(wkf) defld = x2d(defld,9) CCDATAD = DEFLD return end /*———————————————— */ /* Smallint Decode */ /*———————————————— */ if CTYPE = 'SMALLINT' then do DEFLD = '' wkf = left(CCDATAE,4) wkf = x2b(wkf) if left(wkf,1) = '1' then wkf = 'Ø' || substr(wkf,2) else wkf = '1' || substr(wkf,2) defld = b2x(wkf) defld = x2d(defld,5) CCDATAD = DEFLD return

Page 21: DB2 Master title page May

21© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

end /*————————————————————————————————————————————*/ /* Default Decode data to hexadecimal encoded */ /*————————————————————————————————————————————*/ CCDATAD = CCDATAE return

EC_ENCODE: /*——————————————————*/ /* Character Encode */ /*——————————————————*/ if CTYPE = 'CHAR' then do NCDATAD = left(NCDATAD,CLEN) NCDATAE = c2x(NCDATAD) || '4Ø4Ø4Ø4Ø4Ø4Ø4Ø4Ø' NCDATAE = left(NCDATAE,16) return end /*————————————————*/ /* Decimal Encode */ /*————————————————*/ if CTYPE = 'DECIMAL' then do if CLEN > 15 then CLEN = 15 CSIZE = CLEN + 1 DSIGN = left(NCDATAD,1) /*——————————————*/ /* Extract sign */ /*——————————————*/ if DSIGN ¬= '+' then if DSIGN ¬= '-' then do if DSIGN = ' ' then NCDADATD = '+' || substr(NCDATAD,2) else NCDATAD = '+' || NCDATAD DSIGN = '+' end /*—————————————— */ /* Right justify */ /*—————————————— */ DLEN = length(NCDATAD) ZS = CSIZE - DLEN if ZS > Ø then do until ZS < 1 NCDATAD = DSIGN || 'Ø' || substr(NCDATAD,2) ZS = ZS - 1 end NCDATAD = left(NCDATAD,CSIZE) /*————————————*/ /* Now encode */ /*————————————*/ if left(NCDATAD,1) = '-' then do DEFLD = 'Ø' do I = 2 BY 1 TO CSIZE wkf = x2d(substr(NCDATAD,I,1))

Page 22: DB2 Master title page May

22 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

wkf = 15 - wkf wkf = d2x(wkf,1) DEFLD = DEFLD || wkf end DEFLD = DEFLD || '4Ø4Ø4Ø4Ø4Ø4Ø4Ø4Ø' end else DEFLD = 'F' || substr(NCDATAD,2,CLEN) || '4Ø4Ø4Ø4Ø4Ø4Ø4Ø4Ø' NCDATAE = left(DEFLD,16) return end /*———————————————————————————— */ /* Smallint/Integer validation */ /*———————————————————————————— */ if CTYPE = 'INTEGER' then do intlen = 9 if left(NCDATAD,1) = '-' then intlen = intlen + 1 if left(NCDATAD,1) = '+' then intlen = intlen + 1 NCDATAD = left(NCDATAD,intlen) end if CTYPE = 'SMALLINT' then do if NCDATAD < -32768 then NCDATAD = -32768 if NCDATAD > 32767 then NCDATAD = 32767 end /*————————————————*/ /* Integer Encode */ /*————————————————*/ if CTYPE = 'INTEGER' then do wkf = d2x(NCDATAD,8) wkf = x2b(wkf) if left(wkf,1) = '1' then wkf = 'Ø' || substr(wkf,2) else wkf = '1' || substr(wkf,2) wkf = b2x(wkf) NCDATAE = wkf || '4Ø4Ø4Ø4Ø' return end /*———————————————— */ /* Smallint Encode */ /*———————————————— */ if CTYPE = 'SMALLINT' then do wkf = d2x(NCDATAD,4) wkf = x2b(wkf) if left(wkf,1) = '1' then wkf = 'Ø' || substr(wkf,2) else wkf = '1' || substr(wkf,2) wkf = b2x(wkf) NCDATAE = wkf || '4Ø4Ø4Ø4Ø4Ø4Ø'

Page 23: DB2 Master title page May

23© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

return end /*———————————— */ /* Date Encode */ /*———————————— */ if CTYPE = 'DATE' then do NCDATAD = left(NCDATAD,8) || '4Ø4Ø4Ø4Ø' NCDATAE = NCDATAD return end /*—————————————————————————————————————— */ /* Default Endcode data to input decoded */ /*—————————————————————————————————————— */ NCDATAE = NCDATAD || '4Ø4Ø4Ø4Ø4Ø4Ø4Ø4Ø' NCDATAE = left(NCDATAE,16) return

Liz PageIndependent Consultant (UK) © Xephon 1999

Driving and testing FIELDPROC

This article gives a PL/I program that drives and tests a DB2 AssemblerFIELDPROC exit. Using this program, you can perform a lot oftesting before linking your FIELDPROC to the exits library.

PL/I PROGRAM

//TSHVRD JOB (),'PLIXC',CLASS=A,MSGCLASS=X,NOTIFY=TSHVR//PLI EXEC IEL1CLG,// REGION=5ØØØK,// PARM.PLI='OFFSET,INCLUDE,NODECK,LIST,AGGREGATE,ATTRIBUTES',// PARM.LKED='XREF,LIST,RENT,AMODE=31,RMODE=ANY',// PARM.GO='/'//PLI.SYSLIB DD DSN=TSHVR.SOURCE.TEST,DISP=SHR// DD DSN=TSHVR.INCLUDE.TOOLS,DISP=SHR// DD DSN=TSHVR.SOURCE.TOOLS,DISP=SHR//PLI.SYSIN DD ** PROCESS LANGLVL(OS,SPROG);* PROCESS SYSTEM(MVS); /*TST2UC TEST DBF2UC */ /* drives and test DB2 Assembler FIELDPROC exit */ TST2UC: PROC(PARMS) OPTIONS(MAIN REENTRANT) ;

Page 24: DB2 Master title page May

24 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

/***************************/ /* RETURN CODES */ /***************************/ DCL MYRC BIN FIXED(31) INIT(Ø); /***************************/ /* CONSTANTS */ /***************************/ DCL $TRUE BIT(1) STATIC INIT('1'B); DCL $FALSE BIT(1) STATIC INIT('Ø'B); DCL $ERROR CHAR(8) STATIC INIT('*ERROR*'); DCL $DEBUG CHAR(8) STATIC INIT('*DEBUG*'); DCL $INFO CHAR(8) STATIC INIT('*INFO *'); DCL $PROG CHAR(8) STATIC INIT('TST2UC'); DCL $HOMELIB CHAR(44) STATIC INIT('TSHVR.SOURCE.TEST'); /***************************/ /* EXTERNAL ENTRIES ENTRY */ /***************************/ DCL DBF2UC ENTRY OPTIONS(INTER,ASM,RETCODE); DCL HVPC2X ENTRY OPTIONS(INTER,ASM,RETCODE); DCL HVPDMPX ENTRY( POINTER, BIN FIXED(31), FILE) RETURNS(BIN FIXED(31)); /***************************/ /* PASSED PARM PARMS PRM */ /***************************/ DCL PARMS CHAR(*) VARYING; /***************************/ /* BUILTIN */ /***************************/ %INCLUDE BUILTIN; /***************************/ /* FILES */ /***************************/ DCL SYSPRINT FILE STREAM OUTPUT PRINT ; /***************************/ /* WORK VARIABLES */ /***************************/ DCL TRCLVL BIN FIXED(31) INIT(Ø); dcl loper bin fixed(15); dcl loper_chars(2) char(1) based(addr(loper)); DCL PRMTST1 CHAR(14); DCL PRMABEND CHAR(5) INIT('ABEND'); DCL PVDL BIN FIXED(15); /**/ /* DSN41Ø.SDSNMACS(DSNDFPPB) */ DCL FPBFENC BIN FIXED(15) STATIC INIT(Ø); DCL FPBFDEC BIN FIXED(15) STATIC INIT(4); DCL FPBFDEF BIN FIXED(15) STATIC INIT(8); DCL FPBFINV BIN FIXED(15) STATIC INIT(12);

Page 25: DB2 Master title page May

25© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

DCL FPBWKLND BIN FIXED(15) STATIC INIT(512); DCL FPVDTINT BIN FIXED(15) STATIC INIT(Ø); DCL FPVDTSMA BIN FIXED(15) STATIC INIT(4); DCL FPVDTFLT BIN FIXED(15) STATIC INIT(8); DCL FPVDTDEC BIN FIXED(15) STATIC INIT(12); DCL FPVDTCHR BIN FIXED(15) STATIC INIT(16); DCL FPVDTVCH BIN FIXED(15) STATIC INIT(2Ø); DCL FPVDTGRA BIN FIXED(15) STATIC INIT(24); DCL FPVDTVRA BIN FIXED(15) STATIC INIT(28); DCL FPPL@ POINTER; DCL Ø1 FPPL UNALIGNED, Ø2 FPPWORK POINTER, Ø2 FPPFPIB POINTER, Ø2 FPPCVD POINTER, Ø2 FPPFVD POINTER, Ø2 FPPPVL POINTER; DCL Ø1 FPIB UNALIGNED, Ø2 FPBFCODE BIN FIXED(15) INIT(Ø), Ø2 FPBWKLN BIN FIXED(15) INIT(Ø), Ø2 FPBSORC BIN FIXED(15) INIT(Ø), Ø2 FPBRTNC CHAR(2) INIT(''), Ø2 FPBRSNC CHAR(4) INIT(''), Ø2 FPBTOKP POINTER INIT(SYSNULL), Ø2 RSRVD CHAR(4) INIT(LOW(4)); DCL FPBTOK CHAR(4Ø) BASED(FPBTOKP); DCL Ø1 FPVD UNALIGNED BASED, Ø2 FPVDHD, Ø3 FPVDTYPE BIN FIXED(15), Ø3 FPVDVLEN BIN FIXED(15), Ø2 FPVDVALE CHAR(1); DCL Ø1 FPVD_DEC UNALIGNED CTL, Ø2 FPVDHD, Ø3 FPVDTYPE BIN FIXED(15), Ø3 FPVDPREC BIT(8), Ø3 FPVDSCAL BIT(8), Ø2 FPVDVALE CHAR(*); DCL Ø1 CVD_DEF UNALIGNED , Ø2 FPVDHD, Ø3 FPVDTYPE BIN FIXED(15), Ø3 FPVDVLEN BIN FIXED(15); DCL Ø1 CVD UNALIGNED CTL, Ø2 FPVDHD, Ø3 FPVDTYPE BIN FIXED(15), Ø3 FPVDVLEN BIN FIXED(15), Ø2 FPVDVALE CHAR(*); DCL Ø1 CVD_VL UNALIGNED CTL, Ø2 FPVDHD, Ø3 FPVDTYPE BIN FIXED(15), Ø3 FPVDVLEN BIN FIXED(15), Ø2 FPVDVALE CHAR(*) VARYING; DCL Ø1 FVD_DEF UNALIGNED ,

Page 26: DB2 Master title page May

26 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Ø2 FPVDHD, Ø3 FPVDTYPE BIN FIXED(15), Ø3 FPVDVLEN BIN FIXED(15); DCL Ø1 FVD UNALIGNED CTL, Ø2 FPVDHD, Ø3 FPVDTYPE BIN FIXED(15), Ø3 FPVDVLEN BIN FIXED(15), Ø2 FPVDVALE CHAR(*); DCL Ø1 FVD_VL UNALIGNED CTL, Ø2 FPVDHD, Ø3 FPVDTYPE BIN FIXED(15), Ø3 FPVDVLEN BIN FIXED(15), Ø2 FPVDVALE CHAR(*) VARYING; /* FIELDPROC PARAMETER VALUE LIST */ DCL FPPVVDS@ POINTER; DCL Ø1 FPPVL UNALIGNED, Ø2 FPPVLEN BIN FIXED(15), Ø2 FPPVAREA, Ø3 FPPVCNT BIN FIXED(15), Ø3 FPPVVDS CHAR(254); /* PVD'S */ /*254=max.length*/ DCL WA_DEF CHAR(512); DCL WA_WORK CHAR(*) CTL; DCL WA_WORK_LEN BIN FIXED(15); /***************************/ /* CONDITIONS */ /***************************/ /***************************/ /* MAIN */ /***************************/ PUT SKIP LIST('TEST@ DBF2UC NO PARMS ->ERROR'); CALL DBF2UC; MYRC=PLIRETV(); PUT SKIP DATA(MYRC); PUT SKIP LIST('TEST@ DBF2UC NO PARMS ->ERROR END'); /**/ PUT SKIP LIST('TEST@ DBF2UC INV CODE ->ERROR'); WA_DEF=''; FPBFCODE=FPBFINV; FPBWKLN=CSTG(WA_DEF); FPBTOKP=SYSNULL; CALL DBF2UC(WA_DEF,FPIB,SYSNULL,SYSNULL,SYSNULL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC); PUT SKIP DATA(FPIB); PUT SKIP LIST('TEST@ DBF2UC INV CODE ->ERROR END'); /**/ PUT SKIP LIST('TEST@ DBF2UC INV TYPE ->ERROR'); WA_DEF=''; FPBFCODE=FPBFDEF; FPBWKLN=CSTG(WA_DEF); FPBTOKP=SYSNULL;

Page 27: DB2 Master title page May

27© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

CVD_DEF.FPVDTYPE=255; /*INVALID*/ CVD_DEF.FPVDVLEN=255; CALL DBF2UC(WA_DEF,FPIB,CVD_DEF,FVD_DEF,FPPVL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC); IF FPBTOKP¬=SYSNULL THEN PUT SKIP EDIT('FPBTOK=',FPBTOK)(A); PUT SKIP DATA(FPIB); PUT SKIP LIST('TEST@ DBF2UC INV TYPE ->ERROR END'); /**/ PUT SKIP LIST('TEST@ DBF2UC DEFINE WITH PRMABEND->NOK'); WA_DEF=''; FPBFCODE=FPBFDEF; FPBWKLN=CSTG(WA_DEF); FPBTOKP=SYSNULL; CVD_DEF.FPVDTYPE=FPVDTCHR; CVD_DEF.FPVDVLEN=255; /**/ FPPVLEN=2; FPPVCNT=Ø; FPPVVDS@=ADDR(FPPVVDS); PVDL=PVD_ADD(FPPVVDS@,FPVDTCHR,CSTG(PRMABEND),PRMABEND); FPPVLEN=FPPVLEN+PVDL; FPPVCNT=FPPVCNT+1; FPPVVDS@=POINTERADD(FPPVVDS@,PVDL); MYRC=HVPDMPX(ADDR(FPPVL),BINARY(fppvlen+2,31),SYSPRINT); /**/ CALL DBF2UC(WA_DEF,FPIB,CVD_DEF,FVD_DEF,FPPVL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC); IF FPBTOKP¬=SYSNULL THEN PUT SKIP EDIT('FPBTOK=',FPBTOK)(A); PUT SKIP DATA(FPIB); PUT SKIP DATA(FVD_DEF); PUT SKIP LIST('TEST@ DBF2UC DEFINE WITH PRMABEND->NOK END'); /**/ PUT SKIP LIST('TEST@ DBF2UC DEFINE OK'); WA_DEF=''; FPBFCODE=FPBFDEF; FPBWKLN=CSTG(WA_DEF); FPBTOKP=SYSNULL; CVD_DEF.FPVDTYPE=FPVDTCHR; CVD_DEF.FPVDVLEN=255; /**/ FPPVLEN=2; FPPVCNT=Ø; FPPVVDS@=ADDR(FPPVVDS); PRMTST1='PRM 1 2 3'; PVDL=PVD_ADD(FPPVVDS@,FPVDTCHR,CSTG(PRMTST1),PRMTST1); FPPVLEN=FPPVLEN+PVDL; FPPVCNT=FPPVCNT+1;

Page 28: DB2 Master title page May

28 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

FPPVVDS@=POINTERADD(FPPVVDS@,PVDL); MYRC=HVPDMPX(ADDR(FPPVL),BINARY(fppvlen+2,31),SYSPRINT); /**/ CALL DBF2UC(WA_DEF,FPIB,CVD_DEF,FVD_DEF,FPPVL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC); IF FPBTOKP¬=SYSNULL THEN PUT SKIP EDIT('FPBTOK=',FPBTOK)(A); PUT SKIP DATA(FPIB); PUT SKIP DATA(FVD_DEF); PUT SKIP LIST('TEST@ DBF2UC DEFINE OK END'); /**/ WA_WORK_LEN=FPIB.FPBWKLN; /**/ PUT SKIP LIST('TEST@ DBF2UC ENCODE '); ALLOC WA_WORK CHAR(WA_WORK_LEN); WA_WORK=''; FPBFCODE=FPBFENC; FPBWKLN=WA_WORK_LEN; FPBTOKP=SYSNULL; ALLOCATE Ø1 CVD, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(16); ALLOCATE Ø1 FVD, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(16); CVD.FPVDTYPE=FPVDTCHR; CVD.FPVDVLEN=16; cvd.fpvdvale='abcdefghijklmnops'; fvD.FPVDTYPE=FPVDTCHR; fVD.FPVDVLEN=16; fvd.fpvdvale=''; CALL DBF2UC(WA_DEF,FPIB,CVD,FVD,FPPVL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC); IF FPBTOKP¬=SYSNULL THEN PUT SKIP EDIT('FPBTOK=',FPBTOK)(A); PUT SKIP DATA(FPIB); PUT SKIP DATA(FVD); FREE CVD; FREE FVD; FREE WA_WORK; PUT SKIP LIST('TEST@ DBF2UC ENCODE END');

Page 29: DB2 Master title page May

29© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

/**/ PUT SKIP LIST('TEST@ DBF2UC DECODE'); ALLOC WA_WORK CHAR(WA_WORK_LEN); WA_WORK=''; FPBFCODE=FPBFdec; FPBWKLN=WA_WORK_LEN; FPBTOKP=SYSNULL; ALLOCATE Ø1 CVD, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(16); ALLOCATE Ø1 FVD, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(16); fvD.FPVDTYPE=FPVDTCHR; fvd.FPVDVLEN=16; fvd.fpvdvale='abcdefghijklmnops'; cvd.FPVDTYPE=FPVDTCHR; cvd.FPVDVLEN=16; cvd.fpvdvale=''; CALL DBF2UC(WA_DEF,FPIB,CVD,FVD,FPPVL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC); IF FPBTOKP¬=SYSNULL THEN PUT SKIP EDIT('FPBTOK=',FPBTOK)(A); PUT SKIP DATA(FPIB); PUT SKIP DATA(cVD); FREE CVD; FREE FVD; FREE WA_WORK; PUT SKIP LIST('TEST@ DBF2UC DECODE END'); /**/ ALLOC WA_WORK CHAR(WA_WORK_LEN); WA_WORK=''; FPBFCODE=FPBFdec; FPBWKLN=WA_WORK_LEN; FPBTOKP=SYSNULL; ALLOCATE Ø1 CVD, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(16); ALLOCATE Ø1 FVD,

Page 30: DB2 Master title page May

30 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(16); fvD.FPVDTYPE=FPVDTCHR; fvd.FPVDVLEN=16; fvd.fpvdvale='abcdefghijklmnops'; cvd.FPVDTYPE=FPVDTCHR; cvd.FPVDVLEN=Ø8; /*error ! */ cvd.fpvdvale=''; CALL DBF2UC(WA_DEF,FPIB,CVD,FVD,FPPVL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC); IF FPBTOKP¬=SYSNULL THEN PUT SKIP EDIT('FPBTOK=',FPBTOK)(A); PUT SKIP DATA(FPIB); PUT SKIP DATA(cVD); FREE CVD; FREE FVD; FREE WA_WORK; /**/ PUT SKIP LIST('TEST@ DBF2UC ENCODE LEN > 255 '); ALLOC WA_WORK CHAR(WA_WORK_LEN); WA_WORK=''; FPBFCODE=FPBFENC; FPBWKLN=WA_WORK_LEN; FPBTOKP=SYSNULL; ALLOCATE Ø1 CVD, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(3ØØ); ALLOCATE Ø1 FVD, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(3ØØ); CVD.FPVDTYPE=FPVDTCHR; CVD.FPVDVLEN=3ØØ; DO LOPER=1 TO CVD.FPVDVLEN; SUBSTR(CVD.FPVDVALE,LOPER,1)=LOPER_CHARS(2); END; FVD.FPVDTYPE=FPVDTCHR; FVD.FPVDVLEN=CVD.FPVDVLEN; FVD.FPVDVALE=''; CALL DBF2UC(WA_DEF,FPIB,CVD,FVD,FPPVL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC);

Page 31: DB2 Master title page May

31© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

IF FPBTOKP¬=SYSNULL THEN PUT SKIP EDIT('FPBTOK=',FPBTOK)(A); PUT SKIP DATA(FPIB); PUT SKIP DATA(CVD); PUT SKIP DATA(FVD); FREE CVD; FREE FVD; FREE WA_WORK; PUT SKIP LIST('TEST@ DBF2UC ENCODE LEN > 255 END'); /**/ PUT SKIP LIST('TEST@ DBF2UC ENCODE VAR LEN = Ø '); ALLOC WA_WORK CHAR(WA_WORK_LEN); WA_WORK=''; FPBFCODE=FPBFENC; FPBWKLN=WA_WORK_LEN; FPBTOKP=SYSNULL; ALLOCATE Ø1 CVD_VL, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(257) ; ALLOCATE Ø1 FVD_VL, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(257) ; CVD_VL.FPVDTYPE=FPVDTVCH; CVD_VL.FPVDVALE=''; CVD_VL.FPVDVLEN=STG(CVD_VL.FPVDVALE)-2; FVD_VL.FPVDTYPE=CVD_VL.FPVDTYPE; FVD_VL.FPVDVLEN=CVD_VL.FPVDVLEN; FVD_VL.FPVDVALE=''; PUT SKIP EDIT('STG CVD:',STG(CVD_VL.FPVDVALE))(A); PUT SKIP EDIT('LEN CVD:',LENGTH(CVD_VL.FPVDVALE))(A); PUT SKIP EDIT('STG FVD:',STG(FVD_VL.FPVDVALE))(A); PUT SKIP EDIT('LEN FVD:',LENGTH(FVD_VL.FPVDVALE))(A); MYRC=HVPDMPX(ADDR(CVD_VL), BINARY(CSTG(CVD_VL),31),SYSPRINT); CALL DBF2UC(WA_DEF,FPIB,CVD_VL,FVD_VL,FPPVL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC); IF FPBTOKP¬=SYSNULL THEN PUT SKIP EDIT('FPBTOK=',FPBTOK)(A); PUT SKIP DATA(FPIB); PUT SKIP DATA(CVD_vl); PUT SKIP EDIT('LEN:',LENGTH(CVD_VL.FPVDVALE))(A); PUT SKIP DATA(FVD_vl); PUT SKIP EDIT('LEN:',LENGTH(FVD_VL.FPVDVALE))(A);

Page 32: DB2 Master title page May

32 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

MYRC=HVPDMPX(ADDR(FVD_VL), BINARY(CSTG(FVD_VL),31),SYSPRINT); FREE CVD_vl; FREE FVD_vl; FREE WA_WORK; PUT SKIP LIST('TEST@ DBF2UC ENCODE VAR LEN = Ø END'); /**/ PUT SKIP LIST('TEST@ DBF2UC ENCODE VAR LEN '); ALLOC WA_WORK CHAR(WA_WORK_LEN); WA_WORK=''; FPBFCODE=FPBFENC; FPBWKLN=WA_WORK_LEN; FPBTOKP=SYSNULL; ALLOCATE Ø1 CVD_VL, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(257) ; ALLOCATE Ø1 FVD_VL, Ø2 FPVDHD, Ø3 FPVDTYPE , Ø3 FPVDVLEN , Ø2 FPVDVALE CHAR(257) ; CVD_VL.FPVDTYPE=FPVDTVCH; CVD_VL.FPVDVALE='abcd'; CVD_VL.FPVDVLEN=STG(CVD_VL.FPVDVALE)-2; FVD_VL.FPVDTYPE=CVD_VL.FPVDTYPE; FVD_VL.FPVDVLEN=CVD_VL.FPVDVLEN; FVD_VL.FPVDVALE=''; PUT SKIP EDIT('STG CVD:',STG(CVD_VL.FPVDVALE))(A); PUT SKIP EDIT('LEN CVD:',LENGTH(CVD_VL.FPVDVALE))(A); PUT SKIP EDIT('STG FVD:',STG(FVD_VL.FPVDVALE))(A); PUT SKIP EDIT('LEN FVD:',LENGTH(FVD_VL.FPVDVALE))(A); MYRC=HVPDMPX(ADDR(CVD_VL), BINARY(CSTG(CVD_VL),31),SYSPRINT); CALL DBF2UC(WA_DEF,FPIB,CVD_VL,FVD_VL,FPPVL); MYRC=PLIRETV(); PUT SKIP DATA(MYRC); IF FPBTOKP¬=SYSNULL THEN PUT SKIP EDIT('FPBTOK=',FPBTOK)(A); PUT SKIP DATA(FPIB); PUT SKIP DATA(CVD_vl); PUT SKIP EDIT('LEN:',LENGTH(CVD_VL.FPVDVALE))(A); PUT SKIP DATA(FVD_vl); PUT SKIP EDIT('LEN:',LENGTH(FVD_VL.FPVDVALE))(A); MYRC=HVPDMPX(ADDR(FVD_VL), BINARY(CSTG(FVD_VL),31),SYSPRINT); FREE CVD_vl;

Page 33: DB2 Master title page May

33© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

FREE FVD_vl; FREE WA_WORK; PUT SKIP LIST('TEST@ DBF2UC ENCODE VAR LEN = Ø END'); /***************************/ /* END */ /***************************/ L_RETURN: ON ERROR SYSTEM; /* AVOID ERROR LOOP */ CALL PLIRETC(MYRC); RETURN; /***************************/ /* SUBROUTINES */ /***************************/ PVD_ADD:PROC(FPPVVDS@,TP,LN,V) RETURNS(BIN FIXED(31)); DCL FPPVVDS@ POINTER; DCL TP BIN FIXED(15); DCL LN BIN FIXED(15); DCL V CHAR(*); DCL BF31 BIN FIXED(31) BASED; DCL PVDL BIN FIXED(31) INIT(Ø); DCL TMP@ POINTER; TMP@=FPPVVDS@; PVDL=4+2+2+LN; TMP@->BF31=PVDL; TMP@=POINTERADD(TMP@,4); TMP@->FPVD.FPVDTYPE=TP; TMP@->FPVD.FPVDVLEN=LN; SUBSTR(TMP@->FPVD.FPVDVALE,1,LN)=V; RETURN(PVDL); END PVD_ADD; END TST2UC ;/*//LKED.SYSLIB DD// DD DISP=SHR,DSN=TSHVR.PGM.LOAD// DD DISP=SHR,DSN=TSHVR.PGM.TOOLS//LKED.SYSIN DD * INCLUDE TOOLSMOD(DBF2UC) INCLUDE TOOLSMOD(HVPC2X) INCLUDE TOOLSMOD(HVPDMPX)/*//LKED.TOOLSMOD DD DISP=SHR,DSN=TSHVR.TEST.OBJMOD// DD DISP=SHR,DSN=TSHVR.TOOLS.OBJMOD//GO.STEPLIB DD// DD DISP=SHR,DSN=TSHVR.PGM.TOOLS//GO.SYSPRINT DD SYSOUT=X,OUTLIM=3ØØØØ ,CHARS=(GFC),HOLD=YES

Editor’s note: this article will be concluded next month.

Herman VierendeelsSystems Programmer (Belgium) © Xephon 1999

Page 34: DB2 Master title page May

34 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Verifying start-up parameters – part 2

This month we conclude the program that reads the values of ZPARMin the DB2 control blocks, converts the parameter values to reportformat, and writes to a report file.

*SPRMØ13Ø DS ØH MVC PRGFINST,=C' NO'*SPRMØ135 DS ØH TM SPRMREGF,X'4Ø' RGFDEDPL CHECK BNO SPRMØ14Ø MVC PRGFDEDP,=C'YES' B SPRMØ145*SPRMØ14Ø DS ØH MVC PRGFDEDP,=C' NO'*SPRMØ145 DS ØH TM SPRMREGF,X'2Ø' RGFFULLQ CHECK BNO SPRMØ15Ø MVC PRGFFULL,=C'YES' B SPRMØ155*SPRMØ15Ø DS ØH MVC PRGFFULL,=C' NO'*SPRMØ155 DS ØH TM SPRMREGF,X'1Ø' RGFDEFLT CHECK BNO SPRMØ16Ø MVC PRGFDEFL,=C'ACCEPT' B SPRMØ17Ø*SPRMØ16Ø DS ØH TM SPRMREGF,X'Ø1' BNO SPRMØ165 MVC PRGFDEFL,=C' APPL' B SPRMØ17Ø*SPRMØ165 DS ØH MVC PRGFDEFL,=C'REJECT'*SPRMØ17Ø DS ØH MVC PRGFESCP,SPRMREGE TM SPRMTYP,X'8Ø' SITETYPE CHECK BNO SPRMØ175 MVC PSITETYP,=C' LOCALSITE'

Page 35: DB2 Master title page May

35© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

B SPRMØ18Ø*SPRMØ175 DS ØH MVC PSITETYP,=C'RECOVERYSITE'*SPRMØ18Ø DS ØH SR R8,R8 CLEAR WORK REGISTER L R9,SPRMSORP SRTPOOL D R8,=F'1Ø24' DIVIDE BY 1Ø24 CVD R9,PACKWKØ1 CONVERT TO DECIMAL MVC EDWORK1Ø,=X'4Ø2Ø6B2Ø2Ø2Ø6B2Ø212Ø' ED EDWORK1Ø,PACKWKØ1+4 MVC PSRTPOOL,EDWORK1Ø MVC PSYSADM,SPRMSADM SYSADM MVC PSYSADM2,SPRMADM2 SYSADM2 MVC PSYSOPR1,SPRMOPR1 SYSOPR1 MVC PSYSOPR2,SPRMOPR2 SYSOPR2 LH R7,SPRMUTO UTIMOUT CVD R7,PACKWKØ1 CONVERT TO DECIMAL MVC EDWORK1Ø,=X'4Ø2Ø6B2Ø2Ø2Ø6B2Ø212Ø' ED EDWORK1Ø,PACKWKØ1+4 MVC PUTIMOUT,EDWORK1Ø LA R8,PRTSPRM SET PRTSPRM ADDR MVC LOOPCNT,=X'ØØ19' SET LOOPCNT LH R9,LOOPCNT BAL R14,WRTRTN*SPRMEXT DS ØH L R14,SPRMSAVE SET RETURN ADDR BR R14 RETURN NEXT INST ADDR*SPRMSAVE DS F'Ø' EJECT*WRTRTN DS ØH ST R14,WRTSAVE SAVE RETURN ADDR MVI OUTREC+Ø,C' ' CLEAR OUTREC MVC OUTREC+1(79),OUTREC+Ø PUT ZPARMDD,OUTREC WRITE*WRTØØØØ DS ØH MVC OUTREC+Ø(8Ø),Ø(R8) MOVE PRT RECORD PUT ZPARMDD,OUTREC WRITE LA R8,8Ø(R8) POINT TO NEXT PRT AREA BCT R9,WRTØØØØ MORE RECORD TO PRINT*WRTEXT DS ØH L R14,WRTSAVE SET RETURN ADDR BR R14 RETURN NEXT INST ADDR*WRTSAVE DS F'Ø'

Page 36: DB2 Master title page May

36 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

EJECT********************************************* WORK AREA AND CONSTANTS ******************************************** SPACE DS ØFSAVEAREA DS 18F'Ø' MY SAVE AREARETCODE DC F'8' RETURN CODEPARAM DC CL4' ' DB2 NAME FROM PARM LISTPACKWKØ1 DS PL8PACKWKØ2 DS PL8EDWORK1Ø DS CL1ØLOOPCNT DC XL2'ØØØØ'************************************************************************ OUTREC RECORD - PARAMETER DSECT ************************************************************************OUTREC DC CL8Ø' ' OUTREC AREA SPACEPRTARVP DS ØCL8Ø ARVP PRINT AREA DC CL4Ø' **** DSN6ARVP PARAMETER LIST **** ' DC CL4Ø' ' DC CL2' ' DC CL1Ø'ALCUNIT : ' DC CL7' 'PALCUNIT DC CL3' ' CYL/TRK/BLK DC CL18' ' DC CL2' ' DC CL1Ø'ARCWTOR : ' DC CL7' 'PARCWTOR DC CL3' ' WTOR YES/NO DC CL18' ' DC CL2' ' DC CL1Ø'ARCRETN : 'PARCRETN DC CL1Ø' ' RETENTION PERIOD DC CLØ3'DAY' DC CL15' ' DC CL2' ' DC CL1Ø'BLKSIZE : 'PBLKSIZE DC CL1Ø' ' BLKSIZE DC CL18' ' DC CL2' ' DC CL1Ø'CATALOG : ' DC CL7' 'PCATALOG DC CL3' ' CATALOG YES/NO DC CL18' ' DC CL2' ' DC CL1Ø'COMPACT : ' DC CL7' 'PCOMPACT DC CL3' ' COMPACT YES/NO DC CL18' '

Page 37: DB2 Master title page May

37© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

DC CL2' ' DC CL1Ø'PRIQTY : 'PPRIQTY DC CL1Ø' ' PRIMARY QUANTITY DC CL18' ' DC CL2' ' DC CL1Ø'SECQTY : 'PSECQTY DC CL1Ø' ' SECONDARY QUANTITY DC CL18' ' DC CL2' ' DC CL1Ø'PROTECT : ' DC CL7' 'PPROTECT DC CL3' ' PROTECT YES/NO DC CL18' ' DC CL2' ' DC CL1Ø'QUIESCE : 'PQUIESCE DC CL1Ø' ' QUIESCE DC CLØ3'SEC' DC CL15' ' DC CL2' ' DC CL1Ø'TSTAMP : ' DC CL7' 'PTSTAMP DC CL3' ' TIMESTAMP YES/NO DC CL18' ' DC CL2' ' DC CL1Ø'UNIT : ' DC CL6' 'PUNIT DC CL8' ' UNIT1 DC CL14' ' DC CL2' ' DC CL1Ø'UNIT2 : ' DC CL6' 'PUNIT2 DC CL8' ' UNIT2 DC CL54' ' DC CL2' ' DC CL1Ø'ARCPFX1 : 'PARCPFX1 DC CL35' ' PERFIX1 NAME DC CL33' ' DC CL2' ' DC CL1Ø'ARCPFX2 : 'PARCPFX2 DC CL35' ' PERFIX2 NAME DC CL33' ' SPACE*PRTLOGP DS ØCL8Ø LOGP PRINT AREA DC CL4Ø' **** DSN6LOGP PARAMETER LIST **** ' DC CL4Ø' ' DC CL2' ' DC CL1Ø'DEALLCT : 'PDEALLC1 DC CL1Ø' ' DEALLOCATE TIME : MINUTE DC CLØ3'MIN' DC CL1' '

Page 38: DB2 Master title page May

38 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

PDEALLC2 DC CLØ3' ' DEALLOCATE TIME : SECOND DC CLØ3'SEC' DC CL8' ' DC CL2' ' DC CL1Ø'INBUFF : 'PINBUFF DC CL1Ø' ' INPUT BUFFER SIZE DC CLØ1'K' DC CL17' ' DC CL2' ' DC CL1Ø'TWOACTV : ' DC CL7' 'PTWOACTV DC CLØ3' ' TWOACTV YES/NO DC CL18' ' DC CL2' ' DC CL1Ø'TWOARCH : ' DC CL7' 'PTWOARCH DC CLØ3' ' TWOARCH YES/NO DC CL18' ' DC CL2' ' DC CL1Ø'OUTBUFF : 'POUTBUFF DC CL1Ø' ' OUTPUT BUFFER SIZE DC CLØ1'K' DC CL17' ' DC CL2' ' DC CL1Ø'WRTHRSH : 'PWRTHRSH DC CL1Ø' ' WRITE THRESHOLD DC CLØ1'%' DC CL17' ' DC CL2' ' DC CL1Ø'MAXARCH : 'PMAXARCH DC CL1Ø' ' MAX ARCH COUNT IN BSDS DC CL18' ' DC CL2' ' DC CL1Ø'MAXRTU : 'PMAXRTU DC CL1Ø' ' MAX NO. OF UNIT FOR ARCH READ DC CL18' '*PRTSYSP DS ØCL8Ø SYSP PRINT AREA DC CL4Ø' **** DSN6SYSP PARAMETER LIST **** ' DC CL4Ø' ' DC CL2' ' DC CL1Ø'CTHREAD : 'PCTHREAD DC CL1Ø' ' CONCURRENT THREAD(LOCAL) DC CL18' ' DC CL2' ' DC CL1Ø'IDFORE : 'PIDFORE DC CL1Ø' ' FOREGROUND THREAD DC CL18' ' DC CL2' ' DC CL1Ø'IDBACK : 'PIDBACK DC CL1Ø' ' BACKGROUND THREAD

Page 39: DB2 Master title page May

39© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

DC CL18' ' DC CL2' ' DC CL1Ø'CONDBAT : 'PCONDBAT DC CL1Ø' ' CONCURR INACT + ACT THD(REMOTE) DC CL18' ' DC CL2' ' DC CL1Ø'MAXDBAT : 'PMAXDBAT DC CL1Ø' ' CONCURR ACT THD(REMOTE) DC CL58' ' DC CL2' ' DC CL1Ø'DLDFREQ : 'PDLDFREQ DC CL1Ø' ' DLDFREQ DC CL18' ' DC CL2' ' DC CL1Ø'LOGLOAD : 'PLOGLOAD DC CL1Ø' ' LOGLOAD DC CL18' ' DC CL2' ' DC CL1Ø'AUDITST : ' DC CL7' 'PAUDITST DC CLØ3' ' AUDITST DC CL18' ' DC CL2' ' DC CL1Ø'SMFACCT : ' DC CL7' 'PSMFACCT DC CLØ3' ' SMFACCT DC CL18' ' DC CL2' ' DC CL1Ø'SMFSTAT : ' DC CL7' 'PSMFSTAT DC CLØ3' ' SMFSTAT DC CL18' ' DC CL2' ' DC CL1Ø'STATIME : 'PSTATIME DC CL1Ø' ' STATIME DC CL3'MIN' DC CL15' ' DC CL2' ' DC CL1Ø'MON : ' DC CL7' 'PMON DC CLØ3' ' MON(MONITOR TRACE) DC CL18' ' DC CL2' ' DC CL1Ø'MONSIZE : 'PMONSIZE DC CL1Ø' ' MONSIZE DC CL18' ' DC CL2' ' DC CL1Ø'TRACSTR : ' DC CL7' 'PTRACSTR DC CLØ3' ' TRACSTR DC CL18' '

Page 40: DB2 Master title page May

40 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

DC CL2' ' DC CL1Ø'TRACTBL : 'PTRACTBL DC CL1Ø' ' TRACTBL DC CLØ1'K' DC CL17' ' DC CL2' ' DC CL1Ø'RLF : ' DC CL7' 'PRLF DC CLØ3' ' RLF DC CL18' ' DC CL2' ' DC CL1Ø'RLFTBL : ' DC CLØ8' 'PRLFTBL DC CLØ2' ' RLFTBL DC CL18' ' DC CL2' ' DC CL1Ø'RLFERR : ' DC CLØ3' 'PRLFERR DC CLØ7' ' RLFERR DC CL18' ' DC CL2' ' DC CL1Ø'RLFAUTH : ' DC CLØ3' 'PRLFAUTH DC CLØ7' ' RLFAUTH DC CL18' ' DC CL2' ' DC CL1Ø'STORPROC: ' DC CL2' 'PSTORPRO DC CLØ8' ' STORPROC NAME DC CL18' ' DC CL2' ' DC CL1Ø'STORMAXB: 'PSTORMAX DC CL1Ø' ' STORMAX DC CL18' ' DC CL2' ' DC CL1Ø'STORTIME: ' DC CL4' 'PSTORTIM DC CLØ6' ' STORTIME DC CLØ3'SEC' DC CL55' '*PRTGRP DS ØCL8Ø GRP PRINT AREA DC CL4Ø' **** DSN6GRP PARAMETER LIST **** ' DC CL4Ø' ' DC CL2' ' DC CL1Ø'DSHARE : ' DC CL7' 'PDSHARE DC CLØ3' ' DSHARE DC CL58' ' DC CL2' ' DC CL1Ø'GRPNAME : '

Page 41: DB2 Master title page May

41© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

DC CL2' 'PGRPNAME DC CLØ8' ' GRPNAME DC CL18' ' DC CL2' ' DC CL1Ø'MEMBNAME: ' DC CL2' 'PMEMBNAM DC CLØ8' ' MEMBNAME DC CL18' '*PRTFAC DS ØCL8Ø FAC PRINT AREA DC CL4Ø' **** DSN6FAC PARAMETER LIST **** ' DC CL4Ø' ' DC CL2' ' DC CL1Ø'DDF : ' DC CL3' 'PDDF DC CLØ7' ' DDF DC CL18' ' DC CL2' ' DC CL1Ø'CMTSTAT : ' DC CL2' 'PCMTSTAT DC CLØ8' ' CMTSTAT DC CL18' ' DC CL2' ' DC CL1Ø'IDTHTOIN: 'PIDTHTOI DC CL1Ø' ' IDTHTOIN DC CL18' ' DC CL2' ' DC CL1Ø'RESYNC : 'PRESYNC DC CL1Ø' ' RESYNC DC CL18' ' DC CL2' ' DC CL1Ø'RLFERRD : ' DC CL3' 'PRLFERRD DC CLØ7' ' RLFERRD DC CL18' ' DC CL2' ' DC CL1Ø'RLFERRDT: 'PRLFERRT DC CL1Ø' ' RLF LIMIT TIME DC CL18' '*PRTSPRM DS ØCL8Ø SPRM PRINT AREA DC CL4Ø' **** DSN6SPRM PARAMETER LIST **** ' DC CL4Ø' '*PRESTART DC CL4Ø' ' DC CL4Ø' ' DC CL2' ' DC CL1Ø'ABEXP : ' DC CL7' 'PABEXP DC CLØ3' ' ABEXP DC CL18' '

Page 42: DB2 Master title page May

42 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

DC CL2' ' DC CL1Ø'ABIND : ' DC CL7' 'PABIND DC CLØ3' ' ABIND DC CL18' ' DC CL2' ' DC CL1Ø'AUTH : ' DC CL7' 'PAUTH DC CLØ3' ' AUTH DC CL18' ' DC CL2' ' DC CL1Ø'AUTHCACH: 'PAUTHCAC DC CL1Ø' ' AUTHCACH DC CLØ4'BYTE' DC CL14' ' DC CL2' ' DC CL1Ø'BINDNV : ' DC CL3' 'PBINDNV DC CLØ7' ' BINDNV DC CL18' ' DC CL2' ' DC CL1Ø'BMPTOUT : 'PBMPTOUT DC CL1Ø' ' BMPTOUT DC CLØ3'SEC' DC CL15' ' DC CL2' ' DC CL1Ø'CATALOG : ' DC CL2' 'PSPRMCAT DC CLØ8' ' CATALOG DC CL18' ' DC CL2' ' DC CL1Ø'CDSSRDEF: ' DC CL7' 'PCDSSRDE DC CLØ3' ' CDSSRDEF DC CL18' ' DC CL2' ' DC CL1Ø'CHGDC : ' DC CL7' 'PCHGDC DC CLØ3' ' CHGDC DC CL18' ' DC CL2' ' DC CL1Ø'DECDIV3 : ' DC CL7' 'PDECDIV3 DC CLØ3' ' DECDIV3 DC CL18' ' DC CL2' ' DC CL1Ø'DEFIXTP : ' DC CL9' 'PDEFIXTP DC CLØ1' ' DEFIXTP DC CL18' ' DC CL2' '

Page 43: DB2 Master title page May

43© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

DC CL1Ø'DEFLTID : ' DC CL3' 'PDEFLTID DC CLØ7' ' DEFLTID DC CL18' ' DC CL2' ' DC CL1Ø'DLITOUT : 'PDLITOUT DC CL1Ø' ' DLITOUT DC CLØ3'SEC' DC CL15' ' DC CL2' ' DC CL1Ø'DSMAX : 'PDSMAX DC CL1Ø' ' DSMAX DC CL18' ' DC CL2' ' DC CL1Ø'EDMPOOL : 'PEDMPOOL DC CL1Ø' ' EDMPOOL DC CLØ1'K' DC CL17' ' DC CL2' ' DC CL1Ø'EDPROP : ' DC CL7' 'PEDPROP DC CLØ3' ' EDPROP DC CL18' ' DC CL2' ' DC CL1Ø'HOPAUTH : ' DC CL7' 'PHOPAUTH DC CLØ3' ' HOPAUTH DC CL18' ' DC CL2' ' DC CL1Ø'IRLMAUT : ' DC CL7' 'PIRLMAUT DC CLØ3' ' IRLMAUT DC CL18' ' DC CL2' ' DC CL1Ø'IRLMPRC : ' DC CL2' 'PIRLMPRC DC CLØ8' ' IRLMPRC DC CL18' ' DC CL2' ' DC CL1Ø'IRLMSID : ' DC CL6' 'PIRLMSID DC CLØ4' ' IRLMSID DC CL18' ' DC CL2' ' DC CL1Ø'IRLMRWT : 'PIRLMRWT DC CL1Ø' ' IRLMRWT DC CLØ3'SEC' DC CL15' ' DC CL2' ' DC CL1Ø'IRLMSWT : 'PIRLMSWT DC CL1Ø' ' IRLMSWT

Page 44: DB2 Master title page May

44 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

DC CLØ3'SEC' DC CL15' ' DC CL2' ' DC CL1Ø'MAXRBLK : 'PMAXRBLK DC CL1Ø' ' MAXRBLK DC CLØ1'K' DC CL17' ' DC CL2' ' DC CL1Ø'NUMLKTS : 'PNUMLKTS DC CL1Ø' ' NUMLKTS DC CL18' ' DC CL2' ' DC CL1Ø'NUMLKUS : 'PNUMLKUS DC CL1Ø' ' NUMLKUS DC CL18' ' DC CL2' ' DC CL1Ø'RECALL : ' DC CL7' 'PRECALL DC CLØ3' ' RECALL DC CL18' ' DC CL2' ' DC CL1Ø'RECALLD : 'PRECALLD DC CL1Ø' ' RECALLD DC CLØ3'SEC' DC CL15' ' DC CL2' ' DC CL1Ø'RGFCOLID: ' DC CL2' 'PRGFCOLI DC CLØ8' ' RGFCOLID DC CL18' ' DC CL2' ' DC CL1Ø'RGFDBNAM: ' DC CL2' 'PRGFDBNA DC CLØ8' ' RGFDBNAM DC CL18' ' DC CL2' ' DC CL1Ø'RGFDEDPL: ' DC CL7' 'PRGFDEDP DC CLØ3' ' RGFDEDPL DC CL18' ' DC CL2' ' DC CL1Ø'RGFDEFLT: ' DC CL4' 'PRGFDEFL DC CLØ6' ' RGFDEFLT DC CL18' ' DC CL2' ' DC CL1Ø'RGFESCP : ' DC CL9' 'PRGFESCP DC CLØ1' ' RGFESCP DC CL18' ' DC CL2' '

Page 45: DB2 Master title page May

45© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

DC CL1Ø'RGFFULLQ: ' DC CL7' 'PRGFFULL DC CLØ3' ' RGFFULLQ DC CL18' ' DC CL2' ' DC CL1Ø'RGFINSTL: ' DC CL7' 'PRGFINST DC CLØ3' ' RGFINSTL DC CL18' ' DC CL2' ' DC CL1Ø'RGFNMORT: 'PRGFNMOR DC CL17' ' RGFNMORT DC CL11' ' DC CL2' ' DC CL1Ø'RGFINSTL: 'PRGFNMPR DC CL17' ' RGFNMPRT DC CL11' ' DC CL2' ' DC CL1Ø'RRULOCK : ' DC CL7' 'PRRULOCK DC CLØ3' ' RRULOCK DC CL18' ' DC CL2' ' DC CL1Ø'SEQCACH : ' DC CL4' 'PSEQCACH DC CLØ6' ' SEQCACH DC CL18' ' DC CL2' ' DC CL1Ø'SITETYPE: 'PSITETYP DC CL12' ' SITETYPE DC CL16' ' DC CL2' ' DC CL1Ø'SRTPOOL : 'PSRTPOOL DC CL1Ø' ' SRTPOOL DC CLØ1'K' DC CL17' ' DC CL2' ' DC CL1Ø'SYSADM : ' DC CL2' 'PSYSADM DC CLØ8' ' SYSADM DC CL18' ' DC CL2' ' DC CL1Ø'SYSADM2 : ' DC CL2' 'PSYSADM2 DC CLØ8' ' SYSADM2 DC CL18' ' DC CL2' ' DC CL1Ø'SYSOPR1 : ' DC CL2' 'PSYSOPR1 DC CLØ8' ' SYSOPR1 DC CL18' '

Page 46: DB2 Master title page May

46 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

DC CL2' ' DC CL1Ø'SYSADM2 : ' DC CL2' 'PSYSOPR2 DC CLØ8' ' SYSOPR2 DC CL18' ' DC CL2' ' DC CL1Ø'UTIMOUT : 'PUTIMOUT DC CL1Ø' ' UTIMOUT DC CLØ5'TIMES' DC CL53' '********************************************* DCB = ZPARMDD ******************************************** SPACEZPARMDD DCB DSORG=PS,MACRF=PM,DDNAME=ZPARMDD,LRECL=8Ø LTORG******************************************** DB2 CONTROL BLOCK ******************************************** YREGS DSN6ARVP DSN6LOGP DSN6SYSP DSN6GRP DSN6FAC DSN6SPRM END

SAMPLE OUTPUT

**** DSN6ARVP PARAMETER LIST **** ALCUNIT : CYL ARCWTOR : NO ARCRETN : 2ØDAY BLKSIZE : 28,672 CATALOG : YES COMPACT : NO PRIQTY : 1ØØ SECQTY : 1Ø PROTECT : NO QUIESCE : 5SEC TSTAMP : NO UNIT : MCTG UNIT2 : ARCPFX1 : D2T1.ARCHLOG1 ARCPFX2 : D2T1.ARCHLOG2

**** DSN6LOGP PARAMETER LIST **** DEALLCT : ØMIN ØSEC INBUFF : 28K TWOACTV : NO TWOARCH : NO OUTBUFF : 4ØØK WRTHRSH : 2Ø% MAXARCH : 1ØØ MAXRTU : 2

**** DSN6SYSP PARAMETER LIST **** CTHREAD : 5ØØ IDFORE : 7Ø

Page 47: DB2 Master title page May

47© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

IDBACK : 1ØØ CONDBAT : 1Ø MAXDBAT : 1Ø DLDFREQ : 5 LOGLOAD : 5Ø,ØØØ AUDITST : NO SMFACCT : NO SMFSTAT : NO STATIME : 3ØMIN MON : NO MONSIZE : 8,192 TRACSTR : NO TRACTBL : 16K RLF : NO RLFTBL : Ø1 RLFERR : Ø RLFAUTH : SYSIBM STORPROC: STORMAXB: Ø STORTIME: 18ØSEC

**** DSN6GRP PARAMETER LIST **** DSHARE : NO GRPNAME : MEMBNAME:

**** DSN6FAC PARAMETER LIST **** DDF : COMMAND CMTSTAT : ACTIVE IDTHTOIN: Ø RESYNC : 2 RLFERRD : NOLIMIT RLFERRDT: Ø

**** DSN6SPRM PARAMETER LIST **** RESTART, ALL ABEXP : NO ABIND : YES AUTH : YES AUTHCACH: 1,Ø24BYTE BINDNV : BINDADD BMPTOUT : ØSEC CATALOG : D2T1 CDSSRDEF: ANY CHGDC : NO DECDIV3 : NO DEFIXTP : 2 DEFLTID : IBMUSER DLITOUT : ØSEC DSMAX : 1,ØØØ EDMPOOL : 8,192K EDPROP : NO HOPAUTH : NO IRLMAUT : YES IRLMPRC : D2T1IRLM IRLMSID : JRLM IRLMRWT : 6ØSEC IRLMSWT : 3ØØSEC MAXRBLK : 9,168K NUMLKTS : 5,ØØØ NUMLKUS : 2Ø,ØØØ RECALL : YES RECALLD : 12ØSEC RGFCOLID: DSNRGCOL RGFDBNAM: DSNRGFDB RGFDEDPL: NO RGFDEFLT: ACCEPT RGFESCP : RGFFULLQ: YES RGFINSTL: NO RGFNMORT: DSN_REGISTER_OBJT RGFINSTL: DSN_REGISTER_APPL RRULOCK : YES SEQCACH : SEQ SITETYPE: LOCALSITE SRTPOOL : 1,833K SYSADM : XDB24Ø3 SYSADM2 : XDBJØ1Ø SYSOPR1 : SYSOPR SYSADM2 : SYSOPR UTIMOUT : 6TIMES

Young-Ho KimDB2 Systems ProgrammerLG-EDS Systems (Korea) © Xephon 1999

Page 48: DB2 Master title page May

x xephon

DB2 news

HiT Software has announced HiT JDBC/DB2 Enterprise, DB2 and DB2/400 Javamiddleware optimized via native IBM serversupport. It includes JDBC drivers for DB2and DB2/400 and the HiT dbProxy+ Serverwhich expands IBM OS/390 and OS/400server flexibility for Java development.Corporate e-commerce Java developers cannow deploy DB2 applets faster and minimizeclient response time across their networks.

HiT JDBC/DB2 Enterprise providesuniversal servers and clients with DB2 dataaccess via the JDBC API. It supports IBMDistributed Relational DatabaseArchitecture and OS/400 optimizeddatabase server protocols. Full Type 4 JDBCfunctionality allows the Java developer touse HiT middleware within servlets or clientapplets. A small footprint ensures fast appletdeployment and application access.dbProxy+ Server allows Java applets DB2access when this data resides on a differentserver to the applet’s Web server.

For further information contact:HiT Software, 1975 Hamilton Avenue, Suite1, San Jose, CA 95125, USA.Tel: (408) 369 7290.HiT Software, PO Box 2, Farnborough,Hants, GU14 0NF, UK.Tel: (01252) 522995.URL: htp://www.hit.com.

* * *Centura Software has announced Version4.1 of its SQLHost software tool, enablingconnectivity from user desktops toenterprise DB2 data on the IBM System/390platform.

SQLHost 4.1 is geared towards developinghigh-concurrency client/server and Webapplications accessing DB2 and legacy datasources on the mainframe, providing endusers with controlled, direct access tocorporate data, minimizing installation andconfiguration time with straightforward set-up procedures, moving DB2 data to and fromlocal database servers, and building GUI-based applications that connect to DB2 data.

For further information contact:Centura Software, Lunar House, Globe Park,Marlow, Bucks, SL7 1LW, UK.Tel: (01628) 478333.http://www.centurasoft.com.

* * *

Xephon has just launched four weekly newsservices covering the following subjectareas:

• Data Centre• Distributed Systems• Networks• Software

Each week, subscribers receive, by e-mail, ashort news bulletin consisting of a list ofitems; each item has a link to the page on ourWeb site that contains the correspondingarticle. Each news bulletin also carries linksto the main industry news stories of the week.

To subscribe to one or more of these newsservices, or review recent articles, point yourbrowser at http://www.xephon.com/newz.html.

* * *