View previous topic :: View next topic
|
Author |
Message |
avaneendra_linga
New User
Joined: 13 Dec 2006 Posts: 73 Location: Hyderabad
|
|
|
|
hi ,
i developed a REXX and DB2 utitlity .
i am able to run this utility in online but not able to run using BATCH JCL..
Can anybody help on this...
i am getting -311 ERROR CODE ..while preparing the CURSOR.....
this error i am getting only when i submitted this program in BATCH..... |
|
Back to top |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
Have you allocated all of the libraries in your batch job, by that I mean all of those allocated to your TSO session.
TSO ISRDDN might help you find them. |
|
Back to top |
|
|
avaneendra_linga
New User
Joined: 13 Dec 2006 Posts: 73 Location: Hyderabad
|
|
|
|
yes i allocated all the libraries in batch job.... |
|
Back to top |
|
|
ofer71
Global Moderator
Joined: 27 Dec 2005 Posts: 2358 Location: Israel
|
|
|
|
Try to enlarge the NUMERIC DIGITS setting.
O. |
|
Back to top |
|
|
avaneendra_linga
New User
Joined: 13 Dec 2006 Posts: 73 Location: Hyderabad
|
|
|
|
hi ofter i did the same....please see my code below...i am getting error at cursor prepare....the same error i am not at getting while runining the program in online....
NUMERIC DIGITS(18)
'SUBCOM DSNREXX'
IF RC\=0 THEN
S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX')
ADDRESS DSNREXX
ADDRESS DSNREXX "CONNECT DB2T"
INSQLDA.SQLD = 1
INSQLDA.1.SQLTYPE=496
INSQLDA.1.SQLLEN =18
INSQLDA.1.SQLDATA=889378
INSQLDA.1.SQLIND =0
SQLSTMT=,
"SELECT * FROM F6435DBS.ML_CNSM_XREF",
"WHERE CNSM_ID=? ",
"WITH UR"
'EXECSQL DECLARE C1 CURSOR FOR S1'
IF SQLCODE < 0 THEN CALL SQLCA
'EXECSQL PREPARE S1 INTO :OUTSQLDA FROM :SQLSTMT'
IF SQLCODE < 0 THEN CALL SQLCA
'EXECSQL OPEN C1 USING DESCRIPTOR :INSQLDA'
IF SQLCODE < 0 THEN CALL SQLCA
DROP UNIQUE.
BB=1
DO UNTIL(SQLCODE > 0)
'EXECSQL FETCH C1 USING DESCRIPTOR :OUTSQLDA'
SELECT
WHEN SQLCODE = 0 THEN DO
LINE=''
DO S = 1 TO OUTSQLDA.SQLD
LINE = LINE OUTSQLDA.S.SQLDATA
END S
UNIQUE.BB=LINE
BB=BB+1
END
WHEN SQLCODE=100 THEN DO
CPINFOUND='N'
END
WHEN SQLCODE < 0 THEN DO
CALL SQLCA
END
OTHERWISE NOP
END /*SELECT*/
END
'EXECSQL CLOSE C1'
ADDRESS DSNREXX "DISCONNECT"
IF SQLCODE < 0 THEN DO
CALL SQLCA
END
error: "0"
'EXECSQL PREPARE S1 INTO :OUTSQLDA FROM :SQLSTMT'
"EXECSQL PREPARE S1 INTO :OUTSQLDA FROM :SQLSTMT"
RC(-1) +++
IF SQLCODE < 0
"-311"
"0"
"1"
in the table cnsm_id is integer type and not null....
can anybody help on this..... |
|
Back to top |
|
|
ofer71
Global Moderator
Joined: 27 Dec 2005 Posts: 2358 Location: Israel
|
|
|
|
I think you have problem with "INSQLDA.1.SQLLEN =18 ". Look here to find the correct length.
O. |
|
Back to top |
|
|
avaneendra_linga
New User
Joined: 13 Dec 2006 Posts: 73 Location: Hyderabad
|
|
|
|
HI OFTER,
EVEN AFTER MODIFYNG THE SQLLENGTH ALSO I AM GETTING THE SAME ABEND....SEE MY TRACED OUTPUT..
9 *-* INSQLDA.SQLD = 1
>L> "1"
10 *-* INSQLDA.1.SQLTYPE=496
>L> "496"
11 *-* INSQLDA.1.SQLLEN =4
>L> "4"
12 *-* INSQLDA.1.SQLDATA=CNSM_ID
>V> "889378"
13 *-* INSQLDA.1.SQLIND =0
>L> "0"
14 *-* SQLSTMT=,
"WHERE CNSM_ID=? ",
>L> "SELECT * FROM F6435DBS.ML_CNSM_XREF"
>L> "WHERE CNSM_ID=? "
>O> "SELECT * FROM F6435DBS.ML_CNSM_XREF WHERE CNSM_ID=?
>L> "WITH UR"
>O> "SELECT * FROM F6435DBS.ML_CNSM_XREF WHERE CNSM_ID=?
18 *-* 'EXECSQL DECLARE C1 CURSOR FOR S1'
>L> "EXECSQL DECLARE C1 CURSOR FOR S1"
19 *-* IF SQLCODE < 0
>V> "0"
>L> "0"
>O> "0"
20 *-* 'EXECSQL PREPARE S1 INTO :OUTSQLDA FROM :SQLSTMT'
>L> "EXECSQL PREPARE S1 INTO :OUTSQLDA FROM :SQLSTMT"
+++ RC(-1) +++
21 *-* IF SQLCODE < 0
>V> "-311" |
|
Back to top |
|
|
ofer71
Global Moderator
Joined: 27 Dec 2005 Posts: 2358 Location: Israel
|
|
|
|
Try to display SQLERRMC. This will tell you who is the "problematic" variable.
O. |
|
Back to top |
|
|
avaneendra_linga
New User
Joined: 13 Dec 2006 Posts: 73 Location: Hyderabad
|
|
|
|
please see error messages that i got for the same....
SQLWARN = , , , , , , , , , ,
74 *-* SAY 'SQLSTATE='SQLSTATE
>L> "SQLSTATE="
>V> "22501"
>O> "SQLSTATE=22501"
SQLSTATE=22501
75 *-* SAY' SQLERRMC' SQLERRMC
>L> " SQLERRMC"
>V> "001 "
>O> " SQLERRMC 001 "
SQLERRMC 001
SQLCODE =-311
55 *-* SAY 'SQLERRM ='SQLERRM
>L> "SQLERRM ="
>L> "SQLERRM"
>O> "SQLERRM =SQLERRM"
SQLERRM =SQLERRM
56 *-* SAY 'SQLERRP ='SQLERRP
>L> "SQLERRP ="
>V> "DSNXECP "
>O> "SQLERRP =DSNXECP "
SQLERRP =DSNXECP |
|
Back to top |
|
|
|