ecFlow's documentation is now on readthedocs!

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

<style type="text/css">
.highlight .hll

Unknown macro: { background-color}

.highlight

Unknown macro: { background}

.highlight .c

Unknown macro: { color}

/* Comment */
.highlight .err

Unknown macro: { border}

/* Error */
.highlight .k

Unknown macro: { color}

/* Keyword */
.highlight .o

Unknown macro: { color}

/* Operator */
.highlight .cm

Unknown macro: { color}

/* Comment.Multiline */
.highlight .cp

Unknown macro: { color}

/* Comment.Preproc */
.highlight .c1

Unknown macro: { color}

/* Comment.Single */
.highlight .cs

Unknown macro: { color}

/* Comment.Special */
.highlight .gd

Unknown macro: { color}

/* Generic.Deleted */
.highlight .ge

Unknown macro: { font-style}

/* Generic.Emph */
.highlight .gr

Unknown macro: { color}

/* Generic.Error */
.highlight .gh

Unknown macro: { color}

/* Generic.Heading */
.highlight .gi

Unknown macro: { color}

/* Generic.Inserted */
.highlight .go

Unknown macro: { color}

/* Generic.Output */
.highlight .gp

Unknown macro: { color}

/* Generic.Prompt */
.highlight .gs

Unknown macro: { font-weight}

/* Generic.Strong */
.highlight .gu

Unknown macro: { color}

/* Generic.Subheading */
.highlight .gt

Unknown macro: { color}

/* Generic.Traceback */
.highlight .kc

Unknown macro: { color}

/* Keyword.Constant */
.highlight .kd

Unknown macro: { color}

/* Keyword.Declaration */
.highlight .kn

Unknown macro: { color}

/* Keyword.Namespace */
.highlight .kp

Unknown macro: { color}

/* Keyword.Pseudo */
.highlight .kr

Unknown macro: { color}

/* Keyword.Reserved */
.highlight .kt

Unknown macro: { color}

/* Keyword.Type */
.highlight .m

Unknown macro: { color}

/* Literal.Number */
.highlight .s

Unknown macro: { color}

/* Literal.String */
.highlight .na

Unknown macro: { color}

/* Name.Attribute */
.highlight .nb

Unknown macro: { color}

/* Name.Builtin */
.highlight .nc

Unknown macro: { color}

/* Name.Class */
.highlight .no

Unknown macro: { color}

/* Name.Constant */
.highlight .nd

Unknown macro: { color}

/* Name.Decorator */
.highlight .ni

Unknown macro: { color}

/* Name.Entity */
.highlight .ne

Unknown macro: { color}

/* Name.Exception */
.highlight .nf

Unknown macro: { color}

/* Name.Function */
.highlight .nl

Unknown macro: { color}

/* Name.Label */
.highlight .nn

Unknown macro: { color}

/* Name.Namespace */
.highlight .nt

Unknown macro: { color}

/* Name.Tag */
.highlight .nv

Unknown macro: { color}

/* Name.Variable */
.highlight .ow

Unknown macro: { color}

/* Operator.Word */
.highlight .w

Unknown macro: { color}

/* Text.Whitespace */
.highlight .mf

Unknown macro: { color}

/* Literal.Number.Float */
.highlight .mh

Unknown macro: { color}

/* Literal.Number.Hex */
.highlight .mi

Unknown macro: { color}

/* Literal.Number.Integer */
.highlight .mo

Unknown macro: { color}

/* Literal.Number.Oct */
.highlight .sb

Unknown macro: { color}

/* Literal.String.Backtick */
.highlight .sc

Unknown macro: { color}

/* Literal.String.Char */
.highlight .sd

Unknown macro: { color}

/* Literal.String.Doc */
.highlight .s2

Unknown macro: { color}

/* Literal.String.Double */
.highlight .se

Unknown macro: { color}

/* Literal.String.Escape */
.highlight .sh

Unknown macro: { color}

/* Literal.String.Heredoc */
.highlight .si

Unknown macro: { color}

/* Literal.String.Interpol */
.highlight .sx

Unknown macro: { color}

/* Literal.String.Other */
.highlight .sr

Unknown macro: { color}

/* Literal.String.Regex */
.highlight .s1

Unknown macro: { color}

/* Literal.String.Single */
.highlight .ss

Unknown macro: { color}

/* Literal.String.Symbol */
.highlight .bp

Unknown macro: { color}

/* Name.Builtin.Pseudo */
.highlight .vc

Unknown macro: { color}

/* Name.Variable.Class */
.highlight .vg

Unknown macro: { color}

/* Name.Variable.Global */
.highlight .vi

Unknown macro: { color}

/* Name.Variable.Instance */
.highlight .il

Unknown macro: { color}

/* Literal.Number.Integer.Long */
</style>

In the previous section we created a task.

A task has corresponding ecf script which defines the work to be carried out. Scripts are similar to UNIX shell scripts.

However ecf script includes the addition of “c” like pre-processing directives and variable s.

The default pre-processing directives are specified using the % character.

One of the pre-processing directives is an include.

The include is used to inject code into a script, and provide a mechanism for code sharing. When you have several ecf script that need to define common code, it should be placed in a include file. This then provides a single point of maintenance.

head.h

The head.h include file is placed at the start of ecf script. It provides:

  • Environment for communication with the server
  • Defines script error handling. When a trap is raised, we inform the server the task has aborted.
  • Child command to inform the server that job has started.
#!/bin/ksh
set -e # stop the shell on first error
set -u # fail when using an undefined variable
set -x # echo script lines as they are executed


# Defines the variables that are needed for any communication with ECF
export ECF_PORT=%ECF_PORT%    # The server port number
export ECF_NODE=%ECF_NODE%    # The name of ecf host that issued this task
export ECF_NAME=%ECF_NAME%    # The name of this current task
export ECF_PASS=%ECF_PASS%    # A unique password
export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task
export ECF_RID=$$


# Tell ecFlow we have started
ecflow_client --init=$$


# Defined a error hanlder
ERROR() {
   set +e                      # Clear -e flag, so we don't fail
   ecflow_client --abort=trap  # Notify ecFlow that something went wrong, using 'trap' as the reason
   trap 0                      # Remove the trap
   exit 0                      # End the script
}


# Trap any calls to exit and errors caught by the -e flag
trap ERROR 0


# Trap any signal that may cause the script to fail
trap '{ echo "Killed by a signal"; ERROR ; }' 1 2 3 4 5 6 7 8 10 12 13 15

tail.h

The tail.h include file is placed at the end of ecf script and is used to inform the server that job has completed.

ecflow_client --complete  # Notify ecFlow of a normal end
trap 0                    # Remove all traps
exit 0                    # End the shell

What to do:

  • In another window, change the current directory to course and copy the file head.h and tail.h into it.
  • No labels