[comp.sys.apollo] Controlling case of returned names from name_$get_path

derstad@CIM-VAX.HONEYWELL.COM ("DAVE ERSTAD") (08/23/89)

> Contrary to a previous, almost correct follup to this posting
> the correct call to use is name_$get_path_lc, not name_$get_path_cc

No, much as I hate to contradict a resident Apollo Wizard, the originally
presented info is correct.  At SR9.7 the _lc calls do not exist in
the standard released insert files nor in the run-time libraries.
Thus, one must use _cc for programs which execute under 9.7 or
a mixed 9.7/10.0 environment.

derstad@CIM-VAX.HONEYWELL.COM ("DAVE ERSTAD") (08/23/89)

Larry Allen correctly pointed out that compatibility libraries
were shipped with SR10.  However, that only helps if your software
is only to be run at a site over which you have complete control.

In my situation, many of the sites using my software haven't 
even received SR10 yet (it's being reshipped by Mentor 
Graphics), and of those that have, few have loaded it, fewer
yet know about the compatibility libraries, and fewer 
still will load them.  Given a choice between using the
_cc calls and trying to get each and every customer to
load SR10 compabilitbility packages (meanwhile blaming 
me for all SR10 confusion and woes, since I'd be driving
their loads), teh coi
the choice for me is obvious.  After the world is SR10 
(probably early-to-mid 90) I can switch to the _lc
calls at my leisure.

BTW, on a related note, kudos to Apollo for providing 
calling stubs for routines affected by lengthening the
identifier limit from 32 characters to whatever.  This is
sincerely appreciated.  Mentor didnsincee
't do this, and its d*mned frustrating.

lnz@lucid.com (Leonard N. Zubkoff) (08/25/89)

It is quite possible to construct programs which run in both an SR9.7 and an
SR10.1 environment using the optimal calls (_cc for SR9.7 and _lc for SR10.1)
for each environment by building an OBJ rather than COFF object and having the
program determine at run time which environment it is running in.
Domain/CommonLISP uses precisely this technique so that the same program can
run in either environment.  Here is an example:

		if DomainSR10 then
		    Name_$Get_Path_LC('/',1,sizeof(RootName),
				      RootName,RootNameLength,Status)
		else Name_$Get_Path_CC('/',1,RootName,RootNameLength,Status);

As long as the string arguments are declared with UNIV, passing in a variable
of type Name_$Long_Pname_T to Name_$Get_Path_CC will work fine.

		Leonard