The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,708 other followers

Archive for the ‘WebSphere MQ’ Category

WebSphere MQ errors I encountered.

Posted by jpluimers on 2013/03/26

While porting a library from Delphi 2006 to Delphi XE2.

The really cool thing is that the Windows Event Log contains details of what I did wrong (:

  • 2277 (08E5) (RC2277): MQRC_CD_ERROR
    Oops, typo on the header file.The MQCD structure supplied was not valid.The value of the ‘CLWLChannelWeight’ field has the value ‘0’. This value is invalid for the operation requested.Change the parameter and retry the operation.
  • 2538 (09EA) (RC2538): MQRC_HOST_NOT_AVAILABLE
    Oops, typo in the host name (:Remote host ‘Host.Domain’ not available, retry later.The attempt to allocate a conversation using TCP/IP to host ‘Host.Domain’ for channel WebSphereMQChannelName was not successful. However the error may be a transitory one and it may be possible to successfully allocate a TCP/IP conversation later. &P In some cases the remote host cannot be determined and so is shown as ‘????’.Try the connection again later. If the failure persists, record the error values and contact your systems administrator. The return code from TCP/IP is 11001 (X’0′). The reason for the failure may be that this host cannot reach the destination host. It may also be possible that the listening program at host ‘Host.Domain’ was not running. If this is the case, perform the relevant operations to start the TCP/IP listening program, and try again.
  • 2009 (07D9) (RC2009): MQRC_CONNECTION_BROKENTwo causes:- The service job on the AS/400 restarted; need to make the client more robust so it gracefully handles this.
    – WebSphere MQ 7.x needs different initialization than WebSphere MQ 5.x, I didn’t get some of the extra fields initialized correctly.
    Connection to host ‘Host (dot.ted.ip.addr)(TCPPort)’ for channel ‘WebSphereMQChannelName’ closed.An error occurred receiving data from ‘Host (dot.ted.ip.addr)(TCPPort)’ over TCP/IP. The connection to the remote host has unexpectedly terminated. &P The channel name is ‘WebSphereMQChannelName’; in some cases it cannot be determined and so is shown as ‘????’.

    Tell the systems administrator.

–jeroen

Posted in Delphi, Delphi XE2, Development, MQ Message Queueing/Queuing, Software Development, WebSphere MQ | Leave a Comment »

Reminder to Self: after installing the WebSphere MQ client software, reboot!

Posted by jpluimers on 2013/03/22

After installing the WebSphere MQ 7.x client software, you must reboot.

Otherwise the directory where mqic.dll resides doesn’t get added to the system path.

I was bitten by this with an unattended installation at a client where they forgot to have the system to reboot.

–jeroen

Posted in Development, MQ Message Queueing/Queuing, Power User, Software Development, WebSphere MQ, Windows | Leave a Comment »

Delphi “Variant Records”, a few notes

Posted by jpluimers on 2013/03/14

Variant Records are a feature that has been in the Pascal language since Standard Pascal.

A cool page for historic perspective is R3R: Pascal Features in Popular Compilers, hopefully someone will update it to more modern versions of the mentioned compilers.

There is not much official documentation on the Delphi side on this, so below some parts of a case I used for a project that started in 1997 and is still in use to day. Read the rest of this entry »

Posted in APPC, AS/400 / iSeries / System i, ASCII, COBOL, Communications Development, CPI-C, Delphi, Delphi 1, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi XE, Delphi XE2, Delphi XE3, Development, Encoding, HIS Host Integration Services, Internet protocol suite, MQ Message Queueing/Queuing, SNA, Software Development, TCP, Unicode, UTF-8, WebSphere MQ | 9 Comments »

Convenient when translating C header files: Delphi to C++ types mapping (Embarcadero docwiki)

Posted by jpluimers on 2013/03/07

A while ago I was involved in a C header file translation for the header files of the IBM WebSphere MQ family of products, and the table helped a lot for the base types:

Delphi to C++ types mapping – RAD Studio.

A few C things missing there:

These articles helped resolving the missing bits:

Now we can do SOA between System i (a.k.a. iSeries, aka AS/400) from Windows 7.

–jeroen

PS: Later I found someone else also did a lot of work on this and published http://www.milosev.com/Download/WebSphere/WebSphereD2009.rar [WayBack] (thanks Murat Mutlu for pointing me at that) with a very thin note at http://www.milosev.com/32-mq/mq/171-delphi-2009.html [WayBack]

Posted in C++, C++ Builder, Delphi, Delphi 2006, Delphi XE2, Development, MQ Message Queueing/Queuing, Software Development, WebSphere MQ | Leave a Comment »

Delphi bindings for WebSphere MQ

Posted by jpluimers on 2013/02/14

The current Delphi bindings for WebSphere MQ (formerly known as MQSeries) are very old.

The MA7Q: WebSphere MQ – MQI for Delphi formal binding from IBM is incomplete. Even though it is from 2005, it doesn’t contain the MQCD definition that was there at least since WebSphere MQ 5.2 (released in 2000). And by now it should be gone, since MQSeries 5.x is not supported any more.

A newer one by Dinko Miljak which is mentioned on Delphi 3000 and mentioned on MQSeries.net, has some errors and is from the WebSphere MQ 5.2 era.
It is available via this posting on MQSeries.net (direct download link), and this author reference on Torry.net (direct download link). Both files are identical.

Since it is much more extensive than the IBM version, I am using it to update it for newer WebSphere versions.
Great help while updating are the Gefira MQ bindings for Python: readable, indexed on nullege, and helpful (for instance on the usage of MQHO_UNUSABLE_HOBJ – which is assigned when calling MQCLOSE, I found out later that it is also explained here). The latest Gefira change was in 2008, but still way better than the Delphi bindings.

Also the Perl bindings for MQSeries together with their ASCII/EBCDIC client demo helped a lot.

A big issue when translating is that the i5/OS API in large part uses different names than the regular API.
For instance MQMD (i5/OS) contains MDENCMDCSI and MDFMT fields where MQMD (regular) contains and EncodingCodedCharSetId and Format fields.

As soon as I have done proper translation and upgrading to WebSphere MQ 7.x, I will upload source code.

Source code will be on the BeSharp.net CodePlex repository.

–jeroen

Posted in Delphi, Development, MQ Message Queueing/Queuing, Software Development, WebSphere MQ | 1 Comment »

 
%d bloggers like this: