MEDfieldInterpWr.c
Aller à la documentation de ce fichier.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 #include <med.h>
00020 #include <med_config.h>
00021 #include <med_outils.h>
00022 #include <hdf5.h>
00023 #include <string.h>
00024 
00035 med_err
00036 MEDfieldInterpWr(const med_int fid,
00037                  const char* const fieldname,
00038                  const char* interpname
00039                  )
00040 {
00041   med_err  _ret=-1;
00042   med_idt  _fieldinterpid=0,_fieldid=0,_interpid=0;
00043   char     _path[MED_TAILLE_CHA_INTERP+MED_NAME_SIZE+1]=MED_CHA_INTERP;
00044 
00045   
00046 
00047 
00048   _MEDmodeErreurVerrouiller();
00049  if (_MEDcheckVersion30(fid) < 0) goto ERROR;
00050 
00051   
00052 
00053 
00054  if ((_fieldinterpid = _MEDdatagroupOpen(fid,MED_CHA_INTERP)) < 0)
00055    if ((_fieldinterpid = _MEDdatagroupCreer(fid,MED_CHA_INTERP)) < 0) {
00056      MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_DATAGROUP,MED_CHA_INTERP);
00057       goto ERROR;
00058     }
00059 
00060  NOFINALBLANK(interpname,ERROR);
00061  strcat(_path,fieldname);
00062 
00063   
00064 
00065 
00066  if ((_fieldid = _MEDdatagroupOuvrir(_fieldinterpid,fieldname)) < 0)
00067    if ((_fieldid = _MEDdatagroupCreer(_fieldinterpid,fieldname)) < 0) {
00068      MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_DATAGROUP,_path);
00069      goto ERROR;
00070    }
00071 
00072  
00073 
00074 
00075  if ((_interpid = _MEDdatagroupOpen(_fieldid,interpname)) < 0)
00076    if ((_interpid = _MEDdatagroupCreer(_fieldid,interpname)) < 0) {
00077      MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_DATAGROUP,interpname);
00078      SSCRUTE(_path);
00079      goto ERROR;
00080    }
00081 
00082  _ret = 0;
00083 
00084  ERROR:
00085 
00086   if (_interpid>0)            if (_MEDdatagroupFermer(_interpid) < 0) {
00087     MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,interpname);
00088     SSCRUTE(_path); ISCRUTE_id(_interpid);
00089   }
00090 
00091   if (_fieldid>0)            if (_MEDdatagroupFermer(_fieldid) < 0) {
00092     MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,fieldname);
00093     SSCRUTE(_path);ISCRUTE_id(_fieldid);
00094   }
00095 
00096   if (_fieldinterpid>0)            if (_MEDdatagroupFermer(_fieldinterpid) < 0) {
00097     MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,MED_CHA_INTERP);
00098     SSCRUTE(_path); ISCRUTE_id(_fieldinterpid);
00099   }
00100 
00101 
00102   return _ret;
00103 }
00104