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

rexx callin stored procedure !!


IBM Mainframe Forums -> DB2
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
sushanth bobby

Senior Member


Joined: 29 Jul 2008
Posts: 1020
Location: India

PostPosted: Sun Feb 20, 2011 1:08 am
Reply with quote

Hi,

I started with your code and improvised it a bit and on-the-way i encountered all the errors that you have been encountering and little more also. Below is the fully tested code and executed code.

I resolved the -471 with 00E7900C error by looking into the following places for the correct WLM,
* Catalogs
* -DISPLAY PROCEDURE
* SDSF --> PRE DB2D*** --> for me its DB2D, look for WLM, go into the jesjcl--> look for 'APPLENV=' and also let us know what is your NUMTCB value

All WLM Must be same.

After checking all this, still if you have a problem, check whether you are pointing to the right sub-system.
Code:
/**** REXX **************************************/
/* DB2 ADMIN_INFO_SYSPARM STORED PROCEDURE      */
/************************************************/
ADDRESS TSO "SUBCOM DSNREXX"          /* HOST CMD ENV AVAILABLE    */
IF RC THEN                            /* IF NOT, MAKE IT AVAILABLE */
DO                                    /* ADD HOST CMD ENVIRONMENT  */
   S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX')
END

/* CONNECT TO DB2 SUB SYSTEM */
ADDRESS DSNREXX 'CONNECT DB2D'
IF SQLCODE <> 0 THEN
DO
  CALL SQLCA
  SAY RC
END

 /*TRACE I */
   SSID_IND = -1
   SSID     = LEFT(' ',4)
   SAY SSID

   RETCD_IND=0
   RETCD=0

   MSSG_IND=0
   MSSG=LEFT(' ',1331,' ')

   INSQLDA.SQLD = 1
   INSQLDA.1.SQLTYPE = 449 /* VARCHAR */
   INSQLDA.1.SQLLEN = 32000
   INSQLDA.1.SQLIND = 0
   INSQLDA.1.SQLDATA = ' '

   PROC = 'SYSPROC.ADMIN_INFO_SYSPARM1'
   ADDRESS DSNREXX 'EXECSQL CALL ' PROC,
                              '(:SSID  :SSID_IND',
                              ',:RETCD :RETCD_IND',
                              ',:MSSG  :MSSG_IND)'
