OPENDA(1)                                                             OPENDA(1)

   Entrees/sorties sur fichiers ASYNCHRONES PAR BLOCS (secteurs):

   OPENDA, READDA, WRITDA, CHECDA, CLOSDA
   c_openda, c_readda, c_writda, c_checda, c_closda

      Les sous-programmes READDA/WRITDA lisent/ecrivent de maniere parallele
   par multiples de 512 mots.  Quand le systeme d'exploitation  ne le permet
   pas ils lisent/ecrivent avec attente immediate.

   ATTENTION:
      Ne pas melanger les types d'acces sur un meme fichier.
         Exemple: READDA(10,...  WAWRIT(10,...
      Les mots sont de 64 bits sur le CRAY, de 32 bits sur les 910/920/SUN,
         et de 60 bits sur les CYBER.

   OPENDA  Ouvre un fichier accessible par blocs.

   NOTE:   Avant OPENDA, il faut un appel a FNOM pour associer un numero
      d'unite fortran (IUN) au fichier externe qu'on veut ouvrir.

   Exemples d'appel
      CALL OPENDA(IUN)
      c_openda(iun);

      IUN  Numero d'unite fortran associe au fichier.

      READDA  Lit par blocs.

      ATTENTION:  Il peut etre desastreux de faire 2 READDA et/ou WRITDA
         consecutifs sur un meme fichier  sans avoir entre temps fait un
         appel a CHECDA.

      Exemples d'appel
      CALL READDA(IUN,BUF,NS,IS)
      CALL CHECDA(IUN)

      c_readda(iun,&BUF,ns,is);
      c_checda(iun);

      IUN    Numero d'unite fortran associe au fichier.
      BUF    Tableau a lire/ecrire.
      NS     Nombre  de  secteurs disques.
             (blocs de 512 mots) a lire/ecrire.
      IS     Numero du premier secteur a lire/ecrire. Le premier secteur
             d'un fichier est le secteur nume'ro 1.

      WRITDA  Ecrit par blocs.

      ATTENTION:  Il peut etre desastreux de:
         1) Faire 2 READDA et/ou WRITDA consecutifs sur un meme fichier sans
            avoir entre temps fait un appel a CHECDA.
         2) Sauter un secteur lorsqu'on ecrit.  Si le fichier  se termine au
            doit ecrire a partir du secteur 156 ou avant.

      Exemples d'appel
      CALL WRITDA(IUN,BUF,NS,IS)
      CALL CHECDA(IUN)

      c_writda(iun,&BUF,ns,is);
      c_checda(iun);

      IUN    Numero d'unite fortran associe au fichier.
      BUF    Tableau a lire/ecrire.
      NS     Nombre  de  secteurs disques.
             (blocs de 512 mots) a lire/ecrire.
      IS     Numero du premier secteur a lire/ecrire. Le premier secteur
             d'un fichier est le secteur nume'ro 1.

      CHECDA   Met le programme en attente jusqu'a la fin de l'operation
      READDA ou WRITDA en cours.

      Exemples d'appel
      CALL CHECDA(IUN)
      c_checda(iun);

      IUN  Numero d'unite fortran associe au fichier.

      CLOSDA  Ferme un fichier a acces par blocs.

      Exemples d'appel
      CALL CLOSDA(IUN)
      c_closda(iun);

      IUN  Numero d'unite fortran associe au fichier.

   Exemple d'appel FORTRAN:
      PROGRAM XXX
*     - - - - - - - - -
      INTEGER BUF(512,8), FNOM, IERR, IUN, NS
      IS   = 1
      NS   = 8
      IUN  = 10
      IERR = FNOM(IUN,'MONTRUC','RND',0)
      CALL OPENDA(IUN)
      CALL READDA(IUN,BUF,NS,IS)
*
*     OPERATIONS NE FAISANT PAS APPEL A BUF.
*
      CALL CHECDA(IUN)
*
*     OPERATIONS POUVANT FAIRE APPEL A BUF.
*
      CALL WRITDA(IUN,BUF,NS,IS)
*
*
      CALL CHECDA(IUN)
*
*     OPERATIONS POUVANT FAIRE APPEL A BUF.
*
      CALL CLOSDA(IUN)
      STOP
      END

   Exemple d'appel c:
     main()
     {
     int BUF[8][512], c_fnom(), ierr, iun, ns, is;
     iun  = 10;
     ns   = 8;
     is   = 1
     ierr = c_fnom(iun,'montruc','RND',0);
     c_openda(iun);
     c_readda(iun,&BUF,ns,is);
/*
     operations ne faisant pas appel a` BUF
*/
     c_checda(iun);
/*
     operations pouvant utiliser BUF
*/
     c_writda(iun,&BUF,ns,is);
/*
     operations ne faisant pas appel a` BUF
*/
     c_checda(iun);
/*
     operations pouvant utiliser BUF
*/
     c_closda(iun);
     }