IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

RC(-1) for DB2 statements in rexx code


IBM Mainframe Forums -> DB2
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
samedesh
Currently Banned

New User


Joined: 22 May 2007
Posts: 46
Location: India

PostPosted: Fri Sep 25, 2009 12:58 pm
Reply with quote

Hello All,

I am learning how to use DB2 in rexx code and have coded below code but I am getting error RC(-1) while executing prepare statement. Looking at result I think their is no connectivity problem. There might be something wrong in my coding. Please help in removing error from code.

This is my code:
Code:

/* rexx */                                                             
TRACE ?R                                                               
ADDRESS TSO SUBCOM DSNREXX                                             
IF RC THEN                                                             
   S_RC = RXSUBCOMM( ADD , DSNREXX , DSNREXX )                         
                                                                       
   ADDRESS DSNREXX "CONNECT " TB0A                                     
   IF SQLCODE != 0 THEN CALL SQLCA                                     
                                                                       
   SQLSELB  = "SELECT * "                  ,                           
              "FROM EOPUT01.EOP_CUD_PPSD " ,                           
   CALL RUN_SQL1 'DECLARE C1 CURSOR FOR S1'                             
                                                                       
   CALL RUN_SQL1 'PREPARE S1 FROM :SQLSELB'                             
                                                                       
                                                                       
   CALL RUN_SQL1 'OPEN C1'                                             
                                                                       
   DO WHILE (SQLCODE=0)                                                 
     CALL RUN_SQL1 'FETCH C1'                                           
     IF SQLCODE = 0 THEN                                               
       DO                                                               
          SAY 'SUCCESSFULL'                                             
       END                                                             
   END                                                                 
   CALL RUN_SQL1 'CLOSE C1' /* CLOSE CURSOR */                         
                                                                       
   /* DISCONNECT FROM DB2 */                                           
   ADDRESS DSNREXX "DISCONNECT "                                       
   IF SQLCODE != 0 THEN CALL SQLCA                                     
exit                                                                   
                                                                       
SQLCA:                                                                 
                                                                       
  SAY ''                                                               
  SAY '***************** SQL ERROR IN REBIND REXX **************'       
  SAY '* SQLCODE  =' SQLCODE                                           
  SAY '* SQLSTMT  =' SQL_STMT                                       
  SAY '* SQLWARN  =' SQLWARN.0','SQLWARN.1','SQLWARN.2',',           
                   ||SQLWARN.3','SQLWARN.4','SQLWARN.5',',           
                   ||SQLWARN.6','SQLWARN.7','SQLWARN.8',',           
                   ||SQLWARN.9','SQLWARN.10                         
  SAY '* SQLERRD  =' SQLERRD.1','SQLERRD.2','SQLERRD.3',',           
                   ||SQLERRD.4','SQLERRD.5','SQLERRD.6               
  SAY '* SQLERRP  =' SQLERRP                                         
  SAY '* SQLERRMC =' SQLERRMC                                       
  SAY '* SQLSTATE =' SQLSTATE                                       
  SAY '***********************************************************' 
  SAY ''                                                             
RETURN                                                               
                                                                     
RUN_SQL1:                                                           
  SQL_STMT = ARG(1)                                                 
  ADDRESS DSNREXX "EXECSQL" SQL_STMT                                 
  IF SQLCODE != 0 & SQLCODE != 100 THEN CALL SQLCA                   
                                                                     
RETURN /* RUN_SQL1 */                                               


The response is as below:
Code:

     4 *-* IF RC                                                               
       >>>   "0"                                                               
                                                                               
     7 *-* ADDRESS DSNREXX "CONNECT " TB0A                                     
       >>>   "CONNECT  TB0A"                                                   
                                                                               
     8 *-* IF SQLCODE != 0                                                     
       >>>   "0"                                                               
                                                                               
    10 *-* SQLSELB  = "SELECT * "                  ,              "FROM EOPUT01
.EOP_CUD_PPSD " ,   CALL RUN_SQL1 'DECLARE C1 CURSOR FOR S1'                   
       >>>   "SELECT *  FROM EOPUT01.EOP_CUD_PPSD  CALL RUN_SQL1 DECLARE C1 CUR
