[comp.lang.c] C/370 is case insensitive, and just generally rots!

c9h@psuecl.bitnet (12/13/89)

I just can't believe it.  If I hadn't seen it with my own eyes, I seriously
doubt that I would.  IBM C/370 is *not* case sensitive.  This is just for
starters.  Let me give you some advice.  NEVER, EVER use C/370 if there is
*ANY* way you can avoid it, ESPECIALLY if you like K&R2.  People, this com-
piler is BAD (Broken As Designed).  I strongly encourage you to get Waterloo
C (WATC) if you want to program in C on an IBM mainframe.

--
- Charles Martin Hannum II       "Klein bottle for sale ... inquire within."
    (That's Charles to you!)     "To life immortal!"
  c9h@psuecl.{bitnet,psu.edu}    "No noozzzz izzz netzzzsnoozzzzz..."
  c9h@eclx.psu.edu               "Mem'ry, all alone in the moonlight ..."
  c9h@hcx.psu.edu
  cmh@psuecl2.bitnet

ted@ultra.com (Ted Schroeder) (12/14/89)

c9h@psuecl.bitnet writes:

>I just can't believe it.  If I hadn't seen it with my own eyes, I seriously
>doubt that I would.  IBM C/370 is *not* case sensitive.  This is just for
>starters.  Let me give you some advice.  NEVER, EVER use C/370 if there is
>*ANY* way you can avoid it, ESPECIALLY if you like K&R2.  People, this com-
>piler is BAD (Broken As Designed).  I strongly encourage you to get Waterloo
>C (WATC) if you want to program in C on an IBM mainframe.

Well, not exactly.  IBM C/370 is case sensitive AS long as the data is local.
I'm sure that globals are not case sensitive in Waterloo C either since the
linker/loader doesn't support case.  It also doesn't support the "_" character
and symbols can only be 8 chars long.  ("_" chars get turned into the "@" char
automatically by the compiler).

By the way, I've done a pretty major port of a Unix device driver for our
product into VM and have had not a single issue with the compiler.  Now the
loader, that I've got my opinions about, but let's not bad mouth the compiler
when it's the rest of the IBM support you're really pissed about.

      Ted Schroeder                   ted@Ultra.com
      Ultra Network Technologies      ...!ames!ultra!ted
      101 Daggett Drive           
      San Jose, CA 95134          
      408-922-0100

Disclaimer:  I don't even believe what I say, why should my company?

swh@hpcupt1.HP.COM (Steve Harrold) (12/14/89)

Re: C/370 case sensitivity?

I cannot speak from actual experience, since I don't have access to IBM's
C/370, but are you sure when you say that the compiler does not respect
case?  In what sense is case ignored?

To quote from "IBM Systems Application Architecture: Common Programming
Interface: C Reference", p/n SC26-4353-0, page 33:

"For identifiers that represent internal data objects, IBM C compilers view
uppercase and lowercase letters as different symbols.  Thus 'PROFIT' and
'profit' represent different internal data objects.

"For identifiers that represent external data objects, uppercase and
lowercase letters may be viewed as equivalent symbols.  IBM compilers will
recognize a minumum of 7 significant characters for external identifiers.
Thus on some compilers, 'STOCKONHAND' and 'stockonorder' will represent
the same external data object because the 7 significant characters of both
identifiers are identical and the case is ignored."

These two paraprahs are merely being explicit about the ANSI standard.

What ARE the sprecifics of your complaint about the C/370 compiler???

c9h@psuecl.bitnet (12/14/89)

In article <1989Dec13.173114.10295@ultra.com>, ted@ultra.com (Ted Schroeder) writes:
> c9h@psuecl.bitnet writes:
>
> Well, not exactly.  IBM C/370 is case sensitive AS long as the data is local.
> I'm sure that globals are not case sensitive in Waterloo C either since the
> linker/loader doesn't support case.  It also doesn't support the "_" character
> and symbols can only be 8 chars long.  ("_" chars get turned into the "@" char
> automatically by the compiler).

Funny ...  Maybe Waterloo C knows something ...  Perhaps it has a better
way to handle this ...  Hell, I don't know.  All I know is that *it* doesn't
bitch and moan when I have too identifiers varying only in case.

> By the way, I've done a pretty major port of a Unix device driver for our
> product into VM and have had not a single issue with the compiler.  Now the
> loader, that I've got my opinions about, but let's not bad mouth the compiler
> when it's the rest of the IBM support you're really pissed about.

Your *damned* right I'm pissed.  Our people ordered the manual(s) with the
compiler (oh, about seven or eight months ago), and the manuals still aren't
here.


BTW:  I just checked.  WATC *is*, in every aspect, case sensitive.

--
- Charles Martin Hannum II       "Klein bottle for sale ... inquire within."
    (That's Charles to you!)     "To life immortal!"
  c9h@psuecl.{bitnet,psu.edu}    "No noozzzz izzz netzzzsnoozzzzz..."
  c9h@eclx.psu.edu               "Mem'ry, all alone in the moonlight ..."
  c9h@hcx.psu.edu
  cmh@psuecl2.bitnet

jbeard@quintus.UUCP (Jeff Beard) (12/15/89)

<c9h@psuecl.bitnet (Charles Martin Hannum II) writes:
>I just can't believe it.  If I hadn't seen it with my own eyes, I seriously
>doubt that I would.  IBM C/370 is *not* case sensitive.  This is just for
>starters.  Let me give you some advice.  NEVER, EVER use C/370 if there is
>*ANY* way you can avoid it, ESPECIALLY if you like K&R2.  People, this com-
>piler is BAD (Broken As Designed).  I strongly encourage you to get Waterloo
>C (WATC) if you want to program in C on an IBM mainframe.
>
>--

We now see two flavors of IBM/C: the originals ala Whitesmiths
which were programs 5713-AAG/H and the SAA compliant 5688-039/040.

Precisely which are you flaming?

PS: after working on porting Unix C code to system/370 for three years,
and after exhausting 4 compilers, I settled upon SAS/C for two important
reasons (at least to me and my company)

	1) the code generated was reentrant and could therefore by used to
	   write DSCC (shared library) fuctions

	2) by proper factoring of system dependencies (as in file names, etc)
	   code written on VM could be moved to MVS and without recompilation,
	   be link-edit with confidence of exactlt equivalent behavior!
