On Sat, Aug 12, 2017 at 11:43 PM, Dave Horsfall <dave@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