t_bytebuf.mod 612 B

123456789101112131415161718192021222324
  1. MODULE TByteBuf;
  2. (* gm2 compatibility: a scalar actual for an ARRAY OF BYTE formal is
  3. wrapped as a stack byte-buffer descriptor, so HIGH = SIZE(actual)-1
  4. for value formals, and a VAR formal accepts a scalar too. *)
  5. FROM SYSTEM IMPORT BYTE;
  6. VAR ExitCode : INTEGER;
  7. PROCEDURE bytes (b : ARRAY OF BYTE; s : CARDINAL);
  8. BEGIN
  9. IF HIGH(b) = s - 1 THEN INC(ExitCode, 20) END
  10. END bytes;
  11. PROCEDURE vbytes (VAR b : ARRAY OF BYTE);
  12. BEGIN
  13. IF HIGH(b) >= 0 THEN INC(ExitCode, 22) END
  14. END vbytes;
  15. VAR i : INTEGER; c : CHAR;
  16. BEGIN
  17. ExitCode := 0;
  18. bytes(i, SIZE(i));
  19. bytes(c, SIZE(c));
  20. vbytes(i)
  21. END TByteBuf.