RE: (forte-users) Domain Classes

Hi,
This thread coinsides with a recent posting I made on formatting percents
(attached at end).
The complication here is that the data field is part of an array field and
is:
1) editable
2) part of an array of BObjects that are mapped to the array field
There is no separation therefore between a BO and a DO, at least in the
current implementation. Furthermore, the user may or may not want percent to
be the display format. What I think I need is one field that actually has
two values, a display value and a 'true' value, and each would probably need
its own numeric format as well (one for data entry and one for display).
I've never used a domain class, but do you know if such a beast be possible?
-----Original Message-----
I want to provide the option for a user to display values in percents or
not, and finding this surprisingly tricky.
Although its easy to make a DecimalData with a value of .08 look like 8% by
changing the scale and multiplying by its value by 100, I don't see how to
do this in a way that the variable still knows its value is .08.

Jason,
Domain Classes can also store FieldWidget information associated with them.
For example, Widget type, Max Characters, Input Mask, Size Policy, Help
Text, etc. This means that when a developer adds the domain to the window
workshop it will automatically have all the settings that were previously
defined on the domain, therefore giving a standard look and feel, as well
as, behaviour(fillstring and SetValue).
Regards,
Allister
Xpedior
www.xpedior.com
Ph: +61-8-9320-7604
Fax: +61-8-9486-8650
-----Original Message-----
From: Jason de Cean [mailto:[email protected]]
Sent: Thursday, 21 October 1999 9:30
To: 'Forte Users'
Subject: (forte-users) Domain Classes
Hi,
Can anyone tell me the advantage of using a domain class ?
We have subclassed DecimalData (FormattedDecimal) and overridden the
FillString and SetValue methods to implement other formatting. This is
then used as an attribute on our data classes and appears to work fine
when mapped to forms.
So, why would we use a Domain Class instead of just sub classing
DecimalData ?
Jace.
Jason de Cean
Genisys Team
Lumley Technology Ltd.
Lvl. 8, 55 Sussex St
Sydney, NSW 2000 Australia
Ph: 02 9248 1321
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected]

