On 24/12/16 12:30, Bernd Oppolzer wrote:
Am 24.12.2016 um 12:50 schrieb Mark Morgan Lloyd:
You are mentioning SUCC and PRED with CHAR; that is a very cood example.
It's not so much a good example as a specific sticking point that was mentioned in earlier discussion on the ML.
These functions are implemented based on the underlying character set; that means, that SUCC('R') is not 'S' on EBCDIC, because there is a gap between 'R' and 'S in the EBCDIC codepage (six other characters between 'R' and 'S' which are not alphabetic). This is a portability problem which appears at the source code level (!) and cannot be healed by the compiler. It is the same with the C language, and the sensible programmer has to deal with this, if he or she wants to have his or her programs really portable.
At least a-f are consecutive, and it's still possible to switch letter case with an addition. I've used a tool in the past, written by what I have to assume was one of the Three Wise Men, which made no assumptions other than that 0-9 were consecutive: everything else was specified on the first line of every file.
My problems with the Stanford compiler were different; if the compiler generates code which will not run on a platform using a different code page, because it generates branch tables when implementing case statements that imply a certain code page,
Ouch :-(
Regarding ^: "my" compiler supports different representations for the pointer symbol, and for other critical symbols, too: ^ @ -> for the pointer symbol (I use -> most of the time) [ (. (/ for arrays { (* /* for comments ("comment" is supported, too, for historic reasons)
/* was the form used in the first edition of Wirth's description of Pascal (might have been before Jensen was there to help out). However I'd strongly suggest deprecating @ and replacing it with another digraph, it's used as the address-of operator in Turbo Pascal and its successors.
-- Mark Morgan Lloyd markMLl .AT. telemetry.co .DOT. uk [Opinions above are the author's, not those of his employers or colleagues] _______________________________________________ fpc-other maillist - fpc-other@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-other