Index: /trunk/SophyaProg/Tests/arrt.cc
===================================================================
--- /trunk/SophyaProg/Tests/arrt.cc	(revision 806)
+++ /trunk/SophyaProg/Tests/arrt.cc	(revision 807)
@@ -7,7 +7,11 @@
 #include "tarrinit.h"
 #include "tarray.h"
+#include "fioarr.h"
 #include "matharr.h"
 #include "timing.h"
 
+
+void tstioarr(TArray<int_4> & ia, TArray<int_4> & ib, TArray<int_4> & ic);
+void tstmtx();
 
 int main(int narg, char* arg[])
@@ -21,7 +25,7 @@
   int i,j,k;
 
-  if (narg > 1) n = atoi(arg[1]);
+  bool tio = false;
+  if (narg > 1) tio = true;
 
-  
   try {
   cout << "\n -----> Testing TArray <---- " << endl;  
@@ -32,5 +36,5 @@
   cout << " ----- matrix IA = \n " << ia << endl;
   // sub array extraction, Range(2,3) : starting position=2 , size=3
-  TArray<int_4> ic = ia(Range(2,3),Range(1,2));
+  TArray<int_4> ic = ia(Range(2,3),Range(1,2),Range(0));
   cout << " ----- matrix IC IA(Range(2,3),Range(1,2)) = \n " << ic << endl;
   // we set the sub-array to zero, this should reflect in the original array
@@ -48,5 +52,5 @@
   // Sub array extraction  X from 1 , size 4 - Y from 2 , size 3 , in Z default, from 0, size 1
   // we multiply this sub-array elements by 3
-  ib(Range(1,4),Range(2,3)) *= 3;
+  ib(Range(1,4),Range(2,3), Range(0)) *= 3;
   cout << " -- matrix IB , Apres ib(Range(1,3),Range(2,1))*=3 : " << endl;
   cout << ib;
@@ -63,4 +67,7 @@
   cout << " ------ sin(fa2=fa*2*Pi) = \n" << sin(fa2) << endl;
   cout << " ------ cos(fa2=fa*2*Pi) = \n" << cos(fa2) << endl;
+
+  if (tio) tstioarr(ia, ib, ic);
+
   }
   catch (PThrowable exc) {
@@ -72,2 +79,57 @@
   cout << " ---------------  END of Programme -------------- " << endl;
 }
+
+void tstioarr(TArray<int_4> & ia, TArray<int_4> & ib, TArray<int_4> & ic)
+{
+  cout << " ------ tstioarr(TArray<int_4> & ia, TArray<int_4> & ib, TArray<int_4> & ic) ---- " << endl;
+  {
+  cout << " >>>>>> Writing in  arrt.ppf <<<<<<< " << endl;
+  POutPersist pos("arrt.ppf");
+  // We write  the three arrays in the stream 
+  pos << ia << ib << ic;
+  cout << " >>>>>> Writing in  arrtn.ppf with names <<<<<<<" << endl;
+  POutPersist posn("arrtn.ppf");
+  string tag = "ArrIA";
+  posn.PutObject(ia, tag);
+  tag = "ArrIB";
+  posn.PutObject(ib, tag);
+  tag = "ArrIC";
+  posn.PutObject(ic, tag);
+  }
+
+  {
+  cout << " >>>>>>> Reading from  arrt.ppf  <<<<< " << endl;
+  PInPersist pis("arrt.ppf");
+  TArray<int_4> iaa, ibb, icc; 
+  // We read the three arrays from the stream 
+  pis >> iaa >> ibb >> icc;
+  cout << " ----- matrix IAA = \n " << iaa << endl;
+  cout << " ----- matrix IBB = \n " << ibb << endl;
+  cout << " ----- matrix ICC = \n " << icc << endl;
+  icc = 12;
+  cout << " ----- matrix ICC (=12) = \n " << icc << endl;
+  cout << " ----- matrix IAA (ICC=12) = \n " << iaa << endl;
+  }
+
+  {
+  cout << " >>>>>>> Reading from  arrtn.ppf  <<<<< " << endl;
+  PInPersist pis("arrtn.ppf");
+  TArray<int_4> iaa, ibb, icc; 
+  // We read the three arrays from the stream 
+  string tag = "ArrIC";
+  pis.GetObject(icc, tag);
+  tag = "ArrIB";
+  pis.GetObject(ibb, tag);
+  tag = "ArrIA";
+  pis.GetObject(iaa, tag);
+
+  cout << " ----- matrix IAAA = \n " << iaa << endl;
+  cout << " ----- matrix IBBB = \n " << ibb << endl;
+  cout << " ----- matrix ICCC = \n " << icc << endl;
+  icc = 68;
+  cout << " ----- matrix ICCC (=12) = \n " << icc << endl;
+  cout << " ----- matrix IAAA (ICC=12) = \n " << iaa << endl;
+  }
+
+
+}
Index: /trunk/SophyaProg/Tests/lpk.cc
===================================================================
--- /trunk/SophyaProg/Tests/lpk.cc	(revision 806)
+++ /trunk/SophyaProg/Tests/lpk.cc	(revision 807)
@@ -23,5 +23,5 @@
 
   if (narg > 1) n = atoi(arg[1]);
-  cout << "rztest_lapack - Size=" << n << endl;
+  cout << ":::::::: rztest_lapack - Size=" << n << "  ::::::::: " << endl;
   try {
   TArray<r_4> a(n,n);
@@ -38,7 +38,7 @@
   }
 
