Projet mkd/fortran.c
De Wiki EELL.
Version du 19 décembre 2010 à 14:53 par JPL (discuter | contributions)
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 */