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