[comp.os.vms] quoted string in VAX Pascal -- using conformant arrays

BARMSTRO@carleton.EDU (Pod Stolom Consulting) (05/05/88)

VAX Pascal has what it calls conformant parameters.  This will work with
all sorts of arrays, including packed of char and varying of char.  

program foo(output);
Procedure check_error
  (	return_status	: unsigned;
	message_1	: packed array [l1..u1:integer] of char;
	message_2	: varying [l$] of char);
begin
	lib$signal(return_status, message_1, message_2)
end;

begin
    	check_error (UTILITY_FILNOTFND, message_1, "operator.log")
end.

Things to remember:  l1, u1, and l$ are all _implicitly declared variables_
(sounds like Fortran to you to, eh?) and therefore can only be used once
in a given procedure declaration (otherwise they'd be multiple defined,
and you get ugly compile time stuff).  Just like any other identifier, they
can be full of $ and _.

One other trick is that the routine declaration be need to be in a different
module from the caller.  I am pretty sure that I'm thinking of something
else, but I wanted to mention it just in case.

Good luck.


+-----------------------------------------------------------------------+
| Borden Armstrong                               Computer Center        |
| System Manager and                             Carleton College       |
| Academic Programmer/Analyst                    1 North College Street |
|                                                Northfield, MN  55057  |
| barmstro@carleton.edu                                     U. S. A.    |
| ...!umn-cs!stolaf!agnes!ccnfld!barmstro        (507)663-4277          |
+-----------------------------------------------------------------------+