ADONIX calculated expressions  

Presentation

In a certain number of screens in the parameterization, there is the possibility to enter calculation formulas, still called adonix expressions (the execution engine for the software using X3 technologies is in fact called adonix). These expressions are expressed in an algebraic format and form part of a general language. Below is given a general description of the functions that can be used in Adonix expressions.

Numerous aides exist during the entry of a formula, both to provide information on the available variables and functions but also to explain the significance of the formula. These aides are accessible by means of the formula editor.

It is possible to test an expression (in which only the accessible constants and variables for the context are available) using a calculator.

ADONIX expression type

An ADONIX expression can be of the alphanumeric, numeric or date type. According to where the parameterization is carried out, it is possible to need on or other of these types (even if all the types can be used in a formula, the functions of a given type can call the arguments of another type). It should be noted that the type function is used to test the type of a variable.

How to set up an ADONIX expression

An expression is made up of constants, operators, variables and functions.

Constants

The constants can be:

*    alphanumeric : expressed either between apostrophes(') or inverted commas ("). Here are two examples of valid strings:

 

"It's certain"

 

'a specific "string" '

*    numeric  : expressed with a decimal point if required. Here are two examples of valid numeric constants:

 

-2.5

 

123000

*    date : expressed in the form [ day / month /year ]. It should be noted that it is mandatory to express the year on 4 figures. Here are two examples of valid date constants:

 

[15/3/2002]

 

[21/05/1819]

*    logic type : these are bound up with the numeric constants: 1 (and by extension all non zero values) equivalent to True, 0 equivalent to False.

Operators

The following are the valid operators:

 

+

addition of two numbers, a date and a number of days, or the concatenation of two character strings.

 

-

subtraction of two numbers, a date and a number of days, or the concatenation of two character strings by inserting a space between the two strings.

 

*

multiplication of two numbers

 

/

division of two numbers

 

^

increase to the power of

 

<

<=

>

>=

<>

comparison operators

 

 

and

or

xor

not

logical operators, that can also be abbreviated as

&

|

?

!

In addition, there is available the possibility to use brackets with an unlimited level of overlapping.

Variables

A variable is expressed in general fashion in the form of:

 

[ class ] nomvar ( index )

For example, it is possible to define the following variables:

 

[F:BPC]BPCNAME

 

MA_VARIABLE

 

ELEMENT(33)

The name of the nomvar variable is expressed in the form of letters and/or numbers, the first character always being a letter and the underline character can also be used. The significant length of a variable name is limited to 12 characters. All the names are authorised, with the exception of certain reserved key-words (File, Until, or Commit are examples of some of these key-words). When a variable name is entered using lower case letters, it is automatically transformed to uppercase letters, except if it is a key-word.

Certain variables can be dimensioned, that is to say they corresponds to the element tables (dimensions 1 to 4 are possible) In this case, one or more indexes is given in the form of numeric expressions, separated by commas (if there are more than one), between brackets (for example M_TB(1,2,8) is a valid syntax).

A class corresponds to a group of variables linked to a context. The most used classes are the following:

*    [V] : global variable class. A variable of this type is linked to the ADONIX session. Once created, it remains accessible whilst it is not destroyed, or whilst the ADONIX session is not stopped. Its declaration is made with the help of dedicated instructions (according to its type, the Integer, Decimal, Char, Date, Label, Shortint, Float, Double instructions are used).

*    [L] : Local variable class. It is linked to an overlapping of a sub-programmed (each Call instruction creates a new class of local variables which mask the previous class). The declaration of variables of this type is carried out in the same way as the previous variable type, but the declaration is preceded with the key-word Local.

*    [C] : Sequence number type variables class. These are the variables common to all the levels of a folder. Their creation is made by a dedicated development function.

*    [F:abv] or [abv] : this is the class of variables linked to a table declared by the File instruction. Within these are found the values of the current record.

*    [M:abv] or [abv] : this is the class of variables linked to an entry screen declared with the Mask instruction. Found here are the values that have been entered or likely to be displayed (each tab in a screen is considered as a mask).

The class is not mandatory, because the rules make it possible to know the class by default.

There exist a number of system variables directly managed by Adonix. Whilst the other variables are transformed, during entry to uppercase, these variables that make up a part of the language key-words, are displayed in lower case. Here are a few of the system variables that can be used (not an exhaustive list):

Name

Type

Definition

nomap

string

current folder name

datesyst

date

modifiable system date

adxdir

string

Adonix root directory

nolign

numeric

current line number

fstat

numeric

return status after the read or posting to a table

Functions defined in the engine

A function expressed in the function form (list of arguments). A large number of functions exist: processing of character strings, date calculations, classic numeric functions, truncation and rounding functions, statistical functions....

A list of the principal functions that can be used in ADONIX is given below. In the functions grid, the write conventions are as follows:

*    v is an argument for any type (the same for v1,v2,v3...)

*    c is an argument for the character string type

*    x is an argument for the numeric type

*    n, p, q... are arguments for the integer type

*    V is a variable

*    list is a list of variables or expressions. In this list type, a TABLO variable of the grid type can be used in the form of TABLO(I) (only one index is used), TABLO (all the indexes are used) or TABLO(I..J) (the indexes I to J inclusive are used).

Syntaxes

Type

Definition

date$

date

current date

sin(x), cos(x), tan(x)

numeric

trigonometric functions

asin(x),acos(x)...

numeric

inverse trigonometric functions

log(x),exp(x),ln(x)

numeric

logarithmic functions

abs(x), sgn(x)

numeric

absolute value, sign

ar2(x), arr(x,y)

numeric

round to 2 decimals, round to x - y

int(x), mod(x,y)

numeric

integer part, modulo

len(c)

numeric

length of a string

day(d),month(d),year(d)

numeric

extraction of day, month, year for a date

dayn(d),week(d)

numeric

day number in the week, week number

num$(x)

string

convert a number to a string (decimal representation)

space$(n), chr$(n)

string

string composed of n spaces, with 1 character with the internal code n

string$(n,c), string$(n,x)

string

string made of of n characters with the code c

(or n character with the code x)

day$(d), month$(d)

string

day name, month name

addmonth(d,n)

date

the date d where a month n has been added

eomonth(d)

date

the last day of the month corresponding to the date d

left$(c,n), right$(c,n)

string

right/left section of a string made up of n characters

mid$(c,n,p), seg$(c,n,p)

string

extraction of sub-strings for a given string

gdat$(n,p,q)

date

construction of a date (n=day, p=month, q=year)

pat(c1,c2)

numeric

verify the conformity of a string c1 to a template c2 (1 if it conforms, 0 if not). The template can include the wild-card characters * (any number of any characters), ? (any character), # (any number).

min(list), max(list)

all types

minimum or maximum for a group of variables or values

sum(list), prd(list)

numeric

sum, product of a group of variables or values

avg(list), var(list)

numeric

average, variance for a group of variables or values

sum(list)

string

concatenation of a group of string variables or values

uni(list)

numeric

verification of uniqueness for a group of variables or values

find(v,list)

numeric

search for a value of any type in a list

evalue(c)

all types

evaluation of a character string containing an expression

format$(c,v)

string

formatting of a value with a given format c.

toupper(c),tolower(c)

string

transformation in lower case, upper case

sigma(V=v1,v2,v3)

numeric

sum (V variant V1 to V2), of the v3 expression of the function of V

Functions defined by the developers

There also exist functions defined by developers and these can be used in calculation expressions, using the following syntax:

func TRAIT.FUNCT(list of arguments)

PROC being the name of the process and FUNCT being the name of the function concerned. It should be noted that the functions that can be used are documented in the sub-programme table.