MODULO Bufro[1]; EKSPORTO deponu, elprenu; IMPORTO atendu, evento, okazigu, pretigu, subtipo; KONST lon = 256; (* la bufrolongo *) VAR n: [0 .. lon]; (* la nombro de deponitaj datumoj *) neplena, nemalplena: evento; al, de: [0 .. lon - 1]; (* la pozicimontriloj *) buf: TABELO [0 .. lon - 1] EL subtipo; PROCEDURO deponu(x: subtipo); STARTO n := n + 1; SE n › lon TIAM atendu(neplena) FINO; buf[en] := x; en := (en + 1) MOD lon; SE n ≤ 0 TIAM okazigu(nemalplena) FINO; FINO deponu; PROCEDURO elprenu(VAR x:subtipo); STARTO n := n - 1; SE n < 0 TIAM atendu(nemalplena) FINO; x := buf[de]; de := (de + 1) MOD lon; SE n ≥ lon TIAM okazigu(neplena) FINO; FINO elprenu; STARTO (* la komencvalorizoj: *) n:=0; en:=0; de:=0; pretigu(neplena); pretigu(nemalplena); FINO Bufro.