The output from put/2 is buffered first, and is only output to the stream when the output is flushed (e.g. using flush/1).
ASCII codes for the non-printable characters (i.e. control characters) are also acceptable.
Success:
      [eclipse]: put(output, 0'a).
      a
      yes.
      [eclipse]: sh('cat file1').
      a
      yes.
      [eclipse]: open(file1,read,s1),
      >        open(file2,write,s2),repeat,
      > (at_eof(s1)->!,
      >             flush(s2),
      >             close(s1),close(s2)
      >            ;
      >             get(s1,Char),
      >             put(s2,Char),
      >             fail).
      Char = _g72
      yes.
      [eclipse]: sh('cat file2').
      a
      yes.
Error:
      put(output,A).             (Error 4).
      put(Stream,98).            (Error 4).
      put(output, '98').         (Error 5).
      put(output, 98.0).         (Error 5).
      put("string" A).           (Error 5).
      put(11,97).                (Error 192). % stream not open
      put(atom,97).              (Error 193).