-  cout << " ------------ Matrix A = \n " << a << "\n" << endl; 
-  cout << " ------------ Matrix X = \n " << x << "\n" << endl; 
-  cout << " ------------ Matrix B = \n " << b << "\n" << endl; 
+  cout << " ------------ Array A = \n " << a << "\n" << endl; 
+  cout << " ------------ Array X = \n " << x << "\n" << endl; 
+  cout << " ------------ Array B = \n " << b << "\n" << endl; 
 
   cout << "\n     Calling rztest_lapack ... " << endl;
Index: /trunk/SophyaProg/Tests/scanppf.cc
===================================================================
--- /trunk/SophyaProg/Tests/scanppf.cc	(revision 806)
+++ /trunk/SophyaProg/Tests/scanppf.cc	(revision 807)
@@ -22,6 +22,9 @@
 SambaInitiator smbinit;
 
-if (narg < 2) {
-  cerr << " Usage: scanppf filename [s]\n " <<  endl;
+if ((narg < 2) || (strcmp(arg[1],"-h") == 0) ) {
+  cerr << " Usage: scanppf filename [s/n/a0/a1/a2/a3] \n" 
+       << "   s[=default} : Sequential reading of objects \n" 
+       << "   n : Object reading at NameTags \n"
+       << "   a0...a3 : Tag List with PInPersist.AnalyseTags(0...3) \n" << endl;
   exit(0);
   }
@@ -29,26 +32,39 @@
 try {
   string flnm = arg[1];
-  bool seq=false;
-  if (narg > 2) seq=true;
+  bool seq=true;
+  bool ana=false;
+  int analev = 0;
+  string opt = "s";
+  if (narg > 2) opt = arg[2];
+  
+  if (opt == "n")  seq = false;
+  else if (opt[0] == 'a') {  ana = true;  analev = opt[1]-'0'; }
+
+  if (ana)   cout << " Analyse PInPersist( " << flnm << ")  Level=" << analev << endl;
+  else { 
+    if (!seq) cout << "PInPersist( " << flnm << ") Object Reading at NameTags " << endl;
+    else  cout << "PInPersist( " << flnm << ") Sequential Object Reading " << endl;
+  }
+   
   PPersist* op = NULL;
   cout << " Opening PPF file " << flnm << endl; 
   PInPersist s(flnm);
-  int nt = s.NbTags();
-  cout << " Number of tags in file = " << nt << endl;
-  if (nt < 1) { 
-    op = s.ReadObject();
-    cout << " Object Type " << typeid(*op).name() << endl;
-    if (op) delete op;
-  }
-  else if (!seq) {
+
+  if (ana) s.AnalyseTags(analev);   // Analysing all tags in file 
+
+  else {
+    cout << " Version= " << s.Version() << " CreationDate= " << s.CreationDateStr() << endl;
+    int nt = s.NbTags();
+    cout << " Number of tags in file = " << nt << endl;
+    if ( seq || (nt < 1) ) {
+      while (1) {
+	op = s.ReadObject();
+	cout << " Object Type " << typeid(*op).name() << endl;
+	if (op) delete op;
+      }
+    }
     for(int i=0; i<nt; i++) {
       cout << ">>> TagNum= " << i << " TagName= " << s.GetTagName(i) << endl;
       s.GotoTagNum(i);
-      op = s.ReadObject();
-      cout << " Object Type " << typeid(*op).name() << endl;
-      if (op) delete op;
-    }
-  } else {
-    while (1) {
       op = s.ReadObject();
       cout << " Object Type " << typeid(*op).name() << endl;
Index: /trunk/SophyaProg/Tests/tobjio.cc
===================================================================
--- /trunk/SophyaProg/Tests/tobjio.cc	(revision 806)
+++ /trunk/SophyaProg/Tests/tobjio.cc	(revision 807)
@@ -14,4 +14,5 @@
 #include "fmath.h"
 #include "nbrandom.h"
+#include "fioarr.h"
 
 
@@ -96,9 +97,9 @@
   for(i=0; i<20; i++) { x = 8.*i/20;  (*vpx)(i) = x;  (*vpy)(i) = 3*cos(x)+2*sin(x); }
   nom = "vx1";
-  FIO_TVector<double>  oiov1(vpx);
+  FIO_TArray<double>  oiov1(vpx);
   oiov1.Write(so, nom);
   cout << "Writing " << nom << endl;
   nom = "vy1";
-  FIO_TVector<double>  oiov2(vpy);
+  FIO_TArray<double>  oiov2(vpy);
   oiov2.Write(so, nom);
   cout << "Writing " << nom << endl;
@@ -106,5 +107,5 @@
   for(i=0; i<30; i++) { x = 8.*i/30+0.1;  (*vpx)(i) = sin(2.*x)/(2.*x); }
   nom = "vx2";
-  FIO_TVector<double>  oiov3(vpy);
+  FIO_TArray<double>  oiov3(vpy);
   oiov3.Write(so, nom);
   cout << "Writing " << nom << endl;
@@ -163,5 +164,5 @@
      }
   nom = "mtx1";
-  FIO_TMatrix<double> oiom(mtx);
+  FIO_TArray<double> oiom(mtx);
   oiom.Write(so, nom);
   cout << "Writing " << nom << endl;
