New in the packaging of OmniMark 7.1
OmniMark 7.1 introduces OmniMark Studio for Eclipse, a cross-platform development environment, which also allows you to take advantage of a rich set of other development tools that have been built for the Eclipse platform. OmniMark Studio for Eclipse is available for all supported platforms.
You can once again run programs from source code in your OmniMark Server or Desktop Engine, using the -s command. A version of the engine, known as VM, which only runs compiled scripts, is still available.
New in the language of OmniMark 7.1
OmniMark now includes records. A record is a user-defined data type that may contain multiple fields of different types.
You can specify an alias for the shelf that you are repeating over. The alias name is specified using the as keyword following the name of the shelf. Specifying an alias is required when you iterate over a shelf that is a field of a record.
You can use the conditional operator ->...|... to select one of two values based on a condition.
You can now write overloaded functions, which are two or more functions with the same name but which operate on data of different types.
You can now write infix functions, where the name of the function goes between its two arguments. Thus the function works like an operator.
Compiler warnings have been categorized and enabled by default. You can control warnings using new command-line options:
-warning-error
promotes the class of warning to error
-warning-ignore
tells the compiler to ignore the specified class of warnings
-warning-report
reports the warning and compiling continues.
Classes of warnings are:
- ambiguity (a statement is potentially ambiguous )
- deprecated (you have used a deprecated keyword, and should use the modern equivalent)
- dead-code (a section of code cannot be reached)
- pattern (a pattern can match zero characters)
- redundancy (the same declaration or modifier is used more than once)
- uninitialized data-access (a shelf has not been explicitly initialized or assigned a value, yet its value is used)
Constant shelves can now be used in places where constant values used
to be required. For example:
constant integer months-per-year initial {12}
global stream months size months-per-year
Function arguments can now be declared write-only
. If an argument is declared write-only
, the following conditions apply:
- The function call must pass an actual existing shelf, not a constant or the result of a calculation.
- The function can write to the shelf.
- The function cannot read from the shelf.
- The function cannot address individual fields of an item on the shelf, it can only add or remove whole items.
- The type of the shelf must match the declared type or be a type from which the declared type is an extension.
- If the function call specifies a particular item on the shelf, that item is treated as the default item inside the function, but the whole shelf is still available.
New in the libraries of OmniMark 7.1
The OMRTF library allows you to parse RTF documents, much as you parse SGML or XML documents.
The OMVFS library now has functions that enable you to access files using the HTTP, HTTPS and FTP protocols.
New in the language of OmniMark 7.0.2
The Web Services Broker allows you to host web services and direct web service requests.
You can use #schema
to retrieve a schema for an XML document or to test if an external text entity represents an XML Schema.
The join operator ||
is now streaming in all contexts. In earlier versions, join was buffered in some contexts.
OmniMark 7.0.2 supports two new "content is ..." tests:
content is empty-tag
returns true when the element being asked about
was specified using an empty element tag. For XML this is a tag of the
form "<foo/>".
content is declared-empty
returns true when the content model of the
element being asked about is empty.
Module interfaces have been created for the following libraries:
- OMDB, the database access library,
- OMLDAP, the ldap support library,
- OMNETUTIL, the network utilities library,
- OMTCP, the TCP/IP client and server library, and
- OMUTIL, the utilities library.
The functionality that was previously found in OMUTIL has been reorganized into three modules:
- UTF8PAT, the UTF-8 processing library, has been renamed to OMUTF8
- OMNETUTL, the network utilities library, has been renamed to OMNETUTIL (to make it consistent with OMUTIL).
New in the language of OmniMark 7
- Modules. A module is a self-contained unit of OmniMark code. It can have its own include files, macros, rules, groups, globals and functions. It has control over what names its "clients" (includers) see, and the client has control over what names it uses for the things it gets from the module.
It is useful to think of a module as being like an "include" file, but with control over the names defined and used within it.
By convention, OmniMark modules are placed in files whose names end with the "
.xmd
" suffix, in the same way that OmniMark programs use ".xom
" and OmniMark include files use ".xin
". For more detailed information about OmniMark Modules, please see the Modules page.
- Quoting user-defined names. You can put a name inside quotes (single or double), so long as you immediately precede the first quote by a hash sign:
set #"a" to #"b" #"+" 1
- Constants. A constant is like a global except that it is immutable-- once its initial value is set, it can never be changed. For more information on constants, please see the global, local, constant page.
- Value-source and value-output. Value-source and value-output external function parameter types have
been added to the language. These aid in writing stream external filter
functions.
- The initial value of
optional
function arguments can now be dynamic values.The default initial value is calculated each time the function is called and the default value is needed. This means that default values can now depend on global
and constant
values.
- Support for using #current-input in external functions has been added to
the external function api.
- OmniMark now supports filter functions: external functions that can filter while data is being read, or can filter while data is being written. For more information on this feature, please see Filter Functions.
- It is no longer necessary to specify size for a multi-item fixed-sized global, constant or local shelf if you provide initial values.
- Input functions have been generalized. An input function is now declared as being of the type "input" rather than being treated as an input function because of the way it is called in an XML or SGML parse. This means that input functions are usable in all contexts and can be usefully used in place of stream returning functions. See Functions and Input functions and the markup parserfor details.
New in the libraries of OmniMark 7
- An XSLT processing support library, omxslt, is available. The omXSLT library allows OmniMark programs to perform XSLT transformations on input and output data. It also allows you to feed XSLT transformations into OmniMark's internal XML parser or the pattern-matching engine.
- An external buffer library, omiobuf, is available.
- Six new filter function libraries have been created which repackage the international character set functions of omefio so that they have streaming capability.These are omffbase64 (base 64 conversion filters), omffbig5, (big 5 conversion filters), omffeuc (EUC conversion filters), omffjis (JIS conversion filters), omffsjis(Shift JIS conversion filters) and omffutf16 (utf-16 conversion filters).
- The MQSeries access library, ommqi, provides an interface between OmniMark and IBM MQISeries.
- Module interfaces have been created for some of the existing libraries: omfloat, omtrig, ombessel, ombcd, omvfs, and omxerces.
New in OmniMark Studio 7
- A new debug window has been added to display information about constants.
- Small modifications have been made to the shelf details window.
OmniMark 7.1 Documentation Generated: December 19, 2003 at 12:46:02 pm
If you have any comments about this section of the documentation, send email to [email protected]
Copyright © Stilo Corporation, 1988-2003.