economia news e media viaggi informatica internet salute e benessere int rattenimento e spettacolo sport tempo libero istruzio ne e formazione arte cultura scienza

Il Sondaggio

Quale versione del fortran utilizzi?

Guarda i risultati

Fortran

Diagramf

A cura di Giuseppe Ciaburro

Pubblicato il 09/12/2001

Un programma fortran 77 che fornisce un diagramma del nostro codice fortran.

Diagramf è in grado di fornire un attento e dettagliato diagramma del codice fortran analizzato, in esso saranno indicate:la nuemrazione delle righe,il numero di colonne utilizzate,saranno evidenziati tutti i costrutti if-else-elseif-endif, do-enddo e case, l'inizio e la fine di ogni routine,le definizioni di tipi, modiuli ed interfacce,ed infine sarano evidenziati i goto, return, cycle, exit, stop, end= and err=.
Il programma è stato scritto da Mitchell R Grunes, ATSC/NRL (grunes@nrlvax.nrl.navy.mil).
E' scritto in fortran 77 ma può essere compilato anche in fortran 90 e 95.
Una volta compilato dovrete porre il file da analizzare nella stessa cartella del file eseguibile e digitare al prompt il seguente comendo:

diagramf

FORTRAN source filename?

Dovrete allora digitare il noem del file da analizzare completo di estensione.Premendo invio otterrete:

Output file (blank=screen)?

Che vi chide se memorizzare il diagramma in un file oppure sullo schermo, nel primo caso digitare il nome del file.Ci saranno in seguito delle scelte da effettuare.
Il risultato è del tipo:


=============--prova.f90--=============
           ....,....1....,....2....,....3....,....4....,....5....,....6....,....7....,....8....,....9....,....

 +-------- PROGRAM tstcls                                                    |   1
 |               INTEGER, DIMENSION (8192) :: jindt                          |   2
 |               REAL, DIMENSION (8192) :: xdont                             |   3
 |               REAL, DIMENSION (1:33) :: xsept                             |   4
 |               INTEGER, DIMENSION (1:32) :: jhist                          |   5
 |+------------- INTERFACE                                                   |   6
 ||+--------------- SUBROUTINE TRIIND (XVALT, IRNGT)                         |   7
 |||       !   triind = tri par interclassement suivant xvalt croissant      |   8
 |||                   REAL, DIMENSION (:) :: XVALT                          |   9
 |||                   INTEGER, DIMENSION (:) :: IRNGT                       |  10
 ||+--------------- END SUBROUTINE TRIIND                                    |  11
 ||+--------------- SUBROUTINE CALCLS (XVALT, IRNGT, xsept)                  |  12
 |||       !   calcul des abscisses l'histogramme de l'ensemble XVALT        |  13
 |||                   REAL, INTENT (IN), DIMENSION (:) :: XVALT             |  14
 |||                   INTEGER, INTENT (IN), DIMENSION (:) :: IRNGT          |  15
 |||                   REAL, INTENT (OUT), DIMENSION (:) :: xsept            |  16
 |||       !  Separations des classes, dont la taille donne la proportion    |  17
 |||       !  souhaitee dans chaque classe                                   |  18
 ||+--------------- END SUBROUTINE CALCLS                                    |  19
 ||+--------------- SUBROUTINE CALHIN (XVALT, IRNGT, xsept, NHIST)           |  20
 |||       !   calcul de l'histogramme de l'ensemble XVALT                   |  21
 |||                   REAL, INTENT (IN), DIMENSION (:) :: XVALT             |  22
 |||                   INTEGER, INTENT (IN), DIMENSION (:) :: IRNGT          |  23
 |||                   REAL, INTENT (IN), DIMENSION (:) :: xsept             |  24
 |||       !  Separations des classes                                        |  25
 |||                   INTEGER, INTENT (OUT), DIMENSION (:) :: NHIST         |  26
 |||       !  Tableau qui sera rempli avec l'histogramme                     |  27
 ||+--------------- END SUBROUTINE CALHIN                                    |  28
 |         !                                                                 |  30
 |               ndon = 8192                                                 |  31
 |+------------- DO idon = 1, ndon                                           |  32
 ||                 READ (*,*, IOSTAT=iferr) xdont (idon)                    |  33
 ||+--------------- IF (iferr /= 0) THEN                                     |  34
 |||                   ndon = idon - 1                                       |  35
*|||                   EXIT                                                  |  36
 ||+--------------- END IF                                                   |  37
 ||        !        xdont (idon) = ceiling (xdont (idon))                    |  38
 |+------------- END DO                                                      |  39
 |               WRITE (*,*) minval (xdont(1:ndon)), maxval (xdont(1:ndon))  |  40
 |               CALL TRIIND (xdont(1:ndon), jindt(1:ndon))                  |  41
 |               CALL CALCLS (xdont(1:ndon), jindt(1:ndon), xsept)           |  42
 |               CALL CALHIN (xdont(1:ndon), jindt(1:ndon), xsept, jhist)    |  43
 |               WRITE (*, "(f10.2, i6)") (xsept(i), jhist(i), i=1, size(jhist))
 |               WRITE (*,*) ndon, sum (jhist)                               |  45
 +-------- END PROGRAM tstcls                                                |  46

Per scaricare il programma diagramf cliccare sul link seguente:

Diagramf

Vuoi essere aggiornato sulle novità della guida?

Feed RSS XML vostro feed RSS