Upgrading to V11.7.3 - Missing ADM2 function

Posted by jamesmc on 16-Jan-2019 11:41

Hi,

While testing our runtime in a v11 test environment I am seeing some error messages with regards to calling a function called SetAllBGColor.  I believe this function resided in adm2\folder.w.

The version of ADM2 that comes with v11.7.3 does not have this function anywhere within the code base.  I have also checked our current v10.2B08 installation and I cannot find it in there either so I am wondering where our compiled version of folder.w came from?

I have checked several versions of the downloadable development tools to try and find a version of v10 that has this function declared in it but I am having no luck.  Could anyone help?  Can anyone find this function in their ADM2 source?

Thanks

Posted by James Palmer on 16-Jan-2019 12:56

One of the "beauties" of adm2 is that you can customise the framework. I've found a few search results across the web of folks modifying this code, so it's a high possibility that the function is a customised one someone from your shop has added to the base code.

All Replies

Posted by Matt Baker on 16-Jan-2019 12:27

I looked through service pack releases of 10.2B through 11.7.  No such function exists.

Posted by Patrick Tingen on 16-Jan-2019 12:43

Found an old 9.1C install, but does not contain that function

Posted by Ken McIntosh on 16-Jan-2019 12:50

I checked every version from 8 thru 10.2B and there was never a SetAllBGColor routine in any of the adm or adm2 code.  Are you certain that's the correct spelling?  

Posted by James Palmer on 16-Jan-2019 12:56

One of the "beauties" of adm2 is that you can customise the framework. I've found a few search results across the web of folks modifying this code, so it's a high possibility that the function is a customised one someone from your shop has added to the base code.

Posted by frank.meulblok on 16-Jan-2019 13:01

I suspect this is the "set" include file working it's magic, looking for an ADM property called "AllBGColor". (no, it's not called "set.i", and it's not found under your "src" directory but in your "gui" / "tty" directory instead).

That first goes looking for the property name as a buffer-field in the ADMprops temp-table (which will be built/populated dynamically while the smartobject initializes). If that fails, it tries to invoke the set<property name> function dynamically.

If that dynamic function call also fails, you get the basic ABL error "User-defined function '<function>' invoked dynamically but could not be found. (5639)".

Posted by jamesmc on 16-Jan-2019 13:12

Thanks everyone.  I am going with the idea that a previous employee has modified the base version of folder.w.  It appears to have been done in 2013 and between then and now the source for the change has disappeared.

Posted by James Palmer on 16-Jan-2019 13:24

That's something you have to take into account when changing Progress versions. Any framework customisations have to then be re-coded into the new base after upgrade. It's very easy to lose functionality during an upgrade.

Posted by frank.meulblok on 16-Jan-2019 13:47

That, or you clone the version of the framework you're targetting into your own codebase, and make sure your local version is earlier in the propath than the base openedge directories.

Then your code won't break immediately when you upgrade your OpenEdge, but only when you pull a newer version of the framework into your code.

Posted by Jeff Ledbetter on 16-Jan-2019 13:54

We keep a copy of the framework loaded in Roundtable TSMS. Any baseline objects that are modified are created as 'Custom Variants' so we always know exactly which resources have deviated from the default release. This works great for the ADM2 framework or any framework that you are getting as source and customizing.

This thread is closed