Similar Messages

  • Re: (forte-users) Dynamic Class Loading andUnloading

    If you are using TOOL libraries, perhaps you can use the CL level feature of
    Forte to load libraries.
    If the initial meta data libraries are CL0, your external data used to load
    the library can specify "cl0". Then you update the libraries, make them CL1,
    update your external data to specify "cl1" and then when the next time you
    need to load a class, it will open the library set as "cl1". Since cl0 and
    cl1 are effectively two totally different libraries from Forte's point of
    view, they can both exist and need not be unloaded per se.
    Of course once you go to cl1, you cannot go back to the cl0 level if you
    want to modify code in the library. The next step is cl2, cl3 etc.
    Could this be an option for your problem?
    Theo de Klerk
    Architecture & Application Integration
    Professional Services
    Compaq Computer Corp. - the Netherlands

    If you are using TOOL libraries, perhaps you can use the CL level feature of
    Forte to load libraries.
    If the initial meta data libraries are CL0, your external data used to load
    the library can specify "cl0". Then you update the libraries, make them CL1,
    update your external data to specify "cl1" and then when the next time you
    need to load a class, it will open the library set as "cl1". Since cl0 and
    cl1 are effectively two totally different libraries from Forte's point of
    view, they can both exist and need not be unloaded per se.
    Of course once you go to cl1, you cannot go back to the cl0 level if you
    want to modify code in the library. The next step is cl2, cl3 etc.
    Could this be an option for your problem?
    Theo de Klerk
    Architecture & Application Integration
    Professional Services
    Compaq Computer Corp. - the Netherlands

  • RE: R : RE: Domain Classes

    I think Kal's point was that you shouldn't follow the advice in the
    "Customizing Forte Express Applications"
    manual on page 90, which suggests creating a DBSession service object
    and putting a method on a domain
    with a SQL call that uses that session. There are several alternatives
    to this, including the one you've outlined.
    From: Tomacelli Cristina[SMTP:[email protected]]
    Sent: Thursday, April 03, 1997 1:56 AM
    To: Inman, Kal
    Cc: Forte
    Subject: R : RE: Domain Classes
    First, it requires you to define a dbsession other than the one defined
    by your business model. As you talk of business model, I think you are using Express.
    Really it's not necessary defining a new dbsession and executing your sql
    across the network.
    What you should do is:
    - create a method in your domain that takes as a parameter the business
    client, construct the query you require and pass it to the select method of
    the business client.
    It's the business client that makes the work for you, passing the query to
    the business service manager, so no sql goes from the client to the server
    through the network.
    The select method of the business client finally returns an array of
    business class objects and you can use the array content to populate your
    droplist.
    Hope this helps.
    Regards,
    Cristina Tomacelli - CSI Piemonte
    Corso Unione Sovietica, 216 - 10134 TORINO - ITALY
    E-mail address: [email protected]
    Telephone Number: +39-11-4618387
    Da: Inman, Kal
    A: blunda; chiaberto; tamietti; tomacelli;
    [email protected]
    Cc: [email protected]
    Oggetto: RE: Domain Classes
    Data: mercoled? 2 aprile 1997 16.08
    Word of caution on the use of domains.
    The "Customizing Forte Express Applications" manual, uses as an example,
    defining a domain as a droplist. They go on to tell you how to create a
    method that executes SQL to populate the droplist. This sounds very
    encapsulated, but it has some strings.
    First, it requires you to define a dbsession other than the one defined
    by your business model. This is because your domain project supplies
    you busness services, thus not giving access to the business services
    dbsession.
    Second, when executing the GUI that has this domain as a widget, the sql
    is executed from the client across the network. This will cause
    performance problems.
    Third, the sql is executed every time you page to a new record. You
    must provide your own caching.
    If you choose to use domains to populate lists, build a caching object
    and have the method constructed in the domain populate from this object.
    Your caching object can be constructed to go through your existing
    business services to retrieve information, eliminating the need for
    another dbsession.
    Good luck
    Kal
    From: Don Nelson[SMTP:[email protected]]
    Sent: Wednesday, April 02, 1997 4:04 AM
    To: [email protected]
    Cc: [email protected]
    Subject: Re: Domain Classes
    Jennifer,
    Domain classes act exactly the same as sub-classes of the nullable versions
    of DataValue. The only real difference is their ability to be associated
    with a widget. Can't think of any cons, offhand.
    Don
    At 11:09 AM 3/27/97 -0400, [email protected] wrote:
    Jennifer Medeiros
    03-27-97 11:09 AM
    I am researching the pros and cons of domain classes. Can anyone give
    me
    some information? (I know how to create them and how to use them.)
    Thanks for your time --
    ===================================
    Don Nelson
    Senior Consultant
    Forte Software, Inc.
    Denver, CO
    Corporate voice mail: 510-869-3400 x2209
    Cell: 414-416-4557
    ===================================

    Jason,
    Domain Classes can also store FieldWidget information associated with them.
    For example, Widget type, Max Characters, Input Mask, Size Policy, Help
    Text, etc. This means that when a developer adds the domain to the window
    workshop it will automatically have all the settings that were previously
    defined on the domain, therefore giving a standard look and feel, as well
    as, behaviour(fillstring and SetValue).
    Regards,
    Allister
    Xpedior
    www.xpedior.com
    Ph: +61-8-9320-7604
    Fax: +61-8-9486-8650
    -----Original Message-----
    From: Jason de Cean [mailto:[email protected]]
    Sent: Thursday, 21 October 1999 9:30
    To: 'Forte Users'
    Subject: (forte-users) Domain Classes
    Hi,
    Can anyone tell me the advantage of using a domain class ?
    We have subclassed DecimalData (FormattedDecimal) and overridden the
    FillString and SetValue methods to implement other formatting. This is
    then used as an attribute on our data classes and appears to work fine
    when mapped to forms.
    So, why would we use a Domain Class instead of just sub classing
    DecimalData ?
    Jace.
    Jason de Cean
    Genisys Team
    Lumley Technology Ltd.
    Lvl. 8, 55 Sussex St
    Sydney, NSW 2000 Australia
    Ph: 02 9248 1321
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]

  • RE: (forte-users) Help on 'The class has been voided andcannot be insta

    PB Solved.
    The symtom was that my 'windows' plan that I distrubute call
    the StartMethod of a class defined higher in the hierarchy,
    and I had to specify that plan as direct supplier plan of my
    new project for the 'voided' not to happen.
    cheers
    j-p
    -----Message d'origine-----
    De: Jean-Paul Gabrielli [mailto:Jean-Paul.Gabriellisema.fr]
    Date: mercredi 5 juillet 2000 12:08
    À: Klerk, Theo de
    Objet: RE: (forte-users) Help on 'The class has been voided and cannot
    be instanciated' plz
    the issue is as follows:
    I distribute a plan A
    I want to rename the plan,
    and create a plan B that has A as supplier.
    Distributing B wor'ks
    Running it fails with that issue.
    Actually I recreated supplierplans in B as they were defined in A,
    and the problem disappeared.
    thansk for your time
    j-paul
    -----Message d'origine-----
    De: Klerk, Theo de [mailto:Theo.de.Klerkcompaq.com]
    Date: mardi 4 juillet 2000 22:31
    À: 'Jean-Paul.Gabriellisema.fr'
    Objet: RE: (forte-users) Help on 'The class has been voided and cannot
    be instanciated' plz
    Jean-Paul,
    It would help if you have a bit more description around thesituation when
    this error happens.
    Could it be you have two service objects that refer to each other
    while the
    partition is still starting up? (SO's are not supposed to talk to
    each other
    during partition startup).
    Or was the partition up and running?
    Has the service object been in existence and used before itbecame voided?
    Is the partition compiled or interpreted?
    Theo de Klerk
    Architecture & Application Integration
    Professional Services
    Compaq Computer Corp. - the Netherlands
    PGP Fingerprint: 5A70 DD56 F3BA FE04 9DCA 1ACE 8581 0A2F F057 FA6E
    -----Original Message-----
    From: Jean-Paul Gabrielli [mailto:Jean-Paul.Gabriellisema.fr]
    Sent: Tuesday, 04 July, 2000 18:17
    To: Forte-Users
    Subject: (forte-users) Help on 'The class has been voided and
    cannot be
    instanciated' plz
    Hi,
    Here's the stack I get:
    SYSTEM ERROR: Failed to create service object
    BOS.MyServicesMgrSO.
    Class: qqsp_ResourceException
    Error Time: Tue Jul 4 18:05:07
    Exception occurred (locally) on partition "BC_cl0_Part3",
    (partitionId =
    AF3B67A0-3335-11D4-BE9D-963C5A7FAA77:0x224, taskId =
    [AF3B67A0-3335-11D4-BE9D-963C5A7FAA77:0x224.6]) in application
    "BC_cl0", pid 10328 on node MyServerin environment
    CentralEnv.
    SYSTEM ERROR: The class MyServericesMgr has been voided and cannot
    be
    instantiated in this partition.
    Class: qqsp_UsageException with ReasonCode: SP_ER_INVALIDSTATE
    Error #: [201, 14]
    Detected at: qqlo_VoidedClassException at 1
    Error Time: Tue Jul 4 18:05:07
    Exception occurred (locally) on partition
    "BC_cl0_Part3",
    (partitionId =
    AF3B67A0-3335-11D4-BE9D-963C5A7FAA77:0x224, taskId
    =
    [AF3B67A0-3335-11D4-BE9D-963C5A7FAA77:0x224.6]) in
    application
    "BC_cl0", pid 10328 on node MyServer in
    environment
    CentralEnv.
    aud Tue Jul 4 18:05:07 : Shutting down partition due to
    failure of this
    partition.
    aud Tue Jul 4 18:05:07 : Shutting down partition as requested.
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe,
    send in a new
    email the word: 'Unsubscribe' to:
    forte-users-requestlists.xpedior.com

    Hi Sylvain
    Try using window.smallIconImage =
    ImageData(<TitleBarIcon>.ImageValue) ;
    This should work.
    Jairaj Rampershad
    System Concultant
    --- Sylvain_Por&eacute;e <Sylvain.Poreesophia.sema.fr>
    wrote:
    Hi Forte Gurus,
    I have tried to set an icon using this statement :
    window.SmallIconImage =
    aIconFile.<TitleBarIcon>.imagevalue;
    where <TitleBarIcon> is a PictureGraphic in my
    window workshop.
    I have tried 16*16 16 colours as well as many other
    arrangements. It does
    not work. I use windows NT.
    Any ideas ?
    Thanks
    Sylvain
    PS : For info (forte help):
    SmallIconImage
    Data Type ImageData
    Source Class Window
    Settable? Yes
    The SmallIconImage attribute (ImageData) provides
    the small icon to be used
    when the window is iconized, for example, in the
    task bar. The image size
    for a small icon should be 16 by 16 pixels. Although
    the image will be
    scaled if you provide one of a different size, for
    best results, we
    recommend that you create your icons in the same
    size in which they will be
    displayed.
    Windows 95/NT only
    This feature is available on Windows 95/NT only. On
    other platforms, the
    attribute is ignored.
    For the archives, go to:
    http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To
    unsubscribe, send in a new
    email the word: 'Unsubscribe' to:
    forte-users-requestlists.xpedior.com

  • RE: (forte-users) Class compatibility

    Pascal,
    Basically the way to work with objects as parameters is to ensure that
    sending and receiving parties have the same knowledge of the underlying
    classes of these objects.
    o Partitions in one application, generated at distribution time always are
    "in sync" with one another as they use the same class definitions specified
    through the supplier plan relationships of the main project
    o Applications distributed independently that exchanging objects only
    understand the common set of class definitions.
    For example, a Forte Conductor engine object is built using the standard
    Forte Framework classes. Its API specifies things like "DataValue" objects.
    Sending it a TextData is fine, sending it MyOwnTextData is not - the other
    application has no clue what that (sub)class is supposed to be as it did not
    know at the time it was built.
    This is also true in cases where applications use libraries and these are
    given objects of (sub)classes it knows nothing about.
    All of these generate serialisation errors of some sort since the flattened
    object that is sent across the wire cannot be reconstructed at the receiving
    end by lack of a blueprint (class definition) on how to create such an
    object.
    Theo de Klerk
    Architecture & Application Integration
    Professional Services
    Compaq Computer Corp. - the Netherlands
    PGP Fingerprint: 5A70 DD56 F3BA FE04 9DCA 1ACE 8581 0A2F F057 FA6E

    Theo,
    I understand all of that. Of course we make sure that all components use the
    same blueprints for all classes. However, in case we managed to get these
    blueprints out of sync, we don't want the application to simply crash. We
    want to trap this exception and print a message that says: "There seems to
    be a compatability problem between components. Please make sure the latest
    version of all application components have been installed."
    Of course we can trap all exceptions (GenericException) and ignore all of
    them after displaying them, but that seems like a blunt-axe-approach. I'm
    looking for the scalpel.
    Pascal Rottier
    Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch
    -----Original Message-----
    From: Klerk, Theo de [mailto:Theo.de.Klerkcompaq.com]
    Sent: Wednesday, October 18, 2000 5:15 PM
    To: Rottier, Pascal; 'Forte Users'
    Subject: RE: (forte-users) Class compatibility
    Pascal,
    Basically the way to work with objects as parameters is to ensure that
    sending and receiving parties have the same knowledge of the underlying
    classes of these objects.
    o Partitions in one application, generated at distribution time always are
    "in sync" with one another as they use the same class definitions specified
    through the supplier plan relationships of the main project
    o Applications distributed independently that exchanging objects only
    understand the common set of class definitions.
    For example, a Forte Conductor engine object is built using the standard
    Forte Framework classes. Its API specifies things like "DataValue" objects.
    Sending it a TextData is fine, sending it MyOwnTextData is not - the other
    application has no clue what that (sub)class is supposed to be as it did not
    know at the time it was built.
    This is also true in cases where applications use libraries and these are
    given objects of (sub)classes it knows nothing about.
    All of these generate serialisation errors of some sort since the flattened
    object that is sent across the wire cannot be reconstructed at the receiving
    end by lack of a blueprint (class definition) on how to create such an
    object.
    Theo de Klerk
    Architecture & Application Integration
    Professional Services
    Compaq Computer Corp. - the Netherlands
    PGP Fingerprint: 5A70 DD56 F3BA FE04 9DCA 1ACE 8581 0A2F F057 FA6E
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

  • RE: (forte-users) Any inputs on PutFormulas(...) method ofCrystal Repor

    Hi Jagadish,
    The OLE error code of 0x80020003 translates to "Member not found." This may
    indicate that the parameter is not properly defined as a Parameter field in
    the Crystal Report you're using.
    Additionally, the date format you're using is wrong. Crystal requires that
    you pass a date as "Date(yyyy, mm, dd)." Your example, then, should read:
    l_tdParam : TextData = New();
    l_tdParam.SetValue('Date(2000, 03, 15)');
    l_CrystalRepObj.PutParameterFields(0, l_tdParam.Value);
    I hope this helps.
    -Katie
    Katie Tierney
    Akili Systems Group
    601 Jefferson, Suite 3975
    Houston, Texas 77002
    Office: (713) 655-1400
    Cell: (409) 255-1643
    "The bitterness of poor quality remains long after the sweetness of low
    price is forgotten" --Larry Anderson
    -----Original Message-----
    From: Jagadish_Kumarnacre.com [mailto:Jagadish_Kumarnacre.com]
    Sent: Wednesday, March 15, 2000 9:11 PM
    To: Katie Tierney; kamranaminyahoo.com
    Subject: RE: (forte-users) Any inputs on PutFormulas(...) method of
    Crystal Report's ActiveX object
    Hi Katie,
    I am thankful for your time and effort.
    I have a problem here. I did exactly the way you have suggested, but I get
    this
    exception.
    SYSTEM ERROR: Error during Invoke; status code: -2147352573(0x80020003)
    Class: OLEException with ReasonCode: OLE_ER_RESOURCE
    Last TOOL statement: method DebugState.RaiseException
    The parameter I want to set is a date type. This is the only parameter in
    the
    report.
    First trial:
    l_tdParam : TextData = New();
    l_tdParam.SetValue('03/15/2000');
    l_CrystalRepObj.PutParameterFields(0, l_tdParam.Value);
    Second Trail:
    l_dtdParam : DateTimeData = New();
    l_dtdParam.SetCurrent(DR_DAY);
    l_CrystalRepObj.PutParameterFields(0, l_dtdParam.TextValue.Value);
    Do you think I am going wrong somewhere here. Please suggest.
    Once again, I am thankful for your time and effort.
    Regards,
    Jagadish K Kumar
    May I suggest:
    1. Talk to Forte Consulting and get ReportKit. It's inexpensive, and the
    Forte Consultant can help you get it set up quickly. It's a great product.
    2. The following code has worked for me in the past (I have no way of
    testing it now, but think it should still work):
    // ptd_Parameter_Array is an ARRAY of TextData containing the
    // VALUES to be placed in the parameter fields.
    // Since Crystal Reports uses a zero-based array numbering
    // scheme, we need to set up a counter and set its initial
    // value to 0.
    li_Counter : integer = 0;
    for eachParam in ptd_Parameter_Array do
    self.PutParameterFields(index = li_counter, param2 =
    eachParam.Value);
    li_Counter = li_counter + 1;
    end for;
    The VariantVoidResult is NIL by default, and you shouldn't need to worry
    about it at all. It's the result that the Crystal OCX sends back to Forte.
    The Index starts at 0, and continues to the number of parameters - 1.
    The Param2 value is the string that contains the actual parameter value.
    For example, if I have defined a Crystal parameter called "Country," then I
    would send "USA" as the string value for param2.
    I hope this helps (and I STRONGLY suggest ReportKit).
    Regards,
    -Katie
    Katie Tierney
    Akili Systems Group
    601 Jefferson, Suite 3975
    Houston, Texas 77002
    Office: (713) 655-1400
    Cell: (409) 255-1643
    "The bitterness of poor quality remains long after the sweetness of low
    price is forgotten" --Larry Anderson
    -----Original Message-----
    From: Jagadish_Kumarnacre.com [mailto:Jagadish_Kumarnacre.com]
    Sent: Wednesday, March 15, 2000 9:43 AM
    To: kamranaminyahoo.com
    Subject: (forte-users) Any inputs on PutFormulas(...) method of Crystal
    Report's ActiveX object
    Hi,
    Could someone give me inputs on how to use PutFormulas(index: i2, param2:
    string, _VariantVoidResult = NIL) method of Crystal ActiveX object.
    I want to use this method to modify Crystal Report formulas. I would like to
    know
    1. index parameter - what is the domain, or expected values to this
    parameter
    2. param2 parameter - How to formulate this?; a sample template please;
    3. _VariantVoidResult parameter - what is the significance of this
    parameter?
    A working example will help me a lot.
    Thanks in advance.
    Jagadish K Kumar

    Hi Katie,
    I am thankful for your time and effort.
    I have a problem here. I did exactly the way you have suggested, but I get this
    exception.
    SYSTEM ERROR: Error during Invoke; status code: -2147352573(0x80020003)
    Class: OLEException with ReasonCode: OLE_ER_RESOURCE
    Last TOOL statement: method DebugState.RaiseException
    The parameter I want to set is a date type. This is the only parameter in the
    report.
    First trial:
    l_tdParam : TextData = New();
    l_tdParam.SetValue('03/15/2000');
    l_CrystalRepObj.PutParameterFields(0, l_tdParam.Value);
    Second Trail:
    l_dtdParam : DateTimeData = New();
    l_dtdParam.SetCurrent(DR_DAY);
    l_CrystalRepObj.PutParameterFields(0, l_dtdParam.TextValue.Value);
    Do you think I am going wrong somewhere here. Please suggest.
    Once again, I am thankful for your time and effort.
    Regards,
    Jagadish K Kumar
    May I suggest:
    1. Talk to Forte Consulting and get ReportKit. It's inexpensive, and the
    Forte Consultant can help you get it set up quickly. It's a great product.
    2. The following code has worked for me in the past (I have no way of
    testing it now, but think it should still work):
    // ptd_Parameter_Array is an ARRAY of TextData containing the
    // VALUES to be placed in the parameter fields.
    // Since Crystal Reports uses a zero-based array numbering
    // scheme, we need to set up a counter and set its initial
    // value to 0.
    li_Counter : integer = 0;
    for eachParam in ptd_Parameter_Array do
    self.PutParameterFields(index = li_counter, param2 =
    eachParam.Value);
    li_Counter = li_counter + 1;
    end for;
    The VariantVoidResult is NIL by default, and you shouldn't need to worry
    about it at all. It's the result that the Crystal OCX sends back to Forte.
    The Index starts at 0, and continues to the number of parameters - 1.
    The Param2 value is the string that contains the actual parameter value.
    For example, if I have defined a Crystal parameter called "Country," then I
    would send "USA" as the string value for param2.
    I hope this helps (and I STRONGLY suggest ReportKit).
    Regards,
    -Katie
    Katie Tierney
    Akili Systems Group
    601 Jefferson, Suite 3975
    Houston, Texas 77002
    Office: (713) 655-1400
    Cell: (409) 255-1643
    "The bitterness of poor quality remains long after the sweetness of low
    price is forgotten" --Larry Anderson
    -----Original Message-----
    From: Jagadish_Kumarnacre.com [mailto:Jagadish_Kumarnacre.com]
    Sent: Wednesday, March 15, 2000 9:43 AM
    To: kamranaminyahoo.com
    Subject: (forte-users) Any inputs on PutFormulas(...) method of Crystal
    Report's ActiveX object
    Hi,
    Could someone give me inputs on how to use PutFormulas(index: i2, param2:
    string, _VariantVoidResult = NIL) method of Crystal ActiveX object.
    I want to use this method to modify Crystal Report formulas. I would like to
    know
    1. index parameter - what is the domain, or expected values to this
    parameter
    2. param2 parameter - How to formulate this?; a sample template please;
    3. _VariantVoidResult parameter - what is the significance of this
    parameter?
    A working example will help me a lot.
    Thanks in advance.
    Jagadish K Kumar

  • RE: (forte-users) Forte External Connection - PhysicalPort

    Hi Ronald,
    I think that ExternalConnection class is only aplicable for communication
    using TCP, DECnet or Unix Domain Sockets, and is not applicable to work with
    COM ports.
    I think that to use COM port you must employ C with the Fort&eacute; WRAPPER.
    Daniel
    -----Mensaje original-----
    De: Ronald Celis <[email protected]>
    Para: Daniel <[email protected]>; Ming Yan, Lam <[email protected]>
    CC: Jose Ignacio <[email protected]>; Manuel_Fern&aacute;ndez <[email protected]>;
    Federico_Mu&ntilde;oz <[email protected]>; Lista_Fort&eacute; <[email protected]>
    Fecha: lunes 20 de diciembre de 1999 16:33
    Asunto: RE: (forte-users) Forte External Connection - Physical Port
    Did you try to use the ExternalConnection Class??????????????
    it's documented in the "Integrating with External Systems" Forte Manualpage 228 )
    >
    Hope this help
    --- Daniel <[email protected]> wrote:
    Hello Lam,
    I had some experience about this problem and first answer is that you
    MUST
    use the wrapper. You must realize that if you could develope Fort&eacute; based
    RS-232 functions they would't be portable to any other machines that have
    not the same architecture than the one you use to develope.That's not the
    philosophy of portability of Fort&eacute;.
    I suggest to create a few single task C programs,
    1) Open serial port.
    2) Close serial port.
    3) Write to serial port.
    4) Read from serial port.
    5) Check if there is something in serial port.
    and "put them into a library" to make them usable by TOOL via a portable
    Fort&eacute; class.
    Best regards,
    Daniel.
    Daniel Gonz&aacute;Lucas
    EAM Sistemas Inform&aacute;ticos S.L.
    tel. + 34 983 35 29 22
    fax.+ 34 983 35 21 15
    e-mail:[email protected]
    -----Mensaje original-----
    De: Ming Yan, Lam <[email protected]>
    Para: Forte Users Group <[email protected]>
    Fecha: jueves 16 de diciembre de 1999 8:55
    Asunto: (forte-users) Forte External Connection - Physical Port
    Hi,
    If anyone out there have tried to use Forte to communicate (transmit
    data) to an external connection, which is a physical port such as Com 1,
    Com 2, Xyplex. I would like to know how does Forte handle this type of
    connection or does it have to use C program for this?
    Thanks in advance
    Ming Yan
    BASS Consulting Sdn. Bhd.
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a
    new
    email the word: 'Unsubscribe' to: [email protected]
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]
    =====
    Ronald Celis
    [email protected]
    Forte Consultant
    International Business Corporation
    http://www.ibcweb.com
    Do You Yahoo!?
    Thousands of Stores. Millions of Products. All in one place.
    Yahoo! Shopping: http://shopping.yahoo.com
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]

    Did you try to use the ExternalConnection Class??????????????
    it's documented in the "Integrating with External Systems" Forte Manual ( page 228 )
    Hope this help
    --- Daniel <[email protected]> wrote:
    Hello Lam,
    I had some experience about this problem and first answer is that you MUST
    use the wrapper. You must realize that if you could develope Fort&eacute; based
    RS-232 functions they would't be portable to any other machines that have
    not the same architecture than the one you use to develope.That's not the
    philosophy of portability of Fort&eacute;.
    I suggest to create a few single task C programs,
    1) Open serial port.
    2) Close serial port.
    3) Write to serial port.
    4) Read from serial port.
    5) Check if there is something in serial port.
    and "put them into a library" to make them usable by TOOL via a portable
    Fort&eacute; class.
    Best regards,
    Daniel.
    Daniel Gonz&aacute;lez de Lucas
    EAM Sistemas Inform&aacute;ticos S.L.
    tel. + 34 983 35 29 22
    fax.+ 34 983 35 21 15
    e-mail:[email protected]
    -----Mensaje original-----
    De: Ming Yan, Lam <[email protected]>
    Para: Forte Users Group <[email protected]>
    Fecha: jueves 16 de diciembre de 1999 8:55
    Asunto: (forte-users) Forte External Connection - Physical Port
    Hi,
    If anyone out there have tried to use Forte to communicate (transmit
    data) to an external connection, which is a physical port such as Com 1,
    Com 2, Xyplex. I would like to know how does Forte handle this type of
    connection or does it have to use C program for this?
    Thanks in advance
    Ming Yan
    BASS Consulting Sdn. Bhd.
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]
    =====
    Ronald Celis
    [email protected]
    Forte Consultant
    International Business Corporation
    http://www.ibcweb.com
    Do You Yahoo!?
    Thousands of Stores. Millions of Products. All in one place.
    Yahoo! Shopping: http://shopping.yahoo.com

  • RE: (forte-users) Serialisation

    Singh,
    Any message sent across partition boundaries is serialized. This includes
    method invokations, events and exceptions. The signature of the message
    itself is serialized, as well as the values of all parameters/attributes.
    Serializing a scalar value requires less overhead then serialising an
    object, however, the difference isn't as big as you might think. Objects
    have more attributes then just the value you're interested in and these
    attributes are serialised as well. Each object is an instance of a class and
    each class has a UUID, which is added to the serialized stream as well.
    However, methods are NOT serialised. What happens is this. Forte serializes
    an object into a stream containing only the values of the attributes
    (including nested attributes). This stream is given a header which sais of
    which class this object is an instance (the UUID is used for that). The
    receiving partition reads the serialized stream, finds the definition of the
    class (defined by UUID) in its own code, creates an instance of this class
    and fills the data out of the serialized stream into this new object.
    You can imagine what might happen if there is a mismatch between the
    class-definitions in both partitions. You either get
    serialization-deserialization errors, or the receiving partition complains
    that it doesn't even know the UUID of the received streamed object, or you
    get no errors at all and just have an object that displays different
    behaviour, depending what partition it's in.
    If there are no problems, then the main issue is the
    serializing-deserializing overhead. Note that the receiving partition has to
    instantiate a new object for every serialized object it receives and will
    therefore execute all code in the Init() method. This overhead is not
    required for scalar types, for which Forte only needs to reserve a small
    amount of memory space on the stack.
    Any call to a database is also a message sent across partitions and is
    therefore serialized. However, one partition is a Forte partition and the
    other one isn't. Therefore, Forte's internal serialization mechanism isn't
    used. Forte serializes the SQL-query into a format understood by the
    database (which is different for every vendor). Forte then receives a stream
    back which has a different format for every different database type. This
    stream is deserialized and written to attributes that Forte has reserved to
    contain the data. Whether these are scalar, datavalues or domains only
    impacts performance inside the Forte partition. It has no effect on the
    communication with the database.
    Pascal Rottier
    Atos Origin Nederland (BAS/West End User Computing)
    Tel. +31 (0)10-2661223
    Fax. +31 (0)10-2661199
    E-mail: Pascal.Rottiernl.origin-it.com
    ++++++++++++++++++++++++++++
    Philip Morris (Afd. MIS)
    Tel. +31 (0)164-295149
    Fax. +31 (0)164-294444
    E-mail: Rottier.Pascalpmintl.ch
    -----Original Message-----
    From: Singh [mailto:fortelistyahoo.com]
    Sent: Thursday, February 22, 2001 3:30 AM
    To: forte-userslists.xpedior.com
    Subject: (forte-users) Serialisation
    Hello All
    I have a question that has been bugging me for some
    time.
    We all know that it is better to use scalar data
    types, as opposed to objects, when passing data across
    a network.
    The reason, if I understand correctly, is that when
    you send an object across a network, the whole object
    (properties, attributes and methods) is deserialised
    into zero's and one's before being sent across and
    then serialised back into the object when it gets to
    the other side. This would take longer for an object
    since for a scalar value, just the value is
    deserialised and serialised.
    But when you are writing to a database from the tier
    before the database to the database, does it matter
    what type you use. The reason for saying this is that
    the values are serialised before they go across and
    then deserialised when they get to the base, in other
    words, they are sent as zero's and one's. For a scalar
    - just the value is sent across but for an object -
    does just the value go across or the complete object.
    If just the value of the object goes across, then it
    doesn't really matter whether a scalar or object is
    sent across.
    Am I correct in this assumption.
    Thanks in advance for your help.
    Regards,
    Singh
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

    Hi,
    I cannot get hold of Tech Note 10398..... can anyone email me a copy?
    Tx
    Etienne
    -----Original Message-----
    From: Klerk, Theo de [SMTP:Theo.de.Klerkcompaq.com]
    Sent: Wednesday, February 09, 2000 4:26 PM
    To: 'Jason de Cean'; 'Forte Users'
    Subject: RE: (forte-users) Serialisation
    There are a number of flags that will show you some of the required
    information in a log file (not within the application itself). Technote
    10398 has many more flags listed for a variety of obscure, useful, not so
    useful and exotic information:
    trc:cm:*:4 and *:8 - show packet serialisation, open, closes between
    partition communication
    trc:do:*:2 - proxy creation/deletion, exception events
    trc:do:*:5 - individual message tracing between proxies
    trc:do:*:8 - serialisation information
    Theo
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

  • Re: [Re: (forte-users) formatting Percents]

    You can create a Domain Class for this and manipulate the setvalue and
    FillString methods to do this. You can see the help for knowing more about
    this.
    --Krishna
    "Natarajan Balasubramanian" <[email protected]> wrote:
    You may use virtual attribute mapping to your real attribute having .08 and
    in the getvalue method of the virtual attribute change the real attribute
    value to show as 8%.
    Hope this helps,
    Nat Balasubramanian.
    From: "Fingerhut, Eric" <[email protected]>
    To: "'[email protected]'" <[email protected]>
    Subject: (forte-users) formatting Percents
    Date: Wed, 20 Oct 1999 11:26:51 -0400
    I want to provide the option for a user to display values in percents or
    not, and finding this surprisingly tricky.
    Although its easy to make a DecimalData with a value of .08 look like 8% by
    changing the scale and multiplying by its value by 100, I don't see how to
    do this in a way that the variable still knows its value is .08.
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]

    You can create a Domain Class for this and manipulate the setvalue and
    FillString methods to do this. You can see the help for knowing more about
    this.
    --Krishna
    "Natarajan Balasubramanian" <[email protected]> wrote:
    You may use virtual attribute mapping to your real attribute having .08 and
    in the getvalue method of the virtual attribute change the real attribute
    value to show as 8%.
    Hope this helps,
    Nat Balasubramanian.
    From: "Fingerhut, Eric" <[email protected]>
    To: "'[email protected]'" <[email protected]>
    Subject: (forte-users) formatting Percents
    Date: Wed, 20 Oct 1999 11:26:51 -0400
    I want to provide the option for a user to display values in percents or
    not, and finding this surprisingly tricky.
    Although its easy to make a DecimalData with a value of .08 look like 8% by
    changing the scale and multiplying by its value by 100, I don't see how to
    do this in a way that the variable still knows its value is .08.
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: [email protected]

  • Re: (forte-users) Formatting DecimaNullable withTemplate

    Hello Fabrizio,
    i don't look at your window, but we has the problem to check the input of a
    DecimalData
    with a specific mask. If the user type in wrong data (prescale/sucscale)
    then we have
    to inform the user and discard the changes.
    E.g. template='##,##'
    User types 5,123 Exception (Too many sucscale)
    User types -5,12 Exception (no Minus allowed)
    User types 123, Exception (Too many prescale)
    User types 12,12 No Exception (Value is accepted)
    User types 12,12+ No Exception (Value is accepted)
    The template check is implemented in the FillString/SetValue method of an
    inherited DecimalNullable-Class. I am wondering, if it is not possible to
    find a way
    reacting on your behaviour. You use a Domain.
    1. You have to implement the SetValue/Fillstring method for this domain.
    2. You must turn on KeyStroke reacting.
    3. You have to implement an EventHandler for reacting on the input which must
    be registered on your Display-based Event-Loop.
    4. MayBe som Code must be called from your Domain-Class on AfterValueChange
    Event
    at your Domain.
    A lot of work, i know. Maybe a lot of code for every Domain-Use in your
    Event-Loop. We
    made an Enhancement-Request for our problem, but there ar no solution now
    (2 years).
    The next problem you may have, if you use many attributes in your Domain.
    Because
    the transport (Serialize/Deserialize/Allocation) eats a lot of Performance.
    Direct filling from Database maybe a risk (SetValue-method with Parameter
    string).
    You have to check if you fill your class from implizit methods
    (GetValue-Method from
    DBDataSet) and so on that no code will running (Performance).
    Good Luck
    Joseph Mirwald
    PS: Use Decode-Method if possible instead of own implementation of
    string-manipulation
    because Framework-Lib-Calls ar much mor performant.
    At 11:19 17.02.01 +0100, Genesio, Fabrizio wrote:
    Hallo there,
    I wonder if there is someone who ever tried to obtain the following
    behavior.
    Using a user-defined domain based on a DecimalNullable, we would like to
    set the input mask (and/or its template) in order to have the widget
    behaving like a normal desk or pocket calculator. That is when start
    typing, you enter the integer part of the number (with thousand
    separator), and only when the dot is entered, you can type in the
    decimal part.
    We tried different templates but we never got what we want. Moreover,
    using 3.0.N.0 we also discovered a bug while using as first character
    in the template.
    Enclosed there is a little test window.
    Is there anybody who could help?
    Thank you in advance for your attention
    Ciao,
    Fabrizio Genesio
    Datasign AG f&uuml;r Informatik
    fabrizio.genesiodatasign.ch <mailto:fabrizio.genesiodatasign.ch>
    <<Atest.zip>>

    Thank you Joseph and thank you Zenon, for your answers.
    Yes, we tried with domain, implementing the FillString/Setvalue methods,
    and using the Decode method. And indeed is the decode method that always
    (no matter which regional settings you have) round the decimal part to 2
    digit.
    Nonetheless, I would be interested to receive if possible the domain you
    implemented, Joseph. We may still discover something... ;-)
    Thank you
    Fabrizio Genesio
    Datasign AG f&uuml;r Informatik
    ch. d'Eysins 53a
    CH-1260 Nyon
    Switzerland
    Tel.: +41 22 361 04 04
    Fax: +41 22 361 01 10
    e-mail: fabrizio.genesiodatasign.ch
    <mailto:fabrizio.genesiodatasign.ch>
    URL: www.datasign.ch <http://www.datasign.ch>
    -----Original Message-----
    From: Joseph Mirwald [SMTP:jomirweb.de]
    Sent: Saturday, 17 February 2001 12:32
    To: Genesio, Fabrizio; 'forte-userslists.xpedior.com'
    Subject: Re: (forte-users) Formatting DecimaNullable with
    Template
    Hello Fabrizio,
    i don't look at your window, but we has the problem to check the
    input of a
    DecimalData
    with a specific mask. If the user type in wrong data
    (prescale/sucscale)
    then we have
    to inform the user and discard the changes.
    E.g. template='##,##'
    User types 5,123 Exception (Too many sucscale)
    User types -5,12 Exception (no Minus allowed)
    User types 123, Exception (Too many prescale)
    User types 12,12 No Exception (Value is
    accepted)
    User types 12,12+ No Exception (Value is
    accepted)
    The template check is implemented in the FillString/SetValue
    method of an
    inherited DecimalNullable-Class. I am wondering, if it is not
    possible to
    find a way
    reacting on your behaviour. You use a Domain.
    1. You have to implement the SetValue/Fillstring method for this
    domain.
    2. You must turn on KeyStroke reacting.
    3. You have to implement an EventHandler for reacting on the
    input which must
    be registered on your Display-based Event-Loop.
    4. MayBe som Code must be called from your Domain-Class on
    AfterValueChange
    Event
    at your Domain.
    A lot of work, i know. Maybe a lot of code for every Domain-Use
    in your
    Event-Loop. We
    made an Enhancement-Request for our problem, but there ar no
    solution now
    (2 years).
    The next problem you may have, if you use many attributes in
    your Domain.
    Because
    the transport (Serialize/Deserialize/Allocation) eats a lot of
    Performance.
    Direct filling from Database maybe a risk (SetValue-method with
    Parameter
    string).
    You have to check if you fill your class from implizit methods
    (GetValue-Method from
    DBDataSet) and so on that no code will running (Performance).
    Good Luck
    Joseph Mirwald
    PS: Use Decode-Method if possible instead of own implementation
    of
    string-manipulation
    because Framework-Lib-Calls ar much mor performant.
    At 11:19 17.02.01 +0100, Genesio, Fabrizio wrote:
    >Hallo there,
    >
    >I wonder if there is someone who ever tried to obtain the
    following
    >behavior.
    >Using a user-defined domain based on a DecimalNullable, we
    would like to
    >set the input mask (and/or its template) in order to have the
    widget
    >behaving like a normal desk or pocket calculator. That is when
    start
    >typing, you enter the integer part of the number (with thousand
    >separator), and only when the dot is entered, you can type in
    the
    >decimal part.
    >
    >We tried different templates but we never got what we want.
    Moreover,
    >using 3.0.N.0 we also discovered a bug while using as first
    character
    >in the template.
    >
    >Enclosed there is a little test window.
    >
    >Is there anybody who could help?
    >
    >Thank you in advance for your attention
    >
    >Ciao,
    >
    >Fabrizio Genesio
    >Datasign AG f&uuml;r Informatik
    >fabrizio.genesiodatasign.ch
    <mailto:fabrizio.genesiodatasign.ch>
    >
    > <<Atest.zip>>

  • RE: (forte-users) 3J= 3M new to me error

    Hi Thomas,
    Thanks for your email but I think it will be interesting for Brenda not me.
    It is exactly what I have expected from Forte Support: detailed information
    about bugs and workarounds. But what I cannot understand is that #53398 was
    released without any information about possible reasons for this problem or
    suggested workarounds. My first reaction after reading this bugreport was to
    open a new case at CallCenter to get more information about it. Please
    release more information with your bug reports !
    Regards
    Zenon Adamek
    Information Services
    Senior Programmer Analyst
    Tel: 905 712-1084 ext. 3628
    Fax: 905 712-6709
    E-mail: zadamekpurolator.com
    -----Original Message-----
    From: Thomas Degen - Sun Germany Forte Tools - Bonn
    [SMTP:thomas.degensun.com]
    Sent: Wednesday, September 27, 2000 9:49 AM
    To: Adamek, Zenon
    Cc: 'Brenda Cumming'; Forte-userslists.xpedior.com
    Subject: RE: (forte-users) 3J=>3M new to me error
    Hi Zenon,
    bug #53398 is not a bug which will likely get fixed, it's an informational
    bugreport.
    You might see an errorstack like Brenda has reported (and described in
    informational
    bugreport #53398) probably when you are doing something illegal that is
    possible
    via Forte Tool but Forte is not trapping it for performance reasons. Hence
    you will see
    the error coming from your illegal operation only at runtime, probably
    only
    while
    running interpreted in the Forte IDE, but in worst case it might be even a
    segmentation
    violation.
    Technotes 12448 'Sudden client partition crashes at runtime' and 11225
    'Don't reparent
    mapped Widgets between UserWindows at runtime' explain this matter . See
    attached.
    But maybe Brenda is much more experiencing a problem as described by Forte
    Technote 11398 'Read Only Workspace Errors using ListViews or ActiveX
    control'
    that might get easily resolved via setting of FORTE_YIELD_THROTTLE=0.
    Good Luck and Best Regards !
    BTW: I've logged bug #53398, so I've felt responsible to explain its real
    background.
    Thomas
    Thomas Degen
    Sun Microsystems - Forte Tools
    Forte CTE & Sustaining Group
    Technical Support Germany
    tel.:+49.228/91499-50
    MailTo:thomas.degensun.com
    Technote 11398 Read Only Workspace Errors using ListViews or ActiveX
    control
    SCENARIO:
    Getting some unusual interpreter errors that result in an error stating
    that
    the workspace has been set to read only. Please see Enclosures for the
    two
    most common error stacks that have been encountered. The abbreviated
    versions of the errors are:
    - Can't read record (record size = -1)
    - Id in index does not match id in record header in data file
    - Recursive deserialization attempted.
    - Unknown Mark type in deserialization
    - Could not read record (64,74615) from repository data file.
    Header
    is corrupt.
    These errors can be happening in either the development environment when
    running from one of the development workshops, or with the deployed
    application.
    The bug outlined in this Technote may be the culprit if the errors above
    are
    seen when running a client on Windows NT or Motif and the user interface
    incorporates ActiveX controls or ListView/TreeView widgets.
    CAUSE:
    Basically what is happening is that in rare circumstances Forte may invoke
    a
    nested copy of the interpreter while the first interpreter has yielded.
    This
    is not a problem in and of itself, but in the case where the original
    interpreter was in the middle of a repository fetch when it yielded, and
    the second interpreter needs to fetch code as well, we will get one of the
    errors listed above, depending on the exact timing. The reason for the
    errors is that the repository code at this level is thread-safe but not
    re-entrant. It is protected by a mutex that is already owned by the
    current task. Which, given the scenario outlined here, where the two
    interpreters are running inside of the same task, results in the nested
    interpreter being allowed to change data out from under the first.
    While for every fetch one or more calls to WindowSystem.Yield will be made
    (this is there to prevent the semblance of system lock-up on Win 3.1,
    where
    Yield is the only way other applications can be allowed to run), there is
    a parameter which controls how often to actually yield, which by default
    is
    set to one out of every 100 calls. This is the reason the problem is
    intermittent--you need a yield to occur during a repository fetch
    which starts another interpreter which also needs to fetch code from
    disk.
    The reason this has only surfaced recently is that the nested interpreter
    scenario can only happen in 2 cases that we know of:
    - ActiveX controls which respond to events/Windows messages
    - Outline fields/ListViews with column(s) mapped to virtual
    attributes
    In all other normal cases, the yield can process the message (typically a
    paint message) without starting another interpreter, so regardless of
    whether
    the first interpreter yielded during a repository operation or not, there
    is
    no conflict.
    SOLUTION:
    The workaround is to prevent yields altogether by setting the
    FORTE_YIELD_THROTTLE environment variable equal to 0 in the client's
    environment. This should have no detrimental effects since the yield code
    is in place solely for Windows 3.1x clients.
    ERROR STACK 1
    SYSTEM ERROR: Because of a prior error, your workspace was set to
    read-only to
    prevent the application from attempting to write to the repository. The
    repository and work you have saved to the repository are safe. If your
    workspace
    contains unsaved work, you may use the following procedure to save this
    work.
    First, export the changed components. Then, shut down and restart this
    application and reopen this workspace in read-write mode. Finally, import
    the
    changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 695]
    Detected at: qqrp_Session::GetObjectById
    Last TOOL statement: method EFWindowController.EFEventLoop
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    The remainder of the Error Manager stack is:
    SYSTEM ERROR: Internal Error attempting to deserialize element (64,67470)
    (fetch
    bitmask is 0x20). Your workspace is now read-only to prevent the
    application
    from attempting to write to the repository. The repository and work you
    have
    saved to the repository are safe. If your workspace contains unsaved work,
    you
    may use the following procedure to save this work. First, export the
    changed
    components. Then, shut down and restart this application and reopen this
    workspace in read-write mode. Finally, import the changed components and
    save
    your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 61]
    Detected at: qqrp_LogicalSession::MaterializeObject
    Last TOOL statement: method EFTabManagerNew.EFNoteBookHandler
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    SYSTEM ERROR: Unknown Mark type in deserialization.
    Class: qqsp_ImplementationException
    Error #: [1101, 34]
    Detected at: qqrp_DeSerializeObject::ProcessHdr
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    ERROR STACK 2
    SYSTEM ERROR: A serious error has occurred in Repository
    (c:\PROGRA~1\CSSPTEST\conplu0). Corrective action may be necessary.
    Notify
    your repository administrator.
    Class: qqsp_ImplementationException
    Error #: [1101, 198]
    Detected at: qqrp_Repository::Fetch
    Last TOOL statement: method
    SalesDevelopment_NWC.DEVNotifyofTabSetCurrent
    Error Time: Wed Dec 03 10:27:22
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1,
    taskId =
    [769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1.22]) in application
    "ConPlus_GUI_cl0", pid 172 on node ISD42 in environment Edge.
    SYSTEM ERROR: Could not read record (64,74615) from repository data file.
    Header is corrupt.
    Class: qqsp_ImplementationException
    Error #: [1106, 612]
    Detected at: qqbt_BtreeAccess::FetchDataFileRecord
    Error Time: Wed Dec 03 10:27:22
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1,
    taskId =
    [769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1.22]) in application
    "ConPlus_GUI_cl0", pid 172 on node ISD42 in environment Edge.
    Technote 11225 Don't reparent mapped Widgets between UserWindows at
    runtime
    It is sometimes tempting to unparent a widget from one UserWindow and
    reparent
    it into another at runtime. However, this can cause crashes if the widget
    (or
    its decendants) are "mapped" to data. Here's why...
    Suppose you have two UserWindows, UW1 and UW2. UW1 contains a DataField
    (DF1)
    which is mapped to a TextData. UW2 contains a RadioList (RL2) which is
    mapped to
    a scalar Integer. At compile time, every mapped attribute is internally
    assigned
    a "Map ID" (a small integer) which is used to tie the Widget to its
    corresponding attribute. These Map IDs are used by the Widget to look up a
    pointer to their data in a "Map" which is maintained by the UserWindow.
    Each
    UserWindow is assumed be to independent of the others, so there is nothing
    wrong
    with Widgets in different UserWindows being assigned the same Map IDs.
    In
    this
    case, let's assume that DF1 and RL2 both got assigned the same Map ID of
    3. No
    problem so far, since each lives in a separate UserWindow with a separate
    map.
    Now suppose at runtime the application "detaches" or unparents DF1 from
    its
    UserWindow and reparents it somewhere into UW2. When it comes time for DF1
    to
    paint itself the Display System it must ask the Runtime System for the
    value of
    DF1's mapped attribute. To do that it says "give me the value of the
    TextData
    for DF1. You'll find it in the Map for this UserWindow (UW1), and its Map
    ID is
    3". When the runtime system goes to do this it expects to find a TextData
    in
    this "slot" of the map, but instead it picks up the integer which is
    mapped to
    RL2. At best this leads to bad data being returned; more likely you get a
    segfault and a crash.
    If DF1 was not a mapped attribute (say, a Rectangle) there would be no
    problem
    because there is no data mapped to a Rectangle. If instead of moving DF1
    you
    created a brand new DataField on the fly there would be no problem,
    because the
    dynamic DataField would not have any Map ID and so couldn't conflict with
    any
    IDs in UW2.
    So how do you solve this problem? This is exactly what Nested Windows are
    all
    about. While you can't move DF1 into the middle of UW2, you can nest
    UW1.
    This
    works because UW1 brings its map with it, and when you access DF1 it knows
    to
    look up its value in UW1's map.
    UserWindows are intended to be the "unit of compilabilty" that can be
    nested
    inside other UserWindows. It is dangerous to "transplant" anything from
    inside
    one UserWindow into another at runtime.
    (Note that you can't avoid this problem by cloning DF1 because the MapID
    gets
    copied along with it, and the clone will fail in the same way.)
    Further details explained in related technote 12448 'Sudden client
    partition
    crashes at runtime.'
    Technote 12448 Sudden client partition crashes at runtime
    Scenario : You have two UserWindows, A and B. When Window A starts up, it
    instantiates an instance of B and reparents some component of B into A's
    window
    hierarchy.
    This is not allowed and almost always leads to an error at best or at
    worse a
    segmentation fault.
    Here's why :
    When you compile a UserWindow in Forte, each "mapped attribute" (whether a
    form
    element or menu element) is assigned an internal ID which represents an
    offset into
    that UserWindow's table of mapped attributes. This offset is only valid
    in the
    context of the UserWindow in which it was compiled. If you detach a
    FieldWidget or
    MenuWidget from one compiled Window ("tmpMenu" for example) and then
    parent
    into another compiled window ("tmpWindow") the internal ID comes with it.
    When Forte tries to make use of that copied widget it uses the ID as an
    offset
    into tmpWindow's table of mapped attributes. But that copied offset is
    meaningless in the context of tmpWindow's table, so you get some kind off
    error.
    In this case it found that the data type of the variable in the slot
    wasn't
    what
    was expected. But you might even index off the end of the table and get a
    segmentation fault.
    There is nothing to prevent you from dynamically creating menu items and
    adding
    them to a window at runtime; that will work fine. Although of course you
    can't
    access them via mapped attributes, since those can only be created at
    compile time.
    But you are not allowed to reparent a widget from one compiled UserWindow
    into
    the hierarchy of another.
    More information may be found in technote 11225 'Don't reparent mapped
    Widgets
    between UserWindows at runtime'.
    Possible errorstacks seen at runtime instead of a complete crash or
    segmentation
    violation while you are illegally reparenting a widget or menuitem between
    windows
    at runtime:
    Map::SetSubjectData: Invalid conversion from map type 0 to subject type 22
    SYSTEM ERROR: Bad parameter at location 3 in method
    qqrt_MapClassAccess::ProcessSubjectData.
    Class: qqsp_Exception
    Error #: [1001, 381]
    Detected at: qqrt_MapClassAccess::ProcessSubjectData at 3
    Error Time: Wed Aug 09 13:03:57
    Exception occurred (locally) on partition "testproject_CL0_Client",
    (partitionId = D4914A10-36C1-11D4-91B3-419AA33BAA77:0x208:0xd,
    taskId =
    [D4914A10-36C1-11D4-91B3-419AA33BAA77:0x208:0xd.68]) in application
    "FTLaunch_cl0", pid 672 on node ONEWAY in environment Audi3M2Env.
    At 13:14 26.09.00 -0400, Adamek, Zenon wrote:
    Hi,
    It is the unfixed defect 53398. Please contact Forte support.
    Zenon
    -----Original Message-----
    From: Brenda Cumming [SMTP:brenda_cummingtranscanada.com]
    Sent: Tuesday, September 26, 2000 1:15 PM
    To: Forte User group
    Subject: (forte-users) 3J=>3M new to me error
    Hi,
    We are in the process of going from 3J1 to 3.0.M.2, and I am getting
    this error that I am unfamiliar with on a GUI that works fine in 3J.
    It
    does not happen all the time, and I have been unable to establish the
    pattern that kicks it off. Has anyone seen this before?
    PS- this error is not occurring in the deployed (non-compiled) app,but
    when I am running locally from my workspace.
    SYSTEM ERROR: Bad parameter at location 6 in method
    qqrt_MapClassAccess::ProcessSubjectData.
    Class: qqsp_Exception
    Error #: [1001, 381]
    Detected at: qqrt_MapClassAccess::ProcessSubjectData at 6
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2,
    taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Can't find scope 20070 for a class.
    Class: qqsp_Exception
    Error #: [201, 11]
    Detected at: qqlo_ClassTableLoadScope at 1
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition"ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Because of a prior error, your workspace was set to
    read-only to prevent the application from attempting to write to the repository.
    The repository and work you have saved to the repository are safe. If
    your
    workspace contains unsaved work, you may use the following procedure
    to save this work. First, export the changed components. Then, shut down and
    restart this application and reopen this workspace in read-write mode.
    Finally, import the changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 695]
    Detected at: qqrp_Session::IsDistributed
    Last TOOL statement: method PPMeasWin.
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Internal Error attempting to deserialize element
    (64,120684) (fetch bitmask is 0x20). Your workspace is now read-onlyto
    prevent
    the application from attempting to write to the repository. The
    repository
    and work you have saved to the repository are safe. If your workspace
    contains unsaved work, you may use the following procedure to savethis
    work.
    First, export the changed components. Then, shut down and restart this
    application and reopen this workspace in read-write mode. Finally, import the
    changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 61]
    Detected at: qqrp_LogicalSession::MaterializeObject
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Recursive Deserialization attempted, Internal Error!
    Class: qqsp_UsageException with ReasonCode: SP_ER_INVALIDSTATE
    Error #: [301, 231]
    Detected at: qqsp_DeSerializeDriver::Run at 1
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition"ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in anew
    email the word: 'Unsubscribe' to:forte-users-requestlists.xpedior.com
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

    Hi Thomas,
    Thanks for your email but I think it will be interesting for Brenda not me.
    It is exactly what I have expected from Forte Support: detailed information
    about bugs and workarounds. But what I cannot understand is that #53398 was
    released without any information about possible reasons for this problem or
    suggested workarounds. My first reaction after reading this bugreport was to
    open a new case at CallCenter to get more information about it. Please
    release more information with your bug reports !
    Regards
    Zenon Adamek
    Information Services
    Senior Programmer Analyst
    Tel: 905 712-1084 ext. 3628
    Fax: 905 712-6709
    E-mail: zadamekpurolator.com
    -----Original Message-----
    From: Thomas Degen - Sun Germany Forte Tools - Bonn
    [SMTP:thomas.degensun.com]
    Sent: Wednesday, September 27, 2000 9:49 AM
    To: Adamek, Zenon
    Cc: 'Brenda Cumming'; Forte-userslists.xpedior.com
    Subject: RE: (forte-users) 3J=>3M new to me error
    Hi Zenon,
    bug #53398 is not a bug which will likely get fixed, it's an informational
    bugreport.
    You might see an errorstack like Brenda has reported (and described in
    informational
    bugreport #53398) probably when you are doing something illegal that is
    possible
    via Forte Tool but Forte is not trapping it for performance reasons. Hence
    you will see
    the error coming from your illegal operation only at runtime, probably
    only
    while
    running interpreted in the Forte IDE, but in worst case it might be even a
    segmentation
    violation.
    Technotes 12448 'Sudden client partition crashes at runtime' and 11225
    'Don't reparent
    mapped Widgets between UserWindows at runtime' explain this matter . See
    attached.
    But maybe Brenda is much more experiencing a problem as described by Forte
    Technote 11398 'Read Only Workspace Errors using ListViews or ActiveX
    control'
    that might get easily resolved via setting of FORTE_YIELD_THROTTLE=0.
    Good Luck and Best Regards !
    BTW: I've logged bug #53398, so I've felt responsible to explain its real
    background.
    Thomas
    Thomas Degen
    Sun Microsystems - Forte Tools
    Forte CTE & Sustaining Group
    Technical Support Germany
    tel.:+49.228/91499-50
    MailTo:thomas.degensun.com
    Technote 11398 Read Only Workspace Errors using ListViews or ActiveX
    control
    SCENARIO:
    Getting some unusual interpreter errors that result in an error stating
    that
    the workspace has been set to read only. Please see Enclosures for the
    two
    most common error stacks that have been encountered. The abbreviated
    versions of the errors are:
    - Can't read record (record size = -1)
    - Id in index does not match id in record header in data file
    - Recursive deserialization attempted.
    - Unknown Mark type in deserialization
    - Could not read record (64,74615) from repository data file.
    Header
    is corrupt.
    These errors can be happening in either the development environment when
    running from one of the development workshops, or with the deployed
    application.
    The bug outlined in this Technote may be the culprit if the errors above
    are
    seen when running a client on Windows NT or Motif and the user interface
    incorporates ActiveX controls or ListView/TreeView widgets.
    CAUSE:
    Basically what is happening is that in rare circumstances Forte may invoke
    a
    nested copy of the interpreter while the first interpreter has yielded.
    This
    is not a problem in and of itself, but in the case where the original
    interpreter was in the middle of a repository fetch when it yielded, and
    the second interpreter needs to fetch code as well, we will get one of the
    errors listed above, depending on the exact timing. The reason for the
    errors is that the repository code at this level is thread-safe but not
    re-entrant. It is protected by a mutex that is already owned by the
    current task. Which, given the scenario outlined here, where the two
    interpreters are running inside of the same task, results in the nested
    interpreter being allowed to change data out from under the first.
    While for every fetch one or more calls to WindowSystem.Yield will be made
    (this is there to prevent the semblance of system lock-up on Win 3.1,
    where
    Yield is the only way other applications can be allowed to run), there is
    a parameter which controls how often to actually yield, which by default
    is
    set to one out of every 100 calls. This is the reason the problem is
    intermittent--you need a yield to occur during a repository fetch
    which starts another interpreter which also needs to fetch code from
    disk.
    The reason this has only surfaced recently is that the nested interpreter
    scenario can only happen in 2 cases that we know of:
    - ActiveX controls which respond to events/Windows messages
    - Outline fields/ListViews with column(s) mapped to virtual
    attributes
    In all other normal cases, the yield can process the message (typically a
    paint message) without starting another interpreter, so regardless of
    whether
    the first interpreter yielded during a repository operation or not, there
    is
    no conflict.
    SOLUTION:
    The workaround is to prevent yields altogether by setting the
    FORTE_YIELD_THROTTLE environment variable equal to 0 in the client's
    environment. This should have no detrimental effects since the yield code
    is in place solely for Windows 3.1x clients.
    ERROR STACK 1
    SYSTEM ERROR: Because of a prior error, your workspace was set to
    read-only to
    prevent the application from attempting to write to the repository. The
    repository and work you have saved to the repository are safe. If your
    workspace
    contains unsaved work, you may use the following procedure to save this
    work.
    First, export the changed components. Then, shut down and restart this
    application and reopen this workspace in read-write mode. Finally, import
    the
    changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 695]
    Detected at: qqrp_Session::GetObjectById
    Last TOOL statement: method EFWindowController.EFEventLoop
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    The remainder of the Error Manager stack is:
    SYSTEM ERROR: Internal Error attempting to deserialize element (64,67470)
    (fetch
    bitmask is 0x20). Your workspace is now read-only to prevent the
    application
    from attempting to write to the repository. The repository and work you
    have
    saved to the repository are safe. If your workspace contains unsaved work,
    you
    may use the following procedure to save this work. First, export the
    changed
    components. Then, shut down and restart this application and reopen this
    workspace in read-write mode. Finally, import the changed components and
    save
    your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 61]
    Detected at: qqrp_LogicalSession::MaterializeObject
    Last TOOL statement: method EFTabManagerNew.EFNoteBookHandler
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    SYSTEM ERROR: Unknown Mark type in deserialization.
    Class: qqsp_ImplementationException
    Error #: [1101, 34]
    Detected at: qqrp_DeSerializeObject::ProcessHdr
    Error Time: Tue Nov 18 15:58:47
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1,
    taskId =
    [7EFAE060-4AFA-11D1-A1C1-1FDC8A99AA77:0x446:0x1.23]) in application
    "ConPlus_GUI_cl0", pid 147 on node ISD060 in environment EdgeTest.
    ERROR STACK 2
    SYSTEM ERROR: A serious error has occurred in Repository
    (c:\PROGRA~1\CSSPTEST\conplu0). Corrective action may be necessary.
    Notify
    your repository administrator.
    Class: qqsp_ImplementationException
    Error #: [1101, 198]
    Detected at: qqrp_Repository::Fetch
    Last TOOL statement: method
    SalesDevelopment_NWC.DEVNotifyofTabSetCurrent
    Error Time: Wed Dec 03 10:27:22
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1,
    taskId =
    [769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1.22]) in application
    "ConPlus_GUI_cl0", pid 172 on node ISD42 in environment Edge.
    SYSTEM ERROR: Could not read record (64,74615) from repository data file.
    Header is corrupt.
    Class: qqsp_ImplementationException
    Error #: [1106, 612]
    Detected at: qqbt_BtreeAccess::FetchDataFileRecord
    Error Time: Wed Dec 03 10:27:22
    Exception occurred (locally) on partition "ConPlus_GUI_cl0_Client",
    (partitionId = 769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1,
    taskId =
    [769D4310-6B88-11D1-84FD-65BF87C8AA77:0x121:0x1.22]) in application
    "ConPlus_GUI_cl0", pid 172 on node ISD42 in environment Edge.
    Technote 11225 Don't reparent mapped Widgets between UserWindows at
    runtime
    It is sometimes tempting to unparent a widget from one UserWindow and
    reparent
    it into another at runtime. However, this can cause crashes if the widget
    (or
    its decendants) are "mapped" to data. Here's why...
    Suppose you have two UserWindows, UW1 and UW2. UW1 contains a DataField
    (DF1)
    which is mapped to a TextData. UW2 contains a RadioList (RL2) which is
    mapped to
    a scalar Integer. At compile time, every mapped attribute is internally
    assigned
    a "Map ID" (a small integer) which is used to tie the Widget to its
    corresponding attribute. These Map IDs are used by the Widget to look up a
    pointer to their data in a "Map" which is maintained by the UserWindow.
    Each
    UserWindow is assumed be to independent of the others, so there is nothing
    wrong
    with Widgets in different UserWindows being assigned the same Map IDs.
    In
    this
    case, let's assume that DF1 and RL2 both got assigned the same Map ID of
    3. No
    problem so far, since each lives in a separate UserWindow with a separate
    map.
    Now suppose at runtime the application "detaches" or unparents DF1 from
    its
    UserWindow and reparents it somewhere into UW2. When it comes time for DF1
    to
    paint itself the Display System it must ask the Runtime System for the
    value of
    DF1's mapped attribute. To do that it says "give me the value of the
    TextData
    for DF1. You'll find it in the Map for this UserWindow (UW1), and its Map
    ID is
    3". When the runtime system goes to do this it expects to find a TextData
    in
    this "slot" of the map, but instead it picks up the integer which is
    mapped to
    RL2. At best this leads to bad data being returned; more likely you get a
    segfault and a crash.
    If DF1 was not a mapped attribute (say, a Rectangle) there would be no
    problem
    because there is no data mapped to a Rectangle. If instead of moving DF1
    you
    created a brand new DataField on the fly there would be no problem,
    because the
    dynamic DataField would not have any Map ID and so couldn't conflict with
    any
    IDs in UW2.
    So how do you solve this problem? This is exactly what Nested Windows are
    all
    about. While you can't move DF1 into the middle of UW2, you can nest
    UW1.
    This
    works because UW1 brings its map with it, and when you access DF1 it knows
    to
    look up its value in UW1's map.
    UserWindows are intended to be the "unit of compilabilty" that can be
    nested
    inside other UserWindows. It is dangerous to "transplant" anything from
    inside
    one UserWindow into another at runtime.
    (Note that you can't avoid this problem by cloning DF1 because the MapID
    gets
    copied along with it, and the clone will fail in the same way.)
    Further details explained in related technote 12448 'Sudden client
    partition
    crashes at runtime.'
    Technote 12448 Sudden client partition crashes at runtime
    Scenario : You have two UserWindows, A and B. When Window A starts up, it
    instantiates an instance of B and reparents some component of B into A's
    window
    hierarchy.
    This is not allowed and almost always leads to an error at best or at
    worse a
    segmentation fault.
    Here's why :
    When you compile a UserWindow in Forte, each "mapped attribute" (whether a
    form
    element or menu element) is assigned an internal ID which represents an
    offset into
    that UserWindow's table of mapped attributes. This offset is only valid
    in the
    context of the UserWindow in which it was compiled. If you detach a
    FieldWidget or
    MenuWidget from one compiled Window ("tmpMenu" for example) and then
    parent
    into another compiled window ("tmpWindow") the internal ID comes with it.
    When Forte tries to make use of that copied widget it uses the ID as an
    offset
    into tmpWindow's table of mapped attributes. But that copied offset is
    meaningless in the context of tmpWindow's table, so you get some kind off
    error.
    In this case it found that the data type of the variable in the slot
    wasn't
    what
    was expected. But you might even index off the end of the table and get a
    segmentation fault.
    There is nothing to prevent you from dynamically creating menu items and
    adding
    them to a window at runtime; that will work fine. Although of course you
    can't
    access them via mapped attributes, since those can only be created at
    compile time.
    But you are not allowed to reparent a widget from one compiled UserWindow
    into
    the hierarchy of another.
    More information may be found in technote 11225 'Don't reparent mapped
    Widgets
    between UserWindows at runtime'.
    Possible errorstacks seen at runtime instead of a complete crash or
    segmentation
    violation while you are illegally reparenting a widget or menuitem between
    windows
    at runtime:
    Map::SetSubjectData: Invalid conversion from map type 0 to subject type 22
    SYSTEM ERROR: Bad parameter at location 3 in method
    qqrt_MapClassAccess::ProcessSubjectData.
    Class: qqsp_Exception
    Error #: [1001, 381]
    Detected at: qqrt_MapClassAccess::ProcessSubjectData at 3
    Error Time: Wed Aug 09 13:03:57
    Exception occurred (locally) on partition "testproject_CL0_Client",
    (partitionId = D4914A10-36C1-11D4-91B3-419AA33BAA77:0x208:0xd,
    taskId =
    [D4914A10-36C1-11D4-91B3-419AA33BAA77:0x208:0xd.68]) in application
    "FTLaunch_cl0", pid 672 on node ONEWAY in environment Audi3M2Env.
    At 13:14 26.09.00 -0400, Adamek, Zenon wrote:
    Hi,
    It is the unfixed defect 53398. Please contact Forte support.
    Zenon
    -----Original Message-----
    From: Brenda Cumming [SMTP:brenda_cummingtranscanada.com]
    Sent: Tuesday, September 26, 2000 1:15 PM
    To: Forte User group
    Subject: (forte-users) 3J=>3M new to me error
    Hi,
    We are in the process of going from 3J1 to 3.0.M.2, and I am getting
    this error that I am unfamiliar with on a GUI that works fine in 3J.
    It
    does not happen all the time, and I have been unable to establish the
    pattern that kicks it off. Has anyone seen this before?
    PS- this error is not occurring in the deployed (non-compiled) app,but
    when I am running locally from my workspace.
    SYSTEM ERROR: Bad parameter at location 6 in method
    qqrt_MapClassAccess::ProcessSubjectData.
    Class: qqsp_Exception
    Error #: [1001, 381]
    Detected at: qqrt_MapClassAccess::ProcessSubjectData at 6
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2,
    taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Can't find scope 20070 for a class.
    Class: qqsp_Exception
    Error #: [201, 11]
    Detected at: qqlo_ClassTableLoadScope at 1
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition"ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Because of a prior error, your workspace was set to
    read-only to prevent the application from attempting to write to the repository.
    The repository and work you have saved to the repository are safe. If
    your
    workspace contains unsaved work, you may use the following procedure
    to save this work. First, export the changed components. Then, shut down and
    restart this application and reopen this workspace in read-write mode.
    Finally, import the changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 695]
    Detected at: qqrp_Session::IsDistributed
    Last TOOL statement: method PPMeasWin.
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Internal Error attempting to deserialize element
    (64,120684) (fetch bitmask is 0x20). Your workspace is now read-onlyto
    prevent
    the application from attempting to write to the repository. The
    repository
    and work you have saved to the repository are safe. If your workspace
    contains unsaved work, you may use the following procedure to savethis
    work.
    First, export the changed components. Then, shut down and restart this
    application and reopen this workspace in read-write mode. Finally, import the
    changed components and save your workspace.
    Class: qqrp_RepResourceException
    Error #: [1101, 61]
    Detected at: qqrp_LogicalSession::MaterializeObject
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition
    "ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    SYSTEM ERROR: Recursive Deserialization attempted, Internal Error!
    Class: qqsp_UsageException with ReasonCode: SP_ER_INVALIDSTATE
    Error #: [301, 231]
    Detected at: qqsp_DeSerializeDriver::Run at 1
    Error Time: Wed Sep 20 14:32:54
    Exception occurred (locally) on partition"ABSDevtStartUp_CL0_Client",
    (partitionId = 36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2, taskId =
    [36172000-5DA8-11D4-B1F0-14015EDAAA77:0x2da:0x2.25]) in
    application
    "Forte_cl0", pid 93 on node T5621 in environment AbisDMEnv.
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in anew
    email the word: 'Unsubscribe' to:forte-users-requestlists.xpedior.com
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

  • Error in user domain of IDM 8.1

    I have upgraded IDM from 7.1 to 8.1
    When I login to user domain, I get the below error message:
    org.apache.jasper.JasperException: Unable to compile class for JSP:
    An error occurred at line: 46 in the jsp file: /includes/copyright.jsp
    Duplicate local variable directoryMasterLicensed
    43: response.addDateHeader("Expires", System.currentTimeMillis() - 10*60*1000);
    44: %>
    45: <%
    46: boolean directoryMasterLicensed = false;
    47:
    48: %>
    49: <%-- $Id: copyright.jsp,v 1.6 2008/05/15 16:43:55 ar203302 Exp $ --%>
    Any help is appreciated.
    Thanks,
    Sanhita

    You might want to try removing the page import of the copyRight.jsp. That seemed to do it for me.
    com.waveset.util.URLUTF8Encoder"%>
    <%@ page import="com.waveset.msgcat.Messages"%>
    <%@ page import="com.waveset.ui.util.HtmlUtil" %>
    <%-- <%@ include file="/includes/copyright.jsp" %>--%>
    <%@ page import="com.waveset.ui.PageInformation" %>
    <%@ page import="com.waveset.util.WavesetProperties" %>
    <%@ page import="com.waveset.session.UserViewConstants" %>

  • RE: (forte-users) FW: (forte-users)

    Hi there
    Thanks very much for the solution - just wanted to let you know . We
    implemented the design that technote 11378 suggested .
    It worked .
    Thanks very much
    Cheers
    Jen
    -----Original Message-----
    From: Adamek, Zenon [mailto:ZAdamekpurolator.com]
    Sent: Tuesday, 20 March, 2001 9:21 PM
    To: 'forte-userslists.xpedior.com'
    Subject: (forte-users) FW: (forte-users)
    Hi David,
    The problem is that the SO uses an attribute of its class ACBAccount as
    the ObjectReference pointer. SO is not a stateless object. The possible
    scenario before crash can be that client A and B calls SO at the same
    time. A's thread creates ACBAccount gets the ObjectReference. At this
    point B's thread is activated, does the same as A creates new
    ObjectReference. Probably the next switch between A and B will be in the
    Connect() (B should wait for OLE server). If A is reactivated it doesn't
    get the original own reference but the B's reference. It can cause the
    crash and means that a thread can use reference created in some other
    thread.
    Regards,
    Zenon
    -----Original Message-----
    From: David McPaul [SMTP:dmcpaullumley.com.au]
    Sent: Monday, March 19, 2001 11:52 PM
    To: 'forte-userslists.xpedior.com'
    Subject: RE: (forte-users)
    Jenni,
    As Zenon has pointed out, technote 11378 talks about problems that
    can occur if the calls made to an OLE object are not from within the same
    thread the OLE object was created in. It goes on to show a design to
    avoid
    this.
    However, the code you have given DOES communicate to the OLE object
    in the same thread as it was created. So the problem as I see it is more
    likely to be that the OLE object is not being garbage collected. Although
    you do explicitly NIL out the ACBAccount object there is a technote 12453
    that deals with the need to set the ObjectReference of CDispatch objects
    to
    NIL to allow the OLE object to be completely reclaimed by the garbage
    collector. Failure to do so when using code that creates a new OLE object
    every time you ask for an account validation will eventually run the
    partition out of memory.
    As pointed out in a previous post you can also increase
    FORTE_STACK_SIZE but this will delay the problem not correct it.
    Rather than create the connection each time you may want to think
    about redesigning the method as shown in tech note 11378.
    Cheers
    David
    -----Original Message-----
    From: Adamek, Zenon [mailto:ZAdamekpurolator.com]
    Sent: Tuesday, March 20, 2001 5:05 AM
    To: 'Els, Jenni'
    Cc: 'forte-userslists.xpedior.com'
    Subject: RE: (forte-users)
    Hi Jenni,
    The most important issue by designing an OLE connection between a Forte
    server partition and an OLE component is taking into account that an OLE
    object can be referenced from the NT thread in Forte partition that it was
    created in. It is the reason that you have no problems with your mini-app
    in
    single-threaded version.
    This problem is discussed in the Technote 11378. You can find a workaround
    for your problem there, too.
    Regards,
    Zenon
    -----Original Message-----
    From: Els, Jenni [SMTP:JElsnbs.co.za]
    Sent: Monday, March 19, 2001 2:28 AM
    To: 'forte-userslists.xpedior.com'
    Subject: (forte-users)
    Hi there
    We have this situation
    We are calling a Service Object (in the server partition) from ourclient
    partition.This service object calls a method which calls a DLLregistered
    on our server (VB code) . This VB code access a database on anotherserver
    .(DSN set up on our server ).The database is sql server .
    We are having the problem where for about 3 hours in the morning , the
    system works perfectly. We then get a segmentation violation on this
    partition . When we run interpreted we can see that this is an OLEinvoked
    exception. The partition does not always show as offline in econsole
    and
    because it does not , we cannot 'online' another . We cannot take the
    entire app down as everything hangs . Eventually our technical depthas
    to
    down the server
    We set up a mini-app looping through and calling the DLL to simulate
    the
    problem . It worked fine. When we put another asynchronous task in the
    method to call the service object , it erred quite soon. We thencreate
    an
    attribute of type mutex and locked using that. The mini-app worked.
    However our app in development eventually hanged (without the
    partition
    coming though) .
    The service Object is an environment visible service object in asingle
    (non-replicated partition) . It has a dialog duration = session .
    In the project is
    ACB : ACBObject
    ACBObject : CDispatch (shared = disallowed , distributed =
    disallowed, transactional = disallowed, monitored = allowed)
    ACBValidator : Object (shared = allowed , distributed =allowed,
    transactional = disallowed, monitored = disallowed)
    ACBVaidatorSO : ACBValidator
    In this method we have this code to call the DLL
    self.ACBAccount = new;
    self.ACBAccount.CreateUsingCLSID(classID='{2EFD3084-7B05-11D3-857F-00105A4
    8CEA0}');
    pErrorMessage = new;
    acbaccount.BankCode = pBankCode.value;
    acbaccount.BranchCode = pBranchCode.value;
    at : VariantI2 = new;
    at.Value = pAccountType.Value;
    acbaccount.AccountType = at.Value;
    acbaccount.AccountNo = pAccountNo.value;
    begin
    acbaccount.Connect();
    exception
    when e : GenericException do
    ex : GenericException = new;
    ex.SetWithParams(severity = SP_ER_ERROR,
    message = 'There was an error connecting to the database');
    raise ex;
    end;
    begin
    err : i2 = acbaccount.ValidateAccount();
    if err != 0 then
    pErrorMessage.SetValue(acbaccount.ErrDescriptionStr(iErrorCode= err));
    acbaccount.Disconnect();
    return false;
    else
    pErrorMessage.SetValue('The account is
    valid!!');
    acbaccount.Disconnect();
    self.ACBAccount = NIL ;
    return true;
    end if;
    exception
    when e : GenericException do
    acbaccount.Disconnect();
    ex : GenericException = new;
    ex.SetWithParams(severity = SP_ER_ERROR,
    message = 'There was an error Validating the account');
    Task.ErrorMgr.AddError(ex);
    task.errormgr.ShowErrors();
    raise e;
    end;
    exception
    when e : GenericException do
    acbaccount.Disconnect();
    Task.ErrorMgr.ShowErrors();
    raise e;
    If anybody has any suggestions , they would be most welcome
    Thanks very much
    Cheers
    Jenni Els************************************************************************Th
    is e-mail is intended for the use of the individual or entity named above
    and may contain information that is confidential and privileged. If you
    are not the intended recipient, you are hereby notified that any
    dissemination, distribution or copying of this e-mail is strictly
    prohibited. If you have received this e-mail in error, please notify us
    immediately at helpdesklumley.com.au and destroy the original message.
    While this mail and any attachments have been scanned for common computer
    viruses and found to be virus free, we recommend you also perform your own
    virus checking processes before opening any attachments.
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com--
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com
    WARNING:
    Any unauthorised use or interception of this email is illegal. If this email
    is not intended for you, you may not copy, distribute nor disclose the
    contents to anyone. Save for bona fide company matters, the BoE Group does
    not accept any responsibility for the opinions expressed in this email.
    For further details please see: http://www.nbs.co.za/emaildisclaim.htm

    Hi there
    Thanks very much for the solution - just wanted to let you know . We
    implemented the design that technote 11378 suggested .
    It worked .
    Thanks very much
    Cheers
    Jen
    -----Original Message-----
    From: Adamek, Zenon [mailto:ZAdamekpurolator.com]
    Sent: Tuesday, 20 March, 2001 9:21 PM
    To: 'forte-userslists.xpedior.com'
    Subject: (forte-users) FW: (forte-users)
    Hi David,
    The problem is that the SO uses an attribute of its class ACBAccount as
    the ObjectReference pointer. SO is not a stateless object. The possible
    scenario before crash can be that client A and B calls SO at the same
    time. A's thread creates ACBAccount gets the ObjectReference. At this
    point B's thread is activated, does the same as A creates new
    ObjectReference. Probably the next switch between A and B will be in the
    Connect() (B should wait for OLE server). If A is reactivated it doesn't
    get the original own reference but the B's reference. It can cause the
    crash and means that a thread can use reference created in some other
    thread.
    Regards,
    Zenon
    -----Original Message-----
    From: David McPaul [SMTP:dmcpaullumley.com.au]
    Sent: Monday, March 19, 2001 11:52 PM
    To: 'forte-userslists.xpedior.com'
    Subject: RE: (forte-users)
    Jenni,
    As Zenon has pointed out, technote 11378 talks about problems that
    can occur if the calls made to an OLE object are not from within the same
    thread the OLE object was created in. It goes on to show a design to
    avoid
    this.
    However, the code you have given DOES communicate to the OLE object
    in the same thread as it was created. So the problem as I see it is more
    likely to be that the OLE object is not being garbage collected. Although
    you do explicitly NIL out the ACBAccount object there is a technote 12453
    that deals with the need to set the ObjectReference of CDispatch objects
    to
    NIL to allow the OLE object to be completely reclaimed by the garbage
    collector. Failure to do so when using code that creates a new OLE object
    every time you ask for an account validation will eventually run the
    partition out of memory.
    As pointed out in a previous post you can also increase
    FORTE_STACK_SIZE but this will delay the problem not correct it.
    Rather than create the connection each time you may want to think
    about redesigning the method as shown in tech note 11378.
    Cheers
    David
    -----Original Message-----
    From: Adamek, Zenon [mailto:ZAdamekpurolator.com]
    Sent: Tuesday, March 20, 2001 5:05 AM
    To: 'Els, Jenni'
    Cc: 'forte-userslists.xpedior.com'
    Subject: RE: (forte-users)
    Hi Jenni,
    The most important issue by designing an OLE connection between a Forte
    server partition and an OLE component is taking into account that an OLE
    object can be referenced from the NT thread in Forte partition that it was
    created in. It is the reason that you have no problems with your mini-app
    in
    single-threaded version.
    This problem is discussed in the Technote 11378. You can find a workaround
    for your problem there, too.
    Regards,
    Zenon
    -----Original Message-----
    From: Els, Jenni [SMTP:JElsnbs.co.za]
    Sent: Monday, March 19, 2001 2:28 AM
    To: 'forte-userslists.xpedior.com'
    Subject: (forte-users)
    Hi there
    We have this situation
    We are calling a Service Object (in the server partition) from ourclient
    partition.This service object calls a method which calls a DLLregistered
    on our server (VB code) . This VB code access a database on anotherserver
    .(DSN set up on our server ).The database is sql server .
    We are having the problem where for about 3 hours in the morning , the
    system works perfectly. We then get a segmentation violation on this
    partition . When we run interpreted we can see that this is an OLEinvoked
    exception. The partition does not always show as offline in econsole
    and
    because it does not , we cannot 'online' another . We cannot take the
    entire app down as everything hangs . Eventually our technical depthas
    to
    down the server
    We set up a mini-app looping through and calling the DLL to simulate
    the
    problem . It worked fine. When we put another asynchronous task in the
    method to call the service object , it erred quite soon. We thencreate
    an
    attribute of type mutex and locked using that. The mini-app worked.
    However our app in development eventually hanged (without the
    partition
    coming though) .
    The service Object is an environment visible service object in asingle
    (non-replicated partition) . It has a dialog duration = session .
    In the project is
    ACB : ACBObject
    ACBObject : CDispatch (shared = disallowed , distributed =
    disallowed, transactional = disallowed, monitored = allowed)
    ACBValidator : Object (shared = allowed , distributed =allowed,
    transactional = disallowed, monitored = disallowed)
    ACBVaidatorSO : ACBValidator
    In this method we have this code to call the DLL
    self.ACBAccount = new;
    self.ACBAccount.CreateUsingCLSID(classID='{2EFD3084-7B05-11D3-857F-00105A4
    8CEA0}');
    pErrorMessage = new;
    acbaccount.BankCode = pBankCode.value;
    acbaccount.BranchCode = pBranchCode.value;
    at : VariantI2 = new;
    at.Value = pAccountType.Value;
    acbaccount.AccountType = at.Value;
    acbaccount.AccountNo = pAccountNo.value;
    begin
    acbaccount.Connect();
    exception
    when e : GenericException do
    ex : GenericException = new;
    ex.SetWithParams(severity = SP_ER_ERROR,
    message = 'There was an error connecting to the database');
    raise ex;
    end;
    begin
    err : i2 = acbaccount.ValidateAccount();
    if err != 0 then
    pErrorMessage.SetValue(acbaccount.ErrDescriptionStr(iErrorCode= err));
    acbaccount.Disconnect();
    return false;
    else
    pErrorMessage.SetValue('The account is
    valid!!');
    acbaccount.Disconnect();
    self.ACBAccount = NIL ;
    return true;
    end if;
    exception
    when e : GenericException do
    acbaccount.Disconnect();
    ex : GenericException = new;
    ex.SetWithParams(severity = SP_ER_ERROR,
    message = 'There was an error Validating the account');
    Task.ErrorMgr.AddError(ex);
    task.errormgr.ShowErrors();
    raise e;
    end;
    exception
    when e : GenericException do
    acbaccount.Disconnect();
    Task.ErrorMgr.ShowErrors();
    raise e;
    If anybody has any suggestions , they would be most welcome
    Thanks very much
    Cheers
    Jenni Els************************************************************************Th
    is e-mail is intended for the use of the individual or entity named above
    and may contain information that is confidential and privileged. If you
    are not the intended recipient, you are hereby notified that any
    dissemination, distribution or copying of this e-mail is strictly
    prohibited. If you have received this e-mail in error, please notify us
    immediately at helpdesklumley.com.au and destroy the original message.
    While this mail and any attachments have been scanned for common computer
    viruses and found to be virus free, we recommend you also perform your own
    virus checking processes before opening any attachments.
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com--
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com
    WARNING:
    Any unauthorised use or interception of this email is illegal. If this email
    is not intended for you, you may not copy, distribute nor disclose the
    contents to anyone. Save for bona fide company matters, the BoE Group does
    not accept any responsibility for the opinions expressed in this email.
    For further details please see: http://www.nbs.co.za/emaildisclaim.htm

  • Re: (forte-users) SAXParser and InputSource

    Michael Beaulieu wrote on Mon November 8:
    Hello,
    I was wondering if anyone has any experience using the XMLParser
    Library!? in Forte. I have no problem parsing a file using the
    forte parser but when I try to parse a message/TextData object I get
    the error " element not found " ( which is not due to my xml file )
    The class InputSource has a method that takes SeekStream in its
    setCharacterStream method:
    str : MemoryStream = new();
    str.open(SP_AM_READ_WRITE);
    str.WriteText(myMessage);
    theSource : InputSource = new();
    theSource.setCharacterStream(str);
    myParser.parse(theSource);Add this line after you're done writing to the MemoryStream:
    str.Seek(position=0);
    When the SAX parser is reading, it's reading from the current position
    forward; after writing to the stream the current position is at the
    end, so you have to rewind it to the beginning before giving it to the
    SAX parser.
    Cliff Draper
    Forte Engineering
    Forte Software, a subsidiary of Sun

    Why not this:
    while myText.moveToString(' ') do
    myText.ReplaceRange('-', myText.Offset, myText.Offset+1);
    end while;
    or if you prefer verbosity:
    while myText.moveToString(source=' ') do
    myText.ReplaceRange(source='-', startOffset=myText.Offset,
    endOffset=myText.Offset+1);
    end while;
    -----Original Message-----
    From: FatchJeBAM.com [mailto:FatchJeBAM.com]
    Sent: Wednesday, January 12, 2000 2:51 PM
    To: Troy.Burnsvacationclub.com; kamranaminyahoo.com
    Subject: RE: (forte-users) search and replace within a TextData
    How about this?? May have to play with start/end on ReplaceRange as I
    didn't really test this
    Anybody got a better way??
    -- replace space with underscore
    For x in 1 to myTextdata.LengthToEnd() do
    If myTextData.IsSpace() then
    MyTextdata.ReplaceRange('_'. Startoffset=myTextdata.offset,
    endoffset=myTextdata.offset+1);
    End if;
    MyTextdata.MoveNext;
    End for;
    Jerry Fatcheric
    -----Original Message-----
    From: Burns, Troy [mailto:Troy.Burnsvacationclub.com]
    Sent: Wednesday, January 12, 2000 9:40 AM
    To: kamranaminyahoo.com
    Subject: (forte-users) search and replace within a
    TextData
    Hello all,
    I need to search within a textdata object, replacing all
    occurrances of a
    space
    with another character. Can you give a quick code example
    of how I would do
    this?
    Thanks in advance,
    Troy
    Troy Burns
    Marriott Vacation Club Intl.
    E-mail: troy.burnsvacationclub.com
    Phone: (941) 688-7700 ext. 4408
    For the archives, go to: http://lists.sageit.com/forte-users
    and use
    the login: forte and the password: archive. To unsubscribe,
    send in a new
    email the word: 'Unsubscribe' to:
    forte-users-requestlists.sageit.com
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.sageit.com

  • RE: (forte-users) Forte ADE

    In addition to this confusion, I'd like to see some statement by Forte to
    indicate
    WHEN the next Forte R4 is scheduled (before the Sun era is was said to be
    Summer 2000) and
    WHAT exactly it will contain (major headings will do).
    With the cancellation of the Forte Forum event doubt and uncertainty are
    spreading in the
    Forte communities that I talk with and no one seems to counterbalance these
    doubts with an
    official statement. How serious does Sun take TOOL Forte for the coming few
    years? Release
    of Fusion V2 seems to say "serious". The deafning silence with regard to R4
    indicates the
    opposite. And the users are divided (as always).
    Theo de Klerk
    Architecture & Application Integration
    Professional Services
    Compaq Computer Corp. - the Netherlands
    -----Original Message-----
    From: Rottier, Pascal [mailto:Rottier.Pascalpmintl.ch]
    Sent: Tuesday, 18 April, 2000 17:49
    To: 'kamranaminyahoo.com'
    Subject: (forte-users) Forte ADE
    A long, long time ago
    In a galaxy far away....
    I saw a demonstration of Forte's new Application Development
    Environment,
    which was more userfriendly than the current one. It also looked more
    similar to the interface of the other development tools out
    there, with a
    tree structure and capabilities to browse through the
    inheritance tree, and
    not opening a new window for every project, class and method that is
    accessed.
    This new interface was supposed to be included in Forte 4, which would
    combine TOOL and Java and would be released soon.
    Since then, we've seen SynerJ and now FJEE, but Forte 4 is still not
    released. And when it will be released, it still won't
    support TOOL and Java
    simultaneously. That's OK. I understand that.
    But now I've heard that this improved ADE won't even be
    included in Forte 4.
    Is this true? And if so, why?
    Pascal
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe,
    send in a new
    email the word: 'Unsubscribe' to:
    forte-users-requestlists.xpedior.com

    You may be interested in the following which comes from a statement of direction
    recently issued by Sun.
    Product Context
    + Fort&eacute; 4GL is an award-winning, proven product with many unique advantages for
    building
    enterprise business systems that are distributed, that involve the integration
    of existing
    business systems as well as new functionality, and that target heterogeneous
    runtime
    environments.
    + Fort&eacute; 4GL is recognized by Gartner Group as the most successful Enterprise
    Application
    Development Tool.
    + Forte 4GL has a substantial customer base that has been successful with the
    product and that
    looks forward to using Fort&eacute; 4GL for new applications.
    + The Sun Microsystems, Inc. (SMI) development tools group (formerly Fort&eacute;
    Software, Inc.)
    has a strong internal commitment to Fort&eacute; 4GL. Fort&eacute; Fusion is written with, and
    is currently
    being enhanced with Fort&eacute; 4GL.
    + SMI has retained the Fort&eacute; field sales organization as an independent unit
    whose primary
    product offerings are Fort&eacute; 4GL and Fort&eacute; Fusion. Continued volume sales of
    Fort&eacute; 4GL
    remain the foundation of our business plan.
    Product Future
    + We intend to actively enhance and promote Fort&eacute; 4GL for the indefinite
    future.
    + We believe Fort&eacute; 4GL will flourish in the long term, especially if we are
    able to harness the
    considerable selling power of the entire SMI field sales organization. To make
    the product
    more attractive and easier to sell, we will continue to make the product more
    modular and
    easier to integrate with heterogeneous software environments.
    + We believe that the best opportunity for attracting new customers is to
    leverage the ability of
    Fort&eacute; 4GL to easily build powerful shared business services (server components)
    that can be
    accessed by non-Fort&eacute; clients (e.g., browsers, Java clients) and that can easily
    integrate with
    new and existing business systems.
    + We believe that Fort&eacute; 4GL?s continued success is enhanced by continuing to
    issue small and
    frequent product releases. Our target is two such releases per year.
    + There is a great potential for our three product lines (Fort&eacute; 4GL, Fort&eacute;
    Fusion, and Fort&eacute; for
    Java) to complement and reinforce each other. Interoperability among the three
    product lines
    is seen as a critical success factor for Fort&eacute; 4GL.
    Forte 4GL Statement of Direction Page 2
    Sun Microsystems, Inc Proprietary and Confidential
    Product Priorities
    1. Interoperability with third party software components
    + External (non-4GL) client support (e.g., browsers, Java clients)
    + External server integration (e.g., messaging, component support, data
    exchange)
    2. Enhanced productivity
    + Increased automation (i.e., less coding)
    + Support for platform updates (e.g., new versions of OS, DBMS)
    3. TOOL code to Java code migration
    4. Unified developer look and feel with other Forte development products
    5. Common repository
    Short Term Product Plans
    Mid-year release
    + New features available as ?preview? per the standard Forte maintenance
    release procedures
    + Tentatively labeled ?release 3.5? and distributed as a free product
    enhancement for
    customers under maintenance
    + Scheduled for Summer 2000
    + Defining features
    + Introspection (reflection) ? the ability for an object to describe itself at
    runtime
    + Improved integration with applications developed using Fort&eacute;-for-Java
    Community
    Edition
    + Platform support improvements to track important operating system and
    database
    vendor activity
    + Target features
    + Display system enhancements (e.g., Motif 2 support, line arrowheads, window
    refresh control, editable outline fields)
    + Dynamic library loading
    + Improved CORBA/IIOP support
    + Improved XML and XSLT class support
    + JMQ support
    New year release
    + New features available as ?preview? per the standard Forte maintenance
    release procedures
    + Tentatively labeled ?release 3.6? and distributed as a free product
    enhancement for
    customers under maintenance
    + Scheduled for year end 2000
    + Defining features
    + Any Release 3.5 target features that were not included in 3.5
    + Generation of EJB interfaces for R3 service objects
    + Platform support improvements to track important operating system and
    database
    vendor activity
    + Target features
    + COBOL record handling as part of the OS390 transaction adaptor
    + Improved runtime security
    + Interface classes for access to Netscape Server 4.0 and possibly other web
    servers
    Long Term Product Plans
    + To be determined by customer and market feedback.
    + A major criterion for new functionality will be enhancing the revenue
    generating ability of
    the product, thereby fostering its long-term health in the marketplace.
    + Substantial emphasis will be placed on creating new capabilities that enhance
    the
    attractiveness of the product for new users.
    + The contents of Release 3.7 (or whatever it will be called) will be
    solidified just after release
    3.5 ships. Subsequent planning visibility will be two forward releases.
    "Klerk, Theo de" <Theo.de.Klerkcompaq.com> on 04/18/2000 12:27:36 PM
    To: "'Rottier, Pascal'" <Rottier.Pascalpmintl.ch>,
    "'kamranaminyahoo.com'" <kamranaminyahoo.com>
    cc: (bcc: Charlie Shell/Bsg/MetLife/US)
    Subject: RE: (forte-users) Forte ADE

Maybe you are looking for

  • Help with scrolling thumbnails photogallery

    i need some help with this photo gallery im working on. im pretty sure i have almost everything correct but for some reason i cant get the thumbnails when clicked to link up with the img. i want it to show. well i cant really upload the file here i j

  • Hide filters and graphs

    Hi,     I have added filters through filter pane in BI 7 Web Application Designer. Now I have added a FILTER  button on the WAD. While clicking on this button, it should hide all the filters . Once again, if we click on Filter button , it should disp

  • Purchase order item - link to document

    Hello! As you know it is possible to link a SAP document to every position of a purchase order. My problem is that I want to fill this fields automatically with the data of the material master data (additional data) when the PO is created. Do you hav

  • Two questions about TimesTen In-Memory Database

    1. In TimesTen, there are two methods to do the replication: a. create active standby pair b. create replication tt element ... whose performence is better ? when the cache group exists, only the A/S can be used, is it right? 2. If I just want to sto

  • (V9I) ORA-2095 WHEN MODIFYING LARGE_POOL_SIZE OR JAVA_POOL_SIZE

    제품 : ORACLE SERVER 작성날짜 : 2004-05-03 (V9I) ORA-2095 WHEN MODIFYING LARGE_POOL_SIZE OR JAVA_POOL_SIZE =============================================================== PURPOSE 이 자료는 Oracle 9i에서 LARGE_POOL_SIZE 또는 JAVA_POOL_SIZE 파라미터를 동적으로 변경하려고 할 때 발생하는