SAY 'RETCD   ='RETCD
SAY 'LENGTH = 'LENGTH(MSSG)
IF SQLCODE < 0 THEN CALL SQLCA
ELSE
DO
   ADDRESS DSNREXX 'EXECSQL DESCRIBE PROCEDURE :PROC INTO :SQLDA'
   SAY 'DONE WITH DESCRIBE'

   DO I = 1 TO SQLDA.SQLD
       SAY "SQLDA."I".SQLD ="SQLDA.SQLD";"
       SAY "SQLDA."I".SQLNAME ="SQLDA.I.SQLNAME";"
       SAY "SQLDA."I".SQLTYPE ="SQLDA.I.SQLTYPE";"
       SAY "SQLDA."I".SQLLOCATOR ="SQLDA.I.SQLLOCATOR";"
       SAY "SQLDA."I".SQLESTIMATE="SQLDA.I.SQLESTIMATE";"
   END

   /****************************************************************/
   /* SET UP A CURSOR TO RETRIEVE THE ROWS FROM THE RESULT         */
   /* SET.                                                         */
   /****************************************************************/
   ADDRESS DSNREXX 'EXECSQL ASSOCIATE LOCATOR (:MSSG)',
                   'WITH PROCEDURE :PROC'
   IF SQLCODE <> 0 THEN CALL SQLCA
   SAY 'MSSG ='MSSG

  ADDRESS DSNREXX "EXECSQL ALLOCATE C101 CURSOR FOR RESULT SET :MSSG"
  IF SQLCODE <> 0 THEN CALL SQLCA

  CURSOR = 'C101'
  ADDRESS DSNREXX "EXECSQL DESCRIBE CURSOR :CURSOR INTO :SQLDA"
      SAY 'ADEBUG SQLCODE ='SQLCODE
  IF SQLCODE <> 0 THEN CALL SQLCA
   DO I = 1 TO SQLDA.SQLD
       SAY "SQLDA."I".SQLD ="SQLDA.SQLD";"
       SAY "SQLDA."I".SQLNAME ="SQLDA.I.SQLNAME";"
       SAY "SQLDA."I".SQLTYPE ="SQLDA.I.SQLTYPE";"
       SAY "SQLDA."I".SQLLEN  ="SQLDA.I.SQLLEN";"
       SAY "SQLDA."I".SQLLOCATOR ="SQLDA.I.SQLLOCATOR";"
       SAY "SQLDA."I".SQLESTIMATE="SQLDA.I.SQLESTIMATE";"
   END

  /****************************************************************/
  /* RETRIEVE AND DISPLAY THE ROWS FROM THE RESULT SET, WHICH     */
  /* CONTAIN THE COMMAND OUTPUT MESSAGE TEXT.             */
  /****************************************************************/
  I=0
  DO UNTIL(SQLCODE <> 0)
      ADDRESS DSNREXX 'EXECSQL FETCH C101 ',
               'INTO :ROWNUM, :MACRO, :PARAMETER,',
               ':INSTALL_PANEL       :IND_INSTALL_PANEL,',
               ':INSTALL_FIELD       :IND_INSTALL_FIELD,',
               ':INSTALL_LOCATION    :IND_INSTALL_LOCATION,',
               ':VALUE,',
               ':ADDITIONAL_INFO     :IND_ADDITIONAL_INFO'

      IF SQLCODE = 0 THEN
      DO
        I = I + 1
        RECORD.I = SUBSTR(ROWNUM,1,3) SUBSTR(MACRO,1,8)
        RECORD.I = RECORD.I SUBSTR(PARAMETER,1,32) SUBSTR(INSTALL_PANEL,1,8)
    RECORD.I = RECORD.I SUBSTR(INSTALL_FIELD,1,40) SUBSTR(INSTALL_LOCATION,1,5)
        RECORD.I = RECORD.I SUBSTR(STRIP(VALUE),1,40)
        RECORD.I = RECORD.I SUBSTR(STRIP(ADDITIONAL_INFO),1,20)
/*      SAY 'ROWNUM='ROWNUM
        SAY 'MACRO ='MACRO
        SAY 'PARAMETER ='PARAMETER
        SAY 'INSTALL_PANEL ='INSTALL_PANEL
        SAY 'INSTALL_FIELD ='INSTALL_FIELD
        SAY 'INSTALL_LOCATION ='INSTALL_LOCATION
        SAY 'VALUE ='VALUE
        SAY 'ADDITIONAL INFO ='ADDITIONAL_INFO
        SAY RECORD.I
    */END
  END
  RECORD.0=I
  IF SQLCODE <> 0 THEN CALL SQLCA
  ADDRESS DSNREXX "EXECSQL CLOSE C101"
  IF SQLCODE <> 0 THEN CALL SQLCA

  ADDRESS DSNREXX "EXECSQL COMMIT"
  IF SQLCODE <> 0 THEN CALL SQLCA

  SAY RC
END
IF SQLCODE <> 0 THEN
DO
  CALL SQLCA
  SAY RC
END

ADDRESS DSNREXX 'DISCONNECT'

/* WHEN DONE WITH DSNREXX, REMOVE IT */
S_RC = RXSUBCOM('DELETE','DSNREXX','DSNREXX')

   "DELETE '"HXSULL.DB2.DB2D.SYS.PARM"'"
   "ALLOC FI(DB2SYSP) DA('HXSULL.DB2.DB2D.SYS.PARM') MOD KEEP REUSE",
   "CYL SPACE(1,1) LRECL(200) RECFM(F,B,A) DSORG(PS)"
   "EXECIO *  DISKW DB2SYSP (STEM RECORD. FINIS"
