They are?   I did not know that.   This wasn't even my project.  I just
got pulled in onto it this week because the people who were working on
it told me they had to have it done by this Friday. Ha!

Where would I find the RPG prototypes for this?

Shannon O'Donnell





-----Original Message-----
From: web400-bounces@xxxxxxxxxxxx [mailto:web400-bounces@xxxxxxxxxxxx]
On Behalf Of michaelr_41@xxxxxxxxxxxxxx
Sent: Wednesday, March 10, 2004 11:47 AM
To: Web Enabling the AS400 / iSeries
Subject: RE: [WEB400] Portals


I'm be curious to know the answer too...but I'm also wondering, why are
you interacting with Java? All the prototyped procedures are available
for RPG.

On Wed, 10 Mar 2004 11:24:31 -0600, "Shannon ODonnell"
<sodonnell@xxxxxxxxxxxxxxx> said:
> Not sure if this is the right forum for this question, but if not, I'm

> sure someone will tell me.
> 
> 
> I'm trying to interface an RPGIV program to a Java class to talk to a 
> MQ Series MQ Manager.
> I've done RPG to Java beore, but I've always used pretty simple
> paramaters and such.
> This one is a bit trickier so I'm seeking help.
> 
> 
> Here's what I have:
>  
>   
> Within my MQJBIND class, I have a method called "MQJBIND" that accepts

