webMethods

webMethods

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
Expand all | Collapse all

ASP.NET Array and EntireX

  • 1.  ASP.NET Array and EntireX

    Posted Mon August 09, 2004 07:52 PM

    Hi Everyone,

    I am new to .NET and trying to creat a program using ASP/VB.NET, EntireX/RPC and Natural (please see below for my asp.net program, c# class and idl file). When I ran this program, only the first element of the array got the result whereas four elements of the array should have got the results. This same natural program is working properly when I used Java/RPC to make the call. Furthermore, even if I changed the size of the array, for example, from OutArayobj(30) to OutArrayobj(50), the program still ran with the same result. Could someone please help to explain what i did wrong.

    Thank you very much in advance for your help.

    Chuong

    Here’s the asp.net codes:

    Imports SoftwareAG.EntireX.NETWrapper.Generated.ClassSchedule

    Public Class WebForm1
    Inherits System.Web.UI.Page
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label


    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Put user code to initialize the page here


    Dim broker As Broker
    Dim service As Service
    broker = New Broker(“111.111.000.2:2222”)
    service = New Service(broker, “RPC/SRV1/CALLNAT”)
    broker.Logon(“”)


    Dim rpcobj2 As New SoftwareAG.EntireX.NETWrapper.Generated.ClassSchedule.Classschedule(service)

    Dim OutArrayobj(30) As SoftwareAG.EntireX.NETWrapper.Generated.ClassSchedule.Groups.STS555N0.OutArray

    Dim Groupobj As New SoftwareAG.EntireX.NETWrapper.Generated.ClassSchedule.Groups.STS555N0()

    Dim outseq(10) As System.Text.StringBuilder
    Dim outRegDt, outRegTm, outUnits As System.Text.StringBuilder

    Dim outRegClasses, outWaitClasses, outSeqLineCount As Decimal

    rpcobj2.STS555N0(“XXXXX”, “1111”, outRegDt, outRegTm, outUnits, outRegClasses, outWaitClasses, outSeqLineCount, OutArrayobj, outseq)

    Label2.Text = OutArrayobj(0).crsId.ToString

    // OutArrayobj(0) will contain a value, but OutArrayobj(1) will not
    // OutArrayobj(0) to OutArrayobj(3) should contain a value.

    End Sub

    End Class


    IDL file:

    Library ‘ClassSchedule’ Is
    Program ‘STS555N0’ Is
    Define Data Parameter
    1 #IN-STUDENT-ID (A9) In
    1 #IN-TERM (A6) In
    1 #RGSTRTN-APPT-DT (A10) Out
    1 #RGSTRTN-APPT-TM (A7) Out
    1 #CREDIT-UNITS (A10) Out
    1 #REGISTERED-CLASSES (N3) Out
    1 #WAIT-LIST-CLASSES (N3) Out
    1 #SEQ-LINE-COUNT (N3) Out
    1 #OUT-ARRAY (/30) Out
    2 #CLASS-TYPE (A2) Out
    2 #REF-NUM-A (A6) Out
    2 #OPTION (A1) Out
    2 #CRS-ID (A10) Out
    2 #HOURS2 (A6) Out
    2 #DAYS (A9) Out
    2 #BLDG (A4) Out
    2 #ROOM (A6) Out
    2 #TIMES (A15) Out
    2 #RSN-DRP (A2) Out
    2 #DATES (A21) Out
    2 #INSTR-NAME (A30) Out
    2 #SCHED-NOTE-1 (A250) Out
    2 #SCHED-NOTE-2 (A250) Out
    1 #SEQ (A10/10) Out
    End-Define

    C# class

    #region * * * P L E A S E D O N O T M O D I F Y * *
    /
    **************************************************************************
    ** Module name : ClassSchedule.cs
    ** Description : Client Stub File for .NET (7.1.1.0)
    **
    ** * * * P L E A S E D O N O T M O D I F Y * * *
    **
    ** Author : Generated by Software AG EntireX IDL Compiler
    ** Template : csharp_client.tpl for C# language
    ** Platform : .NET-able Platforms
    ** Usage : <use>
    */
    #endregion
    #region parameters
    /

    ** IDL File : ClassSchedule
    ** sanitize C#
    ***************************************************************************/
    #endregion
    using System;
    using System.Text;
    using System.Runtime.InteropServices;
    using SoftwareAG.EntireX.NETWrapper.Runtime;

    namespace SoftwareAG.EntireX.NETWrapper.Generated.ClassSchedule.Groups
    {
    #region Groups for LIBRARY ‘ClassSchedule’, PROGRAM ‘STS555N0’

    public class STS555N0
    {
    public class OutArray
    {
    [SendAs(IdlType.A, Length=2f)]public StringBuilder classType;
    [SendAs(IdlType.A, Length=6f)]public StringBuilder refNumA;
    [SendAs(IdlType.A, Length=1f)]public StringBuilder option;
    [SendAs(IdlType.A, Length=10f)]public StringBuilder crsId;
    [SendAs(IdlType.A, Length=6f)]public StringBuilder hours2;
    [SendAs(IdlType.A, Length=9f)]public StringBuilder days;
    [SendAs(IdlType.A, Length=4f)]public StringBuilder bldg;
    [SendAs(IdlType.A, Length=6f)]public StringBuilder room;
    [SendAs(IdlType.A, Length=15f)]public StringBuilder times;
    [SendAs(IdlType.A, Length=2f)]public StringBuilder rsnDrp;
    [SendAs(IdlType.A, Length=21f)]public StringBuilder dates;
    [SendAs(IdlType.A, Length=30f)]public StringBuilder instrName;
    [SendAs(IdlType.A, Length=250f)]public StringBuilder schedNote1;
    [SendAs(IdlType.A, Length=250f)]public StringBuilder schedNote2;
    }
    }


    #endregion
    }
    namespace SoftwareAG.EntireX.NETWrapper.Generated.ClassSchedule
    {
    [EntireXVersion(“7.1.1.0”)]
    [Library(“ClassSchedule”)]
    public class Classschedule
    {
    #region Constructor(s) etc for LIBRARY ‘ClassSchedule’

    public Service service;

    public Classschedule(){
    this.service = new Service();
    }

    public Classschedule(Broker broker){
    this.service = new Service(broker);
    }

    public Classschedule(Service service){
    this.service = service;
    }

    #endregion
    #region Properties for LIBRARY ‘ClassSchedule’

    public bool Encryption{
    get{ return this.service.encryption; }
    set{ this.service.encryption = value; }
    }

    #endregion
    #region Method/Function for LIBRARY ‘ClassSchedule’ PROGRAM ‘STS555N0’

    [Program(“STS555N0”)]
    public void STS555N0(
    [SendAs(IdlType.A, Length=9f)][In] string inStudentId,
    [SendAs(IdlType.A, Length=6f)][In] string inTerm,
    [SendAs(IdlType.A, Length=10f)][Out] out StringBuilder rgstrtnApptDt,
    [SendAs(IdlType.A, Length=7f)][Out] out StringBuilder rgstrtnApptTm,
    [SendAs(IdlType.A, Length=10f)][Out] out StringBuilder creditUnits,
    [SendAs(IdlType.N, preDecimal=3, postDecimal=0)][Out] out decimal registeredClasses,
    [SendAs(IdlType.N, preDecimal=3, postDecimal=0)][Out] out decimal waitListClasses,
    [SendAs(IdlType.N, preDecimal=3, postDecimal=0)][Out] out decimal seqLineCount,
    [SendAs(IdlType.Group, Dim=30f)][Out] out SoftwareAG.EntireX.NETWrapper.Generated.ClassSchedule.Groups.STS555N0.OutArray outArray,
    [SendAs(IdlType.A, Length=10f, Dim=10f)][Out] out StringBuilder seq
    ){
    rgstrtnApptDt = new StringBuilder();
    rgstrtnApptTm = new StringBuilder();
    creditUnits = new StringBuilder();
    registeredClasses = 0;
    waitListClasses = 0;
    seqLineCount = 0;
    outArray = (Groups.STS555N0.OutArray)Construction.GroupArray(typeof(Groups.STS555N0.OutArray), 30, 0, 0);
    seq = new StringBuilder[10];
    service.Send(
    this.GetType().GetMethod(“STS555N0”),
    inStudentId,
    inTerm,
    rgstrtnApptDt,
    rgstrtnApptTm,
    creditUnits,
    new Ref(ref registeredClasses),
    new Ref(ref waitListClasses),
    new Ref(ref seqLineCount),
    outArray,
    seq
    );
    }

    #endregion
    }
    }</use>


    #EntireX
    #Mainframe-Integration
    #webMethods


  • 2.  RE: ASP.NET Array and EntireX

    Posted Mon August 09, 2004 10:38 PM

    Hi Chuong,

    I see that you run EntireX version 7.0. I would recommend to upgrade to the latest patch. We run patch 30.

    If I am not wrong, SOftware AG highly recommended at least patch 10. With Patch 10 the .NET Wrapper started to support 2 and 3 dimensional arrays. And some other array related errors are fixed too.

    Hope that helps,
    RCTran@mtsac.eduabia


    #Mainframe-Integration
    #EntireX
    #webMethods