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: BOOL ← FALSE],
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...