Index: /XMLIO_V2/dev/dev_rv/src/xmlio/fortran/ixmlioserver.f03.in
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/fortran/ixmlioserver.f03.in	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/fortran/ixmlioserver.f03.in	(revision 205)
@@ -146,5 +146,4 @@
 #include "../config/grid_attribute.conf"
 
-
    END INTERFACE
 
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/functor.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/functor.cpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/functor.cpp	(revision 205)
@@ -7,18 +7,7 @@
       /// ////////////////////// DÃ©finitions ////////////////////// ///
 
-      CFunctor::CFunctor(const StdString & id, ARRAY(double, 1) doutput,
-                         const CFunData & data, CFuncType type)
-         : SuperClass(id)
-         , doutput(doutput), size()
-         , data(data), type(type)
-      { this->resize(size); }
-
-      CFunctor::CFunctor(const StdString & id, DoubleArray doutput,
-                         const std::vector<StdSize> size,
-                         const CFunData & data, CFuncType type)
-         : SuperClass(id)
-         , doutput(doutput), size(size)
-         , data(data), type(type)
-      { this->resize(size); }
+      CFunctor::CFunctor(const StdString & id, ARRAY(double, 1) doutput)
+         : SuperClass(id), doutput(doutput)
+      { /* Ne rien faire de plus */  }
 
       CFunctor::~CFunctor(void)
@@ -27,43 +16,7 @@
       //---------------------------------------------------------------
 
-      const CFunctor::CFunData  & CFunctor::getData(void) const
-      { return (this->data); }
-
-      CFunctor::CFuncType CFunctor::getType(void) const
-      { return (this->type); }
-
       ARRAY(double, 1) CFunctor::getDataOutput(void) const
-      { return (this->doutput); }
-
-      const std::vector<StdSize> & CFunctor::getShape(void) const
-      { return (this->size); }
-
-      StdSize CFunctor::getSize(void) const
-      { return (this->doutput->size()); }
-
-      //---------------------------------------------------------------
-
-      void CFunctor::resize(StdSize x, StdSize y, StdSize z)
-      {
-         this->size.clear();
-         this->size.push_back(x);
-         if (y != 1) this->size.push_back(y);
-         if (z != 1) this->size.push_back(z);
-         this->doutput->resize(boost::extents[x * y * z]);
-      }
-
-      void CFunctor::resize(const std::vector<StdSize> & sizes)
-      {
-         StdSize newsize = 1;
-         this->size.clear();
-         std::vector<StdSize>::const_iterator it = sizes.begin(), end = sizes.end();
-         
-         for (; it!=end; it++)
-         { 
-            StdSize size = *it;
-            newsize *= size;
-            this->size.push_back(size);
-         }
-         this->doutput->resize(boost::extents[newsize]);
+      { 
+         return (this->doutput);
       }
 
@@ -91,5 +44,5 @@
                    << ", output size = " << this->doutput->size() << " ]"
                    << " size of input array !=  size of output array !");
-         this->apply(dinput, this->doutput, this->size, this->data);
+         this->apply(dinput, this->doutput);
          return (this->doutput);
       }
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/functor.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/functor.hpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/functor.hpp	(revision 205)
@@ -20,21 +20,6 @@
          public :
 
-            typedef enum func_type { SPATIAL = 0, TEMPORAL } CFuncType;
-            typedef struct func_data
-            { int timestep; } CFunData;
-
             /// Accesseurs ///
-            CFuncType getType(void) const;
-            StdSize   getSize(void) const;
-
-            const CFunData  & getData(void) const;
-            const std::vector<StdSize> & getShape(void) const;
-
             DoubleArray getDataOutput(void) const;
-
-            /// Mutateur ///
-            void resize(StdSize x, StdSize y = 1, StdSize z = 1);
-            void resize(const std::vector<StdSize> & sizes);
-
             /// OpÃ©rateur ///
             DoubleArray operator ()(const DoubleArray dinput);
