Skip to main content

This is documentation for Caché & Ensemble.

For information on converting to InterSystems IRIS, see the InterSystems IRIS Adoption Guide and the InterSystems IRIS In-Place Conversion Guide, both available on the WRC Distributions page (login required).

Previous sectionNext section

DTL <code>

Execute lines of custom code.


   <![CDATA[ target.Name = source.FirstName & " " & source.LastName]]> 
Copy code to clipboard


Element Purpose
<annotation> Optional. A text string that describes the <code> element.


The DTL <code> element executes one or more lines of user-written code within a DTL data transformation. You can use the <code> element to perform special tasks that are difficult to express using the DTL elements. Any properties referenced by the <code> element must be properties within the source or target object for the data transformation.

The scripting language for a DTL <code> element is specified by the language attribute of the containing <transform> element. The values basic or objectscript indicate Caché Basic or ObjectScript. If not specified, the default is ObjectScript. MVBasic is not supported. Any expressions found in the data transformation, as well as lines of code within <code> elements, must use the specified language.

For further information about these Caché programming languages, see the following books:

Typically a developer wraps the contents of a <code> element within a CDATA block to avoid having to worry about escaping special XML characters such as the apostrophe (') or the ampersand (&) . For example:

  <![CDATA[ target.Name = source.FirstName & " " & source.LastName]]>
Copy code to clipboard

In order to ensure that execution of a data transformation can be suspended and restored, you should follow these guidelines when using the <code> element:

  • The execution time should be short; custom code should not tie up the general execution of the data transformation.

  • Do not allocate any system resources (such as taking out locks or opening devices) without releasing them within the same <code> element.

  • If a <code> element starts a transaction, make sure that the same <code> element ends the transactions in all possible scenarios; otherwise, the transaction can be left open indefinitely. This could prevent other processing or can cause significant downtime.