Post by Charles MillsYes, ??= is the trigraph for #. Talk about hash!
Trigraphs go away in C++17.
Michael Wong from IBM has already stated that IBM will still support trigraphs in C++ as an extension. C hasn't deprecated them.
But seeing as #pragma filetag() is already an extension I see no reason why anybody would use them. I have no idea why
the health checker header files in SYS1.SIEAHDR.H(HZS*) chose to use them. It's an act of madness!
About 40 years ago, IBM considered Pascal essential:
bitsavers.org/pdf/ibm/370/pascal/SH20-6168-1_VS_PASCAL_Dec81.pdf
Pascal/VS uses square brackets, '[' and ']', in the declaration of arrays.
Because these symbols are not directly available on many I/O devices,
the symbols '(.' and '.)' may be used as an equivalent to square brackets.
I believe the original VM TCP/IP stack (a user developed product) was
written in Pascal.
And IBM devised the dreadful XLATE macro:
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.idar100/g1059.htm
IGC0010C XLATE (translate to and from ASCII (BSAM and QSAM))
I conjecture its primary objective was to map ASCII to code
points supported on existing printers, keyboards, and displays,
but not necessarily with a faithful visual representation.
IIRC, it mapped '[' and ']' to x'4A' and X'5A'. In CP 037 and
CP 1047 these are '¢' and '!'. In CP 500 they are '[' and ']'.
Does anyone recall the chronology? I imagine bitter internal
territorial fights over the precious code points.
Trigraphs:
https://stackoverflow.com/questions/27601706/c1z-why-not-remove-digraphs-along-with-trigraphs
"C++1z will remove trigraphs. IBM heavily opposed this (here and here)
so there seem to be arguments for both sides of removal/non removal."
citing:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2910.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4210.pdf
The arguments they raise are:
o Continued support of existing source code relying on trigraphs.
o Support of antique peripheral devices with limited vocabulary.
C/C++ do not use "??" as operators in code. However, they may
occur in quoted strings and must be converted to support '??/n'
and '??/"'. for examples. Supporting them there is not an
extension but a true incompatibility.
-- gil
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN