Strange notation failure in 10.2 development

Fred Haislmaier fhaislmaier at greshamtech.com
Wed Apr 20 01:52:55 UTC 2022


Hello all,

I am scratching my head on some strange behavior,
while converting some Omnis 5.1 code to 10.2

I have an objectClass (objectA) that has a number of methods and also instance and class variables.
One of the class variables (cMyObj) is of type object (objectB)

The first time the objectA is used, cMyObj is populated with an instance of objectB
Then each time objectA is instantiated, cMyObj is available.

If I run this command in my code using a runtime version of Studio 10.2 it works multiple times.

Do $clib.$objects.objectA.$new().$myRoutine(100,50) Returns vNewValue

If I run the same code in a development version the code will work, at least once, then it may or may not stop working.
When I step through the code I can interrogate cMyObj and see that it is set to an instance of objectB
and I can use the interface manager to see all the public methods in cMyObj/objectB.

If I try to step into line 1 of $myRoutine, I trigger a notation error saying that $myRoutine is not valid notation.

Has anyone run into this before?
Any idea why this might be happening?

It makes it very hard to debug code in dev mode when the behavior is different than runtime.
Fred Haislmaier


Here is some code to better explain.

--- objectA ---

$construct - cMyObj is class variable of type Object
----------
1. If isnull(cMyObj)
2.   Do $clib.$objects.objectB.$new() Returns cMyObj
3. End If


$myRoutine  ( 2 numeric parameters)
----------
1. Do cMyObj.$addMe(pNum1,pNum2) Returns vNewValue


--- objectB ---

$addMe (takes 2 numeric parameters and returns the sum of the two)
----------
1. Quit method pNum1 + pNum2


Privileged or confidential information may be contained in this message. If you are not the addressee of this message please notify the sender by return and thereafter delete the message, and you may not use, copy, disclose or rely on the information contained in it. Internet e-mail may be susceptible to data corruption, interception and unauthorised amendment for which Gresham does not accept liability. Whilst we have taken reasonable precautions to ensure that this e-mail and any attachments have been swept for viruses, Gresham does not accept liability for any damage sustained as a result of viruses. Statements in this message that do not relate to the business of Gresham are neither given nor endorsed by the company or its directors. Gresham Technologies plc Registered in England and Wales. Company No. 01072032 Registered Office: Aldermary House, 10-15 Queen Street, London, EC4N 1TX. Further information about Gresham Technologies can be found on our website: www.greshamtech.com


More information about the omnisdev-en mailing list