/* * module trying to show all features of the language */ module test1; const // integer constant N, M : integer = 20; O : integer = N; C : character = 'A'; // boolean constant INIT_STATE : boolean = true; // string constant S : array 10 of character = "hello"; var // this is an integer a : integer; // this is also an integer b : integer; c : integer; // c too d, e, f : integer; flag : boolean; i : integer; j : character := C; s : array 10 of character := S; s1 : array 10 of character; s2 : array 10 of character := "hello"; a1 : array 10 of integer; procedure B( n : integer, m : integer, f : boolean ); procedure A; const N : integer = 10; S : array N of character = "local"; var s : array N of character := S; begin a1[5] := 43; s[0] := 'L'; B( a1[5], 7, true ); end procedure B( n : integer, m : integer, f : boolean ); var x : integer; begin if( f ) { x := n + m; a1[4] := x; } end begin a := 1; b := 7; c := N; // c should be 20 a := b; // a should be 7 a := a + 1; // a should be 8 now d := a * c + b; // d should be 8 * 20 + 7 = 167 (A7 hex) d := a * ( c + b ); // d should be 8 * ( 20 + 7 ) = 216 (D8 hex) e := ( ( 7 * a + b ) + 2 * ( b + a + 3 ) ) * 4 div 2; // ((7*8+7)+2*(7+8+3))*4/2=198 (C6 hex) f := a - b; // should be 8-7=1 flag := INIT_STATE; // should be false flag := a = b; // flag should be false //flag := a <> b; // flag should be true //flag := a < b; // flag should be false //flag := a <= b; // flag should be false //flag := a > b; // flag should be true //flag := a >= b; // flag should be false if flag do a := 9; else a := 8; end; i := 0; while ( i < 10 ) and not flag do i := i + 1; end; j := 'B'; s1[0] := ' '; s[0] := 'X'; s[1] := s[0]; j := s[2]; i := 0; while i < 10 do a1[i] := i; //s2[i] := 'A' + i; i := i + 1; end; a1[3] := 42; s2[a1[2]] := 'Z'; A; B( 1, 2, false ); end