Projet mkd/fortran.c

De Wiki EELL.

(Différences entre les versions)
m (!)
m
Ligne 1 : Ligne 1 :
<small>[[Projet mkd/Fichiers en développement|Retour aux fichiers en développement &rarr;]]</small>
<small>[[Projet mkd/Fichiers en développement|Retour aux fichiers en développement &rarr;]]</small>
 +
:fortran.inc.c à revoir, il n'est pas indépendant !
 +
<pre>
 +
/*E �C�*/
 +
/** #########################################
 +
    #                FORTRAN                #
 +
    ######################################### */
 +
/*  maj: 23/3/89 */
 +
/*P maj R3.11 3/1/91 */
 +
void fortran_(FILE * pfdoc, FILE * pnfile)
 +
// FILE *pfdoc, *pnfile;
 +
    { /*S fortran */
 +
    extern unsigned char l,p;
 +
    extern char codes[];
 +
    unsigned int num;
 +
    register int c1;
 +
    int c2,c3;
 +
 +
    num = 0;
 +
    c1 = c2 = c3 = STX; /* Start Text */
 +
 +
/*O    tant que pas fin de fichier source */
 +
        while ( c1 != EOF && c2 != EOF && c3 != EOF )
 +
        { /*S tq !EOF */
 +
/*O      si debut de texte faire c1=LF */
 +
          if (c1==STX) c1='\n';
 +
/*O      sinon prendre pour c1 le char suivant */
 +
          else c1=getc(pnfile);
 +
 +
/*O--------- si le char est NL ---------------------------------------------*/
 +
              if (c1=='\n')
 +
              { /*S colonne 1 */
 +
              num++;
 +
/*O          si suivi par c2 = 'C' ou 'c' ou '*'
 +
                et si codes[0]=0 ou si suivi par un des 5 char code d'utilisateur */
 +
              c2 = getc(pnfile);
 +
              c3 = getc(pnfile);
 +
              if( (c2 == 'C'||
 +
                  c2 == 'c'||
 +
                  c2 == '*'
 +
                  )
 +
                  &&
 +
                  (!codes[0]||
 +
                  c3 == codes[0] ||
 +
                  c3 == codes[1] ||
 +
                  c3 == codes[2] ||
 +
                  c3 == codes[3] ||
 +
                  c3 == codes[4]
 +
                  )
 +
                )
 +
 +
/*O          alors copier les caracteres dans le fichier doc, et si opt s a l'ecran: */
 +
                { /*S*/
 +
/*O            si option n ins‚rer le num‚ro de ligne */
 +
                if(n)
 +
                    { /*S*/
 +
                    fprintf( pfdoc, "%5d ", num);
 +
                    if(s) printf( "%5d ", num);
 +
                    } /*S*/
 +
/*O            si pas option t */
 +
                if(!t)
 +
                    { /*S*/
 +
/*O                copier le debut de ligne */
 +
                    putc (c2,pfdoc); putc(c3,pfdoc);
 +
                    if(s)
 +
                      { /*S si opt s */
 +
                      putch(c2);putch(c3);
 +
                      } /*S si opt s */
 +
                    } /*S*/
 +
                  else if(!codes[0])ungetc(c3,pnfile);
 +
 +
/*O            tant que pas fin de ligne */
 +
                while ( (c1 = getc(pnfile)) != '\n')
 +
                    { /*S w copy line */
 +
/*O                copier les chars de la ligne */
 +
                    putc (c1,pfdoc);if(s)putch(c1);
 +
                    } /*S w copy line */
 +
/*O            copier le dernier caractere */
 +
                putc (c1,pfdoc);
 +
                if(s) putch('\n');
 +
/*O            revenir sur LF du fichier source */
 +
                ungetc(c1,pnfile);
 +
                } /*S*/
 +
/*O          sinon restituer les deux derniers caracteres */
 +
              else
 +
                { /*S sinon */
 +
                ungetc(c3,pnfile);
 +
                ungetc(c2,pnfile);
 +
                } /*S sinon */
 +
              } /*S colonne 1 */
 +
 +
        } /*S tq !EOF */
 +
    } /*S fortran */
 +
</pre>
[[Catégorie:Générateurs de documentation]]
[[Catégorie:Générateurs de documentation]]

Version du 19 décembre 2010 à 14:53

Retour aux fichiers en développement →

fortran.inc.c à revoir, il n'est pas indépendant !
/*E �C�*/
/** #########################################
    #                FORTRAN                #
    ######################################### */
/*  maj: 23/3/89 */
/*P maj R3.11 3/1/91 */

void fortran_(FILE * pfdoc, FILE * pnfile)
// FILE *pfdoc, *pnfile;
     { /*S fortran */
    extern unsigned char l,p;
    extern char codes[];
    unsigned int num;
    register int c1;
    int c2,c3;

    num = 0;
    c1 = c2 = c3 = STX; /* Start Text */

/*O    tant que pas fin de fichier source */
        while ( c1 != EOF && c2 != EOF && c3 != EOF )
        { /*S tq !EOF */
/*O       si debut de texte faire c1=LF */
           if (c1==STX) c1='\n';
/*O       sinon prendre pour c1 le char suivant */
           else c1=getc(pnfile);

/*O--------- si le char est NL ---------------------------------------------*/
              if (c1=='\n')
              { /*S colonne 1 */
              num++;
/*O          si suivi par c2 = 'C' ou 'c' ou '*'
                et si codes[0]=0 ou si suivi par un des 5 char code d'utilisateur */
              c2 = getc(pnfile);
              c3 = getc(pnfile);
              if( (c2 == 'C'||
                   c2 == 'c'||
                   c2 == '*'
                  )
                  &&
                  (!codes[0]||
                   c3 == codes[0] ||
                   c3 == codes[1] ||
                   c3 == codes[2] ||
                   c3 == codes[3] ||
                   c3 == codes[4]
                  )
                )

/*O          alors copier les caracteres dans le fichier doc, et si opt s a l'ecran: */
                 { /*S*/
/*O             si option n ins‚rer le num‚ro de ligne */
                 if(n)
                    { /*S*/
                    fprintf( pfdoc, "%5d ", num);
                    if(s) printf( "%5d ", num);
                    } /*S*/
/*O             si pas option t */
                 if(!t)
                    { /*S*/
/*O                copier le debut de ligne */
                    putc (c2,pfdoc); putc(c3,pfdoc);
                    if(s)
                       { /*S si opt s */
                       putch(c2);putch(c3);
                       } /*S si opt s */
                    } /*S*/
                  else if(!codes[0])ungetc(c3,pnfile);

/*O             tant que pas fin de ligne */
                 while ( (c1 = getc(pnfile)) != '\n')
                    { /*S w copy line */
/*O                copier les chars de la ligne */
                    putc (c1,pfdoc);if(s)putch(c1);
                    } /*S w copy line */
/*O             copier le dernier caractere */
                 putc (c1,pfdoc);
                 if(s) putch('\n');
/*O             revenir sur LF du fichier source */
                 ungetc(c1,pnfile);
                 } /*S*/
/*O          sinon restituer les deux derniers caracteres */
              else
                 { /*S sinon */
                 ungetc(c3,pnfile);
                 ungetc(c2,pnfile);
                 } /*S sinon */
              } /*S colonne 1 */

        } /*S tq !EOF */
     } /*S fortran */
Outils personnels