EXIT

SQLCA:
SAY 'SQLCODE   = ' SQLCODE
SAY 'SQLSTATE  = ' SQLSTATE
SAY 'SQLERRD.1 = ' SQLERRD.1
SAY 'SQLERRD.2 = ' SQLERRD.2
SAY 'SQLERRD.3 = ' SQLERRD.3
SAY 'SQLERRD.4 = ' SQLERRD.4
SAY 'SQLERRD.5 = ' SQLERRD.5
SAY 'SQLERRD.6 = ' SQLERRD.6
SAY 'SQLERRMC  = ' SQLERRMC
RETURN


I have a doubt, why is the cursor C101 is used, what attribute does it have.
Code:
EXECSQL ALLOCATE C101 CURSOR FOR RESULT SET

From the redbook i got to know that C1 to C100 are declared with a default attribute of WITH RETURN. What attribute does the cursor C101 have.


Thanks,
Sushanth
Back to top
View user's profile Send private message
mjadwani2785

New User


Joined: 28 Apr 2009
Posts: 89
Location: Noida , Dublin

PostPosted: Wed May 04, 2011 10:42 pm
Reply with quote

Again after so many days...Today I again started working on this one...

The problem is db2vwlm proc is not able to start.. so something strike my mind and I tried to start it manually to look for error...

What I did was /s db2vwlm to look for the error in the log

and the proc started and abended..the error generated is

DSNX967I DSNX9WLM ATTEMPT TO PERFORM WLM FUNCTION IWMCONN FAILED
WITH WLM RC = 0000000C RSN = 11580C1B SSN = DB2V PROC= DB2VWLM
ASID = 0039 WLM_ENV = DB2VWLM

Does this refer to any db2 -wlm racf authority problem ?
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8700
Location: Dubuque, Iowa, USA

PostPosted: Wed May 04, 2011 10:49 pm
Reply with quote

Google is your friend. Googling dsnx967i returned 116 hits, including at leat one with the 0000000C RC and 11580C18 RSN.
Back to top
View user's profile Send private message
mjadwani2785

New User


Joined: 28 Apr 2009
Posts: 89
Location: Noida , Dublin

PostPosted: Thu May 26, 2011 11:23 pm
Reply with quote

The wlm application environment defined at my side was wrong. Today I defined the new one and it worked for me.

icon_smile.gif

Thanks all icon_smile.gif
Back to top
View user's profile Send private message
leela_krsna

New User


Joined: 09 Aug 2006
Posts: 3

PostPosted: Fri May 27, 2011 3:05 am
Reply with quote

What's the result of VARY?

"Specify an application environment that is defined and active in the active WLM policy, or update the WLM policy to contain a valid application environment name."
Back to top
View user's profile Send private message
mjadwani2785

New User


Joined: 28 Apr 2009
Posts: 89
Location: Noida , Dublin

PostPosted: Fri May 27, 2011 11:47 am
Reply with quote

Actual problem was in the wlm application definition the subsystem type was defined as subsystem name instead of just DB2 . Took almost weeks to figure it out but finally got through.

Then from the WLM ISPF panel only activated the policies.

Its a test environment out here just doing my R&D and learning.

Thanks!!
Back to top
View user's profile Send private message
View previous topic : : View next topic  
Post new topic   Reply to topic All times are GMT + 6 Hours
Forum Index -> DB2

 


Similar Topics
Topic Forum Replies
No new posts Rexx to read current Panvalet editor/... CLIST & REXX 0
No new posts JCL/REXX to know GDG base name JCL & VSAM 6
No new posts Run rexx with JCL Job CLIST & REXX 1
No new posts Run rexx in batch job CLIST & REXX 7
No new posts Does anyone know rexx for VSE CLIST & REXX 3
Search our Forums:


Back to Top