WarpIN's script language has changed with V0.9.6. The original motivation for this change was to make WarpIN XML-compliant, since the old script language (which was used before V0.9.6) was not for a number of reasons.

After a short debate, we decided to slightly redesign the script language. The new script language itself is not backwards-compatible with the old language, even though it is very similar.

WarpIN still supports the old script language in two ways:

  1. When WarpIN is given an archive with an old script, it switches to "compatibility mode" and interprets the script according to the old syntax rules. As a result, all archives created for WarpIN versions before 0.9.6 should still work.

    However, the old script language is no longer documented in this reference to convince developers to migrate to the new language.

  2. WarpIN contains a small utility which automatically converts an old script (a .WIS text file) to the new style.
The new language is not that much different from the old language. A few changes had to be made however to achieve XML compatibility. The changes are mainly the following:
  1. An XML header was added. This is also the single item upon which WarpIN decides whether to switch to "compatibility mode". If the XML header is found, WarpIN will enforce the strict new XML syntax and report errors if an old-style script follows. Reversely, if you forget to add the XML header to a new-style script, the old parser will choke on the script.

  2. XML is case-sensitive. As a result, you are now required to use the WarpIN tags and attributes in upper case, as specified in this documentation. The old parser allowed you to use mixed case.

  3. The HEAD and BODY tags are gone. All elements which used to be subelements of these two tags are now direct subelements of the WARPIN element.

  4. XML requires that all attributes have values. As a result, a number of attributes had to be redefined, such as the old SELECT, BASE, and NODESELECT attributes to the PCK element. See the documentation for the PCK element for the new definitions.

  5. XML requires that all attribute values be in quotes. As a result, specifying things like INDEX=1 is now invalid. It must be INDEX="1".

  6. XML requires that an attribute appear once per element. We therefore had to convert the various PCK attributes for system configuration into subelements of the PCK element, which may appear more than once. See the documentation for the new CLEARPROFILE, CONFIGSYS, CREATEOBJECT, EXECUTE, KILLPROCESS, REGISTERCLASS, REPLACECLASS, REQUIRES, and WRITEPROFILE elements for details.

  7. While we were at it, we greatly cleaned up the syntax of these former attributes, which had become quite complex and difficult to type correctly. Since these attributes are now elements, we defined new attributes for the various parameters and cleaned them up at the same time.

  8. The REXX code in the REXX element needs to be in an extra XML <![CDATA[ ... ]]> block because it can contain angle brackets. This also solves the problems the old parser had with "less than" and "greater than" comparisons in REXX code. These are now simply skipped.