On 2018-08-09, at 05:18:16, David Crayford wrote:

> On 9/08/2018 2:08 AM, Charles Mills wrote:
>> Yes, ??= 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 [email protected] with the message: INFO IBM-MAIN

Reply via email to