Omnis Classic vs Omnis Studio
Technical Reference for Developers
This page outlines the major behavioural differences between Omnis Classic and Omnis Studio.
It focuses on practical areas where assumptions made in one environment will cause errors or unexpected behaviour in the other.
The intent is to provide a reliable reference when switching between Classic and Studio environments.
1. Execution Model
Procedural vs Object-Based
Omnis Classic executes code strictly in sequence.
There are no object methods, no event lifecycle, and no method dispatch system.
Omnis Studio introduces classes, instance variables, events ($construct, $destruct, $event()), and encapsulated logic.
Classic code is linear and deterministic. Studio code is event-driven and object-oriented.
2. Transaction Handling
Classic does not support:
Begin transactionCommitRollback
Everything is handled with procedural file commands.
Studio provides full transaction blocks and SQL-level rollback/commit support.
3. Code Formatting & Whitespace
Classic automatically:
- trims extra spaces
- normalises operator spacing
- rewrites indentation
- removes trailing spaces
Studio preserves developer formatting.
Classic code cannot rely on custom whitespace or unusual formatting to convey meaning.
4. Lists and Columns
4.1 Column Identification (Classic)
Classic identifies list columns by field name:
LL_List(FieldName, RowNum)
Studio often uses numeric index references unless otherwise defined.
4.2 Dynamic Access Using nam()
Classic uses:
Calculate LC_Col as nam(LC_ColName)
Studio typically uses object references instead.
5. The pick() Function
In Classic:
pick(valueList, match)
returns 0 when no match is found
(as long as no third parameter is supplied).
This behaviour is deliberate and widely used in Classic code.
Studio’s equivalent behaviours differ and may return null-like values.
6. Field, Variable, and Type Handling
Classic is permissive with types:
- characters convert loosely to numbers
- booleans behave as numeric values
- null-equivalents are simple blanks or zeros
Studio uses stronger type rules and clearer null states.
7. Window Behaviour
Classic windows are purely procedural:
- code executes directly
- data-entry affects timer behaviour
- few event hooks exist
Studio has a full event model:
$construct$destructevClick,evOpen, etc.- internal object state
Classic UI logic must be written procedurally.
8. Timers
Classic timers:
- may stop firing during data entry
- must be controlled carefully
- rely on direct code execution
Studio timers follow object lifecycles and event dispatch.
9. Datafiles and SQL
Classic:
- depends on Omnis datafile technology
- uses procedural file commands
- typically relies on the Omnis Data Bridge for network access
Studio:
- supports SQL classes
- handles ODBC/JDBC connections
- provides schemas and data modelling tools
10. Summary
Omnis Classic is procedural, predictable, and minimalistic.
Omnis Studio is object-oriented, event-driven, and modern.
Understanding the differences avoids mistakes and preserves code integrity when switching between them.