Added double curly braces for pragma (kept single curly braces for compatibility). Added macro def and undef surrounding pragma to simplify user code. Moved useless comment from generated code back to code generator.
FUNCTION_BLOCK DELAY (* N-sample delay *)
VAR_INPUT
RUN : BOOL ; (* 1 = run, 0 = reset *)
XIN : REAL ;
N : INT (* 0 <= N < 128 or manufacturer- *)
END_VAR (* specified maximum value *)
VAR_OUTPUT XOUT : REAL; END_VAR (* Delayed output *)
VAR X : ARRAY [0..127] (* N-Element queue *)
OF REAL; (* with FIFO discipline *)
I, IXIN, IXOUT : INT := 0;
END_VAR
IF RUN THEN IXIN := MOD(IXIN + 1, 128) ; X[IXIN] := XIN ;
IXOUT := MOD(IXOUT + 1, 128) ; XOUT := X[IXOUT];
ELSE XOUT := XIN ; IXIN := N ; IXOUT := 0;
FOR I := 0 TO N DO X[I] := XIN; END_FOR;
END_IF ;
END_FUNCTION_BLOCK