swirl Guide to OmniMark 6   OmniMark home
docs home 
IndexConceptsTasksSyntaxLibrariesOMX VariablesErrors
 
     
What's new

New in the language and libraries of OmniMark 6.5

The following features have been added:

New in OmniMark Studio 6.5

New in the language and libraries of OmniMark 6.1.3

The following features have been added:

OMDB library

Installers

New in the language and libraries of OmniMark 6.1

The following features have been added:

omutil library

HTTP library

FTP library

HPUX

New in OmniMark Studio 6.1

OmniMark Studio now does the following

For further information, see the OmniMark Studio Windows help file.

New in the language and libraries of OmniMark 6.0.2

The following features have been added:

omtcp library

New in OmniMark Studio 6.0.2

OmniMark Studio now does the following

  1. Lets you choose Highlight Currently Matched Data in the Parsing Sources Datascope
  2. Responds correctly when you choose Save Project as Args File from the File Menu (it creates an Args file that contains the -load option)

New in the language and libraries of OmniMark 6.0.1

The following features have been added:

omdb library

omvfs library

New in OmniMark Studio 6.0.1

OmniMark Studio now does the following

  1. Has a reload operation on the File menu to replace a file in the edit window with one that has been saved on disk.
  2. Lets you use arguments files (.xar files) in Studio projects
  3. Warns you when saving a file if file on disk has been changed
  4. Tells you when a file has changed on disk, whenever you bring the file's edit window to the front or whenever your program in Studio processes the file

New in the language and libraries of OmniMark 6.0

The following features are new in version 6.0:

** and ++ occurrence indicators

For years, OmniMark programmers have been writing and using code like the following:

     ((lookahead not <terminating-pattern>) any)* <terminating-pattern>

Now you can write:

     any** <terminating-pattern>

See pattern matching for details.

The ++ occurrence indicator has also been added. It is identical in function and form to the ** occurrence indicator except that it is required to match one or more characters from the given character set before the terminating pattern.

In other words, if the terminating pattern is the next sequence in the input, ++ will fail whereas ** would have succeeded.

repeat for loop

OmniMark now has a repeat for loop. You can write loops that repeat for each allowed value of a control variable:

  repeat for integer i from 12 to 144 by 6
     output "d" % i || "%n"
  again

repeat to

A new looping construct, repeat to has been added. It allows you to repeat a loop a specified number of times.

Pattern variables in lookahead

You can now capture the pattern matched in a lookahead to a pattern variable:

  find lookahead any => next-char
     output "The next character in the input is '"
         || next-char
         || "'.%n"

Zero-length pattern matching and the null modifier

You can allow a pattern to match zero characters, even where OmniMark's restriction on two consecutive zero-length pattern matches in the same scan would normally prevent it, by prefixing the pattern with null.

Instance keyword now optional when parsing well-formed XML

The keyword instance is now optional when you are parsing well-formed XML using do xml-parse.

For example, the following routine will parse well-formed XML:

  do xml-parse
       scan file my-instance
       output "%c"
    done

If you are parsing XML using a DTD, however, you need to specify "do xml-parse document".

New indexing forms

Item indexing of a shelf has been replaced by '[ numeric-expression ]'

For example:

     set lookuptable[5] to "epsilon"

Key indexing of a shelf has been replaced by '{ string-expression }'

For example:

     set lookuptable{"epsilon"} to 5

These new forms are supported in the following contexts:

  1. Indexing a shelf, attribute list, or referents
  2. do markup-parse with dtds { ... }
  3. new <shelf-name> after/before [...] to <value>
  4. new <shelf-name> after/before {...} to <value>
  5. set new <shelf-name> after/before [...] to <value>
  6. set new <shelf-name> after/before {...} to <value>
  7. set <shelf-name> [...] to <value>
  8. set <shelf-name> {...} to <value>

positional patterns

Positional patterns are now allowed in more contexts.

New pattern matching synonyms

A \ inside character class means "except"

The symbols |= and =| are synonyms for value-start and value-end.

Take and Drop in pattern matching

The new take and drop operators enhance OmniMark's string manipulation.

New modifier on #main-output

You can now specify that the stream #main-output has domain-free.

Identity operator

The identity operator (~)is used to distinguish shelf expression from pattern expressions within a pattern.

Overloaded operators and dynamic initialization

OmniMark has been adding overloaded operators over the past few releases. This work is not yet finished. However, new libraries, notably the Binary Coded Decimal library, are taking advantage of the work done to date.

As part of this ongoing work, the latest visible functionality is the addition of dynamic initialization of variables. Dynamic initializers can be applied to both global and local variables.

Numbers with underscores

Underscores are now allowed in numbers, including integers and BCD numbers, but not in floating point numbers.

For example, you can specify an integer with underscores:

  process
     local integer x
     set x to 1_000_000
     output "Number is %d(x)"
  ; The output will be "Number is 1000000"

You can also specify a BCD number with underscores:

  include "ombcd.xin"
  process
     local bcd y
     set y to 1_000_000
     output "bcd Number is " || "<,NNZ.ZZ>" % y
  ; The output will be "BCD Number is 1,000,000.00"

Less casting

When a literal of an externally-defined numeric type is used, it no longer requires explicit type casting where the intended type of the numeric literal is clear.

assert

You can now add assert statements to your OmniMark programs.

#args

#args is now a synonym for #command-line-names

log-message change

log-message is now part of the language and is no longer part of the builtins library. You no longer need to include "builtins.xin" to use log-message.

Utilities library changes

The global stream shelf, UTIL_Env, has been added to the utilities library. This shelf is populated with all of the environment variables. Using this shelf makes it easy to find HTTP parameter variables.

BCD and floating point libraries (ombcd and omfloat) changes

New versions of the BCD and floating point libraries have been released, and the operations allowed in both libraries are largely identical.

Both the floating point and the BCD libraries now use these arithmetic operators and the comparison operators in the same way:

The absolute value function, abs, has also been extended to the floating point library.

The new power operator, **, has been added to both the floating point library and the BCD library.

The floating point library now implements the same rounding operations as the BCD library:

Both the floating point library and the BCD library now support the same exponential functions:

Both libraries define the constant e.

Formatting in BCD and floating point

The format operator, %, has been extended to the floating point library so that floating point numbers can be formatted in the same way as BCD numbers.

The format operator supports both template formatting and the "d" format command. The "d" format modifiers ("u", "l", "f", and "k") are now supported for floating point numbers.

The "d" format command supports the new "e" format modifier for both floating point and BCD numbers. This modifier formats a number in exponential notation.

Trigonometry library (omtrig)

The OmniMark trigonometry library is a collection of trigonometric functions based on the C math library. It serves as a "wrapper" around a particular math library. You can use the functions in this library to write OmniMark applications that can perform double-precision floating point arithmetic.

The functions in this library are the following:

Bessel library (ombessel)

There is a new Bessel function library, ombessel, that includes the Bessel functions j0, j1, jn, y0, y1 and yn.

What's been deprecated

item and key in all contexts where they serve as an indexer. Use [...] and {...} respectively instead.

@ and ^ are deprecated in all contexts.

The following functions and constants are now deprecated (but still supported for backwards compatibility): FP_add, FP_sub, FP_mul, FP_div, FP_mod, FP_eq, FP_le, FP_ge, FP_lt, FP_gt, FP_ne, FP_pow, FP_ceil, FP_floor, FP_nearest, FP_trunc, FP_exp, FP_log, FP_log10, FP_sqrt, FP_s, FP_d, FP_v, FP_e, FP_pi, FP_cos, FP_sin, FP_tan, FP_acos, FP_asin, FP_atan, FP_atan2, FP_cosh, FP_sinh, FP_tanh, FP_hypot.

The omvfile library has been removed from the product. Use omvfs instead.

The omfsys library has been deprecated. Use omvfs instead.

Incompatibilities

External libraries compiled for previous versions of OmniMark are not compatible with OmniMark 6. This includes both libraries supplied by OmniMark Technologies and third party libraries. Older libraries must be recompiled with the OmniMark 6 external function developers library before they can be used with OmniMark 6.

With the introduction of dynamic initializers, OmniMark no longer supports multiple global variable definitions. In earlier versions the following was legal:

     global integer message-count
     global integer message-count

Now this is not legal code. One of the declarations must be removed.

New in OmniMark Studio 6.0

OmniMark Studio now does the following

  1. Displays data in two new datascopes in three viewing modes: Text, Raw and Dump
  2. Lets you drag and drop files onto the Edit window
  3. Expands variables to show their shelf items on click of plus sign
  4. Provides Global and Local variables windows (instead of an "All Visible Variables" window)
  5. Lets you drag and drop variables from Global or Local variables to the Watched variables table
  6. Displays a variable's details on double-click or from Run menu
  7. Displays a referent's details on double-click or from Run menu
  8. Constrains display of a variable to certain items or ranges on right-click for "Display only"
  9. Lets you select which shelf item of a variable to watch
  10. Lets you compress variable display on item or on key
  11. Throttle now has a Stop button
  12. Edit preferences window has a variables tab to customize variables tables
  13. Details of variable allows display of Text, Raw or Dump mode for streams, OMX variables, and pattern variables
  14. Log window has right-click option to "Clear log window on run"
  15. Provides a redesigned Project options dialog box
  16. Traps OmniMark run-time errors and throws
  17. Stops on the first breakable line or runs to completion
  18. Colors the syntax in other programming languages
  19. Supports block operations for editing files
  20. Displays the cursor's row and column position on the status bar
  21. Lets you set bookmarks anywhere in your file
  22. Lets you split a document into multiple views
  23. Lets you dock and undock toolbars
  24. Provides tabbed edit windows (window menu has been removed)
  25. Provides a drop-down menu of recent files after the Open file and Open project toolbar buttons
  26. Provides a drop-down menu of open projects after the Start Debugging button on the Debug toolbar
  27. Lets you close the Project manager from a close button (and maximize the Edit window)

       
----

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

OmniMark 6.5 Documentation Generated: December 23, 2002 at 6:24:59 pm
If you have any comments about this section of the documentation, send email to [email protected]

Copyright © OmniMark Technologies Corporation, 1988-2002.