packages icon
     This is a PL/M to C converter.  It will take most PL/M code and do a nice
job of converting it to C.  It tries to be intelligent about leaving formatting
and comments intact.  This version supports PL/M-286.  It is something I wrote
about a year ago to convert several meg of source code, and it did a 99.5%
conversion.  I was later handed some source code that it crashed on, and I
extended it to support that code too.
     Please keep in mind that this may well not work for your code.  It has
been tested only on a few sets of code, each following its own set of coding
standards.  Also, don't expect a lot of support from me, as my interest in
PL/M is next to none.  I no longer work for the employer for whom I wrote
this converter, but they have given me permission to own and post the sources.
I will, time permitting, collect bug fixes and post patches to the software.
Please mail fixes directly to me, as I may miss any posting of them.  If
anyone is interested in taking over maintenance of this code, please let me
     The source code compiles under Unix.  I've compiled it on a Sun-4, a VAX
running Ultrix, and a VAX running Mt. Xinu.  At one time I had a version that
ran under MSDOS, but I can't guarantee it will now.  I've included a makefile
for use with Turbo-C.  You need to define IBMPC to compile it.  What it could
really use is tuning for a large memory model, as in it's present state, it
can only handle small source files.  It could also benefit from a good man
     The converter expects source code to be in "proper" format (i.e. proper
use of EXTERNAL declarations, and following of the Intel PL/M grammar as the
converter knows it.)  It has some moderate error-recovery, but may well dump
core if it expects one thing and gets another.
     I've included a garbage file test.plm; typeing "plm2c test.plm" should
result in a test.c file that is identical to the provided test.c.out.
     See the file CAVEATS.DOC for compatibility issues.

     Hope you find it useful!

     Robert Ankeney
     April 9, 1991