· Feb 1, 2017 1m read

Gotcha when roundtripping classes in UDL format using %Compiler.UDL.TextServices

The class %Compiler.UDL.TextServices arrived in 2015.1, bringing us methods for exporting a class in UDL format (i.e. looking just like we're used to seeing it in Studio), and importing a UDL format definition back into a namespace. Some source control tools including our Deltanji are now able to use UDL format, resulting in diffs that are easier to understand.

But it turns out that certain classes that export successfully using, say, the GetTextAsFile method will fail to import (in this case using SetTextFromFile) on UNIX platforms prior to 2016.1.1, giving the following error:

ERROR #8500: Error: 'No Parser Available for Specified Language'

WRC tell me that the necessary SQL and XML parsers were only ported to the UNIX platforms at 2016.1.1.

I've specifically observed the problem with a DTL class because of its XData block. But it sounds like a class with Embedded SQL might be affected too

I'm also waiting to hear from WRC about how this issue affects the OpenVMS platform.

Discussion (1)1
Log in or sign up to continue

It's now been confirmed that the relevant parsers will not be ported to OpenVMS. So it'll never be possible to roundtrip all classes in UDL from that platform.

Also worth noting that GetTextAsFile appears to pre-delete the class it's about to import before it encounters the parse error and aborts the import. So you're left without a copy of the class in your namespace. Oops!