Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

RC(-1) for DB2 statements in rexx code

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DB2
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    Post subject: RC(-1) for DB2 statements in rexx code
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

Global Moderator


Joined: 14 Mar 2007
Posts: 10256
Location: italy

PostPosted: Fri Sep 25, 2009 1:14 pm    Post subject: Reply to: RC(-1) for DB2 statements in rexx code
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    Post subject: Reply to: RC(-1) for DB2 statements in rexx code
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    IBMMAINFRAMES.com Support Forums -> DB2 All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
This topic is locked: you cannot edit posts or make replies. Need help on If condition continuatio... ashok_uddaraju CLIST & REXX 4 Fri May 19, 2017 8:55 am
No new posts Job failing with USER = 4093 REASON C... Pradeepa S ABENDS & Debugging 1 Wed May 17, 2017 3:35 pm
No new posts COBOL Code Parsers and Lineage Establ... balimanja COBOL Programming 2 Tue May 02, 2017 3:30 am
No new posts Cobol upgrade - source code missing f... gthmrj IBM Tools 1 Wed Apr 26, 2017 6:04 pm
No new posts Running an REXX EXEC implicitly sho7hills CLIST & REXX 3 Thu Apr 20, 2017 8:14 am


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us