module BasicStatements { function f_BasicFlat() { var integer v_s1; var integer v_s2 := 1; var integer v_s3; var integer v_s4; var integer v_s5; v_s1 := f_F1() + v_s2; //v_s3 no, v_s4 does not matter, what about inout f_F2(v_s3, v_s4); //v_s1 assumed yes, v_s3 no, v_s4 assumed yes? v_s5 := v_s1 + v_s3 + v_s4; } function f_BasicConditional() { var integer v_s1; var integer v_s2 := 1; var integer v_s3; var integer v_s4; var integer v_s5; v_s1 := f_F1() + v_s2; //v_s3 no, v_s4 does not matter, what about inout if (f_F2(v_s3, v_s4) != 1) { //something } //v_s1 assumed yes, v_s3 no, v_s4 assumed yes? v_s5 := v_s1 + v_s3 + v_s4; v_s5 := v_s1[1] } function f_F1 () return integer { var integer v_s0; var integer v_s1:=1; //v_s0 no return v_s0 + v_s1; } function f_F2 (in integer p_S1, out integer p_S2) { //p_S1 shall be fine var integer v_s2:=p_S1; //p_S2 shall be disallowed var integer v_s3:=p_S2; p_S2 := v_s2 + v_s3; } }