[Novalug] Fortran to Perl - help (don't laugh)

William Sutton william at trilug.org
Thu Dec 9 16:54:07 EST 2010


from my fortran expert, the following observations:

-----

Well, she is pretty close.  Have not seen the ; used before, probably a 
later version of FTN, but, yes, it is effectively a line end/line feed.

I'd re-write the FTN code as follows:

        do i=1, n
           if (pere(i).gt.n) then
              print 8513
              stop;
           end if
           if (mere(i).gt.n) then
              print 8514
              stop
           end if
        end do

with the additional comments:

1. change stop; to stop.
2. executable FTN statements must appear between col 7 and 72 inclusive.
3. one executable statement per line
4. indentation is pretty print only, the FTN compiler does not care.

-----

William Sutton

On Thu, 9 Dec 2010, Bonnie Dalzell wrote:

>
> I finally found some source code for calculating coefficients of
> inbreeding. It is from a freely distributed package called Pedig and I
> finally found where it could be downloaded. Previously all the links I
> found were stale and expired.
>
> Problem is that I do not currently do Fortran and I am not excited
> about learning it.
>
> Anyway I also found F2perl which is a utility that helps to generate
> perl code from fortran code. it seems pretty helpful and gives useful
> error messages. However some of the error messages need some one who
> understands fortran to help me make sense of them.
>
> One error I cannot figure out involves two lines of Fortran within this
> do loop:
>
>       do i=1, n
>         if (pere(i).gt.n) then ; print 8513; stop; end if
>         if (mere(i).gt.n) then ; print 8514; stop; end if
>         end do
>
> F2perl does not know what the semi-colons mean.
>
> I tried to google Fortran use of ; with no luck.
>
> Here is the F2Perl error message:
>
> f2perl par3.f
> Error: unknown statement type:  then ; print 8513; stop; end if
> Error: unknown statement type:  then ; print 8514; stop; end if
>
>
> Is the ; a line ending character as in some other languages so that this
> loop could also be something like:
>
>      do i=1, n
>         if (pere(i).gt.n) then
>           print 8513
>            stop;
>         end if
>         if (mere(i).gt.n) then
>            print 8514
>            stop
>         end if
>         end do
>
> I did read enough in some intro to Fortran articles to see that column
> placement is important in Fortran so I am not sure how the loops
> should be indented if the lines are made separately.
>
> The original author of the program is French  so this loop is looking for
> father (pere) and mother (mere).
>
> Thanks again for help.
>
> Really really happy to be back on the east coast after 3 weeks in rural SW
> Missouri.
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>                        Bonnie Dalzell, MA
> mail:5100 Hydes Rd PO Box 60, Hydes,MD,USA 21082-0060|EMAIL:bdalzell at qis.net
> Freelance anatomist, vertebrate paleontologist, writer, illustrator, dog
> breeder, computer nerd & iconoclast... Borzoi info at www.borzois.com.
> HOME www.batw.net    ART bdalzellart.batw.net  BUSINESS www.boardingatwedge.com
>
> _______________________________________________
> Novalug mailing list
> Novalug at calypso.tux.org
> http://calypso.tux.org/mailman/listinfo/novalug
>



More information about the Novalug mailing list