[fa.info-vax] VMS PASCAL question

info-vax@ucbvax.ARPA (02/23/85)

From: Mike Iglesias <iglesias@uci-icsa>

I'm trying to convert a VMS PASCAL program to run on another system
(Honeywell CP-6).  I don't have a VMS PASCAL manual (I know, I know, I
should have one, but...) and I've run across something that I don't
understand.  What does the following generate for st?
 
   VAR st: VARYING [80] of char;

Thanks in advance,

Mike Iglesias
University of California, Irvine
iglesias@uci-icsa   or   iglesias@uci-750a

info-vax@ucbvax.ARPA (02/25/85)

From: John_Aronsson_QZ%QZCOM.MAILNET@MIT-MULTICS.ARPA

VARYING OF CHAR is a predeclared record type in VMS-PASCAL.

Syntax:
    VARYING [upper-bound] OF [attribute-list] CHAR

  upper-bound is an integer in the range from 1 throgh 65535 that
indicates the length of the longest possible string.


VARYING [upper-bound] OF CHAR may be thought of as the record type:

   RECORD
     LENGTH  : [WORD] 0..upper-bound;
     BODY    : PACKED ARRAY [1..upperbound] OF CHAR;
   END;

LENGTH and BODY are predeclared fields in VMS-PASCAL.

Example:

VAR st : VARYING [80] OF CHAR;

BEGIN
  st := 'FOO';
  Writeln(st.length);  (* write 3 *)
  st := 'BLETCH';
  Writeln(st.length);  (* write 6 *)
  Writeln(st);         (* This will just write the 6 characters 'BLETCH' *)
  Writeln(st.body)     (* But this will write 80 characters. Mostly junk. *)
END.