.. _ecflow_variables:

ecFlow variables
////////////////

ecFlow makes heavy use of different kinds of variables. There are
several kinds of variables:

- **Environment variables** that are set in the UNIX shell before the ECFLOW-programs start. These control the server, and client (CLI).
  
- **Internal variables**: **suite definition variables**. These control servers, ecflow_ui, and CLI.
  
- **Generated variables**: These are generated within the suite definition node tree during job creation and are available for use in the job file.

This chapter lists the generated and user-defined variables which have
special meaning for ecFlow itself.

In an ecFlow script, ecFlow variables are written as text enclosed by a
pair of %-characters (the micro-character.) As in C-format strings, if
there are two %-characters together they are concatenated to form a single %-character
in the job-file. For example, if you need to execute the UNIX date
command **date +%d**. For a job, you must enter it as **date +%%d** into the
ecFlow file.

The default micro-character is defined when ecFlow is compiled. It is
possible to configure the micro-character to be defined as a variable
**ECF_MICRO** (see section 3.6). The default installation uses the %-character.

You can define variables in a suite definition file using the **edit**
keyword. User-defined variables can occur at any node level: suite,
family, or task. ecFlow also **generates** variables from the node name, the host on which
ecFlow is running, the time, the date, and so on.

.. toctree::
   :maxdepth: 1

   variable_inheritance
   ecflow_server_environment_variables
   environment_variables_for_the_ecflow_client
   ecflow_suite_definition_variables
   generated_variables
   variables_and_substitution
