O pós processador é como um motor que gera um trabalho - ele usa um arquivo - normalmente em formato texto - que contém todas as informações de como aquele determinado desenho deve ser transformado em comandos de máquinas para "aquele" determinado comando - seja Mach3, EMC², Fanuc etc.
O pós processador é parte integrante de um programa de conversão de arquivos - este usa apenas as ordens contidos num documento - seja em formato texto ou em outro formato qualquer...
Anexo um exemplo de arquivo texto de um pós processador de ArtCam para Mach3 (mm) - veja que são informações em formato texto que contém comandos e ordens específicas para o ArtCam saber o que fazer...
;
; Fanuc G - Code 4-Axis rotary post processor
;
; Linear Y Axis is wrapped onto A rotary axis
;
; History
;
; Who When What
; === ======== ========================================
; TM 04/07/95 Written
; BEM 06/08/96 Modified for Rotary Axis support
; BEM 19/06/00 Fixed
; BEM 03/02/00 Added description
; JVG 27/10/03 Modified for Mach2 controller, Wolverine3 or Elite6 machines
; JVG 12/12/03 Modified for Mach2 3axis machining
; JVG Feb 23 05 Small modifications with Bill P
DESCRIPTION = "Mach2 mm(*.cnc)"
;
FILE_EXTENSION = "cnc"
;
UNITS = MM
;
;
; Cariage return - line feed at end of each line
;
END_OF_LINE = "[13][10]"
;
; Block numbering
;
LINE_NUM_START = 0
LINE_NUM_INCREMENT = 1
LINE_NUM_MAXIMUM = 999999
;
; Set up default formating for variables
;
; Line numbering
FORMAT = [N|@|N|1.0]
; Spindle Speed
FORMAT = [S|@|S|1.0]
; Feed Rate
FORMAT = [F|#|F|1.0]
; Tool moves in x,y and z
FORMAT = [X|#|X|1.3]
FORMAT = [Y|#|Y|1.3]
FORMAT = [Z|#|Z|1.3]
; Home tool positions
FORMAT = [XH|@|X|1.3]
FORMAT = [YH|@|Y|1.3]
FORMAT = [ZH|@|Z|1.3]
;
; Set up program header
;
START = "%"
START = "G90"
;START = "G21"
; G20 = Use MM as unit value
START = "G49"
;START = "M6 T1"
; M6T1 = tool change via macros (commented out)
START = "M3 [S]"
;START = "M7"
; M7 = turn misting coolant on (commented out)
;
; Program moves
;
FIRST_RAPID_RATE_MOVE = "G0 [X] [Y] [Z]"
FIRST_FEED_RATE_MOVE = "G1 [X] [Y] [Z] [F]"
FEED_RATE_MOVE = "[X] [Y] [Z]"
;
; End of file
;
END = "G0[ZH]"
END = "[XH][YH]"
END = "M05"
END = "M02"
END = "%"
Em anexo outro exemplo de arquivo em formato texto só que desta vez para o RhinoCam gerar arquivos para o Mach3 - o arquivo é do VisualMill, empresa que foi comprada pela Bob McNeil, dono do Rhinoceros ...
//This file is Visual Mill Post-Processor Macro File
//**************************************************************************************************
// Created by Post-Processor Generator
//**************************************************************************************************
//--------------------------------------------------------------------------------------------------
// INFORMATION SECTION
//--------------------------------------------------------------------------------------------------
INFORMATION_Version = 3.000
INFORMATION_MacroVersion = 1.020
//--------------------------------------------------------------------------------------------------
// GENERAL DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
GENERAL_Extension = .TXT
GENERAL_StartReadingChar =
GENERAL_StopReadingChar =
GENERAL_UseSequencNo = 1
GENERAL_PrefixLetter = N
GENERAL_Increment = 10
GENERAL_SequenceStartNo = 10
GENERAL_ShowLeadingZeros = 0
GENERAL_LeadingZerosNumOfDigit = 4
GENERAL_Mode = 0
GENERAL_AbsCode = G90
GENERAL_IncCode = G91
GENERAL_AbsCenterCode = G92
GENERAL_Units = 0
GENERAL_InchCode = G20
GENERAL_MetricCode = G21
GENERAL_ModalGCode = 0
GENERAL_ModalXYZ = 1
GENERAL_ModalFeedrate = 1
GENERAL_ModalSpindle = 1
GENERAL_Delimiter = 1
GENERAL_UserDefinedDelimiter = ,
GENERAL_EndBlockCharacter =
GENERAL_OutputPlusSign = 0
GENERAL_CommentOutput = 1
GENERAL_CommentStartChar = (
GENERAL_CommentEndChar = )
GENERAL_CommentSequenceMode = 1
GENERAL_XRegister = X
GENERAL_YRegister = Y
GENERAL_ZRegister = Z
//--------------------------------------------------------------------------------------------------
// MOTION DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
MOTION_BlockPrefix =
MOTION_LinearMotionCode = G01
MOTION_RapidMotionCode = G00
MOTION_BlockPostfix =
MOTION_Order = 0
MOTION_RapidFormat = 1
MOTION_ScaleFactorX = 1.000000
MOTION_ScaleFactorY = 1.000000
MOTION_ScaleFactorZ = 1.000000
MOTION_NumOfDecimalPlaces = 4
MOTION_LinearBlock = [G_CODE][DELIMITER][NEXT_X][DELIMITER][NEXT_Y][DELIMITER][NEXT_Z]
MOTION_ShowMotionTrailingZeros = 1
MOTION_RapidBlockStart
[G_CODE][DELIMITER][NEXT_Z]
[NEXT_X][DELIMITER][NEXT_Y]
MOTION_RapidBlockEnd
//--------------------------------------------------------------------------------------------------
// CIRCLE DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
CIRCLE_ClockwiseArcCode = G02
CIRCLE_CClockwiseArcCode = G03
CIRCLE_XYPlaneCode = G17
CIRCLE_YZPlaneCode = G19
CIRCLE_ZXPlaneCode = G18
CIRCLE_BlockXYStart
[CIR_PLANE]
[G_CODE][DELIMITER][NEXT_X][DELIMITER][NEXT_Y][DELIMITER][NEXT_Z][DELIMITER][NEXT_I][DELIMITER][NEXT_J]
CIRCLE_BlockXYEnd
CIRCLE_BlockZXStart
[CIR_PLANE]
[G_CODE][DELIMITER][NEXT_X][DELIMITER][NEXT_Y][DELIMITER][NEXT_Z][DELIMITER][NEXT_I][DELIMITER][NEXT_K]
CIRCLE_BlockZXEnd
CIRCLE_BlockYZStart
[CIR_PLANE]
[G_CODE][DELIMITER][NEXT_X][DELIMITER][NEXT_Y][DELIMITER][NEXT_Z][DELIMITER][NEXT_J][DELIMITER][NEXT_K]
CIRCLE_BlockYZEnd
CIRCLE_ArcCenterCoordinate = 0
CIRCLE_Modal = 0
CIRCLE_Format = 1
CIRCLE_SwitchPlanes = 0
CIRCLE_LimitArcs = 0
CIRCLE_LimitAngle = 180.000000
CIRCLE_IRegister = I
CIRCLE_JRegister = J
CIRCLE_KRegister = K
CIRCLE_RRegister = R
//--------------------------------------------------------------------------------------------------
// HELIXSPIRAL DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
HELIXSPIRAL_ClockwiseArcCodeHelix =
HELIXSPIRAL_CClockwiseArcCodeHelix =
HELIXSPIRAL_ClockwiseArcCodeSpiral =
HELIXSPIRAL_CClockwiseArcCodeSpiral =
HELIXSPIRAL_BlockXYHelixStart
HELIXSPIRAL_BlockXYHelixEnd
HELIXSPIRAL_BlockZXHelixStart
HELIXSPIRAL_BlockZXHelixEnd
HELIXSPIRAL_BlockYZHelixStart
HELIXSPIRAL_BlockYZHelixEnd
HELIXSPIRAL_BlockXYSpiralStart
HELIXSPIRAL_BlockXYSpiralEnd
HELIXSPIRAL_BlockZXSpiralStart
HELIXSPIRAL_BlockZXSpiralEnd
HELIXSPIRAL_BlockYZSpiralStart
HELIXSPIRAL_BlockYZSpiralEnd
//--------------------------------------------------------------------------------------------------
// 4AXIS MOTION DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
GENERALMOTION_ClockwiseRotation = +
GENERALMOTION_CClockwiseRotation = -
GENERALMOTION_Aaxis = A
GENERALMOTION_Baxis = B
GENERALMOTION_Caxis = C
GENERALMOTION_ScaleFactor = 57.295779513082
GENERALMOTION_ShowTrailingZeros = 1
GENERALMOTION_NumOfDecimalPlaces = 3
GENERALMOTION_LinearBlockStart
[LINEAR][NEXT_X][NEXT_Y][NEXT_Z][ROTATION_AXIS][ROTATION_DIR][ANGLE][FEEDRATE_CODE][ROTATION_FEEDVALUE]
GENERALMOTION_LinearBlockEnd
GENERALMOTION_RapidBlockStart
[RAPID][NEXT_X][NEXT_Y][NEXT_Z][ROTATION_AXIS][ROTATION_DIR][ANGLE][FEEDRATE_CODE][ROTATION_FEEDVALUE]
GENERALMOTION_RapidBlockEnd
//--------------------------------------------------------------------------------------------------
// SPINDLE DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
SPINDLE_BlockPrefix =
SPINDLE_Code = S
SPINDLE_BlockPostfix =
SPINDLE_ClockwiseRotationCode = M03
SPINDLE_CClockwiseRotationCode =
SPINDLE_OffCode = M05
SPINDLE_HighValue = 10000.000000
SPINDLE_LowValue = 1.000000
SPINDLE_ScaleFactor = 1.000000
SPINDLE_NumOfDecimalPlaces = 0
SPINDLE_Block = [SPINDLE_CODE][SPINDLE_SPD][DELIMITER][SPINDLE_ARC]
SPINDLE_ShowSpindleTrailingZeros = 0
//--------------------------------------------------------------------------------------------------
// FEEDRATE DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
FEEDRATE_BlockPrefix =
FEEDRATE_Code = F
FEEDRATE_BlockPostfix =
FEEDRATE_HighValue = 20.000000
FEEDRATE_LowValue = 0.500000
FEEDRATE_ScaleFactor = 1.000000
FEEDRATE_NumOfDecimalPlaces = 1
FEEDRATE_Block = F[FEEDRATE]
FEEDRATE_OutputPlace = 1
FEEDRATE_ShowTrailingZeros = 1
FEEDRATE_FeedScaleFactor = 1.000000
FEEDRATE_FeedShowTrailingZeros = 0
FEEDRATE_FeedNumOfDecimalPlaces = 1
FEEDRATE_ZScaleFactor = 1.000000
//--------------------------------------------------------------------------------------------------
// MISCELLANEOUS DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
MISCELLANEOUS_CoolantOff = M09
MISCELLANEOUS_CoolantOn = M07
MISCELLANEOUS_CoolantMist = M07
MISCELLANEOUS_CoolantFlood = M08
MISCELLANEOUS_CoolantThru =
MISCELLANEOUS_CoolantTap =
MISCELLANEOUS_CompensationOff = G40
MISCELLANEOUS_CompensationLeft = G41
MISCELLANEOUS_CompensationRight = G42
MISCELLANEOUS_CompensationLength = G43
//--------------------------------------------------------------------------------------------------
// STARTUP DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
STARTUP_ProgramCodeStart
[SEQ_PRECHAR][SEQNUM][DELIMITER][OUTPUT_UNITS_CODE]
[SEQ_PRECHAR][SEQNUM][DELIMITER]G0[DELIMITER]G17[DELIMITER]G40[DELIMITER]G49[DELIMITER]G80[DELIMITER][OUTPUT_MODE_CODE]
[SEQ_PRECHAR][SEQNUM][DELIMITER]G61(CONSTANT CONTOUR OFF OR TURN ON W/G64)
STARTUP_ProgramCodeEnd
//--------------------------------------------------------------------------------------------------
// TOOLCHANGE DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
TOOLCHANGE_AdjustRegister = H
TOOLCHANGE_FirstMacroStart
[SEQ_PRECHAR][SEQNUM][DELIMITER]T[TOOL_NUM][DELIMITER]M6
[SEQ_PRECHAR][SEQNUM][DELIMITER]G43[DELIMITER][TOOL_ADJST_REG]
TOOLCHANGE_FirstMacroEnd
TOOLCHANGE_MacroStart
[SEQ_PRECHAR][SEQNUM][DELIMITER]T[TOOL_NUM][DELIMITER]M6
[SEQ_PRECHAR][SEQNUM][DELIMITER]G43[DELIMITER][TOOL_ADJST_REG]
TOOLCHANGE_MacroEnd
TOOLCHANGE_CutComLeftStart
TOOLCHANGE_CutComLeftEnd
TOOLCHANGE_CutComRightStart
TOOLCHANGE_CutComRightEnd
TOOLCHANGE_CutComOffStart
TOOLCHANGE_CutComOffEnd
//--------------------------------------------------------------------------------------------------
// CYCLES DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
CYCLES_DrillDwell = G82
CYCLES_DrillNoDwell = G81
CYCLES_Deep = G83
CYCLES_BreakChip = G73
CYCLES_CounterSink =
CYCLES_TapClockwise = G84
CYCLES_TapCClockwise = G74
CYCLES_BoreDragDwell = G89
CYCLES_BoreDragNoDwell = G85
CYCLES_BoreNoDragDwellOrient = G76
CYCLES_BoreNoDragDwellNoOrient = G86
CYCLES_BoreNoDragNoDwellOrient = G76
CYCLES_BoreNoDragNoDwellNoOrient = G86
CYCLES_BoreManualDwell = G87
CYCLES_BoreManualNoDwell = G87
CYCLES_BoreReverseDwell = G88
CYCLES_BoreReverseNoDwell = G88
CYCLES_CycleOff = G80
CYCLES_RigidTapClockwise = T00
CYCLES_RigidTapCClockwise = T01
CYCLES_UDDrill01 =
CYCLES_UDDrill02 =
CYCLES_UDTap01 =
CYCLES_UDTap02 =
CYCLES_UDBore01 =
CYCLES_UDBore02 =
CYCLES_UDRBore01 =
CYCLES_UDRBore02 =
CYCLES_ScaleFactor = 1.000000
CYCLES_Optimize = 0
CYCLES_FeedrateRegister = F
CYCLES_IncRegister = Q
CYCLES_DwellRegister = P
CYCLES_ClearRegister = R
CYCLES_OrientRegister = Q
CYCLES_DrillDwellCodeStart
[SEQ_PRECHAR][SEQNUM][DELIMITER][G_CODE][DELIMITER]X[NEXT_NONMDL_X][DELIMITER]Y[NEXT_NONMDL_Y][DELIMITER]Z[CYCL_Z-DEPTH][DELIMITER]R[CYCL_Z+CLEAR][DELIMITER]F[CYCL_IPM][DELIMITER]P[CYCL_DWELL]
CYCLES_DrillDwellCodeEnd
CYCLES_DrillNoDwellCodeStart
[SEQ_PRECHAR][SEQNUM][DELIMITER][G_CODE][DELIMITER]X[NEXT_NONMDL_X][DELIMITER]Y[NEXT_NONMDL_Y][DELIMITER]Z[CYCL_Z-DEPTH][DELIMITER]R[CYCL_Z+CLEAR][DELIMITER]F[CYCL_IPM]
CYCLES_DrillNoDwellCodeEnd
CYCLES_DeepCodeStart
[SEQ_PRECHAR][SEQNUM][DELIMITER][G_CODE][DELIMITER]X[NEXT_NONMDL_X][DELIMITER]Y[NEXT_NONMDL_Y][DELIMITER]Z[CYCL_Z-DEPTH][DELIMITER]R[CYCL_Z+CLEAR][DELIMITER]F[CYCL_IPM][DELIMITER]Q[CYCL_INCR]
CYCLES_DeepCodeEnd
CYCLES_BreakChipCodeStart
[SEQ_PRECHAR][SEQNUM][DELIMITER][G_CODE][DELIMITER]X[NEXT_NONMDL_X][DELIMITER]Y[NEXT_NONMDL_Y][DELIMITER]Z[CYCL_Z-DEPTH][DELIMITER]R[CYCL_Z+CLEAR][DELIMITER]F[CYCL_IPM][DELIMITER]Q[CYCL_INCR]
CYCLES_BreakChipCodeEnd
CYCLES_TapCWCodeStart
[SEQ_PRECHAR][SEQNUM][DELIMITER][G_CODE][DELIMITER]X[NEXT_NONMDL_X][DELIMITER]Y[NEXT_NONMDL_Y][DELIMITER]Z[CYCL_Z-DEPTH][DELIMITER]R[CYCL_Z+CLEAR][DELIMITER]F[CYCL_1/TPI]
CYCLES_TapCWCodeEnd
CYCLES_CounterSinkCodeStart
[SEQ_PRECHAR][SEQNUM][DELIMITER][G_CODE][DELIMITER]X[NEXT_NONMDL_X][DELIMITER]Y[NEXT_NONMDL_Y][DELIMITER]Z[CYCL_Z-DEPTH][DELIMITER]R[CYCL_Z+CLEAR][DELIMITER]F[CYCL_IPM][DELIMITER]Q[CYCL_INCR]
CYCLES_CounterSinkCodeEnd
CYCLES_TapCCWodeStart
[SEQ_PRECHAR][SEQNUM][DELIMITER][G_CODE][DELIMITER]X[NEXT_NONMDL_X][DELIMITER]Y[NEXT_NONMDL_Y][DELIMITER]Z[CYCL_Z-DEPTH][DELIMITER]R[CYCL_Z+CLEAR][DELIMITER]F[CYCL_1/TPI]
CYCLES_TapCCWodeEnd
CYCLES_BoreDragDwellCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]P[CYCL_SCALED_DWELL]F[CYCL_IPM]
CYCLES_BoreDragDwellCodeEnd
CYCLES_BoreDragNoDwellCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]F[CYCL_IPM]
CYCLES_BoreDragNoDwellCodeEnd
CYCLES_BoreNoDragDOCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]F[CYCL_IPM]Q[CYCL_ORIENT]
CYCLES_BoreNoDragDOCodeEnd
CYCLES_BoreNoDragDNOCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]F[CYCL_IPM]L[CYCL_DWELL]
CYCLES_BoreNoDragDNOCodeEnd
CYCLES_BoreNoDragNDOCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]F[CYCL_IPM]Q[CYCL_ORIENT]
CYCLES_BoreNoDragNDOCodeEnd
CYCLES_BoreNoDragNDNOCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]F[CYCL_IPM]L[CYCL_DWELL]
CYCLES_BoreNoDragNDNOCodeEnd
CYCLES_BoreManualDwellCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]F[CYCL_IPM]L[CYCL_DWELL]
CYCLES_BoreManualDwellCodeEnd
CYCLES_BoreManualNoDwellCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]F[CYCL_IPM]L[CYCL_DWELL]
CYCLES_BoreManualNoDwellCodeEnd
CYCLES_BoreReverseDwellCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]P[CYCL_SCALED_DWELL]F[CYCL_IPM]
CYCLES_BoreReverseDwellCodeEnd
CYCLES_BoreReverseNoDwellCodeStart
[SEQ_PRECHAR][SEQNUM][OUTPUT_UNITS_CODE][SPINDLE_BLK]
[SEQ_PRECHAR][SEQNUM][G_CODE]X[NEXT_NONMDL_X]Y[NEXT_NONMDL_Y]Z[CYCL_Z-DEPTH]R[CYCL_Z+CLEAR]P[CYCL_SCALED_DWELL]F[CYCL_IPM]
CYCLES_BoreReverseNoDwellCodeEnd
CYCLES_RigidTapClockwiseCodeStart
CYCLES_RigidTapClockwiseCodeEnd
CYCLES_RigidTapCClockwiseCodeStart
CYCLES_RigidTapCClockwiseCodeEnd
CYCLES_UDDrill01CodeStart
CYCLES_UDDrill01CodeEnd
CYCLES_UDDrill02CodeStart
CYCLES_UDDrill02CodeEnd
CYCLES_UDTap01CodeStart
CYCLES_UDTap01CodeEnd
CYCLES_UDTap02CodeStart
CYCLES_UDTap02CodeEnd
CYCLES_UDBore01CodeStart
CYCLES_UDBore01CodeEnd
CYCLES_UDBore02CodeStart
CYCLES_UDBore02CodeEnd
CYCLES_UDRBore01CodeStart
CYCLES_UDRBore01CodeEnd
CYCLES_UDRBore02CodeStart
CYCLES_UDRBore02CodeEnd
CYCLES_CycleOffCodeStart
[SEQ_PRECHAR][SEQNUM][G_CODE]
CYCLES_CycleOffCodeEnd
//--------------------------------------------------------------------------------------------------
// END DEFINITION SECTION
//--------------------------------------------------------------------------------------------------
END_ProgramCodeStart
[SEQ_PRECHAR][SEQNUM][DELIMITER]M05
[SEQ_PRECHAR][SEQNUM][DELIMITER]M30
END_ProgramCodeEnd
O conteúdo de cada arquivo é escrito de forma que os programas geradores de arquivos de corte saibam o que fazer...
Ficou claro agora?