@@ -46,6 +31,5 @@
 
             /// Traitement ///
-            virtual void apply(const DoubleArray dinput, DoubleArray doutput,
-                               const std::vector<StdSize> size, const CFunData & data) = 0;
+            virtual void apply(const DoubleArray dinput, DoubleArray doutput) = 0;
 
             /// Autres ///
@@ -53,15 +37,7 @@
             virtual void fromString(const StdString & str);
 
-
             /// Constructeurs ///
             CFunctor(void);                             // Not implemented.
-
-            CFunctor(const StdString & id, DoubleArray doutput,
-                     const CFunData & data, CFuncType type = TEMPORAL);
-
-            CFunctor(const StdString & id, DoubleArray doutput,
-                     const std::vector<StdSize> size,
-                     const CFunData & data, CFuncType type = TEMPORAL);
-
+            CFunctor(const StdString & id, DoubleArray doutput);
             CFunctor(const CFunctor & functor);         // Not implemented.
             CFunctor(const CFunctor * const functor);   // Not implemented.
@@ -71,7 +47,5 @@
             /// PropriÃ©tÃ©s privÃ©es ///
             DoubleArray doutput;
-            std::vector<StdSize> size;
-            CFunData data; CFuncType type;
-
+            
       }; // class CFunctor
    } // namespace func
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/functor/average.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/functor/average.cpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/functor/average.cpp	(revision 205)
@@ -7,8 +7,6 @@
       /// ////////////////////// DÃ©finitions ////////////////////// ///
 
-      CAverage::CAverage(DoubleArray doutput,
-                         const CFunData & data,
-                         const std::vector<size_t> size)
-         : SuperClass(StdString("average"), doutput, size, data)
+      CAverage::CAverage(DoubleArray doutput)
+         : SuperClass(StdString("average"), doutput)
       { /* Ne rien faire de plus */ }
 
