swirl Guide to OmniMark 5   OmniMark home
docs home 
IndexConceptsTasksSyntaxLibrariesOMX VariablesErrors
 
     
Backward compatibility

OmniMark Technologies makes every effort to ensure that new versions of OmniMark are backward compatible with programs written for previous versions. However, compelling design considerations sometimes make it necessary to change the language in a way that is not backward compatible with all existing programs. The following is a list of all such changes made since OmniMark 2.0, together with suggestions for making affected programs work with the current version of OmniMark.

OmniMark 3.0

The default program type was changed from the aided translation type "down-translate" to a normal or "process" program. Programs written as down-translate programs, but without the down-translate declaration at the top of the program, will compile but will do nothing.

To fix programs with this problem, add the following code at the top of the program:

  down-translate

All variables must be declared. Programs that use heralded names but do not declare their variables will not compile.

To fix programs with this problem, declare all the variables.

To work around this problem without altering the program, use the "-herald" command-line option.

OmniMark 5.0

The initial size of variable-sized shelves was changed from 1 to 0. This will cause a run-time error in a program that assumes the default size is 1.

To fix programs with this problem, declare the affected shelves to have initial-size {1}.

OmniMark 5.2

The default SGML declaration used by the SGML parser was changed to increase the values of certain key quantities such as NAMELEN. This could cause programs that attempt to validate SGML documents against the Reference Concrete Syntax to fail to report an error when any of these quantities exceeds the Reference Concrete Syntax default in the document being validated.

To fix programs with this problem, supply a copy of the SGML declaration for the Reference Concrete Syntax with the document you are validating.

The XML parser introduced in OmniMark 4.0 was written to a draft of the XML 1.0 specification and was incompatible with the 1.0 specification in some ways, most notably in its case-insensitive parsing of XML. The XML parser now complies with the XML 1.0 specification. This could cause programs to behave incorrectly if they do not use the correct case in markup names. It could also cause problems with input files that are not compliant with XML 1.0, but were compliant with the OmniMark 4.0 XML parser.

To fix programs with this problem, ensure that your markup names are typed correctly. Ensure that your XML files are compliant with the XML 1.0 specification.

Some programs may produce compiler error 2130, indicating that they contain potentially ambiguous attribute alias names. This is because of changes to the namecase general declaration. The namecase general and namecase entity declarations do nothing in OmniMark 5.2 and later. OmniMark now complies automatically with the NAMECASE GENERAL and NAMECASE ENTITY declarations in the SGML declaration. Earlier versions of OmniMark erroneously applied the namecase general declaration to attribute aliases. Attribute aliases are now always case insensitive. OmniMark will raise a compile-time error if this creates any ambiguity in your code. Note that this error will only occur if the namecase general no declaration is found in your program. So, if your program contains the namecase general no declaration, try to compile it once before removing the declaration to detect any potential ambiguity in your attribute alias names.

To fix programs with this problem, first check your use of attribute aliases to make sure there is no ambiguity, then remove the namecase general no declaration.

OmniMark 5.3

Variable name heralding was removed from the language. No longer supported are the -herald command-line option, the declaration declare heralded-names, or the keywords pattern and another. You can no longer use type names as heralds.

Programs that use variable name heralds rather than explicitly declaring variables must be rewritten to declare variables explicitly.

Programs that use variable name heralding to distinguish variables of the same name, but different types and scopes, must be rewritten to use unique variable names (where access to variables in the wider scope is required).

The rules for recognizing tokens have been changed, meaning that spaces are sometimes required between tokens where they were not required before. As a rule of thumb, always separate OmniMark tokens with spaces.

The rules for multi-value comparisons have changed. This was required to support operator overloading. The following sequence was true in previous versions, but will be false in this version:

  do when "5" < "06" < 7 

In previous versions, all comparisons were done by converting the values to numbers. In this version, the first comparison is a string-based comparison, because both its arguments are strings. The second is numeric, because it contains at least one number.

OmniMark 5.4e2

Multiple definitions of the same global variable are no longer allowed.

       
----

Top [ INDEX ] [ CONCEPTS ] [ TASKS ] [ SYNTAX ] [ LIBRARIES ] [ OMX ] [ OMX ] [ ERRORS ]

Generated: August 11, 2000 at 3:06:15 pm
If you have any comments about this section of the documentation, send email to docerrors@omnimark.com

Copyright © OmniMark Technologies Corporation, 1988-2000.