From: idlwizard-1@yahoo.com on
The latest revision of my source code diagramming programs are
available at

http://www.geocities.com/grunes/diagram.html

These programs diagram source code in the following languages:

C and C++<br>
FORTRAN<br>
HTML (very incomplete)<br>
IDL, PV-WAVE, GDL and FL

They do things like draw lines showing the start and end of routines
and blocks, put * next to jumps, and = next to commented out sections,
and can warn you of certain classes of error.

They can help you find problems in your own code, or help you look at
long complicated legacy code other people give you.

The programs themselves are in FORTRAN. I know that is a problem for
users of other programming languages, but it is freely available as g77
or g95 under Cygwin (under Windows) or Linux, and is available on many
other platforms.

From: beliavsky on

idlwizard-1(a)yahoo.com wrote:
> The latest revision of my source code diagramming programs are
> available at
>
> http://www.geocities.com/grunes/diagram.html
>
> These programs diagram source code in the following languages:
>
> C and C++<br>
> FORTRAN<br>
> HTML (very incomplete)<br>
> IDL, PV-WAVE, GDL and FL

I assume that it can only diagram fixed format Fortran 77 code? (That
is useful in itself.)

Although your site says that the codes can be compiled by g95 as well
as g77, diagramf.f cannot be compiled by g95 with the default options,
at least in part because g95 cannot compile a program such as

character*1 BlockBegin (2) /'+','+'/ ! Start of block
print*,BlockBegin(1),BlockBegin(2)
end

I assume the first line is equivalent to

character(len=1) :: BlockBegin (2) = (/'+','+'/) ! Start

which g95 does accept. Lahey Fortran 95 and gfortran can compile the
code, although both complain about the character declaration in strict
Fortran 95 mode. I wonder if the syntax you used to declare character
strings is common. If so, the developer of g95 could be asked to
support it.

From: Joost on
> Although your site says that the codes can be compiled by g95 as well
> as g77, diagramf.f cannot be compiled by g95 with the default options,
> at least in part because g95 cannot compile a program such as
>
> character*1 BlockBegin (2) /'+','+'/ ! Start of block
> print*,BlockBegin(1),BlockBegin(2)
> end
>
> I assume the first line is equivalent to
>
> character(len=1) :: BlockBegin (2) = (/'+','+'/) ! Start
>

The above code is an non-standard form of the data statement, you could
also write:

character*1 BlockBegin (2)
DATA BlockBegin /'+','+'/
print*,BlockBegin(1),BlockBegin(2)
end

Cheers,

Joost

From: Michael Metcalf on

"Joost" <jv244(a)cam.ac.uk> wrote in message
news:1144650977.499671.91210(a)g10g2000cwb.googlegroups.com...
>>
>> character(len=1) :: BlockBegin (2) = (/'+','+'/) ! Start
>>
>
> The above code is an non-standard form of the data statement,

Well, yes, since it's not a data statement but a type statement. But it's
perfectly standard f95.

Regards,

Mike Metcalf


From: Joost on
yes, I've pasted the wrong line. I meant to copy the line from the OP's
code, not the f95 version of beliavsky. Thanks for pointing that out.

Joost