Projet mkd/fortran.c
De Wiki EELL.
(Différences entre les versions)
JPL (discuter | contributions) m (!) |
JPL (discuter | contributions) m |
||
| Ligne 1 : | Ligne 1 : | ||
<small>[[Projet mkd/Fichiers en développement|Retour aux fichiers en développement →]]</small> | <small>[[Projet mkd/Fichiers en développement|Retour aux fichiers en développement →]]</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 */

