The instanceOf function is extended to also work for non-Progress Dynamics applications. This enables class type checks to be done transparently across the two framework variants in the cases where the ObjectType does not provide sufficient separation. The ObjectType is still supported and used throughout the ADM2 and the AppBuilder.
The instanceOf in ADM2 uses the super procedure hierarchy. It considers the class name to be the super procedure name without the path and the .p extension. It is actually derived from the &ADMsuper preprocessor, which matches the super procedure name in all shipped super procedures. Progress Dynamics uses the actual class names in the Repository.
The instanceOf function also allows transparent references to classes that have different names in the two models, but really are the same class. For example, both instanceOf('containr') and instanceOf('container') can be used transparently in both environments. The following table lists names that can be used interchangeably:
ADM2
Progress Dynamics
Smart
Base (not likely to be used as all objects are of this type)
Combo
DynCombo
Lookup
DynLookup
Datavis
DataVisual
Containr
Container
Progress Dynamics has more classes than ADM2. References to classes that do not exist in ADM2, like "dynSDO", return false in ADM2.
The instanceOf function still checks the ObjectType as a last resort. This is not new behavior, but something that one should be aware of as there are classes in Progress Dynamics that have similar names to some of the ObjectTypes. When InstanceOf checks with these names, it likely gives the desired effect because Progress Dynamics names are based on the ADM2, but you should use some caution. In particular, avoid using instanceOf to check for classes that begins with "Smart", as these names typically are classes in Progress Dynamics and ObjectTypes in ADM2.