-- 
======
Opinions are the possession of the speaker and to assert otherwise is plagiarism.
Jeff Beard, Quintus Computer Systems, Inc.
e-mail ...!amdahl!sun!quintus!jbeard 		phone  (415) 965-7700

exspes@gdr.bath.ac.uk (P E Smee) (12/15/89)

In article <1989Dec13.173114.10295@ultra.com> ted@ultra.com (Ted Schroeder) writes:
>("_" chars get turned into the "@" char
>automatically by the compiler).

Under VM/CMS it is also pretty nearly impossible to use any of the 'special'
characters {}[]|, and conversion to trigraphs is pretty much required.
(Problem is that while both XEDIT and C/370 have extended EBCDIC codes
for these characters, they use different ones.)

>loader, that I've got my opinions about, but let's not bad mouth the compiler
>when it's the rest of the IBM support you're really pissed about.

I did a port of a fairly specialized tape-reading program onto VM/CMS about
8 months ago, and found the biggest problem was with the libraries.  Under
CMS, at least, a lot of what you'd expect to find in the standard libraries
wasn't there; and a lot of what was didn't work.  Never did get 'rewind'
to work on a tape, for example.  (Though it would happily 'rewind' my 
terminal, whatever that means.)  In the end I had to write a REXX (script)
to make a disk image of a tape, and then run the C prog over that image.

-- 
Paul Smee, Univ of Bristol Comp Centre, Bristol BS8 1TW, Tel +44 272 303132
 Smee@bristol.ac.uk  :-)  (..!uunet!ukc!gdr.bath.ac.uk!exspes if you MUST)

c9h@psuecl.bitnet (12/16/89)

In article <1290@quintus.UUCP>, jbeard@quintus.UUCP (Jeff Beard) writes:
> We now see two flavors of IBM/C: the originals ala Whitesmiths
> which were programs 5713-AAG/H and the SAA compliant 5688-039/040.
>
> Precisely which are you flaming?

