Welcome to jBASE's new documentation site! Many answers to your questions can be found by searching the Knowledgebase or viewing the jBASE Documentation. We also have a Google Group for peer discussion about jBASE. If you are unable to find the information you are looking for, jBASE Support will be glad to assist in resolving your technical problems. Enjoy and please provide comments and feedback .

How can we help you?

A Correlatives

Description 

A codes provide many powerful features. These include arithmetic, relational, logical, and concatenation operators, the ability to reference fields by name or FMC, the capability to use other data definition records as functions that return a value, and the ability to modify report data by using format codes.

The A code also allows for handling data recursively, or "nest" one A code expression inside another.

The A code function uses an algebraic format. There are two forms of the A code:

  • A uses only the integer parts of stored numbers unless a scaling factor is included.
  • AE handles extended numbers. Uses both integer and fractional parts of stored numbers.
A{n}{;expression}
AE;expression

 where: 

  • n is a number from 1 to 6 that specifies the required scaling factor.
  • expression comprises operands, operators, conditional statements, and special functions.

 

Note: 

The A code replaces and enhances the functionality of the F code. You will find A codes much easier to work with than F codes. Valid code formats are: 

  • A;expression - evaluates the expression.
  • Aexpression - evaluates expression.
  • An - converts to a scaled integer.
  • An;expression - converts to a scaled integer.
  • AE;expression - evaluates the expression.

 

A;Expression / Aexpression Formats

Performs the functions specified in expression on values stored without an embedded decimal point.


AN Format: Embedded Decimals

The An format converts a value stored with an embedded decimal point to a scaled integer. The stored value's explicit or implied decimal point is moved n digits to the right with zeros added if necessary. Only the integer portion is returned.

Field 2 of the data definition record must contain the FMC of the field that contains the data to be processed.


AN; Expression Format

The An;expression format performs the functions specified in expression on values stored with an embedded decimal point. The resulting value is then converted to a scaled integer.

 

AE;Expression Format 

The AE format uses both the integer and fractional parts of stored numbers. Scaling of output must be done with format codes. The following are examples of numeric results: 

Data Record
A Code

Field 1
Field 2
A;1 + 2
A3;1 + 2
AE;1 + 2
4
012
16
16000
16
-77
-22
-99
-99000
-99
0.12
22.09
22
22210
22.21
-1.234
-12.34
-13
-13574
-13.574
-1.234
123.45
122
122216
122.216

 

Input Conversion 

Input conversion is not allowed.

 

Format Codes 

It is possible to format the result of any A code operation by following the expression with a value mark, and then the required format code, like this:

An;expression]format

Format codes can also be included within the expression. 

 

Summary of Operands 

Operands for use with A code expressions include: FMCs (field numbers), field names, literals, operands that return system parameters, and special functions.

Any operand can be formatted by following it with one or more format codes enclosed in parentheses, and separated by value marks, (ctrl ]), like this:

operand(format-code{]format-code}...)

See Format Codes for more information.


Field Number (FMC) Operand

The field number operand returns the content of a specified field in the data record:

field-number{R{R}}

The first R specifies that any non-existent multivalues should use the previous non-null multivalue. When the second R is specified, this means that any non-existent subvalues should use the previous non-null subvalue.

 

Field Name Operand

The field name operand returns the content of a specified field in the data record:

N(field-name){R{R}}

 

Literal operand 

The literal operand supplies a literal text string or numeric value:

"literal"

 

System Parameter Operands 

Several A code operands return the value of system parameters. They are: 

Operand
Return Value
D
Returns the system date in internal format.
LPV
Returns the previous value transformed by a format code.
NA
Returns the number of fields in the record.
NB
Returns the current break level counter. 1 is the lowest break level, 255 is the GRAND TOTAL line.
ND
Returns the number of records (detail lines) since the last control break.
NI
Returns the record counter.
NL
Returns the record length in bytes
NS
Returns the subvalue counter
NU
Returns the date of last update
NV
Returns the value counter
T
Returns the system time in internal format.
V
Returns the previous value transformed by a format code

 

Special Operands

Some operands allow for the use of special functions. They are:

