COME FROM

from Jargon File (4.4.4, 14 Aug 2003)
COME FROM
 n.

   A semi-mythical language construct dual to the `go to'; COME FROM
   <label> would cause the referenced label to act as a sort of trapdoor,
   so that if the program ever reached it control would quietly and
   {automagically} be transferred to the statement following the COME
   FROM. COME FROM was first proposed in R. Lawrence Clark's A Linguistic
   Contribution to GOTO-less programming, which appeared in a 1973
   {Datamation} issue (and was reprinted in the April 1984 issue of
   Communications of the ACM). This parodied the then-raging `structured
   programming' {holy wars} (see {considered harmful}). Mythically, some
   variants are the assigned COME FROM and the computed COME FROM
   (parodying some nasty control constructs in FORTRAN and some extended
   BASICs). Of course, multi-tasking (or non-determinism) could be
   implemented by having more than one COME FROM statement coming from
   the same label.

   In some ways the FORTRAN DO looks like a COME FROM statement. After
   the terminating statement number/CONTINUE is reached, control
   continues at the statement following the DO. Some generous FORTRANs
   would allow arbitrary statements (other than CONTINUE) for the
   statement, leading to examples like:

      DO 10 I=1,LIMIT
   C imagine many lines of code here, leaving the
   C original DO statement lost in the spaghetti...
      WRITE(6,10) I,FROB(I)
 10   FORMAT(1X,I5,G10.4)

   in which the trapdoor is just after the statement labeled 10. (This is
   particularly surprising because the label doesn't appear to have
   anything to do with the flow of control at all!) While sufficiently
   astonishing to the unsuspecting reader, this form of COME FROM
   statement isn't completely general. After all, control will eventually
   pass to the following statement. The implementation of the general
   form was left to Univac FORTRAN, ca. 1975 (though a roughly similar
   feature existed on the IBM 7040 ten years earlier). The statement AT
   100 would perform a COME FROM 100. It was intended strictly as a
   debugging aid, with dire consequences promised to anyone so deranged
   as to use it in production code. More horrible things had already been
   perpetrated in production languages, however; doubters need only
   contemplate the ALTER verb in {COBOL}. COME FROM was supported under
   its own name for the first time 15 years later, in C-INTERCAL (see
   {INTERCAL}, {retrocomputing}); knowledgeable observers are still
   reeling from the shock.
    
from The Free On-line Dictionary of Computing (8 July 2008)
COME FROM

   <programming, humour> A semi-mythical language construct dual
   to the "go to"; "COME FROM" <label> would cause the referenced
   label to act as a sort of {trapdoor}, so that if the program
   ever reached it, control would quietly and {automagically} be
   transferred to the statement following the "COME FROM".

   "COME FROM" was first proposed in R.L. Clark's "A Linguistic
   Contribution to GOTO-less programming", which appeared in a
   1973 {Datamation} issue (and was reprinted in the April 1984
   issue of "{Communications of the ACM}").  This parodied the
   then-raging "{structured programming}" {holy wars} (see
   {considered harmful}).

   Mythically, some variants are the "assigned COME FROM" and the
   "computed COME FROM" (parodying some nasty control constructs
   in {Fortran} and some extended {BASICs}).  Of course,
   {multitasking} (or {nondeterminism}) could be implemented by
   having more than one "COME FROM" statement coming from the
   same label.

   In some ways the {Fortran} "DO" looks like a "COME FROM"
   statement.  After the terminating statement number/"CONTINUE"
   is reached, control continues at the statement following the
   DO.  Some generous Fortrans would allow arbitrary statements
   (other than "CONTINUE") for the statement, leading to examples
   like:

         DO 10 I=1,LIMIT
    C imagine many lines of code here, leaving the
    C original DO statement lost in the spaghetti...
         WRITE(6,10) I,FROB(I)
    10   FORMAT(1X,I5,G10.4)

   in which the trapdoor is just after the statement labelled 10.
   (This is particularly surprising because the label doesn't
   appear to have anything to do with the flow of control at
   all!)

   While sufficiently astonishing to the unsuspecting reader,
   this form of "COME FROM" statement isn't completely general.
   After all, control will eventually pass to the following
   statement.  The implementation of the general form was left to
   {Univac Fortran}, ca. 1975 (though a roughly similar feature
   existed on the {IBM 7040} ten years earlier).  The statement
   "AT 100" would perform a "COME FROM 100".  It was intended
   strictly as a debugging aid, with dire consequences promised
   to anyone so deranged as to use it in production code.  More
   horrible things had already been perpetrated in production
   languages, however; doubters need only contemplate the
   "{ALTER}" verb in {COBOL}.

   {SCL} on {VME} {mainframes} has a similar language construct
   called "whenever", used like this:

   	 whenever x=123345 then S;

   Meaning whenever variable x reached the value 123345 then
   execute statement S.

   "COME FROM" was supported under its own name for the first
   time 15 years later, in {C-INTERCAL} (see {INTERCAL},
   {retrocomputing}); knowledgeable observers are still reeling
   from the shock.

   [{Jargon File}]

   (1998-04-19)
    

[email protected]