C/370 is IBM's latest incarnation of C for the system/370, and many of their
mainframes of course.  I'm using it on a 3090-600(S or E, I don't recall)
and a 4381.  It sucks.

About the special characters (namely braces and brackets):  CMS doesn't
appear to have much of a problem with them.  XEDIT will display brackets
if I use SET APL ON, and CMS 5.5 seems to handle the braces correctly with
a couple of SET OUTPUT commands, but CMS 5 (on the 4381) is giving me Hell
over it.  It would be *really* nice if I could use standard C notation.
Any suggestions?

BTW:  I suspect the manuals say something about this, but we have yet to
      receive them ...  (IBM, are you listening?  This is Penn State.
      Send the G** d***ed manuals!!)

--
- Charles Martin Hannum II       "Klein bottle for sale ... inquire within."
    (That's Charles to you!)     "To life immortal!"
  c9h@psuecl.{bitnet,psu.edu}    "No noozzzz izzz netzzzsnoozzzzz..."
  c9h@eclx.psu.edu               "Mem'ry, all alone in the moonlight ..."
  c9h@hcx.psu.edu
  cmh@psuecl2.bitnet

Disclaimer:  The opinions expressed herein belong exclusively to me, and
             not to Penn State, the Center for Academic Computing (fondly
             known as the CACastocracy B-), the Engineering Copmuter Lab,
             or the University Scholars Program.

exspes@gdr.bath.ac.uk (P E Smee) (12/18/89)

In article <72683@psuecl.bitnet> c9h@psuecl.bitnet writes:
>In article <1290@quintus.UUCP>, jbeard@quintus.UUCP (Jeff Beard) writes:
>> We now see two flavors of IBM/C: the originals ala Whitesmiths
>> which were programs 5713-AAG/H and the SAA compliant 5688-039/040.
>>
>> Precisely which are you flaming?
>
>C/370 is IBM's latest incarnation of C for the system/370, and many of their
>mainframes of course.  I'm using it on a 3090-600(S or E, I don't recall)
>and a 4381.  It sucks.
>
>About the special characters (namely braces and brackets):  CMS doesn't
>appear to have much of a problem with them.  XEDIT will display brackets
>if I use SET APL ON, and CMS 5.5 seems to handle the braces correctly with
>a couple of SET OUTPUT commands, but CMS 5 (on the 4381) is giving me Hell

*I* was flaming 5713-AAH; our IBM people have never indicated that
there is an official alternative.  (We *are* looking into the C on the
'Waterloo' tapes.)

Apropos special characters, I may have been the tiniest bit
over-critical.  If you are using a fairly new 3270 on a directly
attached terminal controller, you CAN get at most of the 'special'
characters.  If you are using an oldish 3270, or are attached via an
X-29-ish network connection, you can't sensibly.  We have 3 of the
former, all in the Ops bridge, and a humungous lot of the latter, and
you can probably tell from my postings which I was using.  (The older
3270's are even worse, in that the keycaps don't match the keyboard
layout as defined by what you get when you hit the keys.  I'm told we
can't reconfigure their controller to fix that, because then the
printer hooked to the same SNA channel won't work.  However, I'm
getting a bit far afield now.)

-- 
Paul Smee, Univ of Bristol Comp Centre, Bristol BS8 1TW, Tel +44 272 303132
 Smee@bristol.ac.uk  :-)  (..!uunet!ukc!gdr.bath.ac.uk!exspes if you MUST)

kbreinho%peruvian.utah.edu@cs.utah.edu (Keith Breinholt) (12/19/89)

In article <1989Dec15.095803.416@gdt.bath.ac.uk> exspes@gdr.bath.ac.uk (P E Smee) writes:

>Under VM/CMS it is also pretty nearly impossible to use any of the 'special'
>characters {}[]|, and conversion to trigraphs is pretty much required.
>(Problem is that while both XEDIT and C/370 have extended EBCDIC codes
>for these characters, they use different ones.)

The key in this scenario is to use a terminal or terminal emulator that sends
the right characters (i.e. 3270 emulation).  Once the right characters are sent
there is no problem with {}[]| and other 'special' characters.

Keith L. Breinholt
usiklb@vm.usi.utah.edu or
kbreinho@wildflower.utah.edu

