@Rich
PL/1 and its derivatives can have multiple Entry points. it has Entry variables too, so they can be redefined dynamically. Rexx can have functions invoked as procedures, so sometimes it will return a value and some times it wont, so it has to have multiple exit points. With some interesting label positioning, it is possible to execute the "Then" clause and the "Else" clause of a single "if" statement, again an exit point is introduced, that doesnt actually exit but serves to confuse the hell out of anyone unsure of what they are doing.
If ValidData()
Then
Return
ValidData:
/* do whatever validation here */
Return (True | False)
Else
/* Invalid data appears here */
Effectively a procedure is created inline, called from the IF statement, so the return is back to the IF statement, the THEN clause is redundant, so just needs a Return or null statement and the else can be executed if required.
Cobol had the infamous "GoTo Depending On", which went somewhere as a result of a variable condition. There was the "Alter Paragraph to Proceed to" thing as well, which changed the target address of a GOTO statement. Self modifying code was considered harmful as a result of this. I have used all of these things in code and watched the horror on people faces as they tried to work with it.
Opinion
David McLeman
Tim Worstall
Chris Mellor
Popular Stories
Features