On Tuesday, 11/25/2008 at 11:29 EST, "Imler, Steven J" <[EMAIL PROTECTED]> wrote: > To accommodate this, I execute this EXEC from my PROFILE EXEC: > > 00000 * * * Top of File * * * > 00001 /* Translate x'BA' x'AD' and x'BB' x'BD' */ > 00002 > 00003 'SET OUTPUT AD' 'BA'x > 00004 'SET OUTPUT BD' 'BB'x > 00005 'SET INPUT BA AD' > 00006 'SET INPUT BB BD' > 00007 * * * End of File * * *
That was needed in the Before Times, when you couldn't change the code page of your terminal (easily and without a new keyboard). These SET commands are now the root of all evil. People don't remember them, they retire, the knowledge is lost, civilization falls. Feh. Not to mention that you still have to know which code pages are in use, both on your terminal and in the file in question. In code page 37, the brackets are at (0xBA, 0xBB). In code page 500 (the default in CMS pipelines, IIRC), they are at (0x4A,0x5A) In code pages 924 and 1047 (ISO), they are at (0xAD, 0xBD). Here lies the origin of SET INPUT/SET OUTPUT. In The Beginning, the old 1403 print trains placed the square brackets at these same code points. When creating printed output, WYSIWYG of the day meant using SET INPUT/OUTPUT to see the brackets since the 3270s of the day didn't put the A lot of folks who used SCRIPT/GML couldn't be troubled to use &lbrk./&rbrk. (sigh) Even the CU-attached 3270 printers had square brackets at the 1403 locations, not the 3270 locations! The C/C++ compiler expects the brackets to be there, too, but you can change the code page used by the C/C++ compiler through use of #pragma directives. (The brackets weren't the only reason for SET INPUT/OUTPUT, I'm sure, as there are other stray characters, but they were a powerful motivator for its use back in the day.) Beware that changing your terminal code page from 37 has other side effects. Logical Not looks like a caret. IT'S OK. JUST BREATHE. Just make sure Shift-6 on your keyboard generates the caret. And then stop using it. Use <> or /= instead. Alan Altmark z/VM Development IBM Endicott
