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 
00023 #include <string.h>
00024 #include <stdlib.h>
00025 
00037 med_err
00038 MEDparameterCr(const med_idt fid,
00039                const char * const paramname, 
00040                const med_parameter_type paramtype,
00041                const char* const description,
00042                const char * const dtunit
00043               )
00044 {
00045   med_err _ret=-1;
00046   med_idt _root=0,_datagroup1=0;
00047   med_access_mode _MED_ACCESS_MODE;
00048   char _datagroupname1    [MED_NAME_SIZE+1]="";
00049   med_int _paramtype = (med_int) paramtype;
00050 
00051 
00052  _MEDmodeErreurVerrouiller();
00053  if (_MEDcheckVersion30(fid) < 0) goto ERROR;
00054  if ( (_MED_ACCESS_MODE = _MEDmodeAcces(fid) ) == MED_ACC_UNDEF ) {
00055    MED_ERR_(_ret,MED_ERR_UNRECOGNIZED,MED_ERR_ACCESSMODE,MED_ERR_FILE_MSG);
00056    goto ERROR;
00057  }
00058   
00059  if ( _MED_ACCESS_MODE == MED_ACC_RDONLY) {
00060    MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_ACCESSMODE,MED_ERR_FILE_MSG);
00061    ISCRUTE_int(_MED_ACCESS_MODE);
00062    goto ERROR;
00063  }
00064 
00065   
00066 
00067 
00068   if ((_root = _MEDdatagroupOuvrir(fid,MED_NUM_DATA)) < 0)
00069     if ((_root = _MEDdatagroupCreer(fid,MED_NUM_DATA)) < 0) {
00070      MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_DATAGROUP,MED_NUM_DATA);
00071      goto ERROR;
00072     }
00073   NOFINALBLANK(paramname,ERROR); 
00074 
00075   
00076 
00077 
00078   if ((_datagroup1 = _MEDdatagroupOuvrir(_root,paramname)) < 0)
00079     if ((_datagroup1 = _MEDdatagroupCreer(_root,paramname)) < 0 ) {
00080       MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_DATAGROUP,MED_NUM_DATA);
00081       SSCRUTE(paramname);goto ERROR;
00082     }
00083  
00084   
00085 
00086 
00087   if ( _MEDattributeIntWr(_datagroup1,MED_NOM_TYP,&_paramtype) < 0) {
00088     MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_PARAM_MSG);
00089     SSCRUTE(paramname);SSCRUTE(_datagroupname1);SSCRUTE(MED_NOM_TYP);
00090     ISCRUTE(_paramtype);goto ERROR;
00091   }
00092   if ( _MEDattributeStringWr(_datagroup1,MED_NOM_DES,MED_COMMENT_SIZE,description) < 0) {
00093     MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_PARAM_MSG);
00094     SSCRUTE(paramname);SSCRUTE(_datagroupname1);SSCRUTE(MED_NOM_DES);
00095     SSCRUTE(description);goto ERROR;
00096   }
00097   if ( _MEDattributeStringWr(_datagroup1,MED_NOM_UNT,MED_SNAME_SIZE,dtunit) < 0) {
00098     MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE,MED_ERR_PARAM_MSG);
00099     SSCRUTE(paramname);SSCRUTE(_datagroupname1);SSCRUTE(MED_NOM_UNT);
00100     SSCRUTE(dtunit);goto ERROR;
00101   }
00102 
00103   _ret = 0;
00104  ERROR :
00105 
00106   if (_datagroup1>0)     if (_MEDdatagroupFermer(_datagroup1) < 0) {
00107     MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,_datagroupname1);
00108     ISCRUTE_id(_datagroup1);
00109   }
00110 
00111   if (_root>0)            if (_MEDdatagroupFermer(_root) < 0) {
00112     MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,MED_NUM_DATA);
00113     ISCRUTE_id(_root);
00114   }
00115 
00116   return _ret;
00117 }