mcdonald@aries.scs.uiuc.edu (Doug McDonald) (12/19/89)

In article <1989Dec18.113044.10445@gdt.bath.ac.uk> exspes@gdr.bath.ac.uk (P E Smee) writes:
>In article <72683@psuecl.bitnet> c9h@psuecl.bitnet writes:
>>C/370 is IBM's latest incarnation of C for the system/370, and many of their
>>mainframes of course.  I'm using it on a 3090-600(S or E, I don't recall)
>>and a 4381.  It sucks.
>>
>*I* was flaming 5713-AAH; our IBM people have never indicated that
>there is an official alternative.  (We *are* looking into the C on the
>'Waterloo' tapes.)
>

This seems so simple: there is a set of STANDARD, world-wide 
character codes, that are used on essentially all computers in the
world except one benighted variety: ASCII and its 256 bit European
extensions. All of these have the printing codes from 32 to 126
the same. 

IBM: simply use these for all uses on your mainframes.

So simple.

Or: when specifying a new computer you are going to buy,
specify that these are the codes that will be used for all
operations. 

Doug McDonald

dricejb@drilex.UUCP (Craig Jackson drilex1) (12/19/89)

In article <1989Dec18.232929.23080@ux1.cso.uiuc.edu> mcdonald@aries.scs.uiuc.edu (Doug McDonald) writes:
>In article <1989Dec18.113044.10445@gdt.bath.ac.uk> exspes@gdr.bath.ac.uk (P E Smee) writes:
>>In article <72683@psuecl.bitnet> c9h@psuecl.bitnet writes:
>>>C/370 is IBM's latest incarnation of C for the system/370, and many of their
>>>mainframes of course.  I'm using it on a 3090-600(S or E, I don't recall)
>>>and a 4381.  It sucks.
>>>
>>*I* was flaming 5713-AAH; our IBM people have never indicated that
>>there is an official alternative.  (We *are* looking into the C on the
>>'Waterloo' tapes.)
>
>This seems so simple: there is a set of STANDARD, world-wide 
>character codes, that are used on essentially all computers in the
>world except one benighted variety: ASCII and its 256 bit European
>extensions. All of these have the printing codes from 32 to 126
>the same. 
>
>IBM: simply use these for all uses on your mainframes.
>
>So simple.
>
>Or: when specifying a new computer you are going to buy,
>specify that these are the codes that will be used for all
>operations. 
>
>Doug McDonald

The major reason why EBCDIC is incompatible with ASCII is that it
*predates* ASCII.  EBCDIC was put to be sometime around 1964-66; ASCII
didn't gel until around 1968.  By then, EBCDIC was in wide use.
(Also, IBM had some other criteria: EBCDIC can be derived from punch
card codes more easily than ASCII, for example.)

We've had quite a bit of experience with ASCII characters that EBCDIC
doesn't like, as we ported some Burroughs ALGOL programs to IBM by writing
a compiler.  (Burroughs uses EBCDIC, but a different version than IBM's;
it maps one-to-one onto ASCII.)

To the best of my knowledge, all 3270-like terminals other than the 3277 can
display square brackets.  The problem is that they respond to the hex codes
'41' and '42', rather than 'AD' and 'BD', which seem to be the EBCDIC 
"standard".  With appropriate CMS SET INPUT and SET OUTPUT commands, it
can be quite easy to deal with these characters.  (If you want to type them in,
you need six commands: SET INPUT '`' -> 'AD' (or some similar character,
SET INPUT '41'  -> 'AD', and SET OUTPUT 'AD' -> '41'.  (Plus equivalent
translates for right-square-bracket.)

As for specifying that ASCII should be used in all operations, feel free.
If that results in a computer that costs more, doesn't have the software you
need, or doesn't have the performance (CPU or I/O) you need,  feel justified.
(If you're counting beans on large amounts of data (>20 GB), one or more of
the above clauses may be true.)

Incidentally, IBM would be happy to meet that requirement: they'd just
quote AIX/370. :-)
-- 
Craig Jackson
dricejb@drilex.dri.mgh.com
{bbn,axiom,redsox,atexnet,ka3ovk}!drilex!{dricej,dricejb}