Index: /trunk/FACT++/src/dimctrl.cc
===================================================================
--- /trunk/FACT++/src/dimctrl.cc	(revision 13005)
+++ /trunk/FACT++/src/dimctrl.cc	(revision 13006)
@@ -24,6 +24,4 @@
         "Usage: dimctrl [-c type] [OPTIONS]\n"
         "  or:  dimctrl [OPTIONS]\n\n";
-
-    Main::PrintUsage();
     cout << endl;
 }
@@ -31,4 +29,5 @@
 void PrintHelp()
 {
+    Main::PrintUsage();
 }
 
Index: /trunk/FACT++/src/fitscheck.cc
===================================================================
--- /trunk/FACT++/src/fitscheck.cc	(revision 13006)
+++ /trunk/FACT++/src/fitscheck.cc	(revision 13006)
@@ -0,0 +1,100 @@
+//****************************************************************
+/** 
+
+ */
+ //****************************************************************
+#include "Configuration.h"
+
+#include "externals/fits.h"
+
+using namespace std;
+
+
+void PrintUsage()
+{
+    cout <<
+        "fitscheck is a tool to verify the checksums in a fits file.\n"
+        "\n"
+        "Usage: fitscheck [OPTIONS] fitsfile\n"
+        //"  or:  fitscheck [OPTIONS]\n"
+        "\n"
+        "Return values:\n"
+        " 0:  in case of success\n"
+        " 1:  if the file could not be opened\n"
+        " 2:  if the header checksum could not be varified and 3 if the"
+        " header checksum is ok but the data checksum could not be"
+        " verified."
+        "\n";
+    cout << endl;
+}
+
+void PrintHelp()
+{
+}
+
+void SetupConfiguration(Configuration& conf)
+{
+    po::options_description configs("Fitscheck options");
+    configs.add_options()
+        ("fitsfile,f",  var<string>()
+#if BOOST_VERSION >= 104200
+         ->required()
+#endif
+                                     , "Name of FITS file")
+        ;
+
+    po::positional_options_description p;
+    p.add("fitsfile", 1); // The first positional options
+
+    conf.AddOptions(configs);
+    conf.SetArgumentPositions(p);
+}
+
+int main(int argc, const char** argv)
+{
+    Configuration conf(argv[0]);
+    conf.SetPrintUsage(PrintUsage);
+    SetupConfiguration(conf);
+
+    if (!conf.DoParse(argc, argv, PrintHelp))
+        return -1;
+
+    if (!conf.Has("fitsfile"))
+    {
+        cerr << "Filename required." << endl;
+        return -1;
+    }
+
+    const string fname = conf.Get<string>("fitsfile");
+
+    cout << "Reading '" << fname << "'.." << flush;
+
+    fits file(fname.c_str());
+    if (!file)
+    {
+        cout << "fits::open() failed: " << strerror(errno) << " [errno=" << errno << "]";
+        return 1;
+    }
+
+    if (!file.IsHeaderOk())
+    {
+        cout << " header checksum could not be verified." << endl;
+        return 2;
+    }
+
+    const size_t n = file.GetNumRows()/10;
+
+    while (file.GetNextRow())
+        if (file.GetRow()<n && file.GetRow()%n==0)
+            cout << '.' << flush;
+
+    if (!file.IsFileOk())
+    {
+        cout << " data checksum could not be verified." << endl;
+        return 3;
+    }
+
+    cout << " file ok." << endl;
+
+    return 0;
+}
Index: /trunk/FACT++/src/fitsdump.cc
===================================================================
--- /trunk/FACT++/src/fitsdump.cc	(revision 13005)
+++ /trunk/FACT++/src/fitsdump.cc	(revision 13006)
@@ -852,43 +852,51 @@
         "\n"
         "Usage: fitsdump [OPTIONS] fitsfile col col ... \n"
-        "  or:  fitsdump [OPTIONS]\n";
-
-    cout << endl;
-}
-
-void PrintHelp()
-{
-    cout <<
+        "  or:  fitsdump [OPTIONS]\n"
         "\n"
-        "To address a column several syntax is possible:\n"
-        "  ColumnName:        Will address all fields of a column\n"
-        "  ColumnName[n]:     Will address the n-th field of a column (starts with 0)\n"
-        "  ColumnName[n1:n2]: Will address all fields between n1 and including n2\n"
+        "Addressing a column:\n"
+        "  ColumnName:         Will address all fields of a column\n"
+        "  ColumnName[n]:      Will address the n-th field of a column (starts with 0)\n"
+        "  ColumnName[n1:n2]:  Will address all fields between n1 and including n2\n"
 #ifdef HAVE_ROOT
         "\n"
-        "To select some columns can use --filter\n"
-        "Such a selction is evaluated using TFormula, hence, every "
+        "Selecting a column:\n"
+        "  Commandline option:  --filter\n"
+        "  Explanation:  Such a selection is evaluated using TFormula, hence, every "
         "mathematical operation allowed in TFormula is allowed there, too. "
         "The reference is the column index as printed in the output stream, "
         "starting with 1. The index 0 is reserved for the row number.\n"
-        "\n"
-        "Example:\n"
-        "  fitsdump Zd --filter=\"[0]>20 && cos([1])*TMath::RadToDeg()<45\"\n"
-        "\n"
+#endif
+        ;
+    cout << endl;
+}
+
+void PrintHelp()
+{
+#ifdef HAVE_ROOT
+    cout <<
+        "\n\n"
+        "Examples:\n"
         "In --root mode, fitsdump support TFormula's syntax for all columns and the filter "
         "You can then refer to a column or a (single) index of the column just by its name "
         "If the index is omitted, 0 is assumed\n"
         "\n"
-
-        "Example:\n"
+        "  fitsdump Zd --filter=\"[0]>20 && cos([1])*TMath::RadToDeg()<45\"\n"
+        "\n"
+        "The columns can also be addressed with their names\n"
+        "\n"
         "  fitsdump \"(Zd+Err)*TMath::DegToRad()\" --filter=\"Num>100 && Num<200\"\n"
+        "\n"
         "is identical to\n"
+        "\n"
         "  fitsdump \"(Zd[0]+Err[0])*TMath::DegToRad()\" --filter=\"Num[0]>100 && Num[0]<200\"\n"
-        "A special placeholder exists for the row number:\n"
+        "\n"
+        "A special placeholder exists for the row number\n"
+        "\n"
         "  fitsdump \"#\" --filter=\"#>10 && #<100\"\n"
-#endif
         "\n";
     cout << endl;
-}
+#endif
+}
+
 
 void SetupConfiguration(Configuration& conf)
