1MODULE Rot1;
2
3IMPORT SYSTEM, Out:=Out0;
4
5PROCEDURE Test*;
6  VAR
7    i8: SHORTINT;
8    i16: INTEGER;
9    i32: LONGINT;
10    c8: CHAR;
11    c16: LONGCHAR;
12    c32: UCS4CHAR;
13    b: SYSTEM.BYTE;
14  BEGIN
15    i8 := 64;
16    Out.Int (SYSTEM.ROT(i8, 0), 12);
17    Out.Int (SYSTEM.ROT(i8, 1), 12);
18    Out.Int (SYSTEM.ROT(i8, 2), 12);
19    Out.Ln;
20
21    i16 := 16384;
22    Out.Int (SYSTEM.ROT(i16, 0), 12);
23    Out.Int (SYSTEM.ROT(i16, 1), 12);
24    Out.Int (SYSTEM.ROT(i16, 2), 12);
25    Out.Ln;
26
27    i32 := 1073741824;
28    Out.Int (SYSTEM.ROT(i32, 0), 12);
29    Out.Int (SYSTEM.ROT(i32, 1), 12);
30    Out.Int (SYSTEM.ROT(i32, 2), 12);
31    Out.Ln;
32
33    c8 := 40X;
34    Out.Int (ORD(SYSTEM.ROT(c8, 0)), 12);
35    Out.Int (ORD(SYSTEM.ROT(c8, 1)), 12);
36    Out.Int (ORD(SYSTEM.ROT(c8, 2)), 12);
37    Out.Ln;
38
39    c16 := 4000X;
40    Out.Int (ORD(SYSTEM.ROT(c16, 0)), 12);
41    Out.Int (ORD(SYSTEM.ROT(c16, 1)), 12);
42    Out.Int (ORD(SYSTEM.ROT(c16, 2)), 12);
43    Out.Ln;
44
45    (*c32 := 40000000X;
46    Out.Int (ORD(SYSTEM.ROT(c32, 0)), 12);
47    Out.Int (ORD(SYSTEM.ROT(c32, 2)), 12);
48    Out.Ln;*)
49
50    b := SYSTEM.VAL(SYSTEM.BYTE, 64);
51    Out.Int (SYSTEM.VAL(SHORTINT,SYSTEM.ROT(b, 0)), 12);
52    Out.Int (SYSTEM.VAL(SHORTINT,SYSTEM.ROT(b, 1)), 12);
53    Out.Int (SYSTEM.VAL(SHORTINT,SYSTEM.ROT(b, 2)), 12);
54    Out.Ln;
55
56    Out.Ln;
57
58    i8 := 2;
59    Out.Int (SYSTEM.ROT(i8, 0), 12);
60    Out.Int (SYSTEM.ROT(i8, -1), 12);
61    Out.Int (SYSTEM.ROT(i8, -2), 12);
62    Out.Ln;
63
64    i16 := 2;
65    Out.Int (SYSTEM.ROT(i16, 0), 12);
66    Out.Int (SYSTEM.ROT(i16, -1), 12);
67    Out.Int (SYSTEM.ROT(i16, -2), 12);
68    Out.Ln;
69
70    i32 := 2;
71    Out.Int (SYSTEM.ROT(i32, 0), 12);
72    Out.Int (SYSTEM.ROT(i32, -1), 12);
73    Out.Int (SYSTEM.ROT(i32, -2), 12);
74    Out.Ln;
75
76    c8 := 2X;
77    Out.Int (ORD(SYSTEM.ROT(c8, 0)), 12);
78    Out.Int (ORD(SYSTEM.ROT(c8, -1)), 12);
79    Out.Int (ORD(SYSTEM.ROT(c8, -2)), 12);
80    Out.Ln;
81
82    c16 := 2X;
83    Out.Int (ORD(SYSTEM.ROT(c16, 0)), 12);
84    Out.Int (ORD(SYSTEM.ROT(c16, -1)), 12);
85    Out.Int (ORD(SYSTEM.ROT(c16, -2)), 12);
86    Out.Ln;
87
88    c32 := 2X;
89    Out.Int (ORD(SYSTEM.ROT(c32, 0)), 12);
90    Out.Int (ORD(SYSTEM.ROT(c32, -1)), 12);
91    Out.Int (ORD(SYSTEM.ROT(c32, -3)), 12); (* avoid overflow *)
92    Out.Ln;
93
94    b := SYSTEM.VAL(SYSTEM.BYTE, 2);
95    Out.Int (SYSTEM.VAL(SHORTINT,SYSTEM.ROT(b, 0)), 12);
96    Out.Int (SYSTEM.VAL(SHORTINT,SYSTEM.ROT(b, -1)), 12);
97    Out.Int (SYSTEM.VAL(SHORTINT,SYSTEM.ROT(b, -2)), 12);
98    Out.Ln;
99  END Test;
100
101END Rot1.
102