Configuring post for incremental macros

The use of Fanuc's G91 in a macro is an example of incremental macro programming.

Note: The coordinate for the relative moves are preceded by the @ symbol so that only the relative distance is output.
Rapid move format
<IF><IS-INC-MAC><THEN>
[#]{N<SEQ>}{<MOTION>}{X<@X-COORD>}{Y<@Y-COORD>}<EOB>
<ENDIF>
<IFNOT><IS-INC-MAC><THEN>
[#]{N<SEQ>}{<MOTION>}{X<X-COORD>}{Y<Y-COORD>}<EOB>
<ENDIF>
Linear move format
{N<SEQ>}{<MOTION>}{<COMP-STAT>}
<IF><COMP-START><THEN>
[#]D<COMP-NUM>
<ENDIF>
<IF><IS-INC-MAC><THEN>
[#]{X<@X-COORD>}{Y<@Y-COORD>}{Z<@Z-COORD>}{F<FEED>}<EOB>
<ENDIF>
<IFNOT><IS-INC-MAC><THEN>
[#]{X<X-COORD>}{Y<Y-COORD>}{Z<Z-COORD>}{F<FEED>}<EOB>
<ENDIF>
Circular move format
{N<SEQ>}{<PLANE>}{<MOTION>
<IF><XY-PLANE><THEN>
[#]<IF><IS-INC-MAC><THEN>
[#]X<@X-COORD>Y<@Y-COORD>{Z<@Z-COORD>}I<ARC-X>J<ARC-Y>
[#]<ENDIF>
[#]<IFNOT><IS-INC-MAC><THEN>
[#]X<X-COORD>Y<Y-COORD>{Z<Z-COORD>}I<ARC-X>J<ARC-Y>
[#]<ENDIF>
<ENDIF>
<IF><ZX-PLANE><THEN>
[#]<IF><IS-INC-MAC><THEN>
[#]Z<@Z-COORD>X<@X-COORD>{Y<@Y-COORD>}K<ARC-Z>I<ARC-X>
[#]<ENDIF>
[#]<IFNOT><IS-INC-MAC><THEN>
[#]Z<Z-COORD>X<X-COORD>{Y<Y-COORD>}K<ARC-Z>I<ARC-X>
[#]<ENDIF>
<ENDIF>
<IF><YZ-PLANE><THEN>
[#]<IF><IS-INC-MAC><THEN>
[#]Y<@Y-COORD>Z<@Z-COORD>{X<@X-COORD>}J<ARC-Y>K<ARC-Z>
[#]<ENDIF>
[#]<IFNOT><IS-INC-MAC><THEN>
[#]Y<Y-COORD>Z<Z-COORD>{X<X-COORD>}J<ARC-Y>K<ARC-Z>
[#]<ENDIF>
<ENDIF>
{F<FEED>}<EOB>
Open macro format
:<PROG-NAME><MACRO#><EOB>
<IF><IS-INC-MAC><THEN>
[#]{N<SEQ>}G91<EOB>
<ENDIF>
Close macro format
<IF><IS-INC-MAC><THEN>
[#]{N<SEQ>}G90<EOB>
<ENDIF>
{N<SEQ>}M99<EOB>
Z rapid move format
<IF><IS-INC-MAC><THEN>
[#]{N<SEQ>}{<MOTION>}{Z<@Z-COORD>}<EOB>
<ENDIF>
<IFNOT><IS-INC-MAC><THEN>
[#]{N<SEQ>}{<MOTION>}{Z<Z-COORD>}<EOB>
<ENDIF>