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