RE: (forte-users) MAPI

Hi Pascal,
The easest way to interface the MAPI on NT is to use OLE Active Messaging
Library (Olemsg32.dll). Interfaces, methods etc. will be automatically
generated by Olegen.
Regards,
Zenon
-----Original Message-----
From: Rottier, Pascal [SMTP:Rottier.Pascalpmintl.ch]
Sent: Tuesday, October 31, 2000 5:24 AM
To: 'Forte Users'
Subject: (forte-users) MAPI
Hi all,
Does anyone have a reference or example for interfacing with MAPI on NT?
I'm also looking for a way to "browse" an unknown DLL to see what
functions
it contains. Forte documentation tells you how to map TOOL to C-functions,
but assumes you already know the full signature of the C-functions.
Thanks,
Pascal Rottier
Origin Nederland (BAS/West End User Computing)
Tel. +31 (0)10-2661223
Fax. +31 (0)10-2661199
E-mail: Pascal.Rottiernl.origin-it.com
++++++++++++++++++++++++++++
Philip Morris (Afd. MIS)
Tel. +31 (0)164-295149
Fax. +31 (0)164-294444
E-mail: Rottier.Pascalpmintl.ch
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 Jean-Paul,
As described in the Technote 10981 some Forte programs (Nodemanager and
router) handle correct the high-file descriptor-use problem. It is possible
that Forte interpreter do it correct too.
Zenon
-----Original Message-----
From: Jean-Paul Gabrielli [SMTP:Jean-Paul.Gabriellisema.fr]
Sent: Monday, September 25, 2000 12:11 PM
To: Adamek, Zenon
Cc: Forte-userslists.xpedior.com
Subject: RE: (forte-users) [UNIX] "Too many open files" 3.0.M2
question
Actually, the stuff works in interpreted mode.
It's only when having the server partition compiled that this happen.
j-p
-----Message d'origine-----
De: Adamek, Zenon [mailto:ZAdamekpurolator.com]
Date: lundi 25 septembre 2000 17:13
À: 'Jean-Paul.Gabriellisema.fr'
Cc: Forte-userslists.xpedior.com
Objet: RE: (forte-users) [UNIX] "Too many open files" 3.0.M2 question
see Technote 10981
-----Original Message-----
From: Jean-Paul Gabrielli [SMTP:Jean-Paul.Gabriellisema.fr]
Sent: Monday, September 25, 2000 11:02 AM
To: zeForte-users
Subject: (forte-users) [UNIX] "Too many open files" 3.0.M2 question
Hi,
running a server partition that reads a configuration file,
and apparently doen't close it after, I have that exception:
SYSTEM ERROR: System Error: Too many open files, opening '....'with mode
'r'
Class: qqos_FileResourceException
1) Is there such a limit, or does this rely only on the OS one ?
2) How is this error not trapped, as I only got itinteractively, whereas
my server log does a exception trap/segmentation fault,
thanlks
j-p
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

