I am trying to compile and bind DSNTEP2 program.I took the compilation JCL(DSNHPLIP) from our sys lib.
While precompilation step i am getting the following error-:
DSNH644I E DSNHLEXP LINE 1381 COL 41 INVALID VALUE SPECIFIED FOR KEYWORD "MAXBUFFER@" IN SQL TYPE IS" STATEMENT
DCL STMTBUF
DSNH5037I E DSNHSQLA LINE 1410 COL 28 DECLARE VARIABLE STATEMENT FOUND WITH ONE-PASS PRECOMPILATION
DECLARE : HVDUMMY VARIABLE CCSID EBCDIC
DSNH644I E DSNHLEXP LINE 1381 COL 41 INVALID VALUE SPECIFIED FOR KEYWORD "MAXBUFFER@" IN SQL TYPE IS" STATEMENT
DCL STMTBUF
SOURCE STATISTICS
SOURCE LINES READ: 5808
NUMBER OF SYMBOLS: 501
SYMBOL TABLE BYTES EXCLUDING ATTRIBUTES: 25112
THERE WERE 3 MESSAGES FOR THIS PROGRAM.
THERE WERE 0 MESSAGES SUPPRESSED BY THE FLAG OPTION.
308724 BYTES OF STORAGE WERE USED BY THE PRECOMPILER.
RETURN CODE IS 8
Going to the respective line (1381) in DSNTEP2 -
DCL STMTBUF SQL TYPE IS CLOB(MAXBUFFER); /* SQL STATEMENT BUFFER */
DCL PSTMT PTR INIT(ADDR(STMTBUF)); /* ANCHOR TO STMTBUF */
DCL STMTMAX FIXED BIN(31) STATIC /* SQL STMT UPPER LIMIT */
INIT(MAXBUFFER); /* (must be static) */
And line no 1410 --
EXEC SQL DECLARE :HVDUMMY VARIABLE CCSID EBCDIC; /*@14*/
/* -- begin @34 */
I exactly don't have any idea of PLi, but in DSNTEP2 prog MAXBUFFER has been defined as --
%DCL ( RECLEN, MAXBUFFER ) CHAR;
% RECLEN = '72'; /* Length of input records */
% MAXBUFFER = '2097152'; /* Maxlength of SQL buffers */
Do i need to make any changes in the program and then compile?
The source for DSNTEP2 has been taken from DSN!!!.SDSNSAMP
Please help and correct me if wrong.
and looks like the macro processing has not been done
if the macro processing had been done the statement in questions should have been transformed to ...
Code:
DCL STMTBUF SQL TYPE IS CLOB(2097152)
see what options were specified for the PLI steps and add a MACRO option
Thanx enricho.
As u told,i found that the macro process step was commented in the DSNHPLI procedure.
So i uncommented it..The step looks something like-:
//PPLI EXEC PGM=IBMZPLI,PARM='MACRO,NOSYNTAX,MDECK,NOINSOURCE'
//STEPLIB DD DSN=IEL320.SIBMZCMP,DISP=SHR
//SYSLIN DD DUMMY
//SYSPRINT DD SYSOUT=* ,
// DCB=(RECFM=VBA,LRECL=125,BLKSIZE=629)
//SYSPUNCH DD DSN=&&DSNHIN,DISP=(MOD,PASS),UNIT=SYSDA,
// SPACE=(CYL,(5,2),RLSE)
//SYSUDUMP DD SYSOUT=*
//SYSUT1 DD SPACE=(1024,(60,60),,CONTIG),UNIT=SYSDA,
// DCB=BLKSIZE=1024
//*
But now i am facing the following error for the PPLI step-:
IBM1984I U File DD:SYSIN could not be opened.
and job terminates with maxcc 16
IEF236I ALLOC. FOR CALLPROC PPLI UTIL
IEF237I 0DD9 ALLOCATED TO STEPLIB
IEF237I DMY ALLOCATED TO SYSLIN
IEF237I JES2 ALLOCATED TO SYSPRINT
IGD100I VIO ALLOCATED TO DDNAME SYSPUNCH DATACLAS ( )
IEF237I JES2 ALLOCATED TO SYSUDUMP
IEF142I CALLPROC PPLI UTIL - STEP WAS EXECUTED - COND CODE 0016
The member IBMZPLI of the dataset IEL320.SIBMZCMP opens from my ID.Following are the details of IEL320.SIBMZCMP-:
Device type . . . . : 3390
Organization . . . : PO
Record format . . . : U
Record length . . . : 0
Block size . . . . : 32760
1st extent blocks . : 313
Secondary blocks . : 500
Searching the manuals for the error-
IBM1984I S File filename could not be opened. Explanation: The named file could not be opened. Make sure that the file is named correctly, that it exists, that it has the proper attributes and that you have the needed permissions to access it.
Do i need to add something in the step?
Please help and correct if i am wrong.
Hi Enricho,
I was using sysin the way u said but i was not passing the twopass option
Now the parameters i am passing are
DB2 SQL PRECOMPILER VERSION 9 REL. 1.0
OPTIONS SPECIFIED: HOST(PLI),TWOPASS,SOURCE,XREF
DSNHDECP LOADED FROM - (DSN910.DB9M.SDSNEXIT(DSNHDECP))
OPTIONS USED - SPECIFIED OR DEFAULTED
APOST
APOSTSQL
ATTACH(TSO)
CCSID(1047)
NOPADNTSTR
CONNECT(2)
DEC(15)
FLAG(I)
HOST(PLI)
FLOAT(S390)
LINECOUNT(60)
MARGINS(2,72)
NEWFUN(YES)
OPTIONS
PERIOD
SOURCE
STDSQL(NO)
SQL(DB2)
TWOPASS
XREF
Now it is giving maxcc=8 with the error-:
DSNH644I E DSNHLEXP LINE 1381 COL 41 INVALID VALUE SPECIFIED FOR KEYWORD "MAXBUFFER@" IN SQL TYPE IS" STATEMENT
DCL STMTBUF
DSNH644I E DSNHLEXP LINE 1381 COL 41 INVALID VALUE SPECIFIED FOR KEYWORD "MAXBUFFER@" IN SQL TYPE IS" STATEMENT
DCL STMTBUF
1DB2 SQL PRECOMPILER STATISTICS
0SOURCE STATISTICS
SOURCE LINES READ: 5808
NUMBER OF SYMBOLS: 501
SYMBOL TABLE BYTES EXCLUDING ATTRIBUTES: 25112
-THERE WERE 2 MESSAGES FOR THIS PROGRAM.
THERE WERE 0 MESSAGES SUPPRESSED BY THE FLAG OPTION.
308724 BYTES OF STORAGE WERE USED BY THE PRECOMPILER.
RETURN CODE IS 8
Do i need to override some other parameters?
Please help.
Thanx Enricho for all your suggestions.
I started everything from zero taking a new PDS and making all the necessary changes in the proc and the job.And it worked fine.May be i was missing something somewhere .Also in between the error came for exceeded virtual memory by the compiler, so i just increased the region size and it worked fine.
Thanx Again..
if You had looked at the dsntep2/dsntep4 sources You would have found that ...
Code:
* 3. The maximum length of SQL statements that this * 02560000
* program can handle is STMTMAX, due to its allocation * 02570000
* of space (STMTBUF). The first RECLEN characters of * 02584990
* each input record are inserted into this buffer. * 02590000