@@ -19,7 +17,5 @@
 
       void CAverage::apply(const DoubleArray         UNUSED(dinput),
-                              DoubleArray            UNUSED(doutput),
-                           const std::vector<size_t> UNUSED(size),
-                           const CFunData &          UNUSED(data))
+                                 DoubleArray         UNUSED(doutput))
       {
          ERROR("CAverage::apply(...)", << "Not implemented yet !");
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/functor/average.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/functor/average.hpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/functor/average.hpp	(revision 205)
@@ -19,14 +19,12 @@
 
             /// Constructeurs ///
-            CAverage(void);                             // Not implemented.
-            CAverage(const CFunData & data);
-            CAverage(DoubleArray doutput, const CFunData & data,
-                     const std::vector<size_t> size);
-            CAverage(const CAverage & average);         // Not implemented.
-            CAverage(const CAverage * const average);   // Not implemented.
+            //CAverage(void);                             // Not implemented.
+            //CAverage(const CFunData & data);
+            CAverage(DoubleArray doutput);
+            //CAverage(const CAverage & average);         // Not implemented.
+            //CAverage(const CAverage * const average);   // Not implemented.
 
             /// Traitement ///
-            virtual void apply(const DoubleArray dinput, DoubleArray doutput,
-                               const std::vector<size_t> size, const CFunData & data);
+            virtual void apply(const DoubleArray dinput, DoubleArray doutput);
 
             /// Destructeur ///
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/functor/instant.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/functor/instant.cpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/functor/instant.cpp	(revision 205)
@@ -7,8 +7,6 @@
       /// ////////////////////// DÃ©finitions ////////////////////// ///
 
-      CInstant::CInstant(DoubleArray doutput,
-                         const CFunData & data,
-                         const std::vector<size_t> size)
-         : SuperClass(StdString("instant"), doutput, size, data)
+      CInstant::CInstant(DoubleArray doutput)
+         : SuperClass(StdString("instant"), doutput)
       { /* Ne rien faire de plus */ }
 
@@ -19,7 +17,5 @@
 
       void CInstant::apply(const DoubleArray         UNUSED(dinput),
-                                 DoubleArray         UNUSED(doutput),
-                           const std::vector<size_t> UNUSED(size),
-                           const CFunData &          UNUSED(data))
+                                 DoubleArray         UNUSED(doutput))
       {
          ERROR("CInstant::apply(...)", << "Not implemented yet !");
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/functor/instant.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/functor/instant.hpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/functor/instant.hpp	(revision 205)
@@ -19,14 +19,12 @@
 
             /// Constructeurs ///
-            CInstant(void);                             // Not implemented.
-            CInstant(const CFunData & data);
-            CInstant(DoubleArray doutput, const CFunData & data,
-                     const std::vector<size_t> size);
-            CInstant(const CInstant & instant);         // Not implemented.
-            CInstant(const CInstant * const instant);   // Not implemented.
+            //CInstant(void);                             // Not implemented.
+            //CInstant(const CFunData & data);
+            CInstant(DoubleArray doutput);
+            //CInstant(const CInstant & instant);         // Not implemented.
+            //CInstant(const CInstant * const instant);   // Not implemented.
 
             /// Traitement ///
-            virtual void apply(const DoubleArray dinput, DoubleArray doutput,
-                               const std::vector<size_t> size, const CFunData & data);
+            virtual void apply(const DoubleArray dinput, DoubleArray doutput);
 
             /// Destructeur ///
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/functor/once.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/functor/once.cpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/functor/once.cpp	(revision 205)
@@ -7,8 +7,6 @@
       /// ////////////////////// DÃ©finitions ////////////////////// ///
 
-      COnce::COnce(DoubleArray doutput,
-                   const CFunData & data,
-                   const std::vector<size_t> size)
-         : SuperClass(StdString("once"), doutput, size, data)
+      COnce::COnce(DoubleArray doutput)
+         : SuperClass(StdString("once"), doutput)
       { /* Ne rien faire de plus */ }
 
@@ -19,7 +17,5 @@
 
       void COnce::apply(const DoubleArray         UNUSED(dinput),
-                              DoubleArray         UNUSED(doutput),
-                        const std::vector<size_t> UNUSED(size),
-                        const CFunData &          UNUSED(data))
+                              DoubleArray         UNUSED(doutput))
       {
          ERROR("COnce::apply(...)", << "Not implemented yet !");
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/functor/once.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/functor/once.hpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/functor/once.hpp	(revision 205)
@@ -19,13 +19,11 @@
 
             /// Constructeurs ///
-            COnce(void);                       // Not implemented.
-            COnce(DoubleArray doutput, const CFunData & data,
-                  const std::vector<size_t> size);
-            COnce(const COnce & once);         // Not implemented.
-            COnce(const COnce * const once);   // Not implemented.
+            //COnce(void);                       // Not implemented.
+            COnce(DoubleArray doutput);
+            //COnce(const COnce & once);         // Not implemented.
+            //COnce(const COnce * const once);   // Not implemented.
 
             /// Traitement ///
-            virtual void apply(const DoubleArray dinput, DoubleArray doutput,
-                               const std::vector<size_t> size, const CFunData & data);
+            virtual void apply(const DoubleArray dinput, DoubleArray doutput);
 
             /// Destructeur ///
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/iface/interface.cpp.in
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/iface/interface.cpp.in	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/iface/interface.cpp.in	(revision 205)
@@ -365,5 +365,12 @@
 void xios_update_calendar(int step)
 {
-
+   try
+   {
+   }
+   catch (CException & exc)
+   {
+      std::cerr << exc.getMessage() << std::endl;
+      exit (EXIT_FAILURE);
+   }
 }
 
@@ -373,6 +380,12 @@
                        double ts_hour, double ts_minute, double ts_second)
 {
-
-
+   try
+   {
+   }
+   catch (CException & exc)
+   {
+      std::cerr << exc.getMessage() << std::endl;
+      exit (EXIT_FAILURE);
+   }
 }
 
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp	(revision 205)
@@ -183,7 +183,10 @@
       if (CXIOSManager::GetStatus() == CXIOSManager::LOC_SERVER)
       {
-         this->freq_operation = CDuration::FromString(this->file->output_freq.getValue());
-         this->freq_write     = CDuration::FromString(this->file->output_freq.getValue());
-         //this->foperation = boost::shared_ptr<func::CFunctor>(new CInstant());
+         this->freq_operation =
+             CDuration::FromString(this->file->output_freq.getValue());
+         this->freq_write     =
+             CDuration::FromString(this->file->output_freq.getValue());
+         this->foperation     =
+             boost::shared_ptr<func::CFunctor>(new CInstant(this->data));
       }
       else