SOR FOR S1"                                                                   
                                                                               
    14 *-* CALL RUN_SQL1 'PREPARE S1 FROM :SQLSELB'                           
       >>>   "PREPARE S1 FROM :SQLSELB"                                       
    52 *-*  RUN_SQL1:                                                         
                                                                               
    53 *-*  SQL_STMT = ARG(1)                                                 
       >>>    "PREPARE S1 FROM :SQLSELB"                                       
                                                                               
    54 *-*  ADDRESS DSNREXX "EXECSQL" SQL_STMT                                 
       >>>    "EXECSQL PREPARE S1 FROM :SQLSELB"                               
       +++ RC(-1) +++                                                         
                                                                               
    55 *-*  IF SQLCODE != 0 & SQLCODE != 100                                   
       >>>    "0"                                                             
                                                                               
    57 *-*  RETURN /* RUN_SQL1 */                                             
                                                                               
    17 *-* CALL RUN_SQL1 'OPEN C1'                                             
       >>>   "OPEN C1"                                                         
    52 *-*  RUN_SQL1:                                                         
                                                                               
    53 *-*  SQL_STMT = ARG(1)                                                 
       >>>    "OPEN C1"                                                       
                                                                               
    54 *-*  ADDRESS DSNREXX "EXECSQL" SQL_STMT                                 
       >>>    "EXECSQL OPEN C1"                                               
       +++ RC(-1) +++                                                         
                                                                               
     55 *-*  IF SQLCODE != 0 & SQLCODE != 100                                   
        >>>    "0"                                                             
                                                                               
     57 *-*  RETURN /* RUN_SQL1 */                                             
                                                                               
     19 *-* DO WHILE (SQLCODE=0)                                               
        >>>   "0"                                                               
                                                                               
     26 *-* CALL RUN_SQL1 'CLOSE C1' /* CLOSE CURSOR */                         
        >>>   "CLOSE C1"                                                       
     52 *-*  RUN_SQL1:                                                         
                                                                               
     53 *-*  SQL_STMT = ARG(1)                                                 
        >>>    "CLOSE C1"                                                       
                                                                               
     54 *-*  ADDRESS DSNREXX "EXECSQL" SQL_STMT                                 
        >>>    "EXECSQL CLOSE C1"                                               
        +++ RC(-1) +++                                                         
                                                                               
     55 *-*  IF SQLCODE != 0 & SQLCODE != 100                                   
        >>>    "0"                                                             
                                                                               
     57 *-*  RETURN /* RUN_SQL1 */                                             
                                                                               
     28 *-* /* DISCONNECT FROM DB2 */                                           
     29 *-* ADDRESS DSNREXX "DISCONNECT "                                       
        >>>   "DISCONNECT "                                                     
                                                                               
     30 *-* IF SQLCODE != 0                                                     
        >>>   "0"                                                               
                                                                               
     31 *-* exit                         
 ***                                     
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Fri Sep 25, 2009 1:14 pm
Reply with quote

Code:
   SQLSELB  = "SELECT * "                  ,                           
              "FROM EOPUT01.EOP_CUD_PPSD " ,                           
   CALL RUN_SQL1 'DECLARE C1 CURSOR FOR S1'                             
extra comma warning
Code:
   SQLSELB  = "SELECT * " || ,                                             
              "FROM EOPUT01.EOP_CUD_PPSD "
   CALL RUN_SQL1 'DECLARE C1 CURSOR FOR S1'     
the concat operator will avoid spurious blanks ,
depending on Your setup You might need to use !! instead of ||

and... be consistent with the use of the string delimiters ( just for better readability )

use only one, my preference goes to >"<,
it' s more frequent to have >'< as part of the data
Back to top
View user's profile Send private message
samedesh
Currently Banned

New User


Joined: 22 May 2007
Posts: 46
Location: India

PostPosted: Fri Sep 25, 2009 2:42 pm
Reply with quote

Hi enrico-sorichetti

Thanks for your suggestion. I applied it and it worked fine (giving RC=0 after executing the rexx). But how can we view the output of the query mentioned in the code. Please help.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DB2

 


Similar Topics
Topic Forum Replies
No new posts Compile Several JCL JOB Through one r... CLIST & REXX 4
No new posts Running REXX through JOB CLIST & REXX 13
No new posts Error to read log with rexx CLIST & REXX 11
No new posts isfline didnt work in rexx at z/OS ve... CLIST & REXX 7
No new posts run rexx code with jcl CLIST & REXX 15
Search our Forums:

Back to Top