Operand
Return Value
I(expression)
Returns the integer part of expression.
R(exp1, exp2)
Returns the remainder of exp1 divided by exp2.
S(expression)
Returns the sum of all values generated by expression.
string[start-char-no, len]
Returns the substring starting at character start-char-no for length len.

 

Summary of Operators 

Operators used in A code expressions include arithmetic, relational and logical operators, the concatenation operator, and the IF statement.

 Arithmetic Operators 

Arithmetic operators are:

Operator
Description
+
Sum of operands
-
Difference of operands
*
product of operands
/
Quotient (an integer value) of operands

 

Relational Operators

Relational operators specify relational operations so that any two expressions can treated as operands and evaluated as returning true (1) or false (0). Relational operators are:

Operator
Description
= or EQ
Equal to
< or LT
Less than
> or GT
Greater than
<= or LE
Less than or equal to
>= or GE
greater than or equal to
# or NE
Not equal

 

Logical Operators

The logical operators test two expressions for true(1) or false(0) and return a value of true or false. Logical operators are:

  • AND - Returns true if both expressions are true
  • OR - Returns true if any of the expressions is true

 The words AND and OR must be followed by at least one space. The AND operator takes precedence over the OR unless you specify a different order by means of parentheses. OR is the default operation.


Concatenation Operator

The concatenation operator is a colon (:). It may be used to concatenate the results of two expressions. For example, the following expression concatenates the character "Z" with the result of adding together fields 2 and 3 as:

A;"Z":2 + 3


 If Statement

The IF operator gives the A code its conditional capabilities. An IF statement looks like this:

IF expression THEN statement ELSE statement

where: 

  • expression must evaluate to true or false. If true, executes the THEN statement. If false, executes the ELSE statement.
  • statement is a string or numeric value.

Each IF statement must have a THEN clause and a corresponding ELSE clause. IF statements can be nested but the result of the statement must evaluate to a single value.

The words IF, THEN and ELSE must be followed by at least one space. Examples of use are as: 

A;IF N(QTY) < 100 THEN N(QTY) ELSE ERROR!

Tests the QTY value to see if it is less than 100. If it is, output the QTY field. Otherwise, output the text "ERROR!".

A;IF N(QTY) < 100 AND N(COST) < 1000 THEN N(QTY) ELSE ERROR!

Same as example 1 except that QTY will only be output if it is less than 100 and the cost value is less than 1000.

A;IF 1 THEN IF 2 THEN 3 ELSE 4 ELSE 5

If field 1 is zero or null, follow else and use field 5. Otherwise test field 2. If field 2 is zero or null, follow else and use field 4. Otherwise use field 3. Field 3 is only used if both fields 1 and 2 contain a value.

 

Special Operands 

 Integer Function

The Integer Function I(expression) returns the integer portion of expression. For instance: 

AE;I(N(COST) * N(QTY))

Returns the integer portion of the result of the calculation.

 

Remainder Function 

The Remainder Function R(exp1, exp2) takes two expressions as operands and returns the remainder when the first expression is divided by the second. For instance: 

A;R(N(HOURS) / "24")

Returns the remainder when HOURS is divided by 24.

 

Summation Function 

The Summation Function S(expression) evaluates an expression and then adds together all the values. For instance: 

A;S(N(HOURS) * N(RATE)R)

Each value in the HOURS field is multiplied by the value of RATE. The multivalued list of results is then totalled.

 

Substring Function

The substring function 

[start-char-no, len] 

extracts the specified number of characters from a string, starting at a specified character. 

 where: 

  • start-char-no is an expression that evaluates to the position of the first character of the substring.
  • len is an expression that evaluates to the number of characters required in the substring. Use - len (minus prefix) to specify the end point of the substring. For example, [1, -2] will return all but the last character and [-3, 3] will return the last three characters.

 For Example: 

A;N(S.CODE)["2", "3"]

Extracts a sub-string from the S.CODE field, starting at character position 2 and continuing for 3 characters.

A;N(S.CODE)[2, N(SUB.CODE.LEN)]

Extracts a sub-string from the S.CODE field, starting at the character position defined by field 2 and continuing for the number of characters defined by SUB.CODE.LEN.

 

Back to Conversion Processing

Was this article helpful?