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 */

