|
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 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.