On Sat, Aug 12, 2017 at 11:43 PM, Dave Horsfall <dave(a)horsfall.org> wrote:
On Sat, 12 Aug 2017, Steve Johnson wrote:
A little Googling shows that the IF I mentioned was called the "arithmetic
IF".
Ah yes. It was in FORTRAN II, as I recall.
Yes. It originated there.
There was also a Computed GOTO that branched to one of N labels
depending on
the value of the expression.
I think that was still in FORTRAN IV?
It was still in Fortran 77.
N=3
goto (10, 20, 30, 40, 50), N
would goto label 30.
And an Assigned GOTO whose main use, as I remember, was to allow for error
recovery when
a subroutine failed...
A real ugly statement; you assigned a statement number to a variable, then
did a sort of indirect GOTO (or did the compiler recognise "GOTO I")?
How those poor devils ever debugged their code with such monstrous
constructions I'll never know.
assign 10 to N
....
goto N
would goto the label 10 in your fortran program. Label 10 must be in the
same compilation unit, and can't be in the middle of a block.
You could make this one better by giving a list of possible statements. I
saw it used effectively when one of N sub formulas was needed later in a
computation in some code doing a complex computations that used it to avoid
division by zero and also optimize the terms used in part of the
calculation. I've also seen it in some truly horrific code too terrible to
relate. But it was relatively rare in the FORTRAN code I dealt with back in
the day...
What made it not totally horrific was that N had to be assigned a label
that was in the functional unit (so it wasn't arbitrary).
If you'd seen some of the spaghetti FORTRAN code I have, you'd know that
these weren't the worst offenders for making things unreadable nightmares,
though they didn't help.
Warner