if

The if statement is used to conditionally execute one or more statements. In conjunction with an optional else statement it can cause one or other of two blocks of statements to be executed depending on whether an expression is true or false.

Syntax

if_(expression)_{

`# Statements`

} [else {

`# Statements`

}]


Details

If the condition evaluates to true, then the first block of statements is executed, and the second block (if present) is skipped over. If the condition evaluates to false then the first block of statements is skipped and the second block (if present) is executed.

The opening { character at the start of each block may be placed on a line of its own if preferred but the closing } must be on a line of its own.

Multiple conditions can be used in a single expression and combined with the boolean operators && or || (for AND and OR respectively) so long as each condition is enclosed in braces. For example:

if (($JSON{example}.[status] == "OK") || (${override} == "enabled")) { 
              # Execute if the status is "OK" or if we have set ${override} to "enabled"
          }

Example

Given the source JSON in a file called example.json, the following USE script:

var JSON_dir = "examples\json"
          buffer example = FILE "${JSON_dir}\doc.json"
          
          var title = 
          
          # For every element in the 'items' array ...
          foreach $JSON{example}.[items] as this_item
          {
              # Extract the item name and id
              var item_name = $JSON(this_item).[name]
              var sub_id = $JSON(this_item).[id]
          
              if (${sub_id} == 02) {
                  # For every child of the 'subvalues' object ...
                  foreach $JSON(this_item).[subvalues] as this_subvalue
                  {
                      # Get the subvalue name and value
                      var sub_name = ${this_subvalue.NAME}
                      var sub_value = ${this_subvalue.VALUE}
          
                      # Render an output line
                      print ${title} (id:${sub_id} -> Item: ${item_name} -> Subvalue:${sub_name} = ${sub_value} 
                  }
              } else {
                      print Skipping unwanted id: ${sub_id}
                  }
          
          }
          discard {example}
          terminate

will produce the following output:

    Skipping unwanted id: 01
              Example JSON data (id: 02) -> Item: Item number two -> Subvalue:0 = 10
              Example JSON data (id: 02) -> Item: Item number two -> Subvalue:10 = 442
              Example JSON data (id: 02) -> Item: Item number two -> Subvalue:100 = 783
              Example JSON data (id: 02) -> Item: Item number two -> Subvalue:1000 = 1009

How did we do?