Adding fflush capabilities. It is sometimes usefull when debuging the compiler...
PROGRAM MAIN_TEST
VAR
QX1 AT %QX1 : BOOL := 1;
QX2 AT %QX2 : BOOL := 0;
QX3 AT %QX3 : BOOL;
IX1 AT %IX1 : BOOL;
IX2 AT %IX2 : BOOL;
IX3 AT %IX3 : BOOL;
END_VAR
INITIAL_STEP GO:
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
STEP STEP1:
ONSTEP1(N);
END_STEP
ACTION ONSTEP1:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
TRANSITION FROM STEP1 TO STEP2
:= IX2 = TRUE;
END_TRANSITION
STEP STEP2:
INLINE1(P);
END_STEP
ACTION INLINE1:
QX1 := QX2 XOR QX1; QX2 := NOT QX2;
END_ACTION
TRANSITION FROM STEP2 TO A1
:= QX1 = FALSE AND QX2 = FALSE;
END_TRANSITION
STEP A1:
INLINE2(N);
END_STEP
ACTION INLINE2:
IX1 := TRUE;
END_ACTION
TRANSITION FROM A1 TO STEP2
:= IX1 = TRUE;
END_TRANSITION
TRANSITION FROM STEP2 TO (D1, D2, D3)
:= QX1 = TRUE AND QX2 = TRUE;
END_TRANSITION
STEP D1:
INLINE5(N);
END_STEP
ACTION INLINE5:
QX1 := FALSE;
END_ACTION
TRANSITION FROM D1 TO E1
:= NOT ( QX1 OR QX2 OR QX3 );
END_TRANSITION
STEP E1:
INLINE8(N);
END_STEP
ACTION INLINE8:
QX1 := TRUE;
END_ACTION
TRANSITION FROM (E1, E2, E3) TO GO
:= QX1 AND QX2 AND QX3;
END_TRANSITION
STEP D2:
INLINE6(N);
END_STEP
ACTION INLINE6:
QX2 := FALSE;
END_ACTION
TRANSITION FROM D2 TO E2
:= NOT ( QX1 OR QX2 OR QX3 );
END_TRANSITION
STEP E2:
INLINE9(N);
END_STEP
ACTION INLINE9:
QX2 := TRUE;
END_ACTION
STEP D3:
INLINE7(N);
END_STEP
ACTION INLINE7:
QX2 := FALSE;
END_ACTION
TRANSITION FROM D3 TO E3
:= NOT ( QX1 OR QX2 OR QX3 );
END_TRANSITION
STEP E3:
INLINE10(N);
END_STEP
ACTION INLINE10:
QX3 := TRUE;
END_ACTION
TRANSITION FROM STEP2 TO A3
:= QX1 = TRUE AND QX2 = FALSE;
END_TRANSITION
STEP A3:
INLINE4(N);
END_STEP
ACTION INLINE4:
IX1 := TRUE;
END_ACTION
TRANSITION FROM A3 TO STEP2
:= IX1 = TRUE;
END_TRANSITION
TRANSITION FROM STEP2 TO A2
:= QX1 = FALSE AND QX2 = TRUE;
END_TRANSITION
STEP A2:
INLINE3(N);
END_STEP
ACTION INLINE3:
IX1 := FALSE;
END_ACTION
TRANSITION FROM A2 TO STEP2
:= IX1 = FALSE;
END_TRANSITION
END_PROGRAM
CONFIGURATION STD_CONF
RESOURCE STD_RESSOURCE ON BEREMIZ
TASK STD_TASK(INTERVAL := t#100ms,PRIORITY := 0);
PROGRAM MAIN_INSTANCE : MAIN_TEST;
END_RESOURCE
END_CONFIGURATION