IMPLEMENTATION MODULE CE; (*DEE 2014-08-06/2015-12-02/2022-09-23*) FROM ST IMPORT putc; FROM STchars IMPORT LETZ, character; FROM STutility IMPORT min; PROCEDURE isrep(c: character): BOOLEAN; BEGIN RETURN (c >= FIRSTREP) AND (c <= LETZ) END isrep; (* putrep: put out representation of run of n 'c's *) PROCEDURE putrep(n: INTEGER; c: character); VAR m: INTEGER; CONST MAXREP = 73; (* Assuming ISO 646 '1'..'z' *) THRESH = 4; BEGIN WHILE (n >= THRESH) OR ((c = WARNING) & (n > 0)) DO putc(WARNING); putc(min(n, MAXREP) - 1 + FIRSTREP); putc(c); n := n - MAXREP END; FOR m := n TO 1 BY -1 DO putc(c) END END putrep; END CE.