The PLM2C® family of software translator tools convert existing PL/M programs to C. The powerful dual conversion PLM2C® translators accept PL/M programs in numerous dialects, check their syntax, analyze the syntax tree and generate C source code. Comments are moved transparently from the source file to the target file. Any built-in functions for math, string manipulation, and I/O in PL/M are converted to calls to external procedure. (to see sample translation) The translator family currently supports the following PL/M dialects: For other dialects or custom translation, please contact us for a price quote.
Dialect type 1: PL/M 51
Dialect type 2: PL/M 80
Dialect type 3: PL/M 86
Dialect type 4: PL/M 96
Dialect type 5: PL/M 186
Dialect type 6: PL/M 286
Dialect type 7: PL/M 386
ORDER: PLM2C type x ( select one from above)
The PLM2C® translators contain a syntax analyzer, a PL/M to tertiary converter, and a tertiary to C converter. The syntax analyzer scans the PL/M input file for syntactic errors and generates a listing file of the PL/M program. Any syntactic errors will be flagged with detailed English messages in the listing file. If no errors are encountered, then the PL/M input file is converted to tertiary language.
The transfer of the PL/M source language into an intermediate tertiary language ensures the logical equivalence between the source and target languages. This tertiary language is common to the entire family of our translators. The tertiary language is automatically converted to C while maintaining the logical equivalence between the output C program and the input PL/M program.
RESERVED WORDS (PLM2C®):
ADDRESS,, AND, AT, BASED, BY, BYTE, CALL, CASE, CAUSEINTERRUPT, DATA, DECLARE, DISABLE, DO, DWORD, ELSE, ENABLE, END, EOF, EXTERNAL, GO, GOTO, HALT, IF, INITIAL, INTEGER, INTERRUPT, LABEL, LITERALLY, MINUS, MOD, NOT, OR, PLUS, POINTER, PROCEDURE, PUBLIC, REAL, REENTRANT, RETURN, SELECTOR, STRUCTURE, THEN, TO, WHILE, WORD, XOR
PRE-DECLARED IDENTIFIERS (PLM2C®):
ABS, ADJUSTRPL, BLOCKINPUT, BLOCKINWORD, BLOCKOUTPUT, BLOCKOUTWORD, BUILDPTS, CARRY, CLEARTASKSWITCHEDFLAG, HIGH, IABS, INREALATHUNIT, INT, INWORD, LAST, LOCALTABLE, LOCKSET, CMPB, CMPW, DEC, DOUBLE, FIND, FINDRB, FINDRW, FINDW, FIX, FLAGS, FLOAT, GETACCESSRIGHTS, GETREALERROR, GETSEGMENTLIMIT, RESTOREREALSTATUS, RESTOREINTERRUPTTABLE, ROL, ROR, SAL, SAR, SAVEGLOBALTABLE, SAVEINTERUPTTABLE, SAVEREALSTATUS, SCL, SCR, SEGMENTREADABLE, SEGMENTWRITABLE, SELECTOROF, SETB, SETW, LENGTH, LOW, MACHINESTATUS, MOVB, MOVE, MOVRB, MOVRW, MOVW, NIL, OFFSETOF, OUTPUT, OUTRD, PARITY, RESTOREGLOBALTABLE, SHL, SHR, SIGNED, SIZE, SKIPB, SKIPRB, SKIPRW, SKIPW, STACKBASE, STACKPTR, TASKREGISTER, TIME, UNSIGN, XLAT, ZERO