Overview
Enterprise Control Language
(ECL)
ECL
has been designed specifically for huge data projects using
the LexisNexis High Performance Computer Cluster (HPCC)
HPCC
. ECL’s extreme scalability comes from a design that allows
you to leverage every query you create for re-use in subsequent queries as
needed. To do this, ECL takes a Dictionary approach to building queries
wherein each ECL definition defines an expression. Each previous Definition
can then be used in succeeding ECL definitions—the language
extends itself as you use it.
Definitions versus Actions
Functionally, there are two types of ECL code: Definitions (AKA
Attribute definitions) and executable Actions. Actions are not valid for
use in expressions because they do not return values. Most ECL code is
composed of definitions.
Definitions only define what is to be done,
they do not actually execute. This means that the ECL programmer should
think in terms of writing code that specifies what to
do rather than how to do it. This is an important
concept in that, the programmer is telling the supercomputer
what needs to happen and not directing how
it must be accomplished. This frees the super-computer to
optimize the actual execution in any way it needs to produce the desired
result.
A second consideration is: the order that Definitions appear in
source code does not define their execution order—ECL is a non-procedural
language
non-procedural language
. When an Action (such as OUTPUT) executes, all the
Definitions it needs to use (drilling down to the lowest level Definitions
upon which others are built) are compiled and optimized—in other words,
unlike other programming languages, there is no inherent execution order
implicit in the order that definitions appear in source code (although
there is a necessary order for compilation to occur without error—forward
reference
forward reference
s are not allowed). This concept of “orderless execution”
requires a different mindset from standard, order-dependent programming
languages because it makes the code appear to execute “all at
once.”
Syntax Issues
ECL is not case-sensitive. White space is ignored, allowing
formatting for readability as needed.
Comments in ECL code are supported. Block comments must be delimited
with /* and */.
/* this is a block comment - the terminator can be on the same line
or any succeeding line – everything in between is ignored */
Single-line comments must begin with //.
// this is a one-line comment
ECL uses the standard object.property syntax
used by many other programming languages (however, ECL is not an
object-oriented language) to qualify Definition scope and disambiguate
field references within tables:
ModuleName.Definition //reference an definition from another module/folder
Dataset.Field //reference a field in a dataset or recordset