MODULE TLibc2; // Typed libc prototypes: printf is a varargs function whose result may // be used or discarded (statement position); malloc/memset/write have // real signatures. Exit 42. FROM libc IMPORT printf, malloc, memset, write; FROM SYSTEM IMPORT ADDRESS, ADR; VAR ExitCode, n, w : INTEGER; VAR p : ADDRESS; VAR buf : ARRAY [0..7] OF CHAR; BEGIN n := printf(""); p := malloc(16); IF p = NIL THEN ExitCode := 1 ELSE p := memset(p, 0, 16); buf[0] := 'x'; buf[1] := CHR(0); w := write(1, ADR(buf), 0); printf(""); (* statement: result discarded *) IF (n = 0) AND (w = 0) AND (p # NIL) AND (buf[0] = 'x') THEN ExitCode := 42 ELSE ExitCode := 2 END END END TLibc2.