A transaction consists of several statements. Statements are separated by semicolons and can be empty.
StatSeq = Stat { ";" Stat }.dcltrans
  transaction TInit
  var
    bOk: boolean;
  begin
    write("initializing..."); writeln;
    bOk := InitBuffer(512);
    if bOk then
      writeln("successfully initialized")
    else
      writeln("failure")
    end
  end TInit;initializing... successfully initialized