finally found it

do $system.OBJ.SetQualifiers("/exportversion = 2016.2.")

You beat me to it Robert :)  Glad you tracked it down


Obviously the class keywords and source could diverge and become incompatible.

That said, take a look at the header in the export file.  Should be as simple as changing IRIS to cache

EDIT: Now that I have seen this qualifier, I'll be doing some tests to see the result.
EDIT #2: Looks like it works as I intended, so please ignore  the text below. 

Yes, this is really painful if you think about using IRIS to generate artifacts for relatively new Caché versions. They can't read some changes that IRIS made, like:

* IRIS also moves away from %Library.CacheStorage which is used by Caché as it instead now uses %Storage.SQL. It also unifies the storage strategy for both: %Persistent classes and custom storage, which Cache used two distinct storage classes, one being %CacheStorage.
* Some XML elements have been modified or wiped out.
* The XML header now prints generator=IRIS instead of generator=Cache.
* Methods that have [ Language = cache ]. are now converted to [ Language = objectscript ].

This is what lead us to create a custom docker image that hosts Caché instead of IRIS for using it to generate continuous delivery.

I saw this differences before fiding the qualifier.
That caused me a headache thinking over larger packages.

I like to export my project at certain times and later use winmerge to compare and see what has changed. I think to create a utility to automate the fiddle the xml files to compare like neutralizing creation time and compile time. Maybe remove storage from xml when possibly moving code from iris to cache. I just need to find the correct open to be able to read from the beginning of a file. I get error an end of stream error when I try to read from file.