# Créer/Ouvrir/Fermer un fichier MED

# Ouverture/Création d'un fichier MED

L'ouverture/création d'un fichier MED s'effectue avec la routine MEDfileOpen (C) / mfiope (F).

Cette routine renvoie un identificateur ( `fid` ) utilisé par les autres routines de l'API pour accéder aux données du fichier.

Les différents modes d'accès possibles sont :

- Création (MED_ACC_CREAT)

- Ouverture en lecture seule (MED_ACC_RDONLY)

- Ouverture en lecture/écriture (MED_ACC_RDWR)

- Ouverture en lecture/écriture avec ajout (MED_ACC_RDEXT)

Dans ce dernier mode, l'écriture n'est possible que pour ajouter dans le fichier de nouvelles données (une erreur est générée si la donnée existe déjà).

      fid = MEDfileOpen("test1.med",MODE_ACCES);

Fichier d'exemple associé

# Fermeture d'un fichier MED

La routine MEDfileClose (C) / mficlo (F) permet de fermer un fichier.

      if ((ret = MEDfileClose(fid)) < 0) {
        MESSAGE("Erreur à la fermeture du fichier");
        return -1;
      }

Fichier d'exemple associé

# Entête de fichier

La routine MEDfileCommentWr (C) / mficow (F) permet l'écriture d'un en-tête de fichier, la routine MEDfileCommentRd (C) / mficor (F) la lecture.

Cet en-tête à usage optionnel est purement descriptif. Il comporte au plus MED_COMMENT_SIZE caractères.

      char des[MED_COMMENT_SIZE+1]="Ceci est une courte description de mon fichier test1.med";
      if (MEDfileCommentWr(fid,des) < 0) {
        MESSAGE("Erreur à l'ecriture de l'en-tete du fichier");
        ret = -1;
      }

Fichier d'exemple associé

      char des[MED_COMMENT_SIZE+1]="";
      ret = MEDfileCommentRd(fid, des);

Fichier d'exemple associé

# Compatibilité entre la version du fichier et la version de la bibliothèque

La routine MEDfileCompatibility / mficom permet de vérifier :

- Si le fichier est au format HDF5

- S'il correspond à un fichier MED compatible avec la bibliothèque.

L'appel à cette routine se fait généralement avant l'ouverture du fichier.

      med_bool  hdfok=MED_FALSE,medok=MED_FALSE;
      if (MEDfileCompatibility("test18.med",&hdfok,&medok)<0 ) {
        MESSAGE("Erreur à la vérification de la compatibilité du fichier avec les bibliothèques med et hdf.");
        return -1;
      }

Fichier d'exemple associé

# Lecture de la version du fichier

Les routines MEDfileNumVersionRd / mfinvr et MEDfileStrVersionRd / mfisvr lisent la version de la bibliothèque MED utilisée à la création du fichier.

- MEDfileNumVersionRd / mfinvr lit la version sous forme de trois scalaire majeur,mineur,release

        med_int   majeur=0, mineur=0, release=0;
        if (MEDfileNumVersionRd(fid, &majeur, &mineur, &release) < 0) {
          MESSAGE("Erreur a la lecture du numero de version de la bibliothèque ");
          return -1;
        }
        fprintf(stdout,"- Ce fichier a ete cree avec MED "IFORMAT"."IFORMAT"."IFORMAT" \n",majeur,mineur,release);

  Fichier d'exemple associé

- MEDfileStrVersionRd / mfisvr lit la version sous forme de chaîne de caractère

        char      medversion[MED_SNAME_SIZE+1]="";
        if ( MEDfileStrVersionRd(fid, medversion) < 0 ) {
          MESSAGE("Erreur à la lecture de la version du fichier MED");
          return -1;
        }
        fprintf(stdout,"- Ce fichier a ete cree avec %s\n",medversion);

  Fichier d'exemple associé

# Liens vers les fichiers exemples utilisés

- Fichier d'exemple test1.c

- Fichier d'exemple test2.c

- Fichier d'exemple test18.c