Am 17.12.2023 um 16:36 schrieb Adriaan van Os via fpc-pascal:
As the otherwise-clause is not in ISO-7185 Pascal, it seems more
plausible that Borland invented the else-clause (without semicolon)
independently. All other Pascals I have looked at, use an
otherwise-clause (with an obligatory semicolon). The motivation for
this, given in IBM Pascal is interesting. The manual says that the
statement-part of the otherwise-clause can be intentionally "left
blank" and be used "to prevent possible errors during execution". I
recall that in ISO-7185 Pascal it is an error if no case discriminator
matches at runtime. So, the otherwise-clause was seen as a way to get
around that !
This was one of Niklaus Wirth's mistakes: that the original Pascal
definition did not tell how the syntax of the "otherwise" part of the
case statement should be.
I recall that our profs in the computer science classes in the 1970s
criticized this serious flaw of the language.
So almost every compiler had to find its own solution.
The compilers for the IBM machines were, to some degree, influenced by
PL/1. There we have:
IF ... THEN ... ELSE
and
SELECT ... WHEN ... OTHER(WISE) ... END
SELECT is much the same as case, although more general; not limited to
simple expressions;
not even limited to expressions ... there are two flavors of SELECT:
SELECT (expr); WHEN (A) ...; WHEN (B) ...; OTHER ...; END;
SELECT; WHEN (cond1) ...; WHEN (cond2) ...; OTHER ...; END;
PL/1 was first defined in the mid 1960s, so maybe some of the Pascal
compiler designers may have been influenced (to some degree) by PL/1.
Even C was influenced by PL/1 (because PL/1 was the implementation
language of the Multics system, and K & R had that experience
and agreed about how things should NOT be done).
BTW: my Stanford compiler uses OTHERWISE (no abbreviation). There is no
error, if OTHERWISE is omitted and no case label matches;
in this case, simply no action is taken. And: my compiler took some
inspiration from IBMs Pascal compilers ... and some builtin functions
were inspired by PL/1 functions, indeed.
Kind regards
Bernd
Regards,
Adriaan van Os
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal