Xref: utzoo comp.sys.ibm.pc:16809 comp.binaries.ibm.pc.d:490 comp.emacs:3722
Path: utzoo!utgpu!water!watmath!clyde!skep2!wcs
From: wcs@skep2.ATT.COM (Bill.Stewart.)
Newsgroups: comp.sys.ibm.pc,comp.binaries.ibm.pc.d,comp.emacs
Subject: Re: US PC programmers still live in a 7-bit world!
Message-ID: <168@skep2.ATT.COM>
Date: 29 Jun 88 18:30:46 GMT
References: <1988Jun22.223158.1366@LTH.Se> <126@dcs.UUCP> <920@infbs.UUCP> <4635@killer.UUCP>
Reply-To: wcs@skep2.UUCP (46323-Bill.Stewart.,2G218,x0705,)
Organization: AT&T Bell Labs Center 4632, Holmdel, NJ
Lines: 27

In article <4635@killer.UUCP> wnp@killer.UUCP (Wolf Paul) writes:
: >WNP>	The way IBM implemented it, all case functions would have to be
: >WNP>	table-driven, which is much less elegant than working with the
: >WNP>	parallel ranges of characters in standard ASCII.
: >Why is the table-driven approach "much less elegant"?  A syntax-table
:Because of the harebrained way IBM assigned characters to the eight-bit
:positions, you would actually need two tables -- one to go from upper
:to lower case, and another vice-versa. THAT's inelegant.

But you have to do the equivalent now, in the sense of
	islower(c) ? toupper(c) : c 	vs.
	isupper(c) ? tolower(c) : c 
(System V uses a function call that does this)

When I'm doing this kind of work, I almost always use a table -
TOUPPER(c) or TOLOWER(c)
	- it always does the right thing, even if the character
		wasn't upper or lower case.  If you *must* have
		specific-case character results, it's easy to get.
	- it only takes one step, so it's efficient
	- it only references the character once, so macros are safe
	- it works on BSD and System V
	- it's extensible to non-ASCII character sets
	- if you have shared libraries it doesn't waste much space.
-- 
#				Thanks;
# Bill Stewart, AT&T Bell Labs 2G218, Holmdel NJ 1-201-949-0705 ihnp4!ho95c!wcs