[comp.lang.fortran] Gotos are okay, but what about COME-FROM's??

maine@elxsi.dfrf.nasa.gov (Richard Maine) (01/25/91)

On 25 Jan 91 05:15:17 GMT, phys169@csc.canterbury.ac.nz said:

phys169> This is all getting very silly. Reminds me of the COME-FROM
phys169> that was suggested after an even sillier discussion of
phys169> goto's. Anyone remember that??

Would you believe that I've used a Fortran compiler that actually
implemented the comefrom statement?  It was not a documented
feature, just a bit of insider humor on the part of the compiler
writers.  On a hint, I tried it out and it really worked.
(No, I was not silly enough to use it on "real" programs, though
for a while I kept a little sample around to amuse people with).

I think it disappeared soon after a customer submitted a bug
report relating to it!  If I recall, the bug report had something
to do with the optimizer not recognizing loops implemented with
comefroms, making them run slower than loops done with gotos or
do statements.  (I may not have this part 100% right).

The machine was an Elxsi 6400, which we still have (yes its the
one my email address below shows).  I forget the version of the
compiler, but it was probably about 3-4 years ago.

--
Rich Maine
maine@elxsi.dfrf.nasa.gov

maman@uranie.inria.fr (Nathan Maman) (01/29/91)

	I don't know exactly how these COMEFROM's worked, but perhaps
	they could be used in Exceptions|Errors|Signals treatment(s).

	Example:

	Sub s1
	    statements
	    return
	  entry-point s1_some_signal
	    treatment
	    you should be able here to
		a) return to calculation in s1
		b) return to calling sub
		c) exit from program with some message
	end s1

	Sub signal_handler
	    if COME-FROM s1
	    then go to s1_some_signal
	    end if
	    return (or whatever: stop, ...)
	end

	What do you think, am I wrong ?

-- 
				Nat.

+--------------------------------------------------------------------------+
| Address: M. Nathan MAMAN, INRIA Sophia-Antipolis, 06560 Valbonne, FRANCE |
| E-mail: maman@mirsa.inria.fr, Phone: 33-93.65.77.95, FAX: 33-93.65.78.58 |
+--------------------------------------------------------------------------+