3 DCL bool_true BOOL INIT := TRUE;
4 DCL bool_false BOOL INIT := FALSE;
5 DCL booltable1 ARRAY (0:3) BOOL INIT := [ TRUE, FALSE, FALSE, TRUE ];
6 DCL booltable2 ARRAY (4:7) BOOL INIT := [ TRUE, FALSE, FALSE, TRUE ];
8 DCL control_char CHAR INIT := C'07';
9 DCL printable_char CHAR INIT := 'a';
10 DCL chartable1 ARRAY (0:2) CHAR INIT := [ C'00', C'01', C'02' ];
11 DCL chartable2 ARRAY (3:5) CHAR INIT := [ C'00', C'01', C'02' ];
13 DCL string1 CHARS (4) INIT := 'abcd';
14 DCL string2 CHARS (5) INIT := 'ef' // C'00' // 'gh';
15 DCL string3 CHARS (6) INIT := 'ef' // 'gh' // 'ij';
16 DCL string4 CHARS (7) INIT := (6) 'z' // C'00';
18 DCL byte_low BYTE INIT := -128;
19 DCL byte_high BYTE INIT := 127;
20 DCL bytetable1 ARRAY (0:4) BYTE INIT := [ -2, -1, 0, 1, 2 ];
21 DCL bytetable2 ARRAY (5:9) BYTE INIT := [ -2, -1, 0, 1, 2 ];
22 DCL bytetable3 ARRAY (1:2,'c':'d',FALSE:TRUE) BYTE
23 INIT := [ [ [ 0, 1 ], [ 2, 3 ] ], [ [ 4, 5 ], [ 6, 7 ] ] ];
24 DCL bytetable4 ARRAY (1:2) ARRAY ('c':'d') ARRAY (FALSE:TRUE) BYTE
25 INIT := [ [ [ 0, 1 ], [ 2, 3 ] ], [ [ 4, 5 ], [ 6, 7 ] ] ];
27 DCL ubyte_low UBYTE INIT := 0;
28 DCL ubyte_high UBYTE INIT := 255;
29 DCL ubytetable1 ARRAY (0:4) UBYTE INIT := [ 0, 1, 2, 3, 4 ];
30 DCL ubytetable2 ARRAY (5:9) UBYTE INIT := [ 0, 1, 2, 3, 4 ];
32 DCL int_low INT INIT := -32_768;
33 DCL int_high INT INIT := 32_767;
34 DCL inttable1 ARRAY (0:4) INT INIT := [ -2, -1, 0, 1, 2 ];
35 DCL inttable2 ARRAY (5:9) INT INIT := [ -2, -1, 0, 1, 2 ];
37 DCL uint_low UINT INIT := 0;
38 DCL uint_high UINT INIT := 65_535;
39 DCL uinttable1 ARRAY (0:4) UINT INIT := [ 0, 1, 2, 3, 4 ];
40 DCL uinttable2 ARRAY (5:9) UINT INIT := [ 0, 1, 2, 3, 4 ];
42 DCL long_low LONG INIT := -2_147_483_648;
43 DCL long_high LONG INIT := 2_147_483_647;
44 DCL longtable1 ARRAY (0:4) LONG INIT := [ -2, -1, 0, 1, 2 ];
45 DCL longtable2 ARRAY (5:9) LONG INIT := [ -2, -1, 0, 1, 2 ];
47 DCL ulong_low ULONG INIT := 0;
48 DCL ulong_high ULONG INIT := 4_294_967_295;
49 DCL ulongtable1 ARRAY (0:4) ULONG INIT := [ 0, 1, 2, 3, 4 ];
50 DCL ulongtable2 ARRAY (5:9) ULONG INIT := [ 0, 1, 2, 3, 4 ];
52 DCL real1 FLOAT INIT := 3.14159265358;
53 DCL real2 FLOAT INIT := -3.14159265358;
54 DCL realtable1 ARRAY (0:4) FLOAT INIT := [ -2.0, -1.0, 0.0, 1.0, 2.0 ];
55 DCL realtable2 ARRAY (5:9) FLOAT INIT := [ -2.0, -1.0, 0.0, 1.0, 2.0 ];
57 DCL long_real1 DOUBLE INIT := 3.14e300;
58 DCL long_real2 DOUBLE INIT := -3.14e-300;
59 DCL longrealtable1 ARRAY (0:4) DOUBLE INIT := [ -2.0, -1.0, 0.0, 1.0, 2.0 ];
60 DCL longrealtable2 ARRAY (5:9) DOUBLE INIT := [ -2.0, -1.0, 0.0, 1.0, 2.0 ];
62 /* DCL powerset1 POWERSET INT(0:7);*/
63 /* DCL chars1 CHAR (16) INIT := (16)'b'; */
64 /* DCL bits1 BIT(20) := B'11111111000010101011'; */
66 NEWMODE simple_struct = STRUCT (abool BOOL, aint INT, astring CHARS (8));
67 DCL struct1 simple_struct := [ TRUE, 123, "a string" ];
69 NEWMODE nested_struct = STRUCT (abool BOOL, nstruct simple_struct, aint INT);
70 DCL struct2 nested_struct := [ TRUE, [ FALSE, 456, "deadbeef" ], 789 ];
72 /* This table is used as a source for every ascii character. */
74 DCL asciitable ARRAY (0:255) CHAR INIT := [
75 C'00', C'01', C'02', C'03', C'04', C'05', C'06', C'07',
76 C'08', C'09', C'0a', C'0b', C'0c', C'0d', C'0e', C'0f',
77 C'10', C'11', C'12', C'13', C'14', C'15', C'16', C'17',
78 C'18', C'19', C'1a', C'1b', C'1c', C'1d', C'1e', C'1f',
79 C'20', C'21', C'22', C'23', C'24', C'25', C'26', C'27',
80 C'28', C'29', C'2a', C'2b', C'2c', C'2d', C'2e', C'2f',
81 C'30', C'31', C'32', C'33', C'34', C'35', C'36', C'37',
82 C'38', C'39', C'3a', C'3b', C'3c', C'3d', C'3e', C'3f',
83 C'40', C'41', C'42', C'43', C'44', C'45', C'46', C'47',
84 C'48', C'49', C'4a', C'4b', C'4c', C'4d', C'4e', C'4f',
85 C'50', C'51', C'52', C'53', C'54', C'55', C'56', C'57',
86 C'58', C'59', C'5a', C'5b', C'5c', C'5d', C'5e', C'5f',
87 C'60', C'61', C'62', C'63', C'64', C'65', C'66', C'67',
88 C'68', C'69', C'6a', C'6b', C'6c', C'6d', C'6e', C'6f',
89 C'70', C'71', C'72', C'73', C'74', C'75', C'76', C'77',
90 C'78', C'79', C'7a', C'7b', C'7c', C'7d', C'7e', C'7f',
91 C'80', C'81', C'82', C'83', C'84', C'85', C'86', C'87',
92 C'88', C'89', C'8a', C'8b', C'8c', C'8d', C'8e', C'8f',
93 C'90', C'91', C'92', C'93', C'94', C'95', C'96', C'97',
94 C'98', C'99', C'9a', C'9b', C'9c', C'9d', C'9e', C'9f',
95 C'a0', C'a1', C'a2', C'a3', C'a4', C'a5', C'a6', C'a7',
96 C'a8', C'a9', C'aa', C'ab', C'ac', C'ad', C'ae', C'af',
97 C'b0', C'b1', C'b2', C'b3', C'b4', C'b5', C'b6', C'b7',
98 C'b8', C'b9', C'ba', C'bb', C'bc', C'bd', C'be', C'bf',
99 C'c0', C'c1', C'c2', C'c3', C'c4', C'c5', C'c6', C'c7',
100 C'c8', C'c9', C'ca', C'cb', C'cc', C'cd', C'ce', C'cf',
101 C'd0', C'd1', C'd2', C'd3', C'd4', C'd5', C'd6', C'd7',
102 C'd8', C'd9', C'da', C'db', C'dc', C'dd', C'de', C'df',
103 C'e0', C'e1', C'e2', C'e3', C'e4', C'e5', C'e6', C'e7',
104 C'e8', C'e9', C'ea', C'eb', C'ec', C'ed', C'ee', C'ef',
105 C'f0', C'f1', C'f2', C'f3', C'f4', C'f5', C'f6', C'f7',
106 C'f8', C'f9', C'fa', C'fb', C'fc', C'fd', C'fe', C'ff'
109 DCL charmatrix ARRAY (0:255) CHAR INIT := [
110 'a','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
111 'a','a','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
112 'a','a','a','X','X','X','X','X','X','X','X','X','X','X','X','X',
113 'a','a','a','a','X','X','X','X','X','X','X','X','X','X','X','X',
114 'a','a','a','a','a','X','X','X','X','X','X','X','X','X','X','X',
115 'a','a','a','a','a','a','X','X','X','X','X','X','X','X','X','X',
116 'a','a','a','a','a','a','a','X','X','X','X','X','X','X','X','X',
117 'a','a','a','a','a','a','a','a','X','X','X','X','X','X','X','X',
118 'a','a','a','a','a','a','a','a','a','X','X','X','X','X','X','X',
119 'a','a','a','a','a','a','a','a','a','a','X','X','X','X','X','X',
120 'a','a','a','a','a','a','a','a','a','a','a','X','X','X','X','X',
121 'a','a','a','a','a','a','a','a','a','a','a','a','X','X','X','X',
122 'a','a','a','a','a','a','a','a','a','a','a','a','a','X','X','X',
123 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','X','X',
124 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','X',
125 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a'
128 DCL xptr PTR INIT := ->int_high;
132 DCL val1 BOOL := TRUE;
133 DCL val2 BOOL := FALSE;
134 DCL val3 BOOL := TRUE;
136 val1 := TRUE XOR TRUE;
137 val1 := TRUE XOR FALSE;
138 val1 := FALSE XOR TRUE;
139 val1 := FALSE XOR FALSE;
140 val1 := val2 XOR val3;
142 val1 := TRUE AND TRUE;
143 val1 := TRUE AND FALSE;
144 val1 := FALSE AND TRUE;
145 val1 := FALSE AND FALSE;
146 val1 := val2 AND val3;
148 val1 := TRUE ANDIF TRUE;
149 val1 := TRUE ANDIF FALSE;
150 val1 := FALSE ANDIF TRUE;
151 val1 := FALSE ANDIF FALSE;
152 val1 := val2 ANDIF val3;
154 val1 := TRUE OR TRUE;
155 val1 := TRUE OR FALSE;
156 val1 := FALSE OR TRUE;
157 val1 := FALSE OR FALSE;
158 val1 := val2 OR val3;
161 -- val1 := NOT FALSE;
167 scalar_arithmetic: PROC ();
178 val1 := val2 MOD val3;
179 val1 := val2 REM val3;
181 END scalar_arithmetic;
183 write_arrays: PROC ();
200 scalar_arithmetic ();