PLtoTF change file for VM/CMS and MVS.
Copyright (C) 1984 by David Fuchs.  All rights are reserved.

@x
@d banner=='This is PLtoTF, Version 2.3' {printed when the program starts}
@y
@d banner=='This is PLtoTF, VM/CMS Version 2.3' {printed when program starts}
@z

@x
@!tfm_file:packed file of 0..255;
@y
@!tfm_file:packed file of block;
@!tfm_count:0..CMS_block_length; {where the next byte goes}
@z

@x
@d out(#)==write(tfm_file,#)
@y
@d out(#)==begin
  if tfm_count=CMS_block_length then begin
    put(tfm_file); tfm_count:=0; end;
  tfm_file@@(.tfm_count.):=#;
  incr(tfm_count);
  end
@d flush_tfm==begin
  while tfm_count<CMS_block_length do begin
    tfm_file@@(.tfm_count.):=0; incr(tfm_count); end;
  put(tfm_file);
  end
@<Set init...@>==
tfm_count:=0;
@z

@x
end.
@y
flush_tfm;
end.
@z

@x
This section should be replaced, if necessary, by changes to the program
that are necessary to make \.{PLtoTF} work at a particular installation.
It is usually best to design your change file so that all changes to
previous sections preserve the section numbering; then everybody's version
will be consistent with the printed program. More extensive changes,
which introduce new sections, can be inserted here; then only the index
itself will get a new section number.
@y
Here are the remaining changes to the program
that are necessary to make \.{PLtoTF} work on VM/CMS.

@ Here's the extra stuff we need for buffering the |tfm_file|.
@<Const...@>==
@!CMS_block_length=1024;

@ @<Types...@>==
@!block=packed array (.0..CMS_block_length-1.) of packed 0..255;

@z