[comp.lang.c] Portable code: identifier length

garry@batcomputer.tn.cornell.edu (Garry Wiegand) (12/15/86)

I notice in Martin Minow's C-spec postings that the spec currently says
that external identifiers may - dependent on implementation - be significant 
in as few as the first 6 characters.

I have a System V - derived machine that only recognizes 16 characters. Big 
Blue only does 6, naturally. I like long and descriptive names, but I also
like to be somewhat portable. So:

Question 1: are there *other* C implementations which do less than 31? (If
	    so, what's their choice, please?)

Question 2: are there *any* pre-processor implementations which do not adhere
	    to the full 31?

thanks

garry wiegand   (garry%cadif-oak@cu-arpa.cs.cornell.edu)

KLH@sri-nic.arpa (Ken Harrenstien) (12/18/86)

The implementations for the DEC PDP-10 that I know of only allow 6
significant monocase characters in external identifiers; this is a
limitation imposed on almost all PDP-10 software by the format of
standard relocatable files (the latest format does provide for longer
symbols but is both too new and incomplete to help any).
-------

philip@axis.UUCP (Philip Peake) (12/18/86)

In article <1825@batcomputer.tn.cornell.edu> garry%cadif-oak@cu-arpa.cs.cornell.edu writes:
>I notice in Martin Minow's C-spec postings that the spec currently says
>that external identifiers may - dependent on implementation - be significant 
>in as few as the first 6 characters.
>

Not only is the limit only 6 chars, but it is CASE INDEPENDENT too.
So the identifiers 'var1' and 'Var1' are the same -

BUT

only when making EXTERNAL linkages, within the same file they are
different.

Disgusting, isn't it ?

Are we really approaching the end of the 20th century ?
Some people seem to be unwilling to recognise it, and to dispose
of linke editors which should have died long ago ...

Philip

henry@utzoo.UUCP (Henry Spencer) (12/19/86)

> Question 1: are there *other* C implementations which do less than 31? (If
> 	    so, what's their choice, please?)

Well, there's always the original C compilers from Bell Labs -- you would
be surprised at how many copies of them and their direct derivatives are
still in use -- which implemented 7-character significance for external
names.

Old DEC operating systems, some of which have C compilers, only support
6 in the linkers.

There are probably more.

> Question 2: are there *any* pre-processor implementations which do not adhere
> 	    to the full 31?

No shortage; see above note about original C compilers, which only kept 8
for preprocessor identifiers.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,decvax,pyramid}!utzoo!henry

lum@osu-eddie.UUCP (Lum Johnson) (12/21/86)

In article <1630@brl-adm.ARPA> KLH@sri-nic.arpa (Ken Harrenstien) writes:
>The implementations for the DEC PDP-10 that I know of only allow 6
>significant monocase characters in external identifiers; this is a
>limitation imposed on almost all PDP-10 software by the format of
>standard relocatable files (the latest format does provide for longer
>symbols but is both too new and incomplete to help any).

That is correct for relocatable files acceptable to pre-V6 LINK;
V6 LINK accepts symbol names significant upto 72 SIXBIT-compatible
ASCII chars with case being optionally significant.

Digital is withdrawing support from the PDP-10 architecture, so it
will either disappear soon or be appropriately updated and supported
by the formation of a user consortium, as recently requested at DECUS.

Lum Johnson  lum@ohio-state.arpa  ..!cbosgd!osu-eddie!lum

tanner@ki4pv.UUCP (Tanner Andrews) (12/21/86)

) Question 1: are there *other* C implementations which [have
) shorter than] 31 [char identifiers?

Well, my CP/M compiler handles identifiers up to <settable> chars -- but
its output goes through macro-80.  Macro-80 deals in 6-char monocase
names, much as the old DEC and IBM tools do.
-- 
<std dsclm, copies upon request>	   Tanner Andrews

greg@utcsri.UUCP (Gregory Smith) (12/23/86)

In article <6928@ki4pv.UUCP> tanner@ki4pv.UUCP (Tanner Andrews) writes:
>Well, my CP/M compiler handles identifiers up to <settable> chars -- but
>its output goes through macro-80.  Macro-80 deals in 6-char monocase
>names, much as the old DEC and IBM tools do.
>-- 
><std dsclm, copies upon request>	   Tanner Andrews

If you mean MicroSoft M80, I have quick patch which makes M80 into
a dualcase assembler. The dualcase symbols are passed to L80, which
doesn't seem to mind. Of coure, predefined words like mnemonics and DB
and END then must be in uppercase.

These patches will only work on the same rev of the assembler that I am using.
(At top of listing: MACRO-80 3.44  30-Mar-82). If you are interested, send
me mail, and I will reply or post to comp.os.cpm. Strictly, this
is infringing on MS's copyright, but I've strictly already done that
by doing the patches in the first place. Besides, it's just so darn useful...
I have used this patched assembler for gzillions of lines of code, and
not a glitch...

-- 
----------------------------------------------------------------------
Greg Smith     University of Toronto      UUCP: ..utzoo!utcsri!greg
Have vAX, will hack...