RE: (forte-users) Formatting a number

Thank you. That worked out great.
ka
-----Original Message-----
From: Thompson Ian [mailto:Ian.Thompsonicl.com]
Sent: Friday, February 18, 2000 9:35 AM
To: 'Amin, Kamran'; 'Forte User'
Subject: RE: (forte-users) Formatting a number
Ka,
Try using TextFormat in combination with NumericFormat - like this:
strfmt : TextFormat = new;
numfmt : NumericFormat = new;
number : IntegerData = new;
numberastext : TextData;
numfmt.Template='L0000000';
strfmt.Template='A###-####';
number.SetValue(source = 23456);
// Format the number into a TextData.
numberastext=strfmt.FormatText(source = numfmt.FormatNumeric(source =
number));
You may have tried this already, but I hope it helps.
Regards
Iain
-----Original Message-----
From: Amin, Kamran [mailto:kamran.aminframeworkinc.com]
Sent: 18 February 2000 13:37
To: 'Forte User'
Subject: (forte-users) Formatting a number
I like to format a number as follows:
L###-#### - Where a number like 23456 would format to L002-3456.
Is there any way to do this in Forte using the NumericFormat object.
thanks in advance.
ka
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

Thank you. That worked out great.
ka
-----Original Message-----
From: Thompson Ian [mailto:Ian.Thompsonicl.com]
Sent: Friday, February 18, 2000 9:35 AM
To: 'Amin, Kamran'; 'Forte User'
Subject: RE: (forte-users) Formatting a number
Ka,
Try using TextFormat in combination with NumericFormat - like this:
strfmt : TextFormat = new;
numfmt : NumericFormat = new;
number : IntegerData = new;
numberastext : TextData;
numfmt.Template='L0000000';
strfmt.Template='A###-####';
number.SetValue(source = 23456);
// Format the number into a TextData.
numberastext=strfmt.FormatText(source = numfmt.FormatNumeric(source =
number));
You may have tried this already, but I hope it helps.
Regards
Iain
-----Original Message-----
From: Amin, Kamran [mailto:kamran.aminframeworkinc.com]
Sent: 18 February 2000 13:37
To: 'Forte User'
Subject: (forte-users) Formatting a number
I like to format a number as follows:
L###-#### - Where a number like 23456 would format to L002-3456.
Is there any way to do this in Forte using the NumericFormat object.
thanks in advance.
ka
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

Similar Messages

  • 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ü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: [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) Optimal number of records to fetch fromForte C ursor

    The reason why a single fetch of 20.000 records performs less then
    2 fetches of 10.000 might be related to memory behaviour. Do you
    keep the first 10.000 records in memory when you fetch the next
    10.000? If not, then a single fetch of 20.000 records requires more
    memory then 2 fetches of 10.000. You might have some extra over-
    head of Forte requesting additional memory from the OS, garbage
    collections just before every request for memory and maybe even
    the OS swapping some memory pages to disk.
    This behaviour can be controlled by modifying the Minimum memory
    and Maximum memory of the partition, as well as the memory chunk
    size Forte uses to increment its memory.
    Upon partition startup, Forte requests the Minimum memory from the
    OS. Whithin this area, the actual memory being used grows, until
    it hits the ceiling of this space. This is when the garbage collector
    kicks in and removes all unreferenced objects. If this does not suffice
    to store the additional data, Forte requests 1 additional chunk of a
    predefined size. Now, the same behaviour is repeated in this, slightly
    larger piece of memory. Actual memory keeps growing until it hits
    the ceiling, upon which the garbage collector removes all unrefer-
    enced objects. If the garbage collector reduces the amount of
    memory being used to below the original Miminum memory, Forte
    will NOT return the additional chunk of memory to the OS. If the
    garbage collector fails to free enough memory to store the new data,
    Forte will request an additional chunk of memory. This process is
    repeated untill the Maximum memory is reached. If the garbage
    collector fails to free enough memory at this point, the process
    terminates gracelessly (which is what happens sooner or later when
    you have a memory leak; something most Forte developpers have
    seen once or twice).
    Pascal Rottier
    STP - MSS Support & Coordination Group
    Philip Morris Europe
    e-mail: [email protected]
    Phone: +49 (0)89-72472530
    +++++++++++++++++++++++++++++++++++
    Origin IT-services
    Desktop Business Solutions Rotterdam
    e-mail: [email protected]
    Phone: +31 (0)10-2428100
    +++++++++++++++++++++++++++++++++++
    /* All generalizations are false! */
    -----Original Message-----
    From: [email protected] [SMTP:[email protected]]
    Sent: Monday, November 15, 1999 6:53 PM
    To: [email protected]
    Subject: (forte-users) Optimal number of records to fetch from Forte
    Cursor
    Hello everybody:
    I 'd like to ask a very important question.
    I opened Forte cursor with approx 1.2 million records, and now I am trying
    to figure out the number of records per fetch to obtain
    the acceptable performance.
    To my surprise, fetching 100 records at once gave me approx 15 percent
    performance gain only in comparsion
    with fetching records each by each.
    I haven't found significant difference in performance fetching 100, 500
    or
    10.000 records at once.In the same time, fetching 20.000
    records at once make a performance approx 20% worse( this fact I cannot
    explain).
    Does anybody have any experience in how to improve performance fetching
    from
    Forte cursor with big number of rows ?
    Thank you in advance
    Genady Yoffe
    Software Engineer
    Descartes Systems Group Inc
    Waterloo On
    Canada
    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]

    Hi Kieran,
    According to your description, you are going to figure out what is the optimal number of records per partition, right? As per my understanding, this number was change by your hardware. The better hardware you have, the more number of records per partition.
    The earlier version of the performance guide for SQL Server 2005 Analysis Services Performance Guide stated this:
    "In general, the number of records per partition should not exceed 20 million. In addition, the size of a partition should not exceed 250 MB."
    Besides, the number of records is not the primary concern here. Rather, the main criterion is manageability and processing performance. Partitions can be processed in parallel, so the more there are the more can be processed at once. However, the more partitions
    you have the more things you have to manage. Here is some links which describe the partition optimization
    http://blogs.msdn.com/b/sqlcat/archive/2009/03/13/analysis-services-partition-size.aspx
    http://www.informit.com/articles/article.aspx?p=1554201&seqNum=2
    Regards,
    Charlie Liao
    TechNet Community Support

  • RE: (forte-users) Optimal number of records to fetch fromForte Cursor

    Guys,
    The behavior (1 fetch of 20000 vs 2 fetches of 10000 each) may also be DBMS
    related. There is potentially high overhead in opening a cursor and initially
    fetching the result table. I know this covers a great deal DBMS technology
    territory here but one explanation is that the same physical pages may have to
    be read twice when performing the query in 2 fetches as compared to doing it in
    one shot. Physical IO is perhaps the most expensive (vis a vis- resources)
    part of a query. Just a thought.
    "Rottier, Pascal" <[email protected]> on 11/15/99 01:34:22 PM
    To: "'Forte Users'" <[email protected]>
    cc: (bcc: Charlie Shell/Bsg/MetLife/US)
    Subject: RE: (forte-users) Optimal number of records to fetch from Forte C
    ursor
    The reason why a single fetch of 20.000 records performs less then
    2 fetches of 10.000 might be related to memory behaviour. Do you
    keep the first 10.000 records in memory when you fetch the next
    10.000? If not, then a single fetch of 20.000 records requires more
    memory then 2 fetches of 10.000. You might have some extra over-
    head of Forte requesting additional memory from the OS, garbage
    collections just before every request for memory and maybe even
    the OS swapping some memory pages to disk.
    This behaviour can be controlled by modifying the Minimum memory
    and Maximum memory of the partition, as well as the memory chunk
    size Forte uses to increment its memory.
    Upon partition startup, Forte requests the Minimum memory from the
    OS. Whithin this area, the actual memory being used grows, until
    it hits the ceiling of this space. This is when the garbage collector
    kicks in and removes all unreferenced objects. If this does not suffice
    to store the additional data, Forte requests 1 additional chunk of a
    predefined size. Now, the same behaviour is repeated in this, slightly
    larger piece of memory. Actual memory keeps growing until it hits
    the ceiling, upon which the garbage collector removes all unrefer-
    enced objects. If the garbage collector reduces the amount of
    memory being used to below the original Miminum memory, Forte
    will NOT return the additional chunk of memory to the OS. If the
    garbage collector fails to free enough memory to store the new data,
    Forte will request an additional chunk of memory. This process is
    repeated untill the Maximum memory is reached. If the garbage
    collector fails to free enough memory at this point, the process
    terminates gracelessly (which is what happens sooner or later when
    you have a memory leak; something most Forte developpers have
    seen once or twice).
    Pascal Rottier
    STP - MSS Support & Coordination Group
    Philip Morris Europe
    e-mail: [email protected]
    Phone: +49 (0)89-72472530
    +++++++++++++++++++++++++++++++++++
    Origin IT-services
    Desktop Business Solutions Rotterdam
    e-mail: [email protected]
    Phone: +31 (0)10-2428100
    +++++++++++++++++++++++++++++++++++
    /* All generalizations are false! */
    -----Original Message-----
    From: [email protected] [SMTP:[email protected]]
    Sent: Monday, November 15, 1999 6:53 PM
    To: [email protected]
    Subject: (forte-users) Optimal number of records to fetch from Forte
    Cursor
    Hello everybody:
    I 'd like to ask a very important question.
    I opened Forte cursor with approx 1.2 million records, and now I am trying
    to figure out the number of records per fetch to obtain
    the acceptable performance.
    To my surprise, fetching 100 records at once gave me approx 15 percent
    performance gain only in comparsion
    with fetching records each by each.
    I haven't found significant difference in performance fetching 100, 500
    or
    10.000 records at once.In the same time, fetching 20.000
    records at once make a performance approx 20% worse( this fact I cannot
    explain).
    Does anybody have any experience in how to improve performance fetching
    from
    Forte cursor with big number of rows ?
    Thank you in advance
    Genady Yoffe
    Software Engineer
    Descartes Systems Group Inc
    Waterloo On
    Canada
    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]

    Hi Kieran,
    According to your description, you are going to figure out what is the optimal number of records per partition, right? As per my understanding, this number was change by your hardware. The better hardware you have, the more number of records per partition.
    The earlier version of the performance guide for SQL Server 2005 Analysis Services Performance Guide stated this:
    "In general, the number of records per partition should not exceed 20 million. In addition, the size of a partition should not exceed 250 MB."
    Besides, the number of records is not the primary concern here. Rather, the main criterion is manageability and processing performance. Partitions can be processed in parallel, so the more there are the more can be processed at once. However, the more partitions
    you have the more things you have to manage. Here is some links which describe the partition optimization
    http://blogs.msdn.com/b/sqlcat/archive/2009/03/13/analysis-services-partition-size.aspx
    http://www.informit.com/articles/article.aspx?p=1554201&seqNum=2
    Regards,
    Charlie Liao
    TechNet Community Support

  • 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) What could have caused the StopWatch classto r eturn

    Attila
    1. Ops - I DO instantiate it as follows:
    [snip]
    sw : StopWatch = new;
    [snip]
    I missed the "= new" in the orig mail message (cut/past from wrong
    workspace).
    2. LogWriter(deltaT:integer, t1:DateTimeData, t2:DateTimeData)
    [snip]
    task.part.logmgr.put('| ');
    task.part.logmgr.put(deltaT);
    task.part.logmgr.put(' | ');
    task.part.logmgr.put(t1);
    task.part.logmgr.put(' | ');
    task.part.logmgr.put(t2);
    task.part.logmgr.putline(' |');
    [snip]
    OK, it's just a quick 'n dirty but it does the job for testing.
    Regards,
    Dirk
    -----Original Message-----
    From: Attila R&aacute;cz [mailto:[email protected]]
    Sent: Thursday, 7 October 1999 14:35
    To: Haben, Dirk
    Subject: Re: (forte-users) What could have caused the
    StopWatch class to
    return a negative v alue?
    Hi Dirk,
    1. You don't instantiate the StopWatch object!!! So the
    attached code have to
    throw a NIL exception. On my PC it does:
    "Trying to invoke a method on a NIL object (qqos_StopWatch, 1)."
    2. Send the whole LogWriter method for analyzing.
    Attila
    "Haben, Dirk" wrote:
    G'day
    Suppose the following output is produced:
    Loaded Forte Message Catalog 'fortemsg/en_us.cat'
    NLM Startup is Complete - Partition's Locale is 'c'
    Loading partition CollectResponseStatistics_cl0_Client built on 30-Sep-1999
    09:12:28.
    Attached to manager for node BLAH.
    %DiH-I-VERID: CollectResponseStatistics_v371.002
    %DiH-I-BGP, BGP Started...
    %DiH-I, Repeat Interval (in milliseconds) 300000
    %DiH-I, Sample Account Number: 123456
    %DiH-I-BGPSTART, BackgroundProcessing started at: 07-Oct-1999 08:54:16
    | Total Time | Account Fetch | Account Fetch |
    | in milliSeconds | Start Time | Completion Time |
    |-----------------|----------------------|----------------------|
    | -194 | 07-Oct-1999 08:54:16 | 07-Oct-1999 08:54:17 |
    What could cause the stopwatch class to return this negative value? Here is
    the code that is run:
    sw : StopWatch;
    //that line is actual as follows:
    sw : StopWatch = new;
    //*****[Dirk]
    >>
    BP_t1 : DateTimeData = new;
    BP_t2 : DateTimeData = new;
    BP_t1.SetCurrent();
    self.LogWriter('%DiH-I-BGPSTART, BackgroundProcessing started at: ',BP_t1);
    self.LogWriterHeading();
    tmpAcc : account = new;
    sw.fire();
    BP_t1.SetCurrent();
    tmpAcc = self.AccountFetch(aAccountNumber);
    BP_t2.SetCurrent();
    deltaT : Integer = sw.split();
    self.LogWriter(deltaT,BP_t1,BP_t2);
    Oh, and the logwriter is just a formatted logmgr.put(deltaT) ,
    logmgr.put(t1) etc
    Any light on this one much appreciated.
    Thanks,
    Dirk
    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]
    Attila Racz Lufthansa
    Systems Hungary
    BUD LSYH
    E-mail: [email protected] .-``'.
    Tel.: (36 1) 431-2910 .` .' Mazsa ter 2-6.
    Fax : (36 1) 431-2977 _.-' '._ H-1107
    Budapest, Hungary

    Attila
    1. Ops - I DO instantiate it as follows:
    [snip]
    sw : StopWatch = new;
    [snip]
    I missed the "= new" in the orig mail message (cut/past from wrong
    workspace).
    2. LogWriter(deltaT:integer, t1:DateTimeData, t2:DateTimeData)
    [snip]
    task.part.logmgr.put('| ');
    task.part.logmgr.put(deltaT);
    task.part.logmgr.put(' | ');
    task.part.logmgr.put(t1);
    task.part.logmgr.put(' | ');
    task.part.logmgr.put(t2);
    task.part.logmgr.putline(' |');
    [snip]
    OK, it's just a quick 'n dirty but it does the job for testing.
    Regards,
    Dirk
    -----Original Message-----
    From: Attila R&aacute;cz [mailto:[email protected]]
    Sent: Thursday, 7 October 1999 14:35
    To: Haben, Dirk
    Subject: Re: (forte-users) What could have caused the
    StopWatch class to
    return a negative v alue?
    Hi Dirk,
    1. You don't instantiate the StopWatch object!!! So the
    attached code have to
    throw a NIL exception. On my PC it does:
    "Trying to invoke a method on a NIL object (qqos_StopWatch, 1)."
    2. Send the whole LogWriter method for analyzing.
    Attila
    "Haben, Dirk" wrote:
    G'day
    Suppose the following output is produced:
    Loaded Forte Message Catalog 'fortemsg/en_us.cat'
    NLM Startup is Complete - Partition's Locale is 'c'
    Loading partition CollectResponseStatistics_cl0_Client built on 30-Sep-1999
    09:12:28.
    Attached to manager for node BLAH.
    %DiH-I-VERID: CollectResponseStatistics_v371.002
    %DiH-I-BGP, BGP Started...
    %DiH-I, Repeat Interval (in milliseconds) 300000
    %DiH-I, Sample Account Number: 123456
    %DiH-I-BGPSTART, BackgroundProcessing started at: 07-Oct-1999 08:54:16
    | Total Time | Account Fetch | Account Fetch |
    | in milliSeconds | Start Time | Completion Time |
    |-----------------|----------------------|----------------------|
    | -194 | 07-Oct-1999 08:54:16 | 07-Oct-1999 08:54:17 |
    What could cause the stopwatch class to return this negative value? Here is
    the code that is run:
    sw : StopWatch;
    //that line is actual as follows:
    sw : StopWatch = new;
    //*****[Dirk]
    >>
    BP_t1 : DateTimeData = new;
    BP_t2 : DateTimeData = new;
    BP_t1.SetCurrent();
    self.LogWriter('%DiH-I-BGPSTART, BackgroundProcessing started at: ',BP_t1);
    self.LogWriterHeading();
    tmpAcc : account = new;
    sw.fire();
    BP_t1.SetCurrent();
    tmpAcc = self.AccountFetch(aAccountNumber);
    BP_t2.SetCurrent();
    deltaT : Integer = sw.split();
    self.LogWriter(deltaT,BP_t1,BP_t2);
    Oh, and the logwriter is just a formatted logmgr.put(deltaT) ,
    logmgr.put(t1) etc
    Any light on this one much appreciated.
    Thanks,
    Dirk
    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]
    Attila Racz Lufthansa
    Systems Hungary
    BUD LSYH
    E-mail: [email protected] .-``'.
    Tel.: (36 1) 431-2910 .` .' Mazsa ter 2-6.
    Fax : (36 1) 431-2977 _.-' '._ H-1107
    Budapest, Hungary

  • Re: (forte-users) FW: (forte-users) Serialisation

    Here is a Word formatted copy of the Tech Note
    "Slabbert, Etienne" <etiennemds.co.za> 02/17/00 04:10AM >>>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
    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

    Here is a Word formatted copy of the Tech Note
    "Slabbert, Etienne" <etiennemds.co.za> 02/17/00 04:10AM >>>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
    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) 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: (forte-users) Fusion for the VAR

    Hi,
    It is a good idea. In fact, I think that how Forte is
    going to integrate her own suite of app. too. ( I
    kind of recall that there is a speech on this topic in
    Forum ).
    However, as Forte will most likely goes toward Java, I
    would suggest that you take into account the
    abstraction on Conductor ( which is frankly an event
    broker ) and Fusion ( which handles the XML mapping )
    too. In doing so, you can save guard your investment
    on the design without binding tightly with FORTE and I
    bet there will be tons of event broker or XML parser
    in the future market.
    On the other hand, this integration by Fusion would be
    perfect for a perfect world. But, in this imperfect
    world, it would be hard to do cross-checking between
    apps in Fusion.
    In the old days, we repulicate data or do file
    transfer to integrate apps. In doing so, we also
    build-in all the cross-checking procedure / reports.
    In the case of Fusion, is there such a safety net to
    save guard data integrity. Can I identify a lost
    event and trace back to find out whether it is a app.
    problem or Conductor problem?
    I think the customer would surely like to know.
    Regards,
    Peter Sham.
    --- "Thomas Mercer-Hursh, Ph.D."
    <[email protected]> wrote:
    Fusion has been positioned as an EAI tool, something
    at which it appears to
    be very, very good, but in recent months I have been
    thinking about its
    possible role as an architectural tool for those of
    us who build large,
    multi-application suites of applications. Having
    been tossing some of
    these ideas around the halls at Harrison Street, I
    thought I would try some
    of them on this audience as well to see what
    reaction I got.
    This concept is based on the context that one has
    multiple interacting
    applications which are loosely coupled, or at least
    which should be. E.g.,
    an order processing application may need credit
    status information from an
    accounts receivable application and may generate
    invoices which then need
    to be tracked for payment by that application, but
    the connections between
    these applications are specific, limited, and
    readily enumerable. Mind
    you, people don't always build their applications so
    cleanly modularized,
    but I think we all agree these days that they should
    be.
    The idea is to provide each application with a
    specific API, which it may
    currently have only indirectly. I.e., today one
    might simply have calls
    directly from one application to another, but one
    would gather all these
    links together and define an API, probably in XML
    which covered all of the
    necessary communciations between applications.
    These would then be used to
    build a Fusion Proxy and one would build the
    necessary Conductor processes
    to handle the communications which previously might
    have been made directly
    between applications. There is probably some
    performance loss in this
    process, but many of these interfaces are not
    performance intensive and my
    bet is that if the whole Fusion concept has adequate
    performance for the
    purposes for which it is being primarily marketed,
    then it has the
    performance for this sort of usage.
    One would get several advantages from this
    structure:
    1) Interapplication communications would be handled
    by a Conductor process
    and thus be much more readily configurable than any
    hard-coded link.
    2) One would gain the ability to unplug one's own
    application and plug in a
    customer's application when the customer insisted on
    using something else.
    3) The discipline of working in this structure would
    insure clean boundries
    between applications, which is not only sound
    design, but promotes the
    flexibility of the overall suite.
    4) Those with untransitioned legacy applications
    would have a framework
    that would allow a mixture of new and old
    applications to co-exist, thus
    providing them with a transition strategy until the
    full product line was
    converted.
    Note that I am assuming that one would want to build
    the individual
    applications so that they also used Conductor for
    managing their business
    process logic, but that seems to me to be an
    independent decision from this
    one.
    So, comments?
    Any downsides?
    Any added benefits I haven't covered here?
    Are there many out there that would benefit from
    this approach or just a few?
    Is anyone doing anything like this?
    Note that the one downside I have found so far is
    that Fusion licensing,
    independent of the Conductor aspect, is based on the
    number of proxies and
    so someone like CI who has 15 or more applications
    in a typical site is
    going to have 15 or more proxies. My bet is that
    this can be handled once
    it is clear that use of Fusion by a VAR for
    integrating own applications is
    not the same use as by an end-user integrating
    arbitrary multiple applications.
    =========================================================================
    Thomas Mercer-Hursh, Ph.D email:
    [email protected]
    Computing Integrity, Inc. sales:
    510-233-9329
    550 Casey Drive - Cypress Point support:
    510-233-9327
    Point Richmond, CA 94801-3751 fax:
    510-233-6950
    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]
    =====

    Yes, they do & one page is 1KB page. We use the same instrument to check
    memory usage & to send alerts in our production system.
    Thanks.
    Suraj
    -----Original Message-----
    From: Epari, Madhusudhan [mailto:[email protected]]
    Sent: Monday, May 14, 2001 2:37 PM
    To: 'Saraf, Suraj'; 'Forte User Forum'
    Subject: RE: (forte-users) Instrument for memory used in the partition
    Thanks all for the response. I observed "Allocated Pages" instrument doesn't
    change as and when memory usage by the partition changes. I was trying to
    find a way to measure the actual memory (specifically in bytes or KBs).
    Thanks,
    Madhu
    -----Original Message-----
    From: Saraf, Suraj [mailto:[email protected]]
    Sent: Thursday, May 10, 2001 12:46 PM
    To: 'Epari, Madhusudhan'; 'Forte User Forum'
    Subject: RE: (forte-users) Instrument for memory used in the partition
    Hello,
    I think you can use 'OperatingSystem' service agent & check 'AllocatedPages'
    instrument to see how many memory pages are used. You can compare that with
    your maximum allocation & send alerts depending on that. Thanks.
    Suraj
    -----Original Message-----
    From: Epari, Madhusudhan [mailto:[email protected]]
    Sent: Thursday, May 10, 2001 11:15 AM
    To: 'Forte User Forum'
    Subject: (forte-users) Instrument for memory used in the partition
    Hello Everyone,
    Is there an instrument to track the memory used in the partition at a given
    point of time. I have a requirement where an alert has to be generated in
    the environment when partition uses all its available memory.
    Thanks in advance,
    Madhu
    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: [email protected]

  • Re: (forte-users) Accessing Technote 10398

    Ketie,
    let's see, I have been using FORTE since November of
    1994. since the beginning those flags have been common
    knowledge within the FORTE community and widely
    disseminated.
    the FORTE flags have been invaluable to me and HAVE
    NEVER caused any downtime. sure, there are a few
    wildcards in there that can cause trouble, but to
    throw out the baby with the bathwater is ridiculous.
    what would life be without trc:lo:25? to trace
    exceptions.
    or trc:os:1:1 and trc:os:5:5 to tune memory
    consumption?
    Should i have to call a consultant or FORTE tech
    support to do the deep dive on exceptions or tune my
    applications? I think not.
    Overreaction? No.
    Mark.
    --- Katie Tierney <katiethetierneys.com> wrote:
    I think y'all are overreacting. There are log flags
    that are detailed in
    Technote 10398 that can cause serious implications
    if used improperly. I
    think Forte/Sun just wants to make sure that people
    don't make mistakes that
    cost them valuable time.
    As a Forte Consultant for many years, I have seen a
    good number of people
    misuse information that was not completely
    understood. In some cases, this
    caused excessive downtime for production
    applications. The only time I ever
    saw Technote 10398 being provided to a customer was
    when they were utilizing
    Forte Consulting, or when a Technical Support
    Engineer was heavily involved.
    I was extremely surprised to learn that it was
    available to non-employees via
    the website - that sounds as if someone may have
    inadvertantly marked it as
    customer-viewable (incorrectly, obviously) in Sun's
    internal systems.
    Again, I think you're overreacting. I am sure that
    this isn't a case of Sun
    thinking anyone is "stupid." It's a matter of
    providing the support that
    people need to properly utilize the tools available.
    -Katie
    mark joyce wrote:
    read: Sometimes, the technotes are markedunviewable
    to customers because they might need further
    explanation. Let me know if you need to log acase.
    in other words, you are TOO STUPID to use FORTElogger
    flags, although they have been widely distributedand
    used for years by FORTE users.
    i can't believe it either. i don't know what iwould
    have done for the last 5 years without using theFORTE
    flags. such a wealth of good output!
    what an excuse! "they might need furtherexplanation"
    .. if i had to log every problem with FORTE,instead
    of resolving them myself through the information
    obtained by using flags, i would have lost my joba
    long time ago.
    mark.
    --- Jeff Bennett <jeff_bennettsehamerica.com>wrote:
    I thought it might be prudent to share with youthe
    response I received from Sun
    regarding the inability to access technote 10398
    (Fort&eacute; logger flags). I was
    able to access it 3+ weeks ago, and fortunatelykept
    a hard-copy. But, how are
    we supposed to do our job effectively and
    expediently if we do not have
    (complete) access to this resource?
    I thought the technotes were completely open tothe
    Fort&eacute; development
    community.... wrong.
    -jeff
    ---------------------- Forwarded by JeffBennett/SEH
    on 09/11/2000 09:02 AM
    Forte Support <supportforte.com> on 09/08/2000
    10:05:17 AM
    To: Jeff Bennett/SEHsehamerica.com
    cc:
    Subject: Re: Accessing Technote 10398
    Fax to:
    Hello Jeff,
    Were you at one point able to access thistechnote?
    You know why -- it's
    because this technote is marked for employeeviewing
    only and not available
    for customer viewing. If you need further
    assistance or need to look at
    this technote, what you would need to do is loga
    call with us and then a
    tech support specialist will give you a callback.
    Sometimes, the
    technotes are marked unviewable to customersbecause
    they might need
    further explanation. Let me know if you need tolog
    a case.
    Thanks!
    At 09:57 AM 9/8/00 -0700, you wrote:
    I am no longer able to access technote 10398
    (forte
    logger flags)... why?
    -jeff~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
    Sun&reg; microsystems
    Jeannie Lee
    Phone: (510) 451-5400
    Fax (510) 869-2010
    Email: jeannie.leesun.com
    Forte Tools Response Coordinator
    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
    http://mail.yahoo.com/
    For the archives, go to:
    http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. Tounsubscribe, send in a new
    email the word: 'Unsubscribe' to:forte-users-requestlists.xpedior.com
    http://mail.yahoo.com/

    Ketie,
    let's see, I have been using FORTE since November of
    1994. since the beginning those flags have been common
    knowledge within the FORTE community and widely
    disseminated.
    the FORTE flags have been invaluable to me and HAVE
    NEVER caused any downtime. sure, there are a few
    wildcards in there that can cause trouble, but to
    throw out the baby with the bathwater is ridiculous.
    what would life be without trc:lo:25? to trace
    exceptions.
    or trc:os:1:1 and trc:os:5:5 to tune memory
    consumption?
    Should i have to call a consultant or FORTE tech
    support to do the deep dive on exceptions or tune my
    applications? I think not.
    Overreaction? No.
    Mark.
    --- Katie Tierney <katiethetierneys.com> wrote:
    I think y'all are overreacting. There are log flags
    that are detailed in
    Technote 10398 that can cause serious implications
    if used improperly. I
    think Forte/Sun just wants to make sure that people
    don't make mistakes that
    cost them valuable time.
    As a Forte Consultant for many years, I have seen a
    good number of people
    misuse information that was not completely
    understood. In some cases, this
    caused excessive downtime for production
    applications. The only time I ever
    saw Technote 10398 being provided to a customer was
    when they were utilizing
    Forte Consulting, or when a Technical Support
    Engineer was heavily involved.
    I was extremely surprised to learn that it was
    available to non-employees via
    the website - that sounds as if someone may have
    inadvertantly marked it as
    customer-viewable (incorrectly, obviously) in Sun's
    internal systems.
    Again, I think you're overreacting. I am sure that
    this isn't a case of Sun
    thinking anyone is "stupid." It's a matter of
    providing the support that
    people need to properly utilize the tools available.
    -Katie
    mark joyce wrote:
    read: Sometimes, the technotes are markedunviewable
    to customers because they might need further
    explanation. Let me know if you need to log acase.
    in other words, you are TOO STUPID to use FORTElogger
    flags, although they have been widely distributedand
    used for years by FORTE users.
    i can't believe it either. i don't know what iwould
    have done for the last 5 years without using theFORTE
    flags. such a wealth of good output!
    what an excuse! "they might need furtherexplanation"
    .. if i had to log every problem with FORTE,instead
    of resolving them myself through the information
    obtained by using flags, i would have lost my joba
    long time ago.
    mark.
    --- Jeff Bennett <jeff_bennettsehamerica.com>wrote:
    I thought it might be prudent to share with youthe
    response I received from Sun
    regarding the inability to access technote 10398
    (Fort&eacute; logger flags). I was
    able to access it 3+ weeks ago, and fortunatelykept
    a hard-copy. But, how are
    we supposed to do our job effectively and
    expediently if we do not have
    (complete) access to this resource?
    I thought the technotes were completely open tothe
    Fort&eacute; development
    community.... wrong.
    -jeff
    ---------------------- Forwarded by JeffBennett/SEH
    on 09/11/2000 09:02 AM
    Forte Support <supportforte.com> on 09/08/2000
    10:05:17 AM
    To: Jeff Bennett/SEHsehamerica.com
    cc:
    Subject: Re: Accessing Technote 10398
    Fax to:
    Hello Jeff,
    Were you at one point able to access thistechnote?
    You know why -- it's
    because this technote is marked for employeeviewing
    only and not available
    for customer viewing. If you need further
    assistance or need to look at
    this technote, what you would need to do is loga
    call with us and then a
    tech support specialist will give you a callback.
    Sometimes, the
    technotes are marked unviewable to customersbecause
    they might need
    further explanation. Let me know if you need tolog
    a case.
    Thanks!
    At 09:57 AM 9/8/00 -0700, you wrote:
    I am no longer able to access technote 10398
    (forte
    logger flags)... why?
    -jeff~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
    Sun&reg; microsystems
    Jeannie Lee
    Phone: (510) 451-5400
    Fax (510) 869-2010
    Email: jeannie.leesun.com
    Forte Tools Response Coordinator
    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
    http://mail.yahoo.com/
    For the archives, go to:
    http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. Tounsubscribe, send in a new
    email the word: 'Unsubscribe' to:forte-users-requestlists.xpedior.com
    http://mail.yahoo.com/

  • Re: (forte-users) Minimal Fusion

    Thomas,
    A response which may contain no answers...and may lead to more questions...
    As a novice fusion user, one of the largest obstacles to using Fusion is the lack of XML API's in an application, be it a customer's in-house or vendor's software product. Corresponding to this is simply the lack of any API's in the application. As Forte (abet Sun, now iPlanet) says in their training manual 'A nontrivial task is to build new adapters for your programs if you wish to enable them to interact using XML documents over HTTP'. This is probably an understatement.
    The question that come to mind is:
    Does the warehouse have published API's their product?
    If not, then, IMHO, you have steep hill to climb, not the least being communication, cooperation, and coordination from the warehouse vendor (another one of those 'nontrivial tasks') in trying to create the required API's
    if so, then it is a matter of building an adapter, in a language that is compatible with the warehouse's API (hopefully C or some derivation of) , that contains (1) a DOM (Document Object Module) to API Translator, (2) an XML Parser (converts XML to DOM and visa-versa) , and (3) a HTTP server (again, another one of those 'nontrivial tasks').
    Forte (abet Sun, now iPlanet) suggests, and I would concur (with reservations), that if you haven't done this before you should probably hire their services from the Forte Integration Services group. Their costs (admittible high) should be offset be the time it would take to develop one on your own. A side benefit is working with them, you learn the process for making other adapters in the future. If Fusion is a marketing success, then the benefits should out weigh the costs.
    The Forte Integration Services group markets, or will market, a Fusion Adapter Designer, some sort of a SDK, which assists in the creation of Adapters. I do not know the availability of that product at this time.
    As to your question "Is it reasonable to consider doing this project under Fusion as a
    getting-feet-wet experience?" If you (or your customer) can afford the costs, and the warehouse has published API's, I would say that you gotta get-your-feet-wet somehow. If the warehouse doesn't have published API's and are not willing to put forth the effort and resources to do so, I would say your chances of success are considerably less.
    In any case, IMHO, it will be a 'non trivial' undertaking.
    -later
    -labeaux
    "Thomas Mercer-Hursh, Ph.D." <thomascintegrity.com> 10/31/00 04:49PM >>>This may be one of those questions which has no answer, but ...
    Our long term plan is to develop XML APIs to each of the modules in our
    suite of non-Forte applications and to integrate these under Fusion, thus
    gaining Conductor management of the inter-module work flows and a cleaner
    loose coupling of the applications along with other benefits such as the
    ease of integration with other packages, a clean way to migrate to Forte
    modules, and an ease of interconnecting "mini-applications" to address
    specific customer needs.
    I have an existing customer who has made a decision to migrate to a third
    party warehouse from an in-house warehouse. I.e., were this transition to
    the new structure complete, this would correspond to unhooking some of our
    modules and replacing these with an adapter to the corresponding modules in
    the third party warehouse.
    In fact, as it looks now, I will need to build the logical equivalent of
    these APIs anyway -- might as well do it in XML, right? And these APIs
    will communicate with a daemon responsible for the message traffic to and
    from. I tried to get this traffic to be XML and to use MQSeries or JMS as
    the transport, but the folks at the warehouse end don't seem to be able to
    handle such things, so I am stuck doing something fairly stupid for the
    actual communication.
    So, the question for those out there who have already paid their Fusion
    dues, is it reasonable to consider doing this project under Fusion as a
    getting-feet-wet experience. There are only half a dozen APIs to do and I
    have to do those anyway and am inclined to make them XML regardless. There
    will be one communication daemon to which all these connect and the
    business processes originally implemented in Conductor will basically be
    just point to point connects, except for routing traffic from the daemon to
    the right API based on message type. That's really all I need it to do,
    i.e., far too simple to actually need Fusion, but a possible opportunity
    to get started and then to expand to other uses.
    Crazy?
    =========================================================================
    Thomas Mercer-Hursh, Ph.D email: thomascintegrity.com
    Computing Integrity, Inc. sales: 510-233-9329
    550 Casey Drive - Cypress Point support: 510-233-9327
    Point Richmond, CA 94801-3751 fax: 510-233-6950
    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

    At 07:55 AM 11/1/00, Labeaux Schiek wrote:
    As a novice fusion user, one of the largest obstacles to using Fusion is
    the lack of XML API's in an application, be it a customer's in-house or
    vendor's software product.In this case, the good news is that one of the applications in question is
    our own, so whipping up an XML API to suit each required transaction on
    that side is no more, probably less, work than importing or exporting a
    flat file or whatever. Moreover, my current expectation of how this
    interaction will work is something like this:
    </pre>
    ---Fusion------
    | |
    WACS<-->WACS_Daemon<----VPN socket
    connection---->IS_Daemon I/S
    </pre>
    I.e., I/S, our application, and the IS_Daemon which handles the connection
    traffic across the internet link are both mine. For I/S, I will create XML
    APIs to suit. For the IS_daemon, I might use the transform facilities to
    convert this XML to the pipe-delimited format they are expected at the
    other end and make the daemon a simple manager of the connection or, the
    daemon could do the conversion, but the former seems like the more
    appropriate approach. The API between the two daemons is something we are
    defining now (unfortunately I lost the argument to make that XML).
    Corresponding to this is simply the lack of any API's in the
    application. As Forte (abet Sun, now iPlanet) says in their training
    manual 'A nontrivial task is to build new adapters for your programs if
    you wish to enable them to interact using XML documents over HTTP'.My neophyte understanding is that, since I am defining the API to I/S in
    the diagram above and I can make this XML, then the adapter issue
    disappears there. I might have to create an adapter for the daemon, but if
    necessary, I could make that the same XML on a pass through and do the
    translation in the daemon.
    If not, then, IMHO, you have steep hill to climb, not the least being
    communication, cooperation, and coordination from the warehouse vendor
    (another one of those 'nontrivial tasks') in trying to create the required
    API'sWe are well through this process anyway. ... which is not to say that it
    has been or will be easy, but it must be done whether I use Fusion or
    not. Given that the vote has gone in favor of simple messages of
    pipe-delimited records, i.e., basically flat file, the technical issues
    there are minimal.
    if so, then it is a matter of building an adapter, in a language that is
    compatible with the warehouse's API (hopefully C or some derivation of) ,
    that contains (1) a DOM (Document Object Module) to API Translator, (2)
    an XML Parser (converts XML to DOM and visa-versa) , and (3) a HTTP server
    (again, another one of those 'nontrivial tasks').I'm not sure I quite understand what you are saying here. The HTTP part
    won't be there since we will apparently be connecting via a VPN sockets
    connection. But, how are you distinguishing DOM and XML since DOM is a
    particular form of XML? The XML API I build for I/S will be DOM compliant.
    Forte (abet Sun, now iPlanet) suggests, and I would concur (with
    reservations), that if you haven't done this before you should probably
    hire their services from the Forte Integration Services group. Their
    costs (admittible high) should be offset be the time it would take to
    develop one on your own. A side benefit is working with them, you learn
    the process for making other adapters in the future. If Fusion is a
    marketing success, then the benefits should out weigh the costs.I am familiar with the "party" line. If I were building a complete
    interface to another major product (I/S is roughly equivalent to JDEC in
    coverage) in the context of an EAI project, I would happily invite them in
    and hope to pick up pointers. Here, though, there are only 8 or 9 total
    transaction types and either all of the interfaces are XML, i.e., no
    adapter required as I understand it, or only the daemon will need an
    adapter and that will be a choice I can make depending on how things
    go. One does wish it were possible to sample a small piece of that
    knowledge store without having to buy the whole thing, though.
    The Forte Integration Services group markets, or will market, a Fusion
    Adapter Designer, some sort of a SDK, which assists in the creation of
    Adapters. I do not know the availability of that product at this time.Last I checked, one couldn't get this without the consulting ... hence the
    last sentence above.
    Thanks for your input.
    =========================================================================
    Thomas Mercer-Hursh, Ph.D email: thomascintegrity.com
    Computing Integrity, Inc. sales: 510-233-9329
    550 Casey Drive - Cypress Point support: 510-233-9327
    Point Richmond, CA 94801-3751 fax: 510-233-6950

  • Re: [(forte-users) Need help w/SQL to Informix using anarray in WHERE c

    Bob.
    That syntax isn't know Forte, used Dynamic SQL and coding
    it dynamically. And the SQL statement exceed 255 bytes, divide in 2 or more
    sentences (NameListCity1, NameListCity2, NalmeListCountry1, ...)
    Try with:
    NameListCity = 'city1','city2','city3'...
    NalmeListCountry = 'country1','country2','country3',...
    WHERE
    city in (:NameListCity) and
    country_code in (:NameListCountry)
    Bye.
    "Briggs, Bob" <Bob.Briggsmarriott.com> wrote:
    I'm trying to invoke a query to Informix to select rows that match any of
    the city / country pairs that exist in an array that is passed into the
    method. The SQL itself seems to be OK however it appears that Forte is
    having a problem in parsing the Select statement when it gets to the WHERE
    clause. The resulting exception shows the SQL string formatted properly up
    to the WHERE clause which ends like "WHERE city". Does anyone know of a way
    to make this type of query work in a single invocation? I'm trying not to
    issue multiple queries as would be the case if I used Dynamic SQL and coding
    it dynamically with multiple OR statements is not really an option since the
    overall length of the SQL statement cannot exceed 256 bytes. I have included
    an example of the code below, any insight would be greatly appreciated.
    SQL SELECT address1 tnAddress, city tnCity, state tnState, zipcode
    tnZipcode,
    hotel_code tnHotel_Code, name tnHotelName, product_code
    tnProduct_code, loc_type tnLoc_Type,
    phone tnPhone, country_code tnCountry
    INTO
    :po_aboLocator
    FROM
    Hotel
    WHERE
    city in :pi_aboNickNameList[*].sCityName and
    country_code in :pi_aboNickNameList[*].sCountryCode
    ON SESSION getDBSession();
    Thank you very much,
    Bob
    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

    Bob.
    That syntax isn't know Forte, used Dynamic SQL and coding
    it dynamically. And the SQL statement exceed 255 bytes, divide in 2 or more
    sentences (NameListCity1, NameListCity2, NalmeListCountry1, ...)
    Try with:
    NameListCity = 'city1','city2','city3'...
    NalmeListCountry = 'country1','country2','country3',...
    WHERE
    city in (:NameListCity) and
    country_code in (:NameListCountry)
    Bye.
    "Briggs, Bob" <Bob.Briggsmarriott.com> wrote:
    I'm trying to invoke a query to Informix to select rows that match any of
    the city / country pairs that exist in an array that is passed into the
    method. The SQL itself seems to be OK however it appears that Forte is
    having a problem in parsing the Select statement when it gets to the WHERE
    clause. The resulting exception shows the SQL string formatted properly up
    to the WHERE clause which ends like "WHERE city". Does anyone know of a way
    to make this type of query work in a single invocation? I'm trying not to
    issue multiple queries as would be the case if I used Dynamic SQL and coding
    it dynamically with multiple OR statements is not really an option since the
    overall length of the SQL statement cannot exceed 256 bytes. I have included
    an example of the code below, any insight would be greatly appreciated.
    SQL SELECT address1 tnAddress, city tnCity, state tnState, zipcode
    tnZipcode,
    hotel_code tnHotel_Code, name tnHotelName, product_code
    tnProduct_code, loc_type tnLoc_Type,
    phone tnPhone, country_code tnCountry
    INTO
    :po_aboLocator
    FROM
    Hotel
    WHERE
    city in :pi_aboNickNameList[*].sCityName and
    country_code in :pi_aboNickNameList[*].sCountryCode
    ON SESSION getDBSession();
    Thank you very much,
    Bob
    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-digest V1 #89

    forte-users-digest Tuesday, 8 October 1996 Volume 01 : Number 089
    From: Alexander Ananiev <[email protected]>
    Date: Tue, 08 Oct 1996 16:36:14 -0500
    Subject: "Single DBSession" approach
    The standard Forte approach for the database access assumes
    that one DBSession handles requests from several users
    (clients), so the database connection is not associated with
    the particular user. This significantly impacts the
    architecture of the Forte application. Some of the problems
    caused by this approach are:
    1) An application-level security system should be developed
    instead of using the DBMS security system. Suffice it to say
    that application-level security system cannot provide the
    protection from back-door access to the database.
    2) The application cannot utilize the DBMS locking mechanism
    for the case when the record is retrieved to the client for
    editing purposes ("long" transaction).
    It means that SecurityManager and LockManager should be
    developed to resolve these problems. This does not seem to be
    very good solution because these objects are intended to repeat
    the functionality of the DBMS. And these parts of the
    application may become pretty complicated. For example, my
    project's experience shows that the development of the lock
    manager is not a trivial task and most likely this lock manager
    will be worse than the DBMS locking mechanism in terms of
    reliability and performance just because it acts as an outside
    program to the database. Besides, this approach could cause
    serious problems if the database can be updated by non-Forte
    applications (e.g., by some legacy system or batch process).
    "One DBSession per several users" approach makes sense if each
    user connection to the database is implemented as one
    server process.(Another good argument in favor of single
    DBsession is a heterogeneous environment where there is no
    stable connection to one database, but here I'm talking about a
    "regular" application that uses only one DBMS.) Since most of
    the time this process is idle, then, of course, decreasing the
    number of processes leads to better server utilization and
    performance. But by its sense, database connection is just the
    current transaction ID (with the user id, of course). So the
    connection could be just a number that should be passed to the
    DBMS along with each request and then DBMS can create a thread
    to handle the request or forward it to the next available
    process if it does not support multithreading.
    DBMS vendors realize this and some of them already implemented
    this approach (I know that Oracle and Informix did that and
    Sybase was mentioned in the recent "one-threaded DBSession"
    discussion). And one-threaded DBSession that lives on the
    server doesn't fit well to that. The better approach would be
    to make DBSession the attribute of the TransactionHandle
    object, so the current connection will always be passed from
    the client to the service and this service can work through
    this connection.
    So, my point is that the application should let DBMS do its
    work and use as much of the functionality of the DBMS as
    possible and the "single DBsession" approach doesn't help it to
    do that.
    I would be glad to hear any other opinion on this topic. I
    think that the "DBsession" problem is extremely important for
    any multi-tier application (for example, all Web applications
    are facing this problem). I'm also interested in how people
    are dealing with this problem on other projects, for example if
    there are some projects where the alternative approach (one
    DBSession per each user) was implemented and what problems were
    encountered during that.
    Alexander Ananyev
    Price Waterhouse
    End of forte-users-digest V1 #89
    One of the first issues that needs to be addressed is that passing
    DBSessions from partition to partition is a huge performance hit. When
    Forte executes a SQL SELECT or FETCH statement on a DBSession that exists
    outside the current partition (DBSessions are "anchored" objects that are
    accessed via proxies.) Forte fetches the result set into the partition
    containing the DBSession and then passes proxies or creates copies into
    the partition where the SQL code is located. These are some of the
    largest performance hits you can take in Forte.

    forte-users-digest Tuesday, 8 October 1996 Volume 01 : Number 089
    From: Alexander Ananiev <[email protected]>
    Date: Tue, 08 Oct 1996 16:36:14 -0500
    Subject: "Single DBSession" approach
    The standard Forte approach for the database access assumes
    that one DBSession handles requests from several users
    (clients), so the database connection is not associated with
    the particular user. This significantly impacts the
    architecture of the Forte application. Some of the problems
    caused by this approach are:
    1) An application-level security system should be developed
    instead of using the DBMS security system. Suffice it to say
    that application-level security system cannot provide the
    protection from back-door access to the database.
    2) The application cannot utilize the DBMS locking mechanism
    for the case when the record is retrieved to the client for
    editing purposes ("long" transaction).
    It means that SecurityManager and LockManager should be
    developed to resolve these problems. This does not seem to be
    very good solution because these objects are intended to repeat
    the functionality of the DBMS. And these parts of the
    application may become pretty complicated. For example, my
    project's experience shows that the development of the lock
    manager is not a trivial task and most likely this lock manager
    will be worse than the DBMS locking mechanism in terms of
    reliability and performance just because it acts as an outside
    program to the database. Besides, this approach could cause
    serious problems if the database can be updated by non-Forte
    applications (e.g., by some legacy system or batch process).
    "One DBSession per several users" approach makes sense if each
    user connection to the database is implemented as one
    server process.(Another good argument in favor of single
    DBsession is a heterogeneous environment where there is no
    stable connection to one database, but here I'm talking about a
    "regular" application that uses only one DBMS.) Since most of
    the time this process is idle, then, of course, decreasing the
    number of processes leads to better server utilization and
    performance. But by its sense, database connection is just the
    current transaction ID (with the user id, of course). So the
    connection could be just a number that should be passed to the
    DBMS along with each request and then DBMS can create a thread
    to handle the request or forward it to the next available
    process if it does not support multithreading.
    DBMS vendors realize this and some of them already implemented
    this approach (I know that Oracle and Informix did that and
    Sybase was mentioned in the recent "one-threaded DBSession"
    discussion). And one-threaded DBSession that lives on the
    server doesn't fit well to that. The better approach would be
    to make DBSession the attribute of the TransactionHandle
    object, so the current connection will always be passed from
    the client to the service and this service can work through
    this connection.
    So, my point is that the application should let DBMS do its
    work and use as much of the functionality of the DBMS as
    possible and the "single DBsession" approach doesn't help it to
    do that.
    I would be glad to hear any other opinion on this topic. I
    think that the "DBsession" problem is extremely important for
    any multi-tier application (for example, all Web applications
    are facing this problem). I'm also interested in how people
    are dealing with this problem on other projects, for example if
    there are some projects where the alternative approach (one
    DBSession per each user) was implemented and what problems were
    encountered during that.
    Alexander Ananyev
    Price Waterhouse
    End of forte-users-digest V1 #89
    One of the first issues that needs to be addressed is that passing
    DBSessions from partition to partition is a huge performance hit. When
    Forte executes a SQL SELECT or FETCH statement on a DBSession that exists
    outside the current partition (DBSessions are "anchored" objects that are
    accessed via proxies.) Forte fetches the result set into the partition
    containing the DBSession and then passes proxies or creates copies into
    the partition where the SQL code is located. These are some of the
    largest performance hits you can take in Forte.

  • RE: (forte-users) Changing replication options in Fscript? -Tric k

    There was one attribute of a service object you couldn't change in fscript..
    I think it was whether the service was replicated at all or not (not the
    same as setting rep count to 1!).
    As Clint would say, "improvise.."
    We exported the project containing the service object and snipped out the
    part pertaining to the service object in to a little export file.
    Then in an fscript script you can branch/checkout the service object and
    import the snipped out export file to change the replicated yes/no flag.
    Then do whatever other fscript commands make sense.. We tended to leave the
    system baseline with the "true" replication flags and let developers run
    this little script (only branching the services) to de-replicate all the
    replicated services prior to trying to run from their workspace, etc.
    Worked like a charm.
    -Greg
    -----Original Message-----
    From: Taras Katkov
    To: [email protected]
    Sent: 12/1/99 2:57 PM
    Subject: Re: (forte-users) Changing replication options in Fscript?
    "setappcompcompiled", "setPARTrepcount" can be used in fscript during
    application build.
    I mean PERIOD!
    Taras Katkov
    f.e.
    FindAppComp AppNAme_PartXX
    SetAppCompCompiled MyNode 1
    SetPartRepCount MyNode YY
    SetPartArgs MyNode \"Whatever\"
    SetPartThreadPkg MyNode DCE
    commit
    [email protected] wrote:
    >
    Yes through escript one can achieve changing the properties but onecannot
    do it when one is partitioning the app where the router gets createdand
    assigned ( which is fscript) and the single threadedness of thepartition
    takes effect ( for loadbalancing ) except from the partitioningworkshop
    (GUI) itself.
    -----Original Message-----
    From: [email protected] [mailto:[email protected]]
    Sent: Wednesday, December 01, 1999 3:39 PM
    To: [email protected]; [email protected];
    [email protected]
    Subject: RE: (forte-users) Changing replication options in Fscript?
    Yes you can do it, but you actually do it in EScript not FScript lookfor
    the following types of command "assignappcomp", "unassignappcomp",
    "setappcompcompiled", "setrepcount", "findagent", "findsubagent",
    "findparent" etc.. So start with your EScript manual.
    Happy scripting.
    -----Original Message-----
    From: [email protected] [mailto:[email protected]]
    Sent: Wednesday, December 01, 1999 1:36 PM
    To: [email protected]; [email protected]
    Subject: RE: (forte-users) Changing replication options in Fscript?
    no it is not. One can compiling properties but not replicationproperties
    through Fscript.
    -----Original Message-----
    From: [email protected] [mailto:[email protected]]
    Sent: Wednesday, December 01, 1999 3:24 PM
    To: [email protected]
    Subject: (forte-users) Changing replication options in Fscript?
    Before making a distribution, we modify replication options on some ofour
    service objects from within the Partition Workshop (to get rid of the
    router partition on some of our applications). Does anyone know ifit is
    possible to do this in Fscript? Thanks for your help.
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in anew
    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 anew
    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 anew
    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 set the the number of replicas through fscript BUT the service
    object in that partition has to be marked for LOADBALANCE. I didn't find a
    fscript command to do that (that was what mnasser was trying to tell you).
    But you can get around it by exporting the plan that has the service object
    and look for the string LoadBalance = FALSE, then change it to LoadBalance =
    TRUE. Import back the plan and you should be fine.
    Norocel Popa
    -----Original Message-----
    From: [email protected] [mailto:[email protected]]
    Sent: Wednesday, December 01, 1999 8:28 PM
    To: [email protected]; [email protected]
    Subject: RE: (forte-users) Changing replication options in Fscript? -
    Tric k
    There was one attribute of a service object you couldn't change in fscript..
    I think it was whether the service was replicated at all or not (not the
    same as setting rep count to 1!).
    As Clint would say, "improvise.."
    We exported the project containing the service object and snipped out the
    part pertaining to the service object in to a little export file.
    Then in an fscript script you can branch/checkout the service object and
    import the snipped out export file to change the replicated yes/no flag.
    Then do whatever other fscript commands make sense.. We tended to leave the
    system baseline with the "true" replication flags and let developers run
    this little script (only branching the services) to de-replicate all the
    replicated services prior to trying to run from their workspace, etc.
    Worked like a charm.
    -Greg
    -----Original Message-----
    From: Taras Katkov
    To: [email protected]
    Sent: 12/1/99 2:57 PM
    Subject: Re: (forte-users) Changing replication options in Fscript?
    "setappcompcompiled", "setPARTrepcount" can be used in fscript during
    application build.
    I mean PERIOD!
    Taras Katkov
    f.e.
    FindAppComp AppNAme_PartXX
    SetAppCompCompiled MyNode 1
    SetPartRepCount MyNode YY
    SetPartArgs MyNode \"Whatever\"
    SetPartThreadPkg MyNode DCE
    commit
    [email protected] wrote:
    >
    Yes through escript one can achieve changing the properties but onecannot
    do it when one is partitioning the app where the router gets createdand
    assigned ( which is fscript) and the single threadedness of thepartition
    takes effect ( for loadbalancing ) except from the partitioningworkshop
    (GUI) itself.
    -----Original Message-----
    From: [email protected] [mailto:[email protected]]
    Sent: Wednesday, December 01, 1999 3:39 PM
    To: [email protected]; [email protected];
    [email protected]
    Subject: RE: (forte-users) Changing replication options in Fscript?
    Yes you can do it, but you actually do it in EScript not FScript lookfor
    the following types of command "assignappcomp", "unassignappcomp",
    "setappcompcompiled", "setrepcount", "findagent", "findsubagent",
    "findparent" etc.. So start with your EScript manual.
    Happy scripting.
    -----Original Message-----
    From: [email protected] [mailto:[email protected]]
    Sent: Wednesday, December 01, 1999 1:36 PM
    To: [email protected]; [email protected]
    Subject: RE: (forte-users) Changing replication options in Fscript?
    no it is not. One can compiling properties but not replicationproperties
    through Fscript.
    -----Original Message-----
    From: [email protected] [mailto:[email protected]]
    Sent: Wednesday, December 01, 1999 3:24 PM
    To: [email protected]
    Subject: (forte-users) Changing replication options in Fscript?
    Before making a distribution, we modify replication options on some ofour
    service objects from within the Partition Workshop (to get rid of the
    router partition on some of our applications). Does anyone know ifit is
    possible to do this in Fscript? Thanks for your help.
    For the archives, go to: http://lists.sageit.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in anew
    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 anew
    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 anew
    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]
    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]

Maybe you are looking for