@@ -192,9 +195,12 @@
          this->freq_write     = CDuration::FromString(this->file->output_freq.getValue());
          
-#define DECLARE_FUNCTOR(MType, mtype) \
+#define DECLARE_FUNCTOR(MType, mtype)              \
    if  (operation.getValue().compare(#mtype) == 0) \
-   { /*this->foperation = boost::shared_ptr<func::CFunctor>(new C##MType()); */ \
-     return; }
-
+   {                                               \
+      boost::shared_ptr<func::CFunctor>            \
+            foperation_(new C##MType(this->data)); \
+      this->foperation = foperation_;              \
+      return;                                      \
+   }
    
 #include "functor_type.conf"
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.cpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.cpp	(revision 205)
@@ -89,4 +89,33 @@
    { 
       return (this->withAxis); 
+   }
+
+   //---------------------------------------------------------------
+
+   StdSize CGrid::getDimension(void) const
+   {
+      return ((this->withAxis)?3:2);
+   }
+
+   //---------------------------------------------------------------
+
+   std::vector<StdSize> CGrid::getShape(void) const
+   {
+      std::vector<StdSize> retvalue;
+      retvalue.push_back(this->domain->ni.getValue());
+      retvalue.push_back(this->domain->nj.getValue());
+      if (this->withAxis)
+         retvalue.push_back(this->axis->size.getValue());
+      return (retvalue);
+   }
+   //---------------------------------------------------------------
+   
+   StdSize CGrid::getSize(void) const
+   {
+      StdSize retvalue = 1;
+      std::vector<StdSize> shape_ = this->getShape();
+      for (StdSize s = 0; s < shape_.size(); s++)
+         retvalue *= shape_[s];
+      return (retvalue);
    }
 
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.hpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/node/grid.hpp	(revision 205)
@@ -67,4 +67,8 @@
          const boost::shared_ptr<CDomain> getRelDomain(void) const;
 
+         StdSize getDimension(void) const;
+         StdSize getSize(void) const;
+         std::vector<StdSize> getShape(void) const;
+
          /// EntrÃ©es-sorties de champs ///
          template <StdSize n>
@@ -125,5 +129,12 @@
    template <StdSize n>
       void CGrid::inputField(const  ARRAY(double, n) field, ARRAY(double, 1) stored) const
-   { this->storeField_arr(field.data(), stored) ; }
+   {
+      if (this->getSize() != field->num_elements())
+         ERROR("CGrid::inputField(const  ARRAY(double, n) field, ARRAY(double, 1) stored)",
+                << "[ Taille des donnÃ©es attendue = " << this->getSize()       << ", "
+                << "Taille des donnÃ©es reÃ§ue = "      << field->num_elements() << " ] "
+                << "Le tableau de donnÃ©es n'a pas la bonne taille !") ;
+      this->storeField_arr(field.data(), stored) ;
+   }
 
    ///--------------------------------------------------------------
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.cpp	(revision 204)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.cpp	(revision 205)
@@ -381,5 +381,5 @@
          {
             ARRAY(double, 3) field_data3D;            
-            grid->outputField(field_data,  field_data3D);
+            grid->outputField(field_data, field_data3D);
             SuperClassWriter::writeData(field_data3D, fieldid, true, 0);
             
