Index: /trunk/SophyaLib/BaseTools/datatype.cc
===================================================================
--- /trunk/SophyaLib/BaseTools/datatype.cc	(revision 2866)
+++ /trunk/SophyaLib/BaseTools/datatype.cc	(revision 2867)
@@ -6,4 +6,5 @@
 #include "sopnamsp.h"
 #include "datatype.h"
+#include "typeinfo.h"
 
 #include <complex>
@@ -13,5 +14,5 @@
 {
 }
-#if defined(__SGICC__)
+#if defined(__SGICC__) || defined(__IBMCPP__)
 template <class T>
 string DataTypeInfo<T>::getTypeName()
@@ -116,4 +117,5 @@
 
 #if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES)
+namespace SOPHYA {
 template class DataTypeInfo<uint_1>;
 template class DataTypeInfo<uint_2>;
@@ -127,3 +129,4 @@
 template class DataTypeInfo< complex<r_4> >;
 template class DataTypeInfo< complex<r_8> >;
+}
 #endif
Index: /trunk/SophyaLib/BaseTools/fiondblock.cc
===================================================================
--- /trunk/SophyaLib/BaseTools/fiondblock.cc	(revision 2866)
+++ /trunk/SophyaLib/BaseTools/fiondblock.cc	(revision 2867)
@@ -186,4 +186,5 @@
 
 #if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES)
+namespace SOPHYA {
 // Instances des delegues FileIO (PPersist)
 template class FIO_NDataBlock<uint_1>;
@@ -198,3 +199,4 @@
 template class FIO_NDataBlock< complex<r_4> >;
 template class FIO_NDataBlock< complex<r_8> >;
+}
 #endif
Index: /trunk/SophyaLib/BaseTools/machdefs_mkmf.h
===================================================================
--- /trunk/SophyaLib/BaseTools/machdefs_mkmf.h	(revision 2866)
+++ /trunk/SophyaLib/BaseTools/machdefs_mkmf.h	(revision 2867)
@@ -321,7 +321,16 @@
 #ifndef ANSI_TEMPLATES
 #define ANSI_TEMPLATES
+#endif
 #undef  DECL_TEMP_SPEC
 #define DECL_TEMP_SPEC template <>
 #endif
+
+#if defined(__IBMCPP__)
+/* IBM xlC compiler support Added : dec 2005 */
+#ifndef ANSI_TEMPLATES
+#define ANSI_TEMPLATES
+#endif
+#undef  DECL_TEMP_SPEC
+#define DECL_TEMP_SPEC template <>
 #endif
 
Index: /trunk/SophyaLib/BaseTools/ndatablock.cc
===================================================================
--- /trunk/SophyaLib/BaseTools/ndatablock.cc	(revision 2866)
+++ /trunk/SophyaLib/BaseTools/ndatablock.cc	(revision 2867)
@@ -789,4 +789,5 @@
 
 #if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES)
+namespace SOPHYA {
 template class NDataBlock<uint_1>;
 template class NDataBlock<uint_2>;
@@ -800,3 +801,4 @@
 template class NDataBlock< complex<r_4> >;
 template class NDataBlock< complex<r_8> >;
+}
 #endif
Index: /trunk/SophyaLib/SysTools/commander.cc
===================================================================
--- /trunk/SophyaLib/SysTools/commander.cc	(revision 2866)
+++ /trunk/SophyaLib/SysTools/commander.cc	(revision 2867)
@@ -1578,9 +1578,10 @@
   pev += '=';
   pev += vv;
-#if defined(Linux)
+#if defined(Linux) || defined(AIX)
 // Reza - 28/04/2004 
 // putenv de Linux ne declare pas la variable char *string const
 // On ne doit meme pas utiliser une variable automatique  
 // J'alloue donc un nouveau tableau - mais qui va le liberer ?
+// Idem AIX , Reza Dec 2005 
   char* bev = new char[pev.size()+1];
   strcpy(bev, pev.c_str());
Index: /trunk/SophyaLib/SysTools/cxxcmplnk.cc
===================================================================
--- /trunk/SophyaLib/SysTools/cxxcmplnk.cc	(revision 2866)
+++ /trunk/SophyaLib/SysTools/cxxcmplnk.cc	(revision 2867)
@@ -44,4 +44,6 @@
 "-O -no_implicit_include -pthread";
 static char * SGICC_opt =  "-O -prelink -D__SGICC__ -LANG:std";
+static char * xlC_opt = 
+"-O -qrtti=all -qeh=v6";
 
 /* --Methode-- */
@@ -116,4 +118,10 @@
   syscomp += "icc/";  
 #endif
+#if defined( __IBMCPP__ )
+  compCmd = "xlC ";
+  compOptions = xlC_opt;
+  linkOptions = xlC_opt + string(" -brtl -qmkshrobj ");
+  syscomp += "xlC/";  
+#endif
 
 #ifndef Darwin
@@ -131,7 +139,8 @@
   char* varenv=NULL;
   varenv=getenv("SOPHYABASE");
+  string sbaserep = "./";
   if (varenv) {
     fgenv1 = true;
-    string sbaserep = varenv; 
+    sbaserep = varenv; 
     if (sbaserep[sbaserep.length()-1] != '/')  sbaserep += '/';
     cppFlags += ( " -I" + sbaserep + "include/ ");
@@ -159,5 +168,16 @@
   if (fglibsophya) linkOptions += " -lsophya ";
   if (fglibextsophya) linkOptions += " -lextsophya ";
+#if defined( AIX )
+  cout << " ++++==++ DBG/CxxCompilerLinker() - in AIX fglibpi= " 
+       << ((fglibpi) ? " true " : " false ")  << endl;
+  // Reza:Dec 2005 : pb avec les programmes PI sur AIX si linke avec shared lib PI
+  // (Portage sur regatta.calcul.u-psud.fr AIX 5.3 , libXm Xt X11 en .a uniquement) 
+  if (fglibpi) { 
+    linkOptions += " -L" + sbaserep + "lib/";
+    linkOptions += " -lPIext -lPIGcont -lPI -lXm -lXt -lX11 -lpthread ";
+  }
+#else
   if (fglibpi) linkOptions += " -lPI ";
+#endif
   linkOptions += " -lm ";
 
Index: /trunk/SophyaLib/SysTools/pdlmgr.cc
===================================================================
--- /trunk/SophyaLib/SysTools/pdlmgr.cc	(revision 2866)
+++ /trunk/SophyaLib/SysTools/pdlmgr.cc	(revision 2867)
@@ -97,5 +97,9 @@
     if (path.length() > 0)  cmd += path + ':';
     cmd += varenv;
-    putenv(const_cast<char *>(cmd.c_str()));
+    //AIX: l'argument de putenv n'est pas const (Reza Dec 2005)
+    //On fait un new - mais qui fait le delete ?
+    char * pevc = new char [cmd.length()+1];
+    strcpy(pevc, cmd.c_str());
+    putenv(pevc);
     }
 
@@ -172,5 +176,6 @@
 #endif
 #elif defined(AIX)
-  cmd = "ld -G -bnogc -bexpall -bM:1L -o " + fnameso + " " + fnameobj;
+  //  cmd = "ld -G -bnogc -bexpall -bM:1L -o " + fnameso + " " + fnameobj;
+  cmd = "cc -brtl -qmkshrobj -o " + fnameso + " " + fnameobj + " -lm -lc";;
 #elif defined(HPUX)
   cmd = "ld -b -o " + fnameso + " " + fnameobj + " -lm -lc";
