Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Horizontal Navigation Bar


Button Group

Button Hyperlink
titlePrevious
typestandard
urlhttps://confluence.ecmwf.int/display/ECFLOW/Understanding+Includes
Button Hyperlink
titleUp
typestandard
urlhttps://confluence.ecmwf.int/display/ECFLOW/Tutorial
Button Hyperlink
titleNext
typestandard
urlhttps://confluence.ecmwf.int/display/ECFLOW/Checking+job+creation


Next, we need to write the ecf script for the task t1.
By default ecFlow expects files to be in a directory structure below ECF_HOME
that reflects the hierarchy of the suites. The task t1 being in the suite test,
the ecf script for the task t1 must be in a sub-directory test.
  • In ECF_HOME, create a directory test:


Code Block
languagebash
mkdir test


  • In test directory, create a file t1.ecf with the following contents:
Code Block
languagebash
title$HOME/course/test/t1.ecf
%include "
HTML

<div class="section" id="defining-the-first-task">
<span id="defining-a-task"></span><span id="index-0"></span>
<p>Next, we need to write the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-script"><em class="xref std std-term">ecf script</em></a> for the task <strong>t1</strong>.
By default ECF expects files to be in a directory structure below ECF_HOME that reflect the hierarchy of the suites.
The <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-task"><em class="xref std std-term">task</em></a> <strong>t1</strong> being in the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite"><em class="xref std std-term">suite</em></a> test, the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-script"><em class="xref std std-term">ecf script</em></a> for the task <strong>t1</strong> must be in a sub-directory test.</p>
<ul>
<li><p class="first">In ECF_HOME, create a directory test:</p>
<div class="highlight-python"><pre>&gt; mkdir test</pre>
</div>
</li>
<li><p class="first">In test, create a file name <tt class="file docutils literal"><span class="pre">t1.ecf</span></tt> with the following contents:</p>
<div class="highlight-python"><pre>%include "../head.h"
echo "I am part of a suite that lives in %ECF_HOME%"
%include "../tail.h"</pre>
</div>
</li>
</ul>
<p>Although similar an <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-script"><em class="xref std std-term">ecf script</em></a> is not a unix script. It contains <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-pre-processing"><em class="xref std std-term">pre-processing</em></a> <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-directives"><em class="xref std std-term">directives</em></a>.
Those <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-directives"><em class="xref std std-term">directives</em></a> are specified using the character %.
Before submitting the task, the ECF will scan the script and substitute the following strings:</p>
<ul class="simple">
<li>%include &#8221;../head.h&#8221; will be substituted by the content of the file <a class="reference internal" href="/wiki/display/ECFLOW/Getting+Started#head-h"><em>head.h</em></a>.
Note that the file name is given relatively to the file <tt class="file docutils literal"><span class="pre">t1.ecf</span></tt>, i.e. in the directory above the one containing <tt class="file docutils literal"><span class="pre">t1.ecf</span></tt></li>
<li>%ECF_HOME% will be substituted by the value of the ECF variable ECF_HOME</li>
<li>%include <em>&#8221;../tail.h&#8221;</em> will be substituted by the content of the file <a class="reference internal" href="/wiki/display/ECFLOW/Getting+Started#tail-h"><em>tail.h</em></a></li>
</ul>
<p>The output of <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-job-creation"><em class="xref std std-term">job creation</em></a> is known as the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-job-file"><em class="xref std std-term">job file</em></a>, and is usually a unix script, although not necessarily.
This is the script that ECF will submit to your system.</p>
<p>The workings of the files <a class="reference internal" href="/wiki/display/ECFLOW/Getting+Started#head-h"><em>head.h</em></a> and <a class="reference internal" href="/wiki/display/ECFLOW/Getting+Started#tail-h"><em>tail.h</em></a> are described inline.
head.h contains code to set-up the job environment so that it can work with ECF and also
includes the required error trapping to report any script errors to the ECF server.
The file <a class="reference internal" href="/wiki/display/ECFLOW/Getting+Started#tail-h"><em>tail.h</em></a> contains clean up code.</p>
<p>What to do:</p>
<ol class="arabic simple">
<li>Type in the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-script"><em class="xref std std-term">ecf script</em></a> <tt class="file docutils literal"><span class="pre">t1.ecf</span></tt></li>
</ol>
</div>

Job creation

Before submitting the task, the server will transform the ecf script to a job file
This process is known as job creation.
This involves locating the ecf script on disk, and then pre-processing the
directives. This process includes performing variable substitution.
This will create a file with a ‘.job’ extension.
This is the script that ecflow_server will submit to your system.

In our case:

  • %include ”../head.h” will be substituted by the content of the file head.h.

    Note that the file name is given relatively to the file t1.ecf,
    i.e. in the directory above the one containing t1.ecf
  • %ECF_HOME% will be substituted by the value of the variable ECF_HOME

  • %include ”../tail.h” will be substituted by the content of the file tail.h

What to do

  1. Create the ecf script t1.ecf in $HOME/course/test directory

Horizontal Navigation Bar


Button Group

Button Hyperlink
titlePrevious
typestandard
urlhttps://confluence.ecmwf.int/display/ECFLOW/Understanding+Includes
Button Hyperlink
titleUp
typestandard
urlhttps://confluence.ecmwf.int/display/ECFLOW/Tutorial
Button Hyperlink
titleNext
typestandard
urlhttps://confluence.ecmwf.int/display/ECFLOW/Checking+job+creation