Index: /trunk/BNC/src/orbComp/sp3Comp.cpp
===================================================================
--- /trunk/BNC/src/orbComp/sp3Comp.cpp	(revision 6351)
+++ /trunk/BNC/src/orbComp/sp3Comp.cpp	(revision 6352)
@@ -96,5 +96,7 @@
 
   try {
-    compare();
+    ostringstream msg;
+    compare(msg);
+    *_log << msg.str().c_str();
   }
   catch (const string& error) {
@@ -192,5 +194,5 @@
 // Main Routine
 ////////////////////////////////////////////////////////////////////////////////
-void t_sp3Comp::compare() const {
+void t_sp3Comp::compare(ostringstream& out) const {
 
   // Synchronize reading of two sp3 files
@@ -262,5 +264,5 @@
       }
       else {
-        cerr << "not found: " << prn << endl;
+        throw "not found: " + prn.toString();
       }
     }
@@ -277,6 +279,6 @@
   const string all = "ZZZ";
 
-  cout.setf(ios::fixed);
-  cout << "!\n!  MJD       PRN  radial   along   out        clk    clkRed   iPRN"
+  out.setf(ios::fixed);
+  out << "!\n!  MJD       PRN  radial   along   out        clk    clkRed   iPRN"
            "\n! ----------------------------------------------------------------\n";
   for (unsigned ii = 0; ii < epochs.size(); ii++) {
@@ -287,8 +289,8 @@
       const t_prn&  prn = it->first;
       const ColumnVector& rao = it->second;
-      cout << setprecision(6) << epo->_tt.mjddec() << ' ' << prn << ' '
-           << setw(7) << setprecision(4) << rao[0] << ' '
-           << setw(7) << setprecision(4) << rao[1] << ' '
-           << setw(7) << setprecision(4) << rao[2] << "    ";
+      out << setprecision(6) << epo->_tt.mjddec() << ' ' << prn << ' '
+          << setw(7) << setprecision(4) << rao[0] << ' '
+          << setw(7) << setprecision(4) << rao[1] << ' '
+          << setw(7) << setprecision(4) << rao[2] << "    ";
       stat[prn.toString()]._rao += SP(rao, rao); // Schur product
       stat[prn.toString()]._nr  += 1;
@@ -298,6 +300,6 @@
         double clkRes    = dc.find(prn)->second;
         double clkResRed = clkRes - it->second[0]; // clock minus radial component
-        cout << setw(7) << setprecision(4) << clkRes << ' '
-             << setw(7) << setprecision(4) << clkResRed;
+        out << setw(7) << setprecision(4) << clkRes << ' '
+            << setw(7) << setprecision(4) << clkResRed;
         stat[prn.toString()]._dc    += clkRes * clkRes;
         stat[prn.toString()]._dcRed += clkResRed * clkResRed;
@@ -308,7 +310,7 @@
       }
       else {
-        cout << "  .       .    ";
-      }
-      cout << "    " << setw(2) << int(prn) << endl;
+        out << "  .       .    ";
+      }
+      out << "    " << setw(2) << int(prn) << endl;
     }
     delete epo;
@@ -317,5 +319,5 @@
   // Print Summary
   // -------------
-  cout << "!\n! RMS:\n";
+  out << "!\n! RMS:\n";
   for (map<string, t_stat>::iterator it = stat.begin(); it != stat.end(); it++) {
     const string& prn  = it->first;
@@ -326,26 +328,26 @@
       stat._rao[2] = sqrt(stat._rao[2] / stat._nr);
       if (prn == all) {
-        cout << "!\n!          Total ";
+        out << "!\n!          Total ";
       }
       else {
-        cout << "!            " << prn << ' ';
-      }
-      cout << setw(7) << setprecision(4) << stat._rao[0] << ' '
-           << setw(7) << setprecision(4) << stat._rao[1] << ' '
-           << setw(7) << setprecision(4) << stat._rao[2] << "    ";
+        out << "!            " << prn << ' ';
+      }
+      out << setw(7) << setprecision(4) << stat._rao[0] << ' '
+          << setw(7) << setprecision(4) << stat._rao[1] << ' '
+          << setw(7) << setprecision(4) << stat._rao[2] << "    ";
       if (stat._nc > 0) {
         stat._dc    = sqrt(stat._dc / stat._nc);
         stat._dcRed = sqrt(stat._dcRed / stat._nc);
-        cout << setw(7) << setprecision(4) << stat._dc << ' '
-             << setw(7) << setprecision(4) << stat._dcRed;
+        out << setw(7) << setprecision(4) << stat._dc << ' '
+            << setw(7) << setprecision(4) << stat._dcRed;
         if (prn != all) {
-          cout << "    offset " << setw(7) << setprecision(4) << stat._offset;
+          out << "    offset " << setw(7) << setprecision(4) << stat._offset;
         }
       }
       else {
-        cout << "  .       .    ";
-      }
-      cout << endl;
-    }
-  }
-}
+        out << "  .       .    ";
+      }
+      out << endl;
+    }
+  }
+}
Index: /trunk/BNC/src/orbComp/sp3Comp.h
===================================================================
--- /trunk/BNC/src/orbComp/sp3Comp.h	(revision 6351)
+++ /trunk/BNC/src/orbComp/sp3Comp.h	(revision 6352)
@@ -30,4 +30,5 @@
 #include <vector>
 #include <string>
+#include <sstream>
 #include <QtCore>
 #include <newmat.h>
@@ -83,5 +84,5 @@
   void processClocks(const std::set<t_prn>& clkSats, std::vector<t_epoch*>& epochs,
                      std::map<std::string, t_stat>& stat) const;
-  void compare() const;
+  void compare(std::ostringstream& out) const;
 
   QStringList  _sp3FileNames;