> two java string objects as parms.
> 
> 
> A second method in the class called "mGetOutput" that returns a java 
> string object and accepts as a parm, the reference to MQJBIND.
> 
> Here's the relevant java code:
> 
> class MQJBIND
> {
> 
> public void init()
> {
> // Set up MQSeries environment
>     MQEnvironment.channel = channel;
> 
> } // end of init  
>   /**
>    * CONSTURCTER
>    * @param qManager the MQSeriss Queue Manager name
>    * @parm qname the MQSeries Queue Name
>    */
>   
>   public  MQJBIND(String qManager, String qName)
>   { // begin MQJBIND
>     // Set up MQ environment
>    
>     try 
>     { // begin TRY MQJBIND
>         // Create a connection to the queue manager
>         qMgr = new
MQQueueManager(qManager,MQC.MQCNO_STANDARD_BINDING);
>         int openOptions = MQC.MQOO_INPUT_AS_Q_DEF |
>                           MQC.MQOO_INQUIRE |
>                         MQC.MQOO_SET |
>                         MQC.MQOO_OUTPUT ;
> 
>         // Note. MQOO_INQUIRE & MQOO_SET are always included by 
> default.
> 
>         // Now specify the queue that we wish to open, and the open 
> options...
> 
>         local_queue =  qMgr.accessQueue(
>                                 qName,
>                                 openOptions,
>                                 null,           // default q manager
>                                 null,           // no dynamic q name
>                                 null);          // no alternate user
id
> 
>     } // end TRY MQJBIND
>    
>     // If an error has occured in the above, try to identify what went

> wrong.
>     // Was it an MQ error?
>    
>     catch (MQException ex)
>     {  // begin CATCH MQJBIND
>         if(ex.reasonCode == 2033 || ex.reasonCode == 2002)
>         { 
>             error_out = "EMPTY QUEUE";
>             out_text = "";  
>         }
>         else
>         {
>             error_out = "An MQ error occurred : Completion code " + 
> ex.completionCode +
>                           " Reason code " + ex.reasonCode;
>             out_text = "";  
>         }
>     }  // end CATCH MQJBIND
> 
>   } // end MQJBIND
> 
> /**
>     * Method getOutput reads the message from the appropriate queue
and
>     * returns it in a String format.
>     * MQ Queue.
>     * @param MQJBIND class
>     */
>   public static String getOutput(MQJBIND mqg)
>   { // begin getOutput
>         mqg.out_text = "";
>         try
>         {  // begin try getOutput
>             //check if queue is empty
>           if ((mqg.qDepth = mqg.local_queue.getCurrentDepth()) > 0)   
>           {
>                 //System.out.println ("In MQJBind current depth is > 
> 0");
>                 MQMessage retrievedMessage = new MQMessage();
>               // Set the get message options.. accept the defaults
>               MQGetMessageOptions gmo = new MQGetMessageOptions();
>     
>                 // wait for a message to arrive
>                 gmo.options = MQC.MQGMO_WAIT;
> 
>                 // unlimited wait for a message
>                 gmo.waitInterval = MQC.MQWI_UNLIMITED;
> 
>                 // get the message off the queue..
>               mqg.local_queue.get(retrievedMessage,gmo);
>           
>                 // And prove we have the message by displaying the UTF

> message text
>               String msgText = retrievedMessage.readUTF();
>               mqg.out_text = msgText;
>               System.out.println("The message is: " + msgText);
>             }
>             else
>             {
>                 //System.out.println ("In MQJBind current depth is <= 
> 0");
>                 mqg.error_out = "EMPTY QUEUE";
>                 mqg.out_text = "";
>             }
>         } // end try getOutput
>         catch (MQException ex)
>         { // begin catch MQException getOutput
>             if(ex.reasonCode == 2033 || ex.reasonCode == 2002)
>             { 
>                 mqg.error_out = "EMPTY QUEUE";
>                 mqg.out_text = "";      
>             }
>             else
>             { 
>                 mqg.error_out = "An MQ error occurred : Completion 
> code " + ex.completionCode +
>                               " Reason code " + ex.reasonCode;
>                 mqg.out_text = "";      
>             }
>         }  // end catch MQException getOutput
> 
>         catch (java.io.IOException ex)
>         { // begin catch java.io.IOException getOutput
>             mqg.error_out = "An error occurred whilst writing to the 
> message buffer: " + ex;
>           mqg.out_text = "";  
>         } // end catch java.io.IOException getOutput
>         return (mqg.out_text);
> 
>   } // end getOutput
> 
> 
> Now...my question is....how do I prototype the MQJBIND method in my 
> RPG program to receive the reference to MQJBIND?
> 
> Here's what I did, but it doesn't like my prototype when I compile, 
> because I can't figure out what to use as the return data type on the
> prototype:
> 
>      D obj_ref         S               O   CLASS(*JAVA:'MQJBIND')
>      D mqjbind         S               O   CLASS(*JAVA:'MQJBIND')
>      D qManager        S               O
> CLASS(*JAVA:'java.lang.String')
>      D qChannel        S               O
> CLASS(*JAVA:'java.lang.String')
>      D qName           S               O
> CLASS(*JAVA:'java.lang.String')
>      D bytes           S               O
> CLASS(*JAVA:'java.lang.String')
> 
>       * Prototype procedure to instantiate 'MQJBIND' class
>      D MQJBIND         PR              O
>      D                                     EXTPROC(*JAVA:
>      D                                             'MQJBIND':
>      D                                             *CONSTRUCTOR)
> 
>       * Prototype procedure to connect to QManager
>      D MQJBINDM        PR            10i 0
> <<<<-----this return value is incorrect, but I don't know how to fix!
>      D                                     EXTPROC(*JAVA:
>      D                                             'MQJBIND':
>      D                                             'MQJBIND')
>      D ManagerQ                            LIKE(qManager) CONST
>      D NameQ                               LIKE(qName)    CONST
> 
>       * Prototype procedure to accept the DCN INFO FROM ISP
>      D MQGetOutput     PR          1000a
>      D                                     EXTPROC(*JAVA:
>      D                                             'MQJBIND':
>      D                                             'getOutput')
>      D MqJBindObj                          LIKE(MQJBIND)
>     
> 
>          // Instantiate the 'MQMJBind' class via the *CONSTRUCTOR
>          obj_ref = MQJBIND();
> 
>         // Call the MQMJBIND Method to connect to the MQ Manager on 
> remote host
>          mqjbind = MQJBINDM(obj_ref:qManager:qName);
> 
>         //  Call the 'MQGetOutput' method in class 'MQMJBind'
>         Response = MQGetOutput(obj_ref:mqjbind);
> 
> 
> Any help/suggestions appreciated.
> 
> Shannon O'Donnell
> 
> 
> 
>  
> 
> 
> _______________________________________________
> This is the Web Enabling the AS400 / iSeries (WEB400) mailing list To 
> post a message email: WEB400@xxxxxxxxxxxx To subscribe, unsubscribe, 
> or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/web400
> or email: WEB400-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives at 
> http://archive.midrange.com/web400.
> 
-- 
  
  michaelr_41@xxxxxxxxxxxxxx

-- 
http://www.fastmail.fm - Or how I learned to stop worrying and
                          love email again
_______________________________________________
This is the Web Enabling the AS400 / iSeries (WEB400) mailing list To
post a message email: WEB400@xxxxxxxxxxxx To subscribe, unsubscribe, or
change list options,
visit: http://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/web400.





As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.