ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » IBM MQ API Support » Message Queue VB6 to VB.net

Post new topic  Reply to topic
 Message Queue VB6 to VB.net « View previous topic :: View next topic » 
Author Message
Vicky
PostPosted: Sat Feb 24, 2007 7:21 am    Post subject: Message Queue VB6 to VB.net Reply with quote

Newbie

Joined: 21 Feb 2007
Posts: 5
Location: India

Actually I migrated one app from VB6 to VB.net.

This app is using message queue MQIC32.dll

Now when I tried using the same thing from vb.net, I wasn't able to connect to message queue.

I was getting error "2139" . i.e .MQRC_CNO_ERROR

So Can I use the migrated vb6 code in vb.net for message queue?

Below are some code snippets ....

VB6 API:
Declare Sub MQCONNXAny Lib "MQIC32.DLL" Alias "MQCONNXstd@20" (ByVal QMgrName As String, ConnectOpts As Any, Hconn As Long, CompCode As Long, Reason As Long)
VB.NET API:
Declare Sub MQCONNXAny Lib "MQIC32.DLL" Alias "MQCONNXstd@20" (ByVal QMgrName As String, ByRef ConnectOpts As MQCNOCD, ByRef Hconn As Long, ByRef CompCode As Long, ByRef Reason As Long)

And using following API function :
MQCONNXAny(gsMQMgrName.Value, CNOCD, gHcon, CompCode, Reason) 'Opens the conenction
----------------------------------------------------------------------------------------------------------------------------------
VB6 Structure

Type MQCNOCD
Dim ConnectOpts As MQCNO 'Options that control the action of MQCONNX'
Dim ChannelDef As MQCD 'Channel definition for client connection'
End Type

Type MQCNO
StrucId As String * 4 'Structure identifier'
Version As Long 'Structure version number'
Options As Long 'Options that control the action of MQCONNX'
ClientConnOffset As Long 'Offset of MQCD structure for client connection'
ClientConnPtr As String * 4 'Address of MQCD structure for client connection'
End Type

Type MQCD
collection of 64 'Long' & Fixed Length 'Strings'
End Type
---------------------------------------------------------------------------------------------------------------------------------

Upgrade wizard converted DataTypes as follows

<VBFixedString(4),System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=4)> Public StrucId() As Char 'Structure identifier'
Dim Version As Integer 'Structure version number'
.......................................
.......................................
But FixedLength related conversion was generating some Marshaling related error, so we changed the declaration as follows:
<VBFixedString(4)> Public StrucId As String 'Structure identifier' [We also tried with Public StrucId As VB6.FixedLengthString]
------------------------------------------------------------------------------------------------------------------------------------

Now at the time of execution of API function
MQCONNXAny(gsMQMgrName.Value, CNOCD, gHcon, CompCode, Reason) 'Opens the conenction

it is returning error code 2139. Please find explanation as follows:
--------------------------------------------------------------------------------------------------------------------------------------

MQRC_CNO_ERROR (2139)

Explanation: On an MQCONNX call, the connect-options structure MQCNO is not valid, for one of the following reasons:

The StrucId field is not MQCNO_STRUC_ID.
The Version field specifies a value that is not valid or not supported.
The parameter pointer is not valid. (It is not always possible to detect parameter pointers that are not valid; if not detected, unpredictable results occur.)
The queue manager cannot copy the changed structure to application storage, even though the call is successful. This can occur, for example, if the parameter pointer points to read-only storage.
This reason code occurs in the following environments: AIX, HP-UX, z/OS, OS/2, OS/400, Solaris, Windows, plus WebSphere MQ clients connected to these systems.

Completion Code: MQCC_FAILED

Programmer Response: Ensure that input fields in the MQCNO structure are set correctly.


Comcode: 2
Reason Code : 2139

Link: http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.csqzaq.doc/csqzaq00221.htm

The link below describes the problem description

http://middleware.its.state.nc.us/middleware/Documentation/en_US/htm/csqzak06/csqzak065m.htm
(seach for 2139)

Thanks in Advance........
_________________
Born For Challenges
Back to top
View user's profile Send private message Send e-mail Yahoo Messenger
jefflowrey
PostPosted: Sat Feb 24, 2007 9:08 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

Do not reference any documentation that is not at IBM.com

You don't know if it's trustworthy or not.

I believe you are making too much work for yourself, and causing trouble, by declaring those functions as external LIB functions and trying to use mqic32 directly.

Just migrate the code to the .NET API interface.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
Vicky
PostPosted: Tue Feb 27, 2007 12:49 am    Post subject: Reply with quote

Newbie

Joined: 21 Feb 2007
Posts: 5
Location: India

jefflowrey wrote:
Do not reference any documentation that is not at IBM.com

You don't know if it's trustworthy or not.

I believe you are making too much work for yourself, and causing trouble, by declaring those functions as external LIB functions and trying to use mqic32 directly.

Just migrate the code to the .NET API interface.


Hi,

Thanks for replying.

Can you please tell me in bit detail how to use .NET API and from where can I get it?
_________________
Born For Challenges
Back to top
View user's profile Send private message Send e-mail Yahoo Messenger
Vitor
PostPosted: Tue Feb 27, 2007 12:56 am    Post subject: Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

Vicky wrote:
Can you please tell me in bit detail how to use .NET API and from where can I get it?


There's a .NET manual in the Info Centre that covers the interface quite extensively. The api comes bundled with the base product AFAIK.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Tue Feb 27, 2007 4:30 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

There are also sample programs that come with the WMQ samples on windows. C:\Program Files\IBM\WebSphere MQ\Tools\dotnet
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » IBM MQ API Support » Message Queue VB6 to VB.net
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.