Functions and Operators
Operators
There are various types of operators discussed in this appendix. The following types are provided:
- Arithmetic Operators are used to perform mathematical calculations.
- Assignment Operators are used to assign a value to a property or variable. Assignment Operators can be numeric, date, system, time, or text.
- Comparison Operators are used to perform comparisons.
- Concatenation Operators are used to combine strings.
- Logical Operators are used to perform logical operations and include AND, OR, or NOT.
- Boolean Operators include AND, OR, XOR, or NOT and can have one of two values, true or false.
Operator Precedence
If several operations occur in an expression, each part is evaluated and resolved in a predetermined order called Operator Precedence. Parentheses can be used to override the order of precedence and evaluate some parts of an expression before others. Operations within parentheses are always performed before those outside. Within parentheses, however, normal Operator Precedence is maintained.
If expressions contain operators from more than one category, arithmetic operators are evaluated first, comparison operators next, and logical operators last. Comparison operators all have equal precedence; they are evaluated in the left-to-right order in which they appear. Arithmetic and logical operators are evaluated in the following order of precedence:
Arithmetic |
Comparison |
Logical |
---|---|---|
Negation (-) | Equality (=) | Not |
Exponentiation (^) | Inequality (<>) | And |
Multiplication and division (*, /) | Less than (<) | Or |
Integer division () | Greater than (>) | Xor |
Modulus arithmetic (Mod) | Less than or equal to (<=) | |
Addition and Subtraction (+, -) | Greater than or equal to (>=) | |
String concatenation (&) | Is |
If addition and subtraction, multiplication and division, occur together respectively in an expression, each operation is evaluated as it occurs from left to right.
The string concatenation operator (&) is not an arithmetic operator, but in precedence, it does fall after all arithmetic operators and before all comparison operators. The Is operator is an object reference comparison operator. It does not compare objects or their values; it checks only to determine whether two object references refer to the same object.
& Ampersand
Description
This operator forces text string concatenation of two expressions. Text concatenation operator connects or concatenates two values to produce a continuous text value.
Syntax
<expression> & <expression>
- The <expression> represents any valid logical expression.
Whenever an expression is not a string, it is converted to a String subtype. If both expressions are Null, the result is Null. However, if only one expression is Null, that expression is treated as a zero-length string (“”) when concatenated with the other expression. Any expression that is Empty is also treated as a zero-length string.
Example
READ {.\Projects\Sample\Sample.prj}:Oswego DEFINE FullName TEXTINPUT ASSIGN FullName = LastName & ", " & FirstName LIST LastName FirstName FullName
= Equal Sign
Description
This operator assigns a value to a variable or property. Comparison operator also used as an equal to; the result of comparison operators is usually a logical value, either true or false.
Syntax
<variable> <operator> <value>
- The <variable> represents any variable or any writable property.
- The <value> represents any numeric or string literal, constant, or expression.
Comments
The name on the left side of the equal sign can be a simple scalar variable or an element of an array. Properties on the left side of the equal sign can only be those writable properties at run time.
Example
READ {.\Projects\Sample\Sample.prj}:Oswego DEFINE Newvar NUMERIC ASSIGN Newvar = Age LIST Newvar Age
Addition (+)
Description
This operator provides the sums of two numbers. Basic arithmetic operator used for addition; the result of an arithmetic operator is usually a numeric value.
Syntax
[expression1] <operator> [expression2]
Comments
Although the + operator can be used to concatenate two character strings, the & operator should be used for concatenation to eliminate ambiguity and provide self-documenting code. If + operator is used, there may be no way to determine whether addition or string concatenation will occur. The underlying subtype of the expressions determines the behavior of the + operator in the following way:
If |
Then |
---|---|
Both expressions are numeric | Add |
Both expressions are strings | Concatenate |
One expression is numeric and the other is a string | Add |
If one or both expressions are Null expressions, the result is Null. If both expressions are Empty, the result is an integer subtype. However, if only one expression is Empty, the other expression is returned unchanged as a result.
Example
READ {.ProjectsSampleSample.prj}:Oswego DEFINE Newvar NUMERIC ASSIGN Newvar = Age + 5 LIST Age Newvar
AND
Description
This operator performs logical conjunction on two Boolean expressions. If both expressions evaluate to True, the AND operator returns True. If either or both expressions evaluate to False, the AND operator returns False.
Syntax
[Logical Expression] AND [Logical Expression]
Comments
The expression is any valid logical expression in Epi Info.
Example
READ {.\Projects\Sample\Sample.prj}:Smoke DEFINE Result TEXTINPUT IF Age > 75 AND Sex = 2 THEN ASSIGN Result="Senior" END SELECT Result = "Senior" LIST Result Age Sex
In this case, the value of “Senior” is assigned to all records that meet both criteria Age>75 and Sex=2.
ARITHMETIC
Description
These basic arithmetic operators can be used in combination with other commands. The result is a numeric value.
Syntax
[Expression] <Operator> [Expression]
- [Expression] is a numeric value or a variable containing data in numeric format.
Comments
The results are expressed in numeric format. The basic mathematical operators that can be used in Epi Info are as follows:
- Addition + Basic arithmetic operator used for addition; the result of an arithmetic operator is usually a numeric value (i.e., EX. 3 + 3).
- Subtraction – (Used for subtraction or negation.) Basic arithmetic operator used for subtraction or negation; the result of an arithmetic operator is usually a numeric value (i.e., EX. 3 – 1).
- Multiplication * (Asterisk) Basic arithmetic operator used for multiplication; the result of an arithmetic operator is usually a numeric value.
- Division / Basic arithmetic operator used for division; the result of an arithmetic operator is usually a numeric value.
- Exponentiation ^
- Modulus or Remainder MOD
Arithmetic operators are shown in descending order of precedence. Parentheses can be used to control the order in which operators are evaluated. The default order, however, frequently achieves the correct result.
While it is possible to do date math with dates considered as a number of days (e.g., IncubationDays = SymptomDateTime – ExposureDateTime), the behavior of the database services underlying Epi Info makes it more efficient to use time interval functions (e.g., IncubationDays = MINUTES(ExposureDateTime, Symptom DateTime)/[24*60]). For doing date math, the following rules apply:
Date + Date produces Date
Date – Date produces Days
Date * Date not permitted
Date / Date not permitted
Date ^ Date not permitted
Date + Number produces Date
Number + Date produces Number
The last two rules apply as well to other math operations: -, *, /, ^
The “zero day” for date math is December 30, 1899.
Example
READ {.ProjectsSampleSample.prj}:Surveillance DEFINE var1 NUMERIC ASSIGN var1=1250 MOD 100 DEFINE var2 NUMERIC ASSIGN var2=1+1 DEFINE var3 NUMERIC ASSIGN var3=2-1 DEFINE var4 NUMERIC ASSIGN var4=1*1 DEFINE var5 NUMERIC ASSIGN var5=8/4 DEFINE var6 NUMERIC ASSIGN var6=5^2 LIST var1 var2 var3 var4 var5 var6
Comparisons
Description
These comparison operators can be used in If, Then, and Select statements in Check Code and Analysis programs. Yes/No variables can only be tested for equality against other Yes/No constants (+), (-), and (.).
Operator |
Description |
---|---|
= | Equal to Comparison operator used for equal to; the result of comparison operators is usually a logical value, either True or False. EX. A1 = B1. |
> | Greater than comparison operator. Compares a value greater than another value; the result of comparison operators is usually a logical value, either True or False. Comparison operator used for comparing a value greater than another value; the result of comparison operators is usually a logical value, either True or False. EX. A1 > B1. |
< | Less than comparison operator. Compares a value less than another value; the result of comparison operators is usually a logical value, either True or False. Comparison operator used for comparing a value less than another value; the result of comparison operators is usually a logical value, either True or False. EX. A1<B1. |
>= | Greater than or equal to. |
<= | Less than or equal to. |
<> | Not equal to. |
LIKE | Left side variable matches right side pattern; in pattern, ’*’ matches any number of characters, ’?’ matches any one character. |
Syntax
[Expression] <operator> [Expression]
[Expression] is any valid expression.
Comments
Comparison operators are executed from left to right. There is no hierarchy of comparison operators. The <> operator can be used only with numeric variables. For non-numeric variables, use NOT.
Example
READ {.ProjectsSampleSample.prj}:Surveillance SELECT Age>20 LIST Age Disease READ {.ProjectsSampleSample.prj}:Surveillance SELECT Age<45 LIST Age Disease READ {.ProjectsSampleSample.prj}:Surveillance SELECT Age>=38 LIST Age Disease READ {.ProjectsSampleSample.prj}:Surveillance SELECT Age<>77 LIST Age Disease
LIKE
Description
This operator is used with the SELECT command to locate subsets of information using a wildcard search. LIKE can be used only to locate data in text variables and uses asterisks (*) to define the select value. It can also be used to create IF/THEN statements.
Syntax
SELECT <variable> LIKE “*value*”
SELECT <variable> LIKE “*val*”
SELECT <variable> LIKE “v*”
SELECT <variable> LIKE “*v”
- The select variable must be a text type. The value can be a whole or partial text value. Text variables must be enclosed in quotes.
Comments
The results appear in the Output window. Use LIST to view the selected records.
Examples
READ {.\Projects\Sample\Sample.prj}:Surveillance DEFINE Sick NUMERIC IF Disease LIKE "h*" THEN ASSIGN Sick = 0 END SELECT Disease LIKE "h*" LIST Age Disease DateAdmitted Sick GRIDTABLE
NOT
Description
This operator reverses the True or False value of the logical expression that follows.
Syntax
NOT [Expression]
The expression represents any valid logical expression in Epi Info.
Comments
If the value of an expression is True, NOT returns the value False. If the expression is False, NOT <expression> is True.
Example
READ {.ProjectsSampleSample.prj}:Oswego DEFINE NoVanilla YN IF NOT Vanilla = (+) THEN NoVanilla = (+) ELSE NoVanilla = (-) END FREQ NoVanilla Vanilla
VANILLA |
NOVANILLA |
---|---|
Yes | No |
No | Yes |
OR
Description
This operator returns True if one or the other or both expressions are True. If either expression evaluates to True, OR returns True. If neither expression evaluates to True, OR returns False.
Syntax
[Logical Expression] OR [Logical Expression]
[Logical Expression] represents any valid logical expression in Epi Info.
Example
READ {.ProjectsSampleSample.prj}:Oswego DEFINE IceCream YN IF VANILLA=(+) OR CHOCOLATE=(+) THEN ASSIGN IceCream=(+) ELSE ASSIGN IceCream=(-) END FREQ IceCream
VANILLA |
CHOCOLATE |
ICE CREAM |
---|---|---|
Yes | Yes | Yes |
No | Yes | Yes |
Yes | No | Yes |
No | No | No |
XOR (eXclusive OR)
Description
This operator performs a logical exclusion on two expressions.
Syntax
[Logical Expression] XOR [Logical Expression]
The [Logical Expression] represents any valid logical expression in Epi Info 7 for Windows.
Comments
If one, and only one, of the expressions evaluates to True, the result is True. However, if either expression is Null, the result is also Null. When neither expression is Null, the result is determined according to the following table:
If expression1 is |
And expression2 is |
Then expression1 XOR expression2 is |
---|---|---|
True | True | False |
True | False | True |
False | True | True |
False | False | False |
Example
READ {.ProjectsSampleSample.prj}:Oswego DEFINE OneIcecream YN IF Vanilla = (+) XOR Chocolate = (+) THEN ASSIGN OneIcecream = (+) ELSE ASSIGN OneIcecream = (-) END LIST Vanilla Chocolate OneIcecream