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_idt fid,
00037 const char* const fieldname,
00038 const char* const 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