|  | Yes and No.
       
I presume what you are trying to REALLY do is put the value of a global
symbol in the parameter list.  What you describe in .0 is a hack to do this
in (FORTRAN?, or some made up language?)
What you are really asking for then is...
		external PRODUCT$ABC
		pushl	other-args
		pushab	G^PRODUCT$ABC
		calls	#n, ROUTINE
Yes, you can get this affect in VAX Ada, but not at all using the mechanism
you describe.  Using your proposed mechanism a copy of the 32 bits starting
at PRODUCT$ABC would be moved to a stack temporary, and the address of this
stack temporary passed in the parameter list - not at all the affect you
want.
The way you would do it is...
                                                        
	with SYSTEM;
	package MUMBLE is
		type UNKNOWN is limited private;
		PRODUCT_ABC	: UNKNOWN;
			pragma IMPORT_OBJECT(PRODUCT_ABC, external=>"PRODUCT$ABC");
		procedure ROUTINE(TABLE : SYSTEM.ADDRESS, ...);
	        	pragma INTERFACE(PRODUCT_ABC, ROUTINE);
			pragma IMPORT_PROCEDURE(ROUTINE,
				mechanism=>(VALUE,...));
	private
		type UNKNOWN is SYSTEM.UNSIGNED_BYTE;	-- Who cares!
	end;
                                                    
	with MUMBLE, SYSTEM;
	procedure ... is
	begin
		ROUTINE( PRODUCT_ABC'address, ... );
	end;
As you can see, Ada is explicitly designed to make hacks like the one you
describe difficult, and to force you to state EXACTLY what you intend in
such cases.
/Bevin
VAX Ada
 | 
|  | Bevin,
   Thanks for the reply on ADA; that's quick service.
   Yes, what we really want is the address of the global symbol in the
   parameter list. I think the semi-syntax I suggested is a combination
   of how it's actually done in FORTRAN and BASIC. (Please, you FORTRAN
   and BASIC users, don't beat me up if I got it wrong.)
   All I really need to know is if it's possible, hackishly or not in our
   old fashioned and new fashioned languages. I guess I'm not surprised
   ADA lets you state exactly what it is you want.
Dan
 | 
|  |    In response to a kindly worded mail message, I'd like to make a comment to
   head off anybody who thinks we might be slighting the interpreted languages.
   We're doing this as part of an effort not to slight them. Currently LISP and
   APL have trouble calling an announced product, FMS, because of a similar
   architectural problem. What we're trying to do is avoid the same problem for
   a new product. The interpreted languages would not have exactly the same
   functionality as the compiled languages, but they would be able to use 
   99% of the important part of the product (which they can't do now with FMS). 
 |