(Last updated June 2022)
A2J Author® allows authors to branch or set variables based on simple logic conditions under the Advanced Logic section in the Question Design Editor (Figure below). Scripting conditions in A2J Author 6.0 is significantly different than drafting them in earlier versions of the software.
Creating conditions is done by typing into the “Before” text box or the “After” text box. By placing the scripting in the “Before” box, A2J Author knows to evaluate that condition before the end user sees the question that contains the logic. By placing the scripting into the “After” box, A2J Author knows to evaluate the condition after the end user presses one of the buttons.
Figure: Blank Advanced Logic section.
If a condition is tested before a question is displayed and the condition is true and the action is to move to another question, then the end-user will not see the current question. If the same condition is false, then the opposite is true.
The expression to be tested is typed directly into the “Before” or “After” boxes. For example, suppose a question asks for annual income. Let’s assume that if the end-user had entered a number greater than $35,000 that they would then need to answer a different set of questions. To reroute the end-user, write a condition similar to the one in the figure below. A2J Author® would evaluate whether or not the income equaled an amount over 35,000. Based on whether that evaluation equals true or false, the author can then tell A2J Author to send the end-user to a particular question.
Figure: A sample "after" advanced condition.
Logic Commands
The logic commands that can be used include:
- IF
- END IF
- SET
- GOTO
- IF NOT
Each logic command must be on its own line (hit the enter key or a hard return) after each command statement.
Example: You cannot have
IF [variable] = x GOTO "1-Question" END IF.
Instead, it should look like this:
IF [variable] = x
GOTO "1-Question"
END IF
Operators
Variables can be evaluated in a condition using the following operators:
Symbol |
Comparison |
Example |
Result |
= |
equals |
10 = 10 |
True |
<> |
not equal |
10 <> 10 |
False |
> |
greater than |
10 > 5 |
True |
< |
less than |
10 < 5 |
False |
>= |
greater than or equal to |
10 >= 10 |
True |
<= |
less than or equal to |
10 <= 10 |
True |
is |
synonym for equals |
City is “Chicago” |
true if the City variable contains Chicago |
Variable Names in Brackets
Remember to always enclose variable names in brackets [ ] when evaluating them in a condition.
Do This: [Children TF]=true
Do NOT Do This: Children TF=true
Mathematical Expressions
Simple mathematical expressions can also be done.
Expression |
Result |
(15 - 15) > 10 |
false |
Multi-part Logic Statements
A2J Author® also allows the use of AND and OR logic in the expressions. (These operators can be scripted in either lowercase or uppercase letters.)
Expression |
Result |
5 > 1 and 1 = 1 |
true |
5 < 1 or 1 = 1 |
false |
You can also use functions within logic statements. To learn more about functions, check out the functions section of the A2J Authoring Guide.
There are two possible actions following the evaluation of a condition: SET a variable to a value and/or GOTO a question. Set variable to value allows any variable to be set to a particular value or expression. GOTO a question allows authors to reroute (or branch) the end-user to a different question than had the condition evaluated differently.
It is important to remember that conditions are tested in order. Once the first true condition is found whose action is to go to another question, the rest of the conditions will not be tested. Thus, make sure that all of the conditions that set variables to values are listed above the conditions that use a GOTO command. There is no limit to the number of conditions that can be scripted for a question.
Avoid designing an entirely new condition to account for an opposite evaluation. For instance, now that A2J Author has evaluated whether [Income NU] is greater than $35,000, the author may want to set a separate action if [Income NU] is not greater than $35,000. To do this, the author does not need to construct another evaluation, e.g., [Income NU] <35000. Instead, add an ELSE statement so that if [Income NU]>35000 is not true, A2J Author can set a variable or go to a question (Figure 132).
So, in the example above, a single condition has set three actions as follows: 1) if [Income NU]>35000 is true, then set the variable Income too high TF to true; 2) if [Income NU]>35000 is true, then go to question <0-Do Not Qualify & Exit>; and 3) if [Income NU]>35000 is false, then set the variable [Income too high TF] to false. The author could then add a fourth action, to send the end-user to a different question if [Income NU]>35000 is false. Multiple actions can be based off 1 single expression.