The version of the CSL language implemented in Magnolia is not completely backwards compatible with implementations in legacy tools.  In general, this is the result of various language design decisions intended to simplify the language and make it more consistent with other modern programming languages.  Most legacy CSL models however require only a modest amount of effort to port the model code to Magnolia.  The following table summarizes the legacy language constructs which have been modified in Magnolia.


The PROGRAM keyword

Replaced by the MODEL keyword/section.

The DIMENSION statement

Datatype specification (REAL, INTEGER, LOGICAL, CHARACTER) is now included in the DIMENSION statement and array declaration uses square brackets.  CHARACTER variable no longer have to be assigned a size.

Array notation

Array elements are now addressed using square bracket notation.

The TABLE statement

The data used to populate a TABLE statement is now specified in two or more CONSTANTs.

The SCHEDULE statement

The AT/XZ/XP/XN qualifiers are no longer delimited by periods. specified in two or more CONSTANTs.

FOR loops

For loops are now delimited by an END statement, not a CONTINUE statement.

IF/THEN/ELSE statements

Conditionals no longer use the THEN keyword, and the end block is delimited by END, not ENDIF.

Relational and logical operators

FORTRAN-style relational and logical operators have been replaced by the C- and Java-style counterparts: ==, <, >, <=, >=, &, |.  The only exception is the logical negation operator, which uses the MATLAB-style ~ instead of ! to avoid conflicts with CSL comments.