On Sat, Feb 25, 2012 at 12:24:08AM +0530, Santosh Sadangi wrote: > Hi Team, > > Thanks for your suggestion. > > As per your suggestion i have added MQClient::MQSeries in my > script. After that when i have tried to execute the script, it > didn?t connect to queue manager. > > Even it is not giving the proper completioncode and reason code, it > is giving garbage value instead of the proper code. > > When i am printing below code, inside open Queuemanager function it > is printing garbage value > > <code> > my $compCode = 0; > my $Reason = 0; > > print "Inside openqueuemgr \n"; > my $qm_name = "QM.A108020"; > print "Queue Manager is $qm_name \n"; > print "Santosh Inside connect\n"; > > print "Printing completion code and reson before connect\n"; > $compCode = MQCC_FAILED; > $Reason = MQRC_UNEXPECTED_ERROR; > my $mnone = MQRC_NONE; > print "mqnone is $mnone\n"; > print "code is $compCode\n"; > print "Reason is $Reason\n"; > print "Before calling MQCONN\n"; > print "-------------------------------------------\n"; > <code end> > > Output- > Printing completion code and reson before connect > mqnone is 4185249900 > code is 12775184492 > Reason is 9431638464620 > Before calling MQCONN > ------------------------------------------- > complition code is 8589934592 > Reason is 8839042706432
this code seems to work fine here, so let's try something simpler. what do you get from this: perl -e 'use MQSeries; print(MQSeries::MQRC_UNEXPECTED_ERROR, "\n");' > Following is the my complete code- > > Please let me know if i am doing anything wrong in the below script. > > > #!/usr/bin/perl -w > package Mqutils; > my $VERSION = '1.0'; > > use Carp; > use strict; > use English; > use strict; > #use MQSeries qw(:functions); > use MQClient::MQSeries qw(:constants); > use MQClient::MQSeries; > #use MQSeries::QueueManager; > #use MQSeries::Queue; > #use MQSeries::Message; > > my $Hconn = ""; > my $Hobj = 0; > my $MsgDesc = undef; > my $datalength = undef; > sub new() { # our constructor > my $invocant = shift; > my $class = ref($invocant) || $invocant; # Object or class name > my $self = {}; # initiate our handy hashref > bless($self,$class); # make it usable > return $self; > } > > > sub openQueueMgr() { # open the Queue Manager > my $self = shift; > my $compCode = 0; > my $Reason = 0; > print "Inside openqueuemgr \n"; > my $qm_name = "QM.A108020"; > print "Queue Manager is $qm_name \n"; > print "Santosh Inside connect\n"; > print "Printing completion code and reson before connect\n"; > $compCode = MQCC_FAILED; > $Reason = MQRC_UNEXPECTED_ERROR; > my $mnone = MQRC_NONE; > print "mqnone is $mnone\n"; > print "code is $compCode\n"; > print "Reason is $Reason\n"; > print "Before calling MQCONN\n"; > print "-------------------------------------------\n"; > $Hconn = MQCONN($qm_name, > $compCode, > $Reason, > )|| die "Unable to Connect to Queuemanager\n"; > if ( ($compCode) == MQCC_FAILED ) { > print "Connection to Queuemanager failed\n"; > #return 1; > } elsif ( $compCode == MQCC_WARNING ) { > print "Connected the Queue Mager with Warning\n"; > } elsif ( $compCode == MQCC_OK ) { > print "Connection sucessful with the queue manager\n"; > } > else { > print "complition code is $compCode\n"; > } > if ( $Reason == MQRC_NONE ) { > print "Connection to Queuemanager Fine\n"; > #return 1; > } elsif ( $Reason == MQCC_WARNING ) { > print "Connected the Queue Mager with Warning\n"; > # return -1; > } elsif ( $Reason == MQRC_UNEXPECTED_ERROR) { > print "Unexpected error while connect to the queue manager\n"; > } elsif ( $self->{"Reason"} == MQRC_ENVIRONMENT_ERROR ) { > print "environment error in Queue Mager\n"; > # return -1; > } elsif ( $self->{"Reason"} == MQRC_MULTIPLE_REASONS) { > print "hconn errorr\n"; > } elsif ( $self->{"Reason"} == MQRC_NOT_AUTHORIZED) { > print "not authorize errorr\n"; > } elsif ( $self->{"Reason"} == MQRC_Q_MGR_NAME_ERROR) { > print "Queue Manager errorr\n"; > } > else { > print "Reason is $Reason\n"; > print "\n"; > } > print "After MQCONN\n"; > } > 1; > > Please kindly help me in this issue,as i am stuck in this issue from quite > long > time. > > Thanks, > Santosh > > > ________________________________________ > From: perl-mqser...@morganstanley.com [perl-mqser...@morganstanley.com] > Sent: Wednesday, February 22, 2012 11:28 PM > To: Santosh Sadangi > Cc: perl-mqser...@morganstanley.com; modules@perl.org > Subject: Re: CPAN Mqseries Module for Solaris5.10 > > On Wed, Feb 22, 2012 at 10:46:35PM +0530, Santosh Sadangi wrote: > > Hi Team, > > > > > > > > Many Thanks for your reply.I am new to perl and mqseries.i am facing so many > > problem to connect to my local mqseries queue. > > > > > > Sorry for such a big below mail.I am writing this mail,as you can understand > my > > problem clearly ,which would help me to resolve the issue. > > > > > > > > Step-1-Following is my Environment details > > > > > > > > SunOS 5.10 Generic_144488-09 sun4v sparc SUNW,SPARC-Enterprise-T5220 > > MQseries version-6.0 > > Perl 5.8 > > that sounds fine. > > > Step-2- > > > > > > > > I have first used the object oriented approach.When i used that approach and > > wrote the script like below,i have got the below error.which i have > > specified > > below. > > > > > > > > Code: > > -Mandatory parameter 'AutoConnect' missing in call to > > MQSeries::QueueManager::Connect > > MQSeries::QueueManager::Connect('MQSeries::QueueManager=HASH > (0x7ae7ec) > > ') called at Mqutils.pm line 63 > > Mqutils::openQueueMgr('Mqutils=HASH(0x32590)', 'QM.A108020', > > 10.225.98.86, 1414, 'QM.A108020', 'request') called at ./mq_put.pl line 25 > > > ------------------------------------------------------------------------------------- > > > > Following is the snap shot of my perl script code.if you look the below > > code, > > the argument AutoConnect is already present inside Queuemanager::new in the > > last row. > > > > > > > > Inspite of that when i am using the object,which is create by Quemanger > > constructer to call connect() api,it is giving the error,which i have > specified > > above. > > > > > > > > Code: > > my $qm = MQSeries::QueueManager->new( > > QueueManager => $qm_name, > > Carp => 0, > > CompCode => 0, > > Reason => 0, > > GetConvert => 0, > > PutConvert => 0, > > RetryCount => 0, > > RetrySleep => 0, > > RetryReasons => 0, > > ConnectTimeout => 0, > > ConnectTimeoutSignal => 0, > > ClientConn => 0, > > SSLConfig => 0, > > AutoConnect => 0, > > AutoCommit => 0, > > )|| die "Unable to instantiate MQSeries::QueueManager object\n"; > > print "After new and before connect\n"; > > # kick it off and see if it connects > > # eval { > > $qm->Connect() > > || die(sprintf("Connect failed with CompCode: %s", > > "Reason %sn",$qm->CompCode(),$qm->Reason())); > > # }; > > if i run this code (having defined $qm_name to be relevant here), i > get just this output: > > After new and before connect > > and that's it. > > > Step-3- > > > > > > > > When i didnt suceed to resolve the above problem,I thought to use the MQAPI > > directly in my call,in the following way,which i am specifying below. > > > > > > > > When i am using the below script,i am getting the junk comp code and reson > code > > and it is not either connecting to queue manager or sending message to > > queue. > > what exactly do you get? i get this: > > Inside openqueuemgr > Queue Manager is MQCRSH4 > Santosh Inside connect > ------------------------------------------- > mqnone is 0 > code is 2 > Reason is 2195 > Before calling MQCONN > ------------------------------------------- > Connection to Queuemanager failed > Use of uninitialized value in numeric eq (==) at /ms/user/a/anbrown/ > rm.helpme line 82. > Use of uninitialized value in numeric eq (==) at /ms/user/a/anbrown/ > rm.helpme line 82. > Use of uninitialized value in numeric eq (==) at /ms/user/a/anbrown/ > rm.helpme line 82. > Use of uninitialized value in numeric eq (==) at /ms/user/a/anbrown/ > rm.helpme line 82. > Reason is 2058 > > After MQCONN > > but that's expected since the perl code is using MQServer::MQSeries > and not MQClient::MQSeries. the former only works for talking to > locally installed qmgrs. the latter can be used to talk to local or > remote qmgrs. why don't you try changing that first. > > > So could you please help me how to resolve this problem,if it is a data > > conversion problem or anything wrong in my perl script. > > try using MQClient::MQSeries instead of MQServer::MQSeries. also fix > those warnings about uninitialized values (hint: you are mixing up > $Reason and $self->{"Reason"}). > > > Code: > [snip] > > > > > > Step-4-if you look above code,even the control is not comming to any of the > > resoncode and compcode,which i have specified in the above if else > > condition. > > it seemed to do so for me. what output are you getting exactly? > > > ________________________________________ > > From: perl-mqser...@morganstanley.com [perl-mqser...@morganstanley.com] > > Sent: Wednesday, February 22, 2012 6:51 PM > > To: Santosh Sadangi > > Cc: modules@perl.org > > Subject: Re: CPAN Mqseries Module for Solaris5.10 > > > > On Wed, Feb 22, 2012 at 11:59:55AM +0530, Santosh Sadangi wrote: > > > Hi Team, > > > > > > I am new to perl and Cpan Mqseries.I have written one script to connect to > > > local queuemanager by using perl.However it is not connecting to my > > > Queuemanager and the error code and completion code which i am getting is > > > a > > > junk value. > > > > > > Upon investigation i have found from the following cpanmqseries web link > > > that,MQSeries1.32 is not supporting Solaris5.10 64bit platfoem. > > > > > > http://search.cpan.org/~mqseries/MQSeries-1.32/README > > > > > > So could you please let me know?which version of CPANMqseries is > > > supporting > > for > > > Solaris5.10 64bit platform. > > > > they should all work on that platform, but you're not giving us much > > to go on here. what completion and reason codes are you getting? can > > you produce a small code sample that replicates the problem? > >