Similar Messages

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

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

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

  • 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) Delays in data transfer..server-to-client

    I would try using DOM (distributed object manager) traces. trc:do:20 will
    give you information on each messages sent from and received by the
    partition. Levels are 1, 2, 5, 7, and 8, and trc:do:*:8 is very
    verbose. trc:do:20:1 may tell you what you want to know. trc:do:1:1 will
    give you a basic 1-line-per DOM event trace that may also be all you need.
    Communications manager traces will tell you about network and socket-level
    activity, but not about the sizes of the messages themselves. In addition,
    the operating system makes decisions about physical packet size and
    send/receive timing, so CM activities only generally map to actual network
    activity.
    -tdc
    iPlanet Integration Server Engineering
    At 09:24 AM 5/1/01 -0700, you wrote:
    All,
    We are experiencing delays in object transfer between server and client. The
    delays are longer with large objects (a single object with an array of objects
    that reflect the rows returned in a database) than small (ie: 10 rows vs 400).
    Does anyone have any (actual) experience using the various Forte' flags in
    order
    to show the actual size of the object/packets being passed between the server
    and client?
    We are using input/output between client and server, input on all the SO's
    within a partition. Response on the server side is good, roughly 6 seconds or
    so. The round trip fare however from the time the client makes the SO call to
    the time that it completes is in the 25-30 second range, leaving roughly 20-25
    seconds unaccounted for. I have brought in the network guys who are
    requesting
    the data size and packet information. I did not see what I am looking for
    using
    the trc:cm:*:4 and trc:cm:*:8 flags. I will be trying the trc:cm:*:10
    flag, but
    Forte' indicates that this flag is very verbose, the systems group hates
    it when
    I use up all of THEIR disk space!
    Any ideas would be appreciated as always.

    Jeff,
    If the object you are passing does not require changes made to it in the
    server partition to be returned, pass the object as copy input (pass by
    value not reference). If it is necessary to pass the object as input, try
    to pass only the attributes that are required to the remote partition
    instead of the whole object.
    Input/Output is normaly used with scalar variables. When a scalar is passed
    to a remote partition, if the value is changed in that partition, the value
    is not returned to the calling partition unless Input/Output is used.
    Input/Output should not be used for object type parameters, if you need to
    pass a reference, use Input only. If you can pass by value, use Copy Input.
    You will notice a huge difference in performance changing from Input to Copy
    input when passing large objects.
    Hope this helps,
    Travis Foote
    Fortedeveloper.com Inc.
    ----- Original Message -----
    From: "Jeff Bennett" <[email protected]>
    To: <[email protected]>
    Sent: Tuesday, May 01, 2001 9:24 AM
    Subject: (forte-users) Delays in data transfer.. server-to-client
    >
    All,
    We are experiencing delays in object transfer between server and client.The
    delays are longer with large objects (a single object with an array ofobjects
    that reflect the rows returned in a database) than small (ie: 10 rows vs400).
    >
    Does anyone have any (actual) experience using the various Forte' flags inorder
    to show the actual size of the object/packets being passed between theserver
    and client?
    We are using input/output between client and server, input on all the SO's
    within a partition. Response on the server side is good, roughly 6seconds or
    so. The round trip fare however from the time the client makes the SOcall to
    the time that it completes is in the 25-30 second range, leaving roughly20-25
    seconds unaccounted for. I have brought in the network guys who arerequesting
    the data size and packet information. I did not see what I am looking forusing
    the trc:cm:*:4 and trc:cm:*:8 flags. I will be trying the trc:cm:*:10flag, but
    Forte' indicates that this flag is very verbose, the systems group hatesit when
    I use up all of THEIR disk space!
    Any ideas would be appreciated as always.
    -jeff
    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) Call to the load-balanced SO not throughrouter

    We never call an SO from within an SO. Instead we do the following :
    MySO is mapped to MySOclass.
    MySOclass is a facade which has an attribute for every Policy Manager
    related to this SO.
    Each Policy manager is instanciated in MySOclass.
    Each Policy manager has an attribute called Parent.
    Parent is defined by MySOclass to be self.
    If two Policy managers need to work together we invoke methods via the
    parent attribute :
    Example
    I have a partition for Enrolments.
    It has three Policy Managers within it
    a Students Policy Manager (with a Add, Delete, Get methods)
    a Courses Policy Manager (with a Add, Delete, Get methods).
    an Enrolments Policy Manager (with a Add, Delete, Get methods).
    To enable this partition we have defined :
    EnrolmentsSO (environment visible, message duration) with the EnrolmentsMgr
    class as its related class.
    The EnrolmentsMgr class has the following methods and attributes :
    Methods :
    AddStudent
    AddCourse
    AddEnrolment
    GetStudent
    GetCourse
    GetEnrolment
    DeleteStudent
    DeleteCourse
    DeleteEnrolment
    All of these methods do a one line return statement, simply passing the
    method invocation to
    the appropriate Policy Manager. For example AddStudent would say
    Return theStudentPM.AddStudent(pInStudentParams : pInStudentParams)
    : pOutStudentParams
    In the Init method for the EnrolmentsMgr we instanciate the following
    attributes :
    theStudentPM (which is typed to the StudentPM class)
    theCoursePM (which is typed to the CoursePM class)
    theEnrolmentsPM (which is typed to the EnrolmentsPM class)
    Also in the Init method we set an attribute (called parent) on each
    PM to the value of Self.
    Then when one PM needs to invoke a method on another PM we simply do :
    For example in the theEnrolmentPM.GetEnrolment method we need to get
    Students and Courses
    thus we code :
    Parent.GetStudent(pInStudentParams = pInStudentParams) : pOutStudentParams
    Parent.GetCourse((pInCourseParams = pOutStudentParams.CourseStuff) :
    pOutCourseParams
    Build Enrol details based on student / course stuff.
    Return EnrolmentParams.
    Hope this makes sense.
    Regards,
    Chris Will, Dept. of Educ. Training, ITB, Sydney, Australia
    -----Original Message-----
    From: Peter Sham [mailto:[email protected]]
    Sent: Friday, 8 October 1999 9:35
    To: [email protected]; [email protected]
    Subject: Re: (forte-users) Replicating the PersistenceMgrSO
    Hi,
    Whenever you make a call to your load-balanced SO, it
    would go through the router. That is what I
    understand. No matter you make the call from inside
    or outside the SO.
    Secondly, you can turn on the "fail-over" option of a
    router but not load-balanced it. On these routers,
    you can check their instruments to see which one is
    really running.
    Hope this help.
    Regards,
    Peter Sham.

    We never call an SO from within an SO. Instead we do the following :
    MySO is mapped to MySOclass.
    MySOclass is a facade which has an attribute for every Policy Manager
    related to this SO.
    Each Policy manager is instanciated in MySOclass.
    Each Policy manager has an attribute called Parent.
    Parent is defined by MySOclass to be self.
    If two Policy managers need to work together we invoke methods via the
    parent attribute :
    Example
    I have a partition for Enrolments.
    It has three Policy Managers within it
    a Students Policy Manager (with a Add, Delete, Get methods)
    a Courses Policy Manager (with a Add, Delete, Get methods).
    an Enrolments Policy Manager (with a Add, Delete, Get methods).
    To enable this partition we have defined :
    EnrolmentsSO (environment visible, message duration) with the EnrolmentsMgr
    class as its related class.
    The EnrolmentsMgr class has the following methods and attributes :
    Methods :
    AddStudent
    AddCourse
    AddEnrolment
    GetStudent
    GetCourse
    GetEnrolment
    DeleteStudent
    DeleteCourse
    DeleteEnrolment
    All of these methods do a one line return statement, simply passing the
    method invocation to
    the appropriate Policy Manager. For example AddStudent would say
    Return theStudentPM.AddStudent(pInStudentParams : pInStudentParams)
    : pOutStudentParams
    In the Init method for the EnrolmentsMgr we instanciate the following
    attributes :
    theStudentPM (which is typed to the StudentPM class)
    theCoursePM (which is typed to the CoursePM class)
    theEnrolmentsPM (which is typed to the EnrolmentsPM class)
    Also in the Init method we set an attribute (called parent) on each
    PM to the value of Self.
    Then when one PM needs to invoke a method on another PM we simply do :
    For example in the theEnrolmentPM.GetEnrolment method we need to get
    Students and Courses
    thus we code :
    Parent.GetStudent(pInStudentParams = pInStudentParams) : pOutStudentParams
    Parent.GetCourse((pInCourseParams = pOutStudentParams.CourseStuff) :
    pOutCourseParams
    Build Enrol details based on student / course stuff.
    Return EnrolmentParams.
    Hope this makes sense.
    Regards,
    Chris Will, Dept. of Educ. Training, ITB, Sydney, Australia
    -----Original Message-----
    From: Peter Sham [mailto:[email protected]]
    Sent: Friday, 8 October 1999 9:35
    To: [email protected]; [email protected]
    Subject: Re: (forte-users) Replicating the PersistenceMgrSO
    Hi,
    Whenever you make a call to your load-balanced SO, it
    would go through the router. That is what I
    understand. No matter you make the call from inside
    or outside the SO.
    Secondly, you can turn on the "fail-over" option of a
    router but not load-balanced it. On these routers,
    you can check their instruments to see which one is
    really running.
    Hope this help.
    Regards,
    Peter Sham.

  • Re: (forte-users) How do you change the font color onwindow.StatusText

    Hi Richard,
    In the init method insert the line
    <_StatusLine>.PenColor = C_BLUE ;
    This sets the pen color for the widget.
    StatusText is an attribute on the Window class that
    holds the value of the text. This value is then
    displayed in the specified data field that you assign.
    Hope this helps,
    Jairaj Rampershad
    System Consultant
    --- "Robinson, Richard"
    <[email protected]> wrote:
    I'm using Forte 3.0.G.2 and can't get the font color
    to change.
    I've followed the instructions in the help
    documentation by creating a data
    field widget (named it _StatusLine) and mapped it as
    a TextData. In my Init
    method I then have a chunk of code to set up the
    Window.StatusText. It
    looks like this:
    _StatusLine = new;
    Window.StatusText = _StatusLine;
    Once that's done the code updates Window.StatusText
    as needed. All this
    works fine except I can't get the font color
    changed. I've used the Window
    workshop to specify a color for the data field
    widget but it appears that
    the underlying Forte libraries has a mind of it's
    own. Any clues as what to
    do? All I'm trying to do is set the color to the
    default "information"
    color - which is blue.
    Thanks in advance
    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]

    It's not so simple to find it if you don't know what you're looking for... But it can be found via View - Show/Hide - Toolbar Items - Properties Bar.

  • RE: (forte-users) Forte SMTP and POP3 Support

    Scaffolds includes in a protocol library an smtphandler which allows us to
    send emails. It works great! You can try contacting someone at Metamor to
    see if they can give you more information on this. I can't give you any
    code as it is part of their package. Sorry!
    -----Original Message-----
    From: Rottier, Pascal [mailto:Rottier.Pascalpmintl.ch]
    Sent: Wednesday, February 23, 2000 7:22 AM
    To: 'edwardsmjwillis.com'; kamranaminyahoo.com
    Subject: RE: (forte-users) Forte SMTP and POP3
    Support
    Mark,
    Unfortunately, Forte doesn't offer any ready-to-use internet
    protocoll
    support libraries (like FTP, Telnet, SMTP, POP3, NNTP,
    UU-code
    or MIME). I think this would be a valuable enhancement of
    Forte.
    Does any one know if SUN plans to include this into Forte?
    Does
    any one know if there is any third-party set of Tool-classes
    that
    supports this?
    Pascal
    > -----Original Message-----
    > From: edwardsmjwillis.com [SMTP:edwardsmjwillis.com]
    > Sent: Wednesday, February 23, 2000 3:36 PM
    > To: kamranaminyahoo.com
    > Subject: (forte-users) Forte SMTP and POP3 Support
    >
    >
    >
    > Hi,
    >
    > Our Forte development team are currently investigating how
    we can add
    > internet
    > mail capabilities to a Forte application. Our application
    needs to
    > send/receive
    > mails from a mail server in an NT environment. Does forte
    provide SMTP and
    > POP3
    > protocol support (libraries) so that we can use external
    connection class
    > to
    > connect to the server and send/ receive mails or do we
    have to use third
    > party
    > controls ?.
    >
    > Any help regarding code examples or third party solutions
    would be
    > appreciated.
    >
    > Thanks in advance
    >
    > Mark J Edwards
    > Senior Technical Specialist
    > Willis
    >
    > Email: edwardsmjwillis.com
    >
    >
    >
    >
    >
    > The information in this email and in any attachments is
    confidential and
    > may be
    > privileged. If you are not the intended recipient, please
    destroy this
    > message,
    > delete any copies held on your systems and notify the
    sender immediately.
    > You
    > should not retain, copy or use this email for any purpose,
    nor disclose
    > all or
    > any part of its content to any other person.
    >
    >
    > --
    > 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

    Hi,
    Unfortunatly, Forte does not provide SMTP and POP3 protocoles.
    But, you can use External connections to do it if you need.
    You can find a simple SMTP send mail sample code on
    http://perso.club-internet.fr/dnguyen/ . The receive should be as easy as the send.
    For MIME base 64 encoding and decoding, it should last one or two weeks of coding
    (if you need optimization).
    One advantage of coding this in Tool directly is the portability.
    In your case, on NT, you could also interface with MAPI using for instance the
    ActiveX interface.
    By that way, you will already have SMTP, POP3 and MIME.
    Hope this helps,
    Daniel Nguyen
    Freelance Forte Consultant
    http://perso.club-internet.fr/dnguyen/
    edwardsmjwillis.com a &eacute;crit:
    Hi,
    Our Forte development team are currently investigating how we can add internet
    mail capabilities to a Forte application. Our application needs to send/receive
    mails from a mail server in an NT environment. Does forte provide SMTP and POP3
    protocol support (libraries) so that we can use external connection class to
    connect to the server and send/ receive mails or do we have to use third party
    controls ?.
    Any help regarding code examples or third party solutions would be appreciated.
    Thanks in advance
    Mark J Edwards
    Senior Technical Specialist
    Willis
    Email: edwardsmjwillis.com
    The information in this email and in any attachments is confidential and may be
    privileged. If you are not the intended recipient, please destroy this message,
    delete any copies held on your systems and notify the sender immediately. You
    should not retain, copy or use this email for any purpose, nor disclose all or
    any part of its content to any other person.
    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) Does anyone have experience using OracleLarge Objects

    hi ,
    A few months ago, I tried a oracle stored procedure with a BLOB parameter,
    but Forte(3.l2) could not recognize the blob variable. I used oracle 8.0
    hth
    suma
    -----Original Message-----
    From: Amin, Kamran [mailto:kamran.aminlendware.com]
    Sent: Thursday, March 29, 2001 2:40 PM
    To: 'Forte User Group'
    Cc: Magaliff, Bill
    Subject: (forte-users) Does anyone have experience using Oracle Large
    Objects (LOB's)?
    Does anyone have experience using Oracle Large Objects (LOB's) -
    specifically the CLOB datatype? Forte supports Oracle LONG's but given that
    Oracle is going to phase out that datatype and they're trying to push users
    towards CLOB's instead of LONG's, I want to find out if Forte can handle it
    and, if so, what we should know about mapping Forte datatypes to the Oracle
    CLOB. [Their compatibility matrix for v3.5 indicates suppport under Oracle
    8.1.x, and CLOB's were introduced back in 8.0.x - but the word from Forte is
    that they currently don't support it.]
    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

    Hi,
    Did you get any solution to this. If yes, please share.
    Thanks,
    Tints

  • Re: (forte-users) FW: (forte-users) Overflow Exception thatIcan't catch

    Dave
    If you use #,##0.00 template, forte won't allow you to enter more than 28 numbers.
    Nat
    "Campbell, Dave" <DCampbellpurolator.com> 01/28 10:49 AM >>>Thanks Zenon,
    You mean... that without the aftervaluechange event, I could catch this?
    Because by no means is my exception block anchored to that event.
    I am looking for advice of where I could put this exception block...if there
    is another possible place at all.
    Thanks.
    Dave
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com
    -----Original Message-----
    Hi Dave,
    You have no chance to catch this exception in aftervaluechange block.
    This event is triggered if the value in DataField is OK.
    You get only Arithmetic exception without the aftervaluechange event if the
    length of the decimal is greater as 28.
    Regards
    Zenon Adamek
    Forte Developer
    Purolator Courier Ltd.
    ZAdamekpurolator.com
    -----Original Message-----
    From: Campbell, Dave [SMTP:DCampbellpurolator.com]
    Sent: Friday, January 28, 2000 8:19 AM
    To: 'kamranaminyahoo.com'
    Subject: (forte-users) Overflow Exception that I can't
    catch...
    The problem is:
    I have a DataField, mapped type :DecimalNullable
    the input mask is set to Template ( #,##0;;;;)
    Because it is Template I can't validate on keystroke and
    I can't set the max characters in the properties sheet.
    This works great until, Someone enters over 28 characters into the
    field.
    It then displays the errors:
    USER ERROR: Operation caused arithmetic overflow
    Class: qqsp_ArithmeticException
    Error #: [301, 7]
    Deteced at: DecimalData.SetScale at 1
    ErrorTime: Thu Jan 27 15:50:48
    Exception occurred (locally) on partition
    "PurolatorApplications_CL0_Client" ,(partitionId =
    DEB96B60-AA27-11D1-82A8-23E82A0FAA77:0X6f98:0x7, TASKiD =
    [DEB96B60-AA27-11D1-82A8-23E82A0FAA77:0X6f98:0x7.492] in
    application
    "FTLaunch_c10",pid 279 on node W5300109 in environment centrale
    This is the first bit of code that executes when I leave the field
    and the
    value has changed:
    when <est_daily_rev_amt>.aftervaluechange do
    Begin
    sys_upd_usr_nam = aUserProfileBO.user_nam;
    aCPVDetailItem.SetState(base_detailItem.CHANGED_STATE);
    Exception
    when ex:ArithmeticException Do
    Task.ErrMgr.Clear();
    Window.MessageDialog(
    messageText='Revenue amount can not exceed
    100,000,000',
    MessageType=MT_WARNING);
    Self.Window.PurgeEvents();
    End;
    This is what I do:
    I put a debugging stop on the "when line" and the "Exception line"
    I also set the debugger to stop on all exceptions and posts.
    It never reaches the above code!?
    Is this a forte bug?
    I need the template and I need it to be a decimalnullable.
    Is there any suggestions for where else I may catch this
    Exception???
    Thanks in advance
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.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

    Dave
    If you use #,##0.00 template, forte won't allow you to enter more than 28 numbers.
    Nat
    "Campbell, Dave" <DCampbellpurolator.com> 01/28 10:49 AM >>>Thanks Zenon,
    You mean... that without the aftervaluechange event, I could catch this?
    Because by no means is my exception block anchored to that event.
    I am looking for advice of where I could put this exception block...if there
    is another possible place at all.
    Thanks.
    Dave
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com
    -----Original Message-----
    Hi Dave,
    You have no chance to catch this exception in aftervaluechange block.
    This event is triggered if the value in DataField is OK.
    You get only Arithmetic exception without the aftervaluechange event if the
    length of the decimal is greater as 28.
    Regards
    Zenon Adamek
    Forte Developer
    Purolator Courier Ltd.
    ZAdamekpurolator.com
    -----Original Message-----
    From: Campbell, Dave [SMTP:DCampbellpurolator.com]
    Sent: Friday, January 28, 2000 8:19 AM
    To: 'kamranaminyahoo.com'
    Subject: (forte-users) Overflow Exception that I can't
    catch...
    The problem is:
    I have a DataField, mapped type :DecimalNullable
    the input mask is set to Template ( #,##0;;;;)
    Because it is Template I can't validate on keystroke and
    I can't set the max characters in the properties sheet.
    This works great until, Someone enters over 28 characters into the
    field.
    It then displays the errors:
    USER ERROR: Operation caused arithmetic overflow
    Class: qqsp_ArithmeticException
    Error #: [301, 7]
    Deteced at: DecimalData.SetScale at 1
    ErrorTime: Thu Jan 27 15:50:48
    Exception occurred (locally) on partition
    "PurolatorApplications_CL0_Client" ,(partitionId =
    DEB96B60-AA27-11D1-82A8-23E82A0FAA77:0X6f98:0x7, TASKiD =
    [DEB96B60-AA27-11D1-82A8-23E82A0FAA77:0X6f98:0x7.492] in
    application
    "FTLaunch_c10",pid 279 on node W5300109 in environment centrale
    This is the first bit of code that executes when I leave the field
    and the
    value has changed:
    when <est_daily_rev_amt>.aftervaluechange do
    Begin
    sys_upd_usr_nam = aUserProfileBO.user_nam;
    aCPVDetailItem.SetState(base_detailItem.CHANGED_STATE);
    Exception
    when ex:ArithmeticException Do
    Task.ErrMgr.Clear();
    Window.MessageDialog(
    messageText='Revenue amount can not exceed
    100,000,000',
    MessageType=MT_WARNING);
    Self.Window.PurgeEvents();
    End;
    This is what I do:
    I put a debugging stop on the "when line" and the "Exception line"
    I also set the debugger to stop on all exceptions and posts.
    It never reaches the above code!?
    Is this a forte bug?
    I need the template and I need it to be a decimalnullable.
    Is there any suggestions for where else I may catch this
    Exception???
    Thanks in advance
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.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) FW: (forte-users) Overflow Exception thatI can't catc

    Nat,
    As I feared, This forces the user to enter decimals even if there are none.
    The Users Don't want this.
    So, i'm afraid i am back at beginning.. Trying to catch this exception..
    Thank you for your input.
    I would be happy to try anyone elses solution to this annoying issue.
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com
    Dave
    If you use #,##0.00 template, forte won't allow you to enter more than
    28 numbers.
    Nat
    "Campbell, Dave" <DCampbellpurolator.com> 01/28 10:49 AM >>>Thanks Zenon,
    You mean... that without the aftervaluechange event, I could catch this?
    Because by no means is my exception block anchored to that event.
    I am looking for advice of where I could put this exception block...if there
    is another possible place at all.
    Thanks.
    Dave
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com
    -----Original Message-----
    Hi Dave,
    You have no chance to catch this exception in aftervaluechange block.
    This event is triggered if the value in DataField is OK.
    You get only Arithmetic exception without the aftervaluechange event if the
    length of the decimal is greater as 28.
    Regards
    Zenon Adamek
    Forte Developer
    Purolator Courier Ltd.
    ZAdamekpurolator.com
    -----Original Message-----
    From: Campbell, Dave [SMTP:DCampbellpurolator.com]
    Sent: Friday, January 28, 2000 8:19 AM
    To: 'kamranaminyahoo.com'
    Subject: (forte-users) Overflow Exception that I can't
    catch...
    The problem is:
    I have a DataField, mapped type :DecimalNullable
    the input mask is set to Template ( #,##0;;;;)
    Because it is Template I can't validate on keystroke and
    I can't set the max characters in the properties sheet.
    This works great until, Someone enters over 28 characters into the
    field.
    It then displays the errors:
    USER ERROR: Operation caused arithmetic overflow
    Class: qqsp_ArithmeticException
    Error #: [301, 7]
    Deteced at: DecimalData.SetScale at 1
    ErrorTime: Thu Jan 27 15:50:48
    Exception occurred (locally) on partition
    "PurolatorApplications_CL0_Client" ,(partitionId =
    DEB96B60-AA27-11D1-82A8-23E82A0FAA77:0X6f98:0x7, TASKiD =
    [DEB96B60-AA27-11D1-82A8-23E82A0FAA77:0X6f98:0x7.492] in
    application
    "FTLaunch_c10",pid 279 on node W5300109 in environment centrale
    This is the first bit of code that executes when I leave the field
    and the
    value has changed:
    when <est_daily_rev_amt>.aftervaluechange do
    Begin
    sys_upd_usr_nam = aUserProfileBO.user_nam;
    aCPVDetailItem.SetState(base_detailItem.CHANGED_STATE);
    Exception
    when ex:ArithmeticException Do
    Task.ErrMgr.Clear();
    Window.MessageDialog(
    messageText='Revenue amount can not exceed
    100,000,000',
    MessageType=MT_WARNING);
    Self.Window.PurgeEvents();
    End;
    This is what I do:
    I put a debugging stop on the "when line" and the "Exception line"
    I also set the debugger to stop on all exceptions and posts.
    It never reaches the above code!?
    Is this a forte bug?
    I need the template and I need it to be a decimalnullable.
    Is there any suggestions for where else I may catch this
    Exception???
    Thanks in advance
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com

    Nat,
    As I feared, This forces the user to enter decimals even if there are none.
    The Users Don't want this.
    So, i'm afraid i am back at beginning.. Trying to catch this exception..
    Thank you for your input.
    I would be happy to try anyone elses solution to this annoying issue.
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com
    Dave
    If you use #,##0.00 template, forte won't allow you to enter more than
    28 numbers.
    Nat
    "Campbell, Dave" <DCampbellpurolator.com> 01/28 10:49 AM >>>Thanks Zenon,
    You mean... that without the aftervaluechange event, I could catch this?
    Because by no means is my exception block anchored to that event.
    I am looking for advice of where I could put this exception block...if there
    is another possible place at all.
    Thanks.
    Dave
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com
    -----Original Message-----
    Hi Dave,
    You have no chance to catch this exception in aftervaluechange block.
    This event is triggered if the value in DataField is OK.
    You get only Arithmetic exception without the aftervaluechange event if the
    length of the decimal is greater as 28.
    Regards
    Zenon Adamek
    Forte Developer
    Purolator Courier Ltd.
    ZAdamekpurolator.com
    -----Original Message-----
    From: Campbell, Dave [SMTP:DCampbellpurolator.com]
    Sent: Friday, January 28, 2000 8:19 AM
    To: 'kamranaminyahoo.com'
    Subject: (forte-users) Overflow Exception that I can't
    catch...
    The problem is:
    I have a DataField, mapped type :DecimalNullable
    the input mask is set to Template ( #,##0;;;;)
    Because it is Template I can't validate on keystroke and
    I can't set the max characters in the properties sheet.
    This works great until, Someone enters over 28 characters into the
    field.
    It then displays the errors:
    USER ERROR: Operation caused arithmetic overflow
    Class: qqsp_ArithmeticException
    Error #: [301, 7]
    Deteced at: DecimalData.SetScale at 1
    ErrorTime: Thu Jan 27 15:50:48
    Exception occurred (locally) on partition
    "PurolatorApplications_CL0_Client" ,(partitionId =
    DEB96B60-AA27-11D1-82A8-23E82A0FAA77:0X6f98:0x7, TASKiD =
    [DEB96B60-AA27-11D1-82A8-23E82A0FAA77:0X6f98:0x7.492] in
    application
    "FTLaunch_c10",pid 279 on node W5300109 in environment centrale
    This is the first bit of code that executes when I leave the field
    and the
    value has changed:
    when <est_daily_rev_amt>.aftervaluechange do
    Begin
    sys_upd_usr_nam = aUserProfileBO.user_nam;
    aCPVDetailItem.SetState(base_detailItem.CHANGED_STATE);
    Exception
    when ex:ArithmeticException Do
    Task.ErrMgr.Clear();
    Window.MessageDialog(
    messageText='Revenue amount can not exceed
    100,000,000',
    MessageType=MT_WARNING);
    Self.Window.PurgeEvents();
    End;
    This is what I do:
    I put a debugging stop on the "when line" and the "Exception line"
    I also set the debugger to stop on all exceptions and posts.
    It never reaches the above code!?
    Is this a forte bug?
    I need the template and I need it to be a decimalnullable.
    Is there any suggestions for where else I may catch this
    Exception???
    Thanks in advance
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com
    Regards,
    Dave Campbell
    Consultant,
    Caro Systems Inc.
    Mailto:Dave.CampbellCaroSys.com

  • Re: (forte-users) Question

    This is a multi-part message in MIME format.
    --------------4E6A4194374DC1BDF50CB1A1
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    I would set the completion event for the display method of the new window and
    register to this event in the main window as you see in the attached .pex file.
    With this solution it is possible to handle a failor in the new window in order
    to bahave like the normal completion and cause the deletion of the input element
    in the main window.
    Best Regards,
    Tamas Deak
    "Zirney, Bobby" wrote:
    This message is in MIME format. Since your mail reader does not understand
    this format, some or all of this message may not be legible.
    ------_=_NextPart_001_01BEF4BD.83F24DA6
    Content-Type: text/plain;
    charset="iso-8859-1"
    I have a frame with a button on it that will open up another frame. When I
    close the second frame by pressing the X in the top right hand corner, I
    want to clear all the data on the first screen. I have been trying all
    sorts of things without success. Does anyone have any suggestions as to how
    to do this?
    ------_=_NextPart_001_01BEF4BD.83F24DA6
    Content-Type: text/html;
    charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
    <HTML>
    <HEAD>
    <DEFANGED-META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
    charset=3Diso-8859-1">
    <DEFANGED-META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
    5.5.2448.0">
    <DEFANGED-TITLE>Question</TITLE>
    </HEAD>
    <BODY>
    <P><FONT SIZE=3D2 FACE=3D"Arial">I have a frame with a button on it =
    that will open up another frame.  When I close the second frame by =
    pressing the X in the top right hand corner, I want to clear all the =
    data on the first screen.  I have been trying all sorts of things =
    without success.  Does anyone have any suggestions as to how to do =
    this?</FONT></P>
    </BODY>
    </HTML>
    ------_=_NextPart_001_01BEF4BD.83F24DA6--
    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]
    --------------4E6A4194374DC1BDF50CB1A1
    Content-Type: application/x-unknown-content-type-pex_auto_file;
    name="Win.pex"
    Content-Transfer-Encoding: base64
    Content-Disposition: inline;
    filename="Win.pex"
    YmVnaW4gVE9PTCBUb3NzTWU7DQoNCmluY2x1ZGVzIERpc3BsYXlQcm9qZWN0Ow0KaW5jbHVk
    ZXMgRnJhbWV3b3JrOw0KSEFTIFBST1BFUlRZIElzTGlicmFyeSA9IEZBTFNFOw0KDQotLSBT
    VEFSVCBGT1JXQVJEIENMQVNTIERFQ0xBUkFUSU9OUw0KZm9yd2FyZCAgTmV3V2luIGlzIG1h
    cHBlZDsNCmZvcndhcmQgIFdpbiBpcyBtYXBwZWQ7DQotLSBFTkQgRk9SV0FSRCBDTEFTUyBE
    RUNMQVJBVElPTlMNCg0KLS0gU1RBUlQgRk9SV0FSRCBDVVJTT1IgREVDTEFSQVRJT05TDQot
    LSBFTkQgRk9SV0FSRCBDVVJTT1IgREVDTEFSQVRJT05TDQoNCi0tIFNUQVJUIENPTlNUQU5U
    IERFRklOSVRJT05TDQotLSBFTkQgQ09OU1RBTlQgREVGSU5JVElPTlMNCg0KLS0gU1RBUlQg
    QyBEQVRBIFRZUEUgREVGSU5JVElPTlMNCi0tIEVORCBDIERBVEEgVFlQRSBERUZJTklUSU9O
    Uw0KDQotLSBTVEFSVCBDTEFTUyBERUZJTklUSU9OUw0KDQpjbGFzcyBOZXdXaW4gaXMgbWFw
    cGVkIGluaGVyaXRzIGZyb20gRGlzcGxheVByb2plY3QuVXNlcldpbmRvdw0KDQoNCg0KaGFz
    IHB1YmxpYyAgbWV0aG9kIERpc3BsYXkgd2hlcmUgY29tcGxldGlvbiA9IChyZXR1cm4gPSBO
    ZXdXaW5kb3dGaW5pc2hlZCwgZXhjZXB0aW9uID0gTmV3V2luZG93RmFpbGVkKTsNCmhhcyBw
    dWJsaWMgIG1ldGhvZCBJbml0Ow0KDQpoYXMgcHJvcGVydHkNCglzaGFyZWQ9KGFsbG93PW9u
    LCBvdmVycmlkZT1vbiwgZGVmYXVsdD1vZmYpOw0KCXRyYW5zYWN0aW9uYWw9KGFsbG93PW9u
    LCBvdmVycmlkZT1vbiwgZGVmYXVsdD1vZmYpOw0KCW1vbml0b3JlZD0oYWxsb3c9b24sIG92
    ZXJyaWRlPW9uLCBkZWZhdWx0PW9mZik7DQoJZGlzdHJpYnV0ZWQ9KGFsbG93PW9mZiwgb3Zl
    cnJpZGU9b2ZmKTsNCg0KaGFzDQorNTE1MTQ2MzEwMDAwMDFiMTAwMDAwMTcyOWZlMzAxMDEw
    MDAwMjEwMTAyMDAwMDAwMDAwMjAyMDYwMDk0MDgwMA0KKzFkMDA5ZmZmMDEwMTA0MjEwZjEw
    MTExMjAxMDEwMTE3MDAwMDlmZmYwMDAwMDAwMDBkMDAwMDBiYjgwZmEwMDANCiswMDAwMDAw
    MDAwMDAwMDAwMDAwMTAxNjA2MDAwMDAwMDAwMDAwMDAwMDAwMDlkMGJiODlkMGZhMDAwMDAw
    MDAwDQorMDAwMDAxMDgwMzAzMDFmZmZkMDAwMDAwMDAwMDAwMDAwMDAyMDEwMDAwMDAwMDBm
    MDQwNTAwMDYwMDAwMDIwMQ0KKzAwMDEwMDAwMGMwMDAwMDEwMDBiMDAwMTAwMDAwMDAwMDAw
    MzAwMDAyMTAxMDIwMDAwMDAwMDA1MDQwMDAwMWMNCiswMjAwMTAwNTA2MDA3YTA4MDA0ZDAw
    OWZmZjAxMDEwMTAxMGYxMDExMTIwMTAxMDExNzAwMDA5ZmZmMDEwMDAwDQorMDAwZDAwMDA1
    ZGMwNWRiZjAwMDAwMDAwMDMwMzAzMDMwMDAyMDQwNGEwYTAwMDAwMDAwMDAwMDAwMDAwMDA5
    ZA0KKzVkYzA5ZDVkYmYwMDAwMDAwMDAwMDAwMTA4MDY2ODAxMDAwMDAwNWRjMDVkYmYwMDAw
    MDAwMjAxMDAwMDAwMDANCiswOTAwMDAwNjAwMDAyMTAxMDIwMDAwMDAwMDA3MDcwNjAwNzgw
    ODAyMDEwMjBhMGE0NjYxNjk2YzQyNzU3NDc0DQorNmY2ZTAxMDIwNDIxMjEyMTIxMjEyMTIx
    MjExNzAwMDE5ZmZmMGMwMDAwMDAwZDlkMDEyZTlkMDEyNDAwZTUwMQ0KKzQzMDAwMDAwMDAw
    MzAzMDMwMzAwMDUwMTAxYTBhMDAwMDAwMDAwMDAwMDAwMDAwMDljZTU5ZDAxNDMwMDAwMDAN
    CiswMDAwMDAwMTBiMDQwNDQ2NjE2OTZjMDAwMjAxMDAwMDAwMDAwNzFhOTE5YzljOWNhMzlk
    MDEwMzlkMDEwZTlkDQorMDE3MjE2MTkxYTM4NjI2Mzc3OTE5YjljOWM5Y2EwOWNhMzljYzE5
    Y2ViOWNlYzlkMDEwMDlkMDEwMzlkMDEwZA0KKzlkMDEwZTlkMDEzNjlkMDE2MzlkMDE2NDlk
    MDE3MjAzMDENCi0wMDQ2ODRhMA0KDQoNCmVuZCBjbGFzczsNCg0KY2xhc3MgV2luIGlzIG1h
    cHBlZCBpbmhlcml0cyBmcm9tIERpc3BsYXlQcm9qZWN0LlVzZXJXaW5kb3cNCg0KDQpoYXMg
    cHVibGljICBtZXRob2QgRGlzcGxheTsNCmhhcyBwdWJsaWMgIG1ldGhvZCBJbml0Ow0KDQpo
    YXMgcHVibGljICBldmVudCBoYW5kbGVyIFdpbkNsb3NlSGFuZGxlcihpbnB1dCBwV2luOiBU
    b3NzTWUuTmV3V2luKTsNCg0KaGFzIHByb3BlcnR5DQoJc2hhcmVkPShhbGxvdz1vbiwgb3Zl
    cnJpZGU9b24sIGRlZmF1bHQ9b2ZmKTsNCgl0cmFuc2FjdGlvbmFsPShhbGxvdz1vbiwgb3Zl
    cnJpZGU9b24sIGRlZmF1bHQ9b2ZmKTsNCgltb25pdG9yZWQ9KGFsbG93PW9uLCBvdmVycmlk
    ZT1vbiwgZGVmYXVsdD1vZmYpOw0KCWRpc3RyaWJ1dGVkPShhbGxvdz1vZmYsIG92ZXJyaWRl
    PW9mZik7DQoNCmhhcw0KKzUxNTE0NjMxMDAwMDAyM2QwMDAwMDFlOTlmZTMwMTAxMDAwMDIx
    MDEwMjAwMDAwMDAwMDIwMjA2MDA5NDA4MDANCisxZDAwOWZmZjAxMDEwNDIxMGYxMDExMTIw
    MTAxMDExNzAwMDA5ZmZmMDAwMDAwMDAwZDAwMDAwYmI4MGZhMDAwDQorMDAwMDAwMDAwMDAw
    MDAwMDAwMDEwMTYwNjAwMDAwMDAwMDAwMDAwMDAwMDA5ZDBiYjg5ZDBmYTAwMDAwMDAwMA0K
    KzAwMDAwMTA4MDMwMzAxZmZmZDAwMDAwMDAwMDAwMDAwMDAwMjAxMDAwMDAwMDAwZjA0MDUw
    MDA2MDAwMDAyMDENCiswMDAxMDAwMDBkMDAwMDAxMDAwYjAwMDEwMDAwMDAwMDAwMDMwMDAw
    MjEwMTAyMDAwMDAwMDAwNTA0MDAwMDFjDQorMDIwMDEwMDUwNjAwN2EwODAwNGQwMDlmZmYw
    MTAxMDEwMTBmMTAxMTEyMDEwMTAxMTcwMDAwOWZmZjAxMDAwMA0KKzAwMGQwMDAwNWRjMDVk
    YmYwMDAwMDAwMDAzMDMwMzAzMDAwMjA0MDRhMGEwMDAwMDAwMDAwMDAwMDAwMDAwOWQNCis1
    ZGMwOWQ1ZGJmMDAwMDAwMDAwMDAwMDEwODA2NjgwMTAwMDAwMDVkYzA1ZGJmMDAwMDAwMDIw
    MTAwMDAwMDAwDQorMDkwMDAwMDYwMDAwMjEwMjAyMDAwMDAwMDAwNzA4MDcwNjAwZjYwODIw
    ODkwMjA3MDc2NDYxNzQ2MTRmNmU2NQ0KKzAxMDIwYjIxMjEyMTIxMjEwMTAxMDExNzAwMDEw
    ODA4NTQ2NTc4NzQ0NDYxNzQ2MTBjMDAwMDAwMGQ5ZDA2MWENCis5ZDA2MjUwMGM2MDUzNTAw
    MDAwMDAwMDMwMzAzMDMwMDA1MDEwMjgwYTAwMDAwMDAwMDAwMDAwMDAwMDA5Y2M2DQorOWQw
    NTM1MDAwMDAwMDAwMDAwMDEwMzAyMDEwNzAwMTMwMDAwMDlmZjgxMDAwMDllMDA0MDAwMTQw
    MzAxMDAwOA0KKzA2MDA3ODA4MDIwMTAyMDcwNzYyNzQ2ZTRmNzA2NTZlMDEwMjA0MjEyMTIx
    MjEyMTIxMjEyMTE3MDAwMjlmZmYNCiswZDAwMDAwMDBkOWQwOTEzOWQwOWVlMDBlNTAzOTUw
    MDAwMDAwMDAzMDMwMzAzMDAwNTAxMDFhMGEwMDAwMDAwDQorMDAwMDAwMDAwMDAwOWNlNTlk
    MDM5NTAwMDAwMDAwMDAwMDAxMGIwZDBkNGY3MDY1NmUyYzIwNTM2NTczNjE2ZA0KKzY1MjEw
    MDAyMDEwMDAwMDAwMDA4MWE5MTljOWM5Y2EzOWQwMTAzOWQwMTBmOWQwMTdmOWQwMWU5MWMx
    OTFhMzgNCis2MjYzNzc5MTliOWM5YzljYTA5Y2EzOWNjMTljZWI5Y2VjOWQwMTAwOWQwMTAz
    OWQwMTBkOWQwMTBmOWQwMTNjDQorOWQwMTY5OWQwMTZhOWQwMTZkOWQwMTcyOWQwMTdmOWQw
    MWE0OWQwMWQxOWQwMWQyOWQwMWU5MDMwMQ0KLTAwODg1MDI2DQoNCg0KZW5kIGNsYXNzOw0K
    LS0gRU5EIENMQVNTIERFRklOSVRJT05TDQoNCi0tIFNUQVJUIFNFUlZJQ0UgT0JKRUNUIERF
    RklOSVRJT05TDQotLSBFTkQgU0VSVklDRSBPQkpFQ1QgREVGSU5JVElPTlMNCg0KLS0gU1RB
    UlQgQ1VSU09SIERFRklOSVRJT05TDQotLSBFTkQgQ1VSU09SIERFRklOSVRJT05TDQoNCi0t
    IFNUQVJUIFRZUEVERUYgREVGSU5JVElPTlMNCi0tIEVORCBUWVBFREVGIERFRklOSVRJT05T
    DQoNCi0tIFNUQVJUIE1FVEhPRCBERUZJTklUSU9OUw0KDQotLS0tLS0tLS0tLS0tLS0tLS0t
    LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCm1ldGhvZCBOZXdX
    aW4uRGlzcGxheQ0KYmVnaW4NCnNlbGYuT3BlbigpOw0KZXZlbnQgbG9vcA0KICAgICAgICB3
    aGVuIHRhc2suU2h1dGRvd24gZG8NCiAgICAgICAgICAgICAgICB0YXNrLmxnci5wdXRsaW5l
    KCdzaHV0ZG93bicpOw0KICAgICAgICAgICAgICAgIGV4aXQ7DQogICAgICAgIHdoZW4gV2lu
    ZG93LkFmdGVyRGVhY3RpdmF0ZSBkbw0KICAgICAgICAgICAgICAgIHRhc2subGdyLnB1dGxp
    bmUoJ2RlYWN0Jyk7DQogICAgICAgICAgICAgICAgDQogICAgICAgIHdoZW4gPEZhaWxCdXR0
    b24+LkNsaWNrIGRvDQovLwkJCWRvIGFuIGludmFsaWQgb3BlcmF0aW9uLiBsZXRgc2VlIHdo
    YXQgaGFwcGVucw0KCQkJdCA6IFRleHREYXRhOw0KCQkJdC5TZXRWYWx1ZSgnTklMIGV4Y2Vw
    dGlvbiBzaG91bGQgcmFpc2UgaGVyZScpOw0KCQkJICAgICAgICANCmVuZCBldmVudDsNCnNl
    bGYuQ2xvc2UoKTsNCmVuZCBtZXRob2Q7DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
    LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KbWV0aG9kIE5ld1dpbi5Jbml0
    DQpiZWdpbg0Kc3VwZXIuSW5pdCgpOw0KZW5kIG1ldGhvZDsNCg0KLS0tLS0tLS0tLS0tLS0t
    LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQptZXRob2Qg
    V2luLkRpc3BsYXkNCmJlZ2luDQpkYXRhT25lLnNldFZhbHVlKCdTdHVmZicpOw0Kc2VsZi5P
    cGVuKCk7DQpldmVudCBsb29wDQogICAgICAgIHdoZW4gdGFzay5TaHV0ZG93biBkbw0KICAg
    ICAgICAgICAgICAgIGV4aXQ7DQogICAgICAgIHdoZW4gPGJ0bk9wZW4+LkNsaWNrIGRvDQog
    ICAgICAgICAgICAgICAgdyA6IE5ld1dpbiA9IG5ldzsNCiAgICAgICAgICAgICAgICBzdGFy
    dCB0YXNrIHcuRGlzcGxheSgpIHdoZXJlIGNvbXBsZXRpb249ZXZlbnQ7DQogICAgICAgICAg
    ICAgICAgcmVnaXN0ZXIgV2luQ2xvc2VIYW5kbGVyKHcpOw0KZW5kIGV2ZW50Ow0Kc2VsZi5D
    bG9zZSgpOw0KZW5kIG1ldGhvZDsNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
    LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQptZXRob2QgV2luLkluaXQNCmJlZ2lu
    DQpzdXBlci5Jbml0KCk7DQpkYXRhT25lID0gbmV3Ow0KZW5kIG1ldGhvZDsNCg0KLS0tLS0t
    LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
    DQpldmVudCBoYW5kbGVyIFdpbi5XaW5DbG9zZUhhbmRsZXIoaW5wdXQgcFdpbjogVG9zc01l
    Lk5ld1dpbikNCmJlZ2luDQp3aGVuIHBXaW4uTmV3V2luZG93RmluaXNoZWQgZG8NCglkYXRh
    T25lID0gbmV3Ow0KCXRhc2sucGFydC5sb2dtZ3IucHV0bGluZSgnTmV3V2luZG93RmluaXNl
    ZCcpOw0KCQ0Kd2hlbiBwV2luLk5ld1dpbmRvd0ZhaWxlZCBkbw0KCWRhdGFPbmUgPSBuZXc7
    CQ0KZW5kIGV2ZW50Ow0KLS0gRU5EIE1FVEhPRCBERUZJTklUSU9OUw0KSEFTIFBST1BFUlRZ
    DQoJQ29tcGF0aWJpbGl0eUxldmVsID0gMDsNCglQcm9qZWN0VHlwZSA9IEFQUExJQ0FUSU9O
    Ow0KCVJlc3RyaWN0ZWQgPSBGQUxTRTsNCglNdWx0aVRocmVhZGVkID0gVFJVRTsNCglJbnRl
    cm5hbCA9IEZBTFNFOw0KCUxpYnJhcnlOYW1lID0gJ3Rvc3NtZSc7DQoJU3RhcnRpbmdNZXRo
    b2QgPSAoY2xhc3MgPSBXaW4sIG1ldGhvZCA9IERpc3BsYXkpOw0KDQoNCmVuZCBUb3NzTWU7
    DQo=
    --------------4E6A4194374DC1BDF50CB1A1--

    Bobby,
    The simplest solution I think would be to use grids and map them to some business class - which I suppose you must be already using. In the event handler of the first window (button.click event) after you call the display method of the second window you can new the business class.
    Kapil
    From: Zirney, Bobby[SMTP:[email protected]]
    Sent: Donnerstag, 2. September 1999 02:33
    To: '[email protected]'
    Subject: (forte-users) Question
    This message is in MIME format. Since your mail reader does not understand
    this format, some or all of this message may not be legible.
    ------_=_NextPart_001_01BEF4BD.83F24DA6
    Content-Type: text/plain;
    charset="iso-8859-1"
    I have a frame with a button on it that will open up another frame. When I
    close the second frame by pressing the X in the top right hand corner, I
    want to clear all the data on the first screen. I have been trying all
    sorts of things without success. Does anyone have any suggestions as to how
    to do this?
    ------_=_NextPart_001_01BEF4BD.83F24DA6
    Content-Type: text/html;
    charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
    <HTML>
    <HEAD>
    <DEFANGED-META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
    charset=3Diso-8859-1">
    <DEFANGED-META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
    5.5.2448.0">
    <DEFANGED-TITLE>Question</TITLE>
    </HEAD>
    <BODY>
    <P><FONT SIZE=3D2 FACE=3D"Arial">I have a frame with a button on it =
    that will open up another frame.  When I close the second frame by =
    pressing the X in the top right hand corner, I want to clear all the =
    data on the first screen.  I have been trying all sorts of things =
    without success.  Does anyone have any suggestions as to how to do =
    this?</FONT></P>
    </BODY>
    </HTML>
    ------_=_NextPart_001_01BEF4BD.83F24DA6--
    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) RV: (forte-users) DecimalNullable &ArrayField

    Jorge,
    Here are couple of steps you may want to double-check:
    1. Set the desired scale (for e.g., say scale = 10) on the window's
    attribute (may be in Init() method).
    2. May be you want to mask the input to the DataField (for e.g., say Input
    Mask = Float)
    Make sure you don't overwrite the attribute (the object itself) with
    another object with a different scale.
    3. If what you see on the window is what does not get to the database, then
    you may want to verify parameter passing.
    4. More importantly, make sure the DecimalNullable object in the SQL has
    the same scale as that on the window.
    Hope this helps.
    Jagadish
    "Jorge
    Bellido" To: <forte-userslists.xpedior.com>
    <jorge.bellid cc:
    oeam.es> Fax to:
    Subject: (forte-users) RV: (forte-users)
    03/13/2001 DecimalNullable & ArrayField
    10:23
    Another example,
    If I have saved the data 55446.023, when I go to the window and I write
    0. then the data saved is 0.046
    Regards,
    Jorge.
    ----- Original Message -----
    From: Jorge Bellido
    To: forte-userslists.xpedior.com
    Sent: Tuesday, March 13, 2001 12:01 PM
    Subject: (forte-users) DecimalNullable & ArrayField
    Hello!
    I am very grateful to you for solutions given to me some days ago. I
    decided manage DecimalNullable, but now I have a problem:
    I have one ArrayField (called MyList") in a Window, with Mapped Type "
    Array of MyClass". "MyClass" has one attribute called Cost" with
    type DecimalNullable and in the Init I have "Cost = new ( scale = 10 );".
    In the Window the ArrayField have a DataField called "Cost" with
    MappedType DecimalNullable, and Input Mask Float.
    Well, when I go to this Window, for example is showed "23.12345". If I
    select this number with the mouse and I write for example "8", with the
    debugger I see that MyList.Cost is "8.0". If I continue writting one
    comma, with the debugger I see that MyList.Cost is "8.02345", and I don't
    know why Forte write the decimals of the old number, but only when I write
    the comma. If I write "8.2" the result is OK.
    Anybody knows some solution?
    Thank you very much,
    Jorge.

    Hi Jean-Paul,
    As described in the Technote 10981 some Forte programs (Nodemanager and
    router) handle correct the high-file descriptor-use problem. It is possible
    that Forte interpreter do it correct too.
    Zenon
    -----Original Message-----
    From: Jean-Paul Gabrielli [SMTP:Jean-Paul.Gabriellisema.fr]
    Sent: Monday, September 25, 2000 12:11 PM
    To: Adamek, Zenon
    Cc: Forte-userslists.xpedior.com
    Subject: RE: (forte-users) [UNIX] "Too many open files" 3.0.M2
    question
    Actually, the stuff works in interpreted mode.
    It's only when having the server partition compiled that this happen.
    j-p
    -----Message d'origine-----
    De: Adamek, Zenon [mailto:ZAdamekpurolator.com]
    Date: lundi 25 septembre 2000 17:13
    &Agrave;: 'Jean-Paul.Gabriellisema.fr'
    Cc: Forte-userslists.xpedior.com
    Objet: RE: (forte-users) [UNIX] "Too many open files" 3.0.M2 question
    see Technote 10981
    -----Original Message-----
    From: Jean-Paul Gabrielli [SMTP:Jean-Paul.Gabriellisema.fr]
    Sent: Monday, September 25, 2000 11:02 AM
    To: zeForte-users
    Subject: (forte-users) [UNIX] "Too many open files" 3.0.M2 question
    Hi,
    running a server partition that reads a configuration file,
    and apparently doen't close it after, I have that exception:
    SYSTEM ERROR: System Error: Too many open files, opening '....'with mode
    'r'
    Class: qqos_FileResourceException
    1) Is there such a limit, or does this rely only on the OS one ?
    2) How is this error not trapped, as I only got itinteractively, whereas
    my server log does a exception trap/segmentation fault,
    thanlks
    j-p
    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: [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) PurgeEvents doesn't

    Dear Duncan,
    I think it would be easier to set the State attribute of your button widget to
    FS_INVISIBLE or FS_VIEW in the part where you are handling the click event.
    See the attached .pex file file it contains a simple test program which consists of
    two window the first has a start and a stop button, but stop button is invisible
    till you press the start button. The start button starts the second window as a
    separate task and the start button becomes invisible, the stop button visible. In
    this way you can assure that the user can only start one task and not more.
    Best Regards,
    Tamas Deak
    Duncan Kinnear wrote:
    Hi folks!
    Really, the subject line says it all!
    I'm calling Window.PurgeEvents() and can watch the Event Queue in the
    debugger not changing in the slightest.
    We are trying to start a seperate task from a button but we do not want
    the user to be able to start more than one task. They can at this stage
    by double clicking on the button.The event stack stores the second
    click and executes it when the task is finished.
    Cheers,
    Duncan Kinnear,
    McCarthy and Associates, Email: [email protected]
    PO Box 764, McLean Towers, Phone: +64 6 834 3360
    Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
    Providing Integrated Software to the Meat Processing Industry for over 10 years
    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]
    Tamas Deak
    Lufthansa Systems Hungary
    (forte developer)
    2-6 Mazsa ter, Budapest, 1107, HUNGARY
    (36-1) 4312 973
    [email protected]
    [email protected][email protected]-

    Hi Jorge,
    Instead of using
    Data.SetValue(FormatDouble.DecodeDouble(self.PKg));
    use
    Data.SetValue(FormatDouble.DecodeDecimal(self.PKg,Data.Scale)); //
    This will take the second parameter of scale
    You will see the desired results.
    Thks,
    Sanjay
    -----Original Message-----
    From: Dave Ortman [SMTP:dortmanyahoo.com]
    Sent: Monday, March 05, 2001 12:32
    To: Jorge Bellido; forte-userslists.xpedior.com
    Subject: Re: (forte-users) I don't understand why appear new
    decimals.
    Simply put, the problem stems from the fact that
    floating-point arithmetic is inherently imprecise.
    Rounding errors are common.
    With doubles, you get 16 digits of accuracy. Beyond
    that there is no guarantee.
    If you want more information:
    http://docs.sun.com/htmlcoll/coll.648.2/iso-8859-1/NUMCOMPGD/ncg_goldberg.ht
    ml
    -Dave Ortman
    --- Jorge Bellido <jorge.bellidoeam.es> wrote:
    > I have another problem with numbers. So,
    >
    > Data: DecimalNullable = new;
    > Data.Scale = 20;
    > FormatDouble.Template = TextData(value='#');
    >
    > Dato.SetValue(FormatDouble.DecodeDouble(self.PKg));
    >
    > PKg is a widget DataField, whose mapped type is
    > TextData with input mask float. When I write 1.12
    > into the widget the variable Data is
    > 1.1200000000000001, and I can't understand it. I
    > would like that variable Data was 1.12.
    >
    > Could anybody to explain it?
    >
    > Thank you very much.
    >
    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) Domain Classes

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

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

Maybe you are looking for

  • Missing album art on player...still there in itunes

    After synching my ipod nano last night, some of the artwork that was there is now completely blank (just a black square...not even the musical note default). However, the art is still displayed on my PC on itunes. Anyone ever seen this? I will try to

  • Error message to the launch of a SPARQL query well trained in Java

    Hello, I am not if it is a compatibility problem between JENA ARQ and got the message that I sometimes not consistently (at least I can not reproduce !!!) so it is very difficult to correct at least to understand and find a solution? (Anyone have a s

  • KR Reference Field coming from Earmarked Fund

    Hi Experts, We have distributed our data entry of non PO related invoices out to end users.  They data enter and park the invoice.  Then Central AP uses their workflow inbox (SBWP) to view and "approve" the document to post it. This works great EXCEP

  • Logging of changes to material classifications in GTS

    Dear all is there a possibility to look up, if / when a user has changed the classification of a material? Have tried to find a /SAPSLL/C* table but either there is none or it slipped through when checking... maybe there is another possibility. Hints

  • Call Timer + Intro to CTI

    I built a small Cisco IP Phone Service in .NET that simply pulls contacts out of an API for a sales program we use and lets you search and display contacts, and then call them from the Service. I want to extend it so that I can save the info for each