Try "ahsub1.Dispose();" after "ahsub1.Call();"
Regards
Adrian Halid wrote:
>
> Hi All,
>
> I am trying to call 2 subroutines using the same session in UniObject .NET
> but have an issue when the second subroutine Inserts a larger common
> block.
>
> I call the first subroutine without any issues. But when I call the second
> subroutine I get the following error.
>
> [IBM U2][UODOTNET - UNICLIENT][ErrorCode=30105] Unable to load the
> subroutine on the server
>
> I only have this issue in .NET and not in VB6.
> I believe that the .net UniSession is storing the Common Block variables
> and when I try to call another subroutine with a different common block it
> fails to load.
>
> I have read in another post on the web that people have created a Common
> Block loading subroutine to load all Common Blocks when they create the
> session.
> This way when ever they call any subroutine they know the common block
> does not increase.
>
> This seems a like a hack to me.
>
> I am worried that when ever a developer creates a new Common Block that
> they have to remember to update the Common Block loading Subroutine.
> Also we have thousands of Subroutines that may or may not include some
> common blocks.
> If a subroutine has the same variable name as a variable used in common
> block it does not insert will its value change.
>
> The other hack is to close and open the session every time I want to call
> a subroutine.
> But once again this is not suitable for my application.
>
>
> Here is my common blocks in universe
> --------------------- BP AH.COMMON1 -----------------------------------
> COMMON AHCOMMON1
> --------------------------------------------------------------------------------
>
> --------------------- BP AH.COMMON2 -----------------------------------
> COMMON AHCOMMON2
> --------------------------------------------------------------------------------
>
> Here are my two subroutines.
> --------------------- BP SR.AHTEST.CALL1 ---------------------------------
> SUBROUTINE SR.AHTEST.CALL1
> $INSERT AH.COMMON1
> RETURN
> END
> --------------------------------------------------------------------------------
>
> --------------------- BP SR.AHTEST.CALL2 ---------------------------------
> SUBROUTINE SR.AHTEST.CALL2
> $INSERT AH.COMMON1
> $INSERT AH.COMMON2
> RETURN
> END
> --------------------------------------------------------------------------------
>
> Here is the C# .net code
> --------------------- C# .NET
> ------------------------------------------------
> UniSession ahsession = UniObjects.OpenSession("HOST",
> "USERNAME", "PASSWORD", "ACCOUNT", "uvcs");
>
>
> UniSubroutine ahsub1 =
> ahsession.CreateUniSubroutine("SR.AHTEST.CALL1", 0);
> ahsub1.Call(); // No Error on this call
>
> UniSubroutine ahsub2 =
> ahsession.CreateUniSubroutine("SR.AHTEST.CALL2", 0);
> try
> {
> ahsub2.Call(); // Throws and exception
> }
> catch (UniSubroutineException ex)
> {
> MessageBox.Show(ex.Message); //Displays [ErrorCode=30105]
> Unable to load the subroutine on the server
>
> }
> MessageBox.Show("Done");
> --------------------------------------------------------------------------------
>
> If I write the same code in VB6 using the UniObject for VB6 I get no
> errors
> --------------------- C# .NET
> ------------------------------------------------
>
> Dim objSession As Object
> Set objSession = CreateObject("UniObjects.unioaifctrl")
> objSession.UserName = "USERNAME"
> objSession.Password = "PASSWORD"
> objSession.AccountPath = "ACCOUNT"
> objSession.HostName = "HOST"
> objSession.Connect
>
> Dim ahsub1 As Object
> Set ahsub1 = objSession.Subroutine("SR.AHTEST.CALL1", 0)
> ahsub1.Call
>
> Dim ahsub2 As Object
> Set ahsub2 = objSession.Subroutine("SR.AHTEST.CALL2", 0)
> ahsub2.Call
>
> MsgBox ("Done")
> --------------------------------------------------------------------------------
>
>
>
> Adrian Halid
> Senior Analyst/Programmer
>
> IT Vision Australia Pty Ltd (ABN: 34 309 336 904)
> PO Box 881, Canning Bridge WA 6153
> Level 3, Kirin Centre, 15 Ogilvie Road, Applecross, WA, 6153
> P: (08) 9315 7000 F: (08) 9315 7088
> E: [email protected] W: http://www.itvision.com.au
>
> ___________________________________________________________
>
> NOTICE : This e-mail and any attachments are intended for the addressee(s)
> only and may
> contain confidential or privileged material. Any unauthorised review, use,
> alteration,
> disclosure or distribution of this e-mail (including any attachments) by
> an unintended recipient
> is prohibited. If you are not the intended recipient please contact the
> sender as soon as
> possible by return e-mail and then delete both messages.
> ___________________________________________________________
>
> _______________________________________________
> U2-Users mailing list
> [email protected]
> http://listserver.u2ug.org/mailman/listinfo/u2-users
>
>
--
View this message in context:
http://www.nabble.com/UniObject-.NET-Session-and-Common-Block-Bug-tp25797736p25798331.html
Sent from the U2 - Users mailing list archive at Nabble.com.
_______________________________________________
U2-Users mailing list
[email protected]
http://listserver.u2ug.org/mailman/listinfo/u2-users