File: XMesaCmplr15.mesa - created by MW. Last edit:
JKF 1-Jul-87 16:41:36
MW 13-Apr-87 9:37:07
NFS 8-May-87 11:32:08 Procedure XMesa5b
Mna, April 17, 1991 3:19 pm PDT
Copyright (C) 1987 by Xerox Corporation. All rights reserved.
Other data types and storage management
DIRECTORY
Cmplr6Prog0,
OSOps,
RunRegressions,
XMesaProcs;
XMesaCmplr15: PROGRAM IMPORTS RunRegressions, OSOps, XMesaProcs =
BEGIN
This module tests defaulted item initialization, so this module must be compiled
with uninitialized variable checking off
filename: LONG STRING ← "XMesaCmplr15"L;
XMesaCall15: PROCEDURE = {
XMesaProcs.PrintCR;
XMesaProcs.PrintS[filename];
XMesaProcs.PrintCR;
XMesa15a[]; -- Importing PROGRAM modules
XMesa15d[]; -- VARIANT RECORD's
XMesaProcs.PrintS["Done"L];
XMesaProcs.PrintCR;
}; --end of XMesaCall5
XMesa15a: PROCEDURE = { --Importing PROGRAM modules
XProg1Types: LONG POINTER TO FRAME[Cmplr6Prog0] = NIL;
var1: XProg1Types.Prog0Type1 ¬ [-100, TRUE];
IF var1.x # -100 THEN XMesaProcs.PutFailMessage[3500, filename];
IF var1.y # TRUE THEN XMesaProcs.PutFailMessage[3510, filename];
};
XMesa15d: PROCEDURE = { -- VARIANT RECORDs
z: UNCOUNTED ZONE = OSOps.GetSystemUZone[];
declaring variant records
overlaid records
VRec: TYPE = RECORD [
common: INTEGER ← 0,
variant: SELECT tag: * FROM
red => [r1: BOOLFALSE],
green => [g1: INTEGER ← 0]
ENDCASE ← red[TRUE] |
NULL];
v: VRec;
v1: VRec ← [common: 10];
v2: VRec ← [variant: NULL];
rv: red VRec;
gv: green VRec;
default and variant records
XMesaProcs.Isequal[v.common, 0, 3100, filename];
WITH any: v SELECT FROM
red => XMesaProcs.Isboolequal[any.r1, TRUE, 3110, filename];
ENDCASE;
XMesaProcs.Isequal[v1.common, 10, 3120, filename];
WITH any: v1 SELECT FROM
red => XMesaProcs.Isboolequal[any.r1, TRUE, 3130, filename];
ENDCASE;
XMesaProcs.Isequal[v2.common, 0, 3140, filename];
XMesaProcs.Isequal[rv.common, 0, 3150, filename];
XMesaProcs.Isboolequal[rv.r1, FALSE, 3160, filename];
XMesaProcs.Isequal[gv.common, 0, 3170, filename];
XMesaProcs.Isequal[gv.g1, 0, 3180, filename];
};
mainline
RunRegressions.RegisterTest[XMesaCall15, "test15"];
END...