Reference: iFL Migration Rules

The syntax migrator is the program that analyzes expressions and proposes changes to preserve the original intent. This section lists the rules the migrator will apply when upgrading an expression.

iFL expressions are considered constants if they do not contain at least one function call. In 5.x, the quotes in constant expressions are evaluated. In 6.x, constant expressions are not interpreted in any way. If possible, the migrator will remove quotes, otherwise it will introduce a call to _concat() to evaluate the quotes.

By convention, built-in iFL function names start with an underscore character. For backwards compatibility, these functions are also callable without a preceding underscore: file(), ldap(), sreg(), cond(), any(), all(), and(), or(). The migrator will keep the function name without an underscore if the rest of the parse is compatible. If the expression needs any other change, then these functions will have an underscore prepended to their name.

The quoting rules in 6.x have been improved. If necessary, the migrator will modify the quoting in 5.x expressions. For example, two single-quotes in a row will be replaced by one single-quote within a double-quoted literal.

Bare literals that contain non-alphanumeric characters like a dash will be quoted by the migrator. This is required as the dash can be used in a literal such as a file name, but can also mean subtraction.

The migrator will keep implicit concatenation if the rest of the parse is compatible. If the expression needs any other change, then implicit concatenation will be replaced by an explicit call to _concat(). If one of the implicit concatenation is an operator, then implicit concatenation will be replaced by a call to _cat(). The function _cat() is identical to _concat() except it evaluates operators within its arguments.

Calls to unknown functions will be replaced by quoted literals.

The _xpath(), _xflat(), and _exists() functions are renamed _iwxpath(), _iwxflat(), and _iwexists() respectively. The new functions will always select iWay's original implementation of XPath irrespective of the XPath 1.0 Functions general setting.

The _decode() function is renamed _decode64().

The _idiv(a,b) function is replaced by _int(_div(a,b)) to preserve the 5.x semantics. The function _div() applies double precision division and the result is truncated. In 6.x, the _idiv() arguments must already be integers and integer division is applied.


iWay Software