Index: trunk/FACT++/src/Console.cc
===================================================================
--- trunk/FACT++/src/Console.cc	(revision 13769)
+++ trunk/FACT++/src/Console.cc	(revision 13771)
@@ -48,4 +48,9 @@
     fLogO.Display();
     fLogI.Display();
+}
+
+void Console::PrintReadlineError(const std::string &str)
+{
+    fLogI << kRed << str << endl;
 }
 
@@ -216,4 +221,9 @@
 }
 
+void ConsoleStream::PrintReadlineError(const std::string &str)
+{
+    fLogO << kRed << str << endl;
+}
+
 // --------------------------------------------------------------------------
 //
Index: trunk/FACT++/src/Console.h
===================================================================
--- trunk/FACT++/src/Console.h	(revision 13769)
+++ trunk/FACT++/src/Console.h	(revision 13771)
@@ -9,4 +9,6 @@
 private:
     WindowLog fLogO;
+
+    void PrintReadlineError(const std::string &str);
 
 public:
@@ -34,4 +36,7 @@
 
     bool fContinous;
+
+    void PrintReadlineError(const std::string &str);
+
 public:
     Console(const char *name);
Index: trunk/FACT++/src/Readline.cc
===================================================================
--- trunk/FACT++/src/Readline.cc	(revision 13769)
+++ trunk/FACT++/src/Readline.cc	(revision 13771)
@@ -956,4 +956,7 @@
     fprintf(rl_outstream, "   .x file:N .. Execute a script of commands, start at label N\n");
     fprintf(rl_outstream, "   .j N         Forward jump to label N\n");
+    fprintf(rl_outstream, "   .lt f0 f1 N  If float f0 lower than float f1, jump to label N\n");
+    fprintf(rl_outstream, "   .gt f0 f1 N  If float f0 greater than float f1, jump to label N\n");
+    fprintf(rl_outstream, "   .eq i0 i1 N  If int i0 equal int i1, jump to label N\n");
     fprintf(rl_outstream, "   : N          Defines a label (N=number)\n");
     fprintf(rl_outstream, "   # comment    Ignored\n");
@@ -1061,15 +1064,15 @@
         map<string,string> data = Tools::Split(opt);
         if (opt.size()==0)
-            return false;
-
-        /*
-            if (fData.size()==0)
-                // File name missing ...
+        {
+            if (data.size()==0)
+                PrintReadlineError("Filename missing.");
             else
-                // "Equal sign missing in argument '"+data.begin()->first+"'"
-         */
-
-         Execute(opt, data);
-         return true;
+                PrintReadlineError("Equal sign missing in argument '"+data.begin()->first+"'");
+
+            return true;
+        }
+
+        Execute(opt, data);
+        return true;
     }
 
@@ -1079,4 +1082,67 @@
          return true;
     }
+
+    if (str.substr(0, 4)==".gt ")
+    {
+        istringstream in(str.substr(4));
+
+        float v0, v1;
+        int label;
+
+        in >> v0 >> v1 >> label;
+        if (in.fail())
+        {
+            PrintReadlineError("Couldn't parse '"+str+"'");
+            fLabel = -2;
+            return true;
+        }
+
+        if (v0 > v1)
+            fLabel = label;
+
+        return true;
+    }
+
+    if (str.substr(0, 4)==".lt ")
+    {
+        istringstream in(str.substr(4));
+
+        float v0, v1;
+        int label;
+
+        in >> v0 >> v1 >> label;
+        if (in.fail())
+        {
+            PrintReadlineError("Couldn't parse '"+str+"'");
+            fLabel = -2;
+            return true;
+        }
+
+        if (v0 < v1)
+           fLabel = label;
+
+        return true;
+    }
+
+    if (str.substr(0, 4)==".eq ")
+    {
+        istringstream in(str.substr(4));
+
+        int v0, v1, label;
+
+        in >> v0 >> v1 >> label;
+        if (in.fail())
+        {
+            PrintReadlineError("Couldn't parse '"+str+"'");
+            fLabel = -2;
+            return true;
+        }
+
+        if (v0==v1)
+            fLabel = label;
+
+        return true;
+    }
+
 
     // ----------- Readline static -------------
@@ -1354,2 +1420,7 @@
     return rl_done==1 && rl_pending_input==4;
 };
+
+void Readline::PrintReadlineError(const std::string &str)
+{
+    fprintf(rl_outstream, "%s\n", str.c_str());
+}
Index: trunk/FACT++/src/Readline.h
===================================================================
--- trunk/FACT++/src/Readline.h	(revision 13769)
+++ trunk/FACT++/src/Readline.h	(revision 13771)
@@ -30,5 +30,5 @@
     static std::string fScript;
 
-    // Static member function which are used to adapt readline to ncurses
+    /// Static member function which are used to adapt readline to ncurses
     static int    rl_ncurses_getc(FILE *);
     static int    rl_ncurses_startup();
@@ -41,5 +41,5 @@
 
 protected:
-    // The non static implementations of the callback funtions above
+    /// The non static implementations of the callback funtions above
     virtual int  Getc(FILE *);
     virtual void Startup();
@@ -49,5 +49,5 @@
     virtual void CompletionDisplay(char **matches, int num, int max);
 
-    // Functions dealing with auto completion
+    /// Functions dealing with auto completion
     virtual char *Complete(const char* text, int state);
     virtual char **Completion(const char *text, int start, int end);
@@ -58,5 +58,7 @@
     char **Complete(const std::vector<std::string> &v, const char *text);
 
+    ///
     virtual void SetSection(int) { }
+    virtual void PrintReadlineError(const std::string &str);
 
 public:
Index: trunk/FACT++/src/ReadlineColor.cc
===================================================================
--- trunk/FACT++/src/ReadlineColor.cc	(revision 13769)
+++ trunk/FACT++/src/ReadlineColor.cc	(revision 13771)
@@ -163,4 +163,7 @@
     out << kBold << "   .x file:N    " << kReset << "Execute a script of commands, start at label N\n";
     out << kBold << "   .j N         " << kReset << "Forward jump to label N\n";
+    out << kBold << "   .lt f0 f1 N  " << kReset << "If float f0 lower than float f1, jump to label N\n";
+    out << kBold << "   .gt f0 f1 N  " << kReset << "If float f0 greater than float f1, jump to label N\n";
+    out << kBold << "   .eq i0 i1 N  " << kReset << "If int i0 equal int i1, jump to label N\n";
     out << kBold << "   : N          " << kReset << "Defines a label (N=number)\n";
     out << kBold << "   # comment    " << kReset << "Ignored\n";
