Legal test end-main-with-m2: N..... USE_LENGTH_UNITS(CANON_UNITS_MM) N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_REFERENCE(CANON_XYZ) N..... ON_RESET() N..... COMMENT("legal example") N..... COMMENT("Main program defined with numeric O-word title, terminated by M2") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("calling sub 2") N..... COMMENT("in sub 2") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 3.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("returning from sub 2") N..... COMMENT("returned from sub 2") N..... COMMENT("end of main") N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_MODE(0, 0) N..... SET_FEED_RATE(0.0000) N..... STOP_SPINDLE_TURNING(0) N..... SET_SPINDLE_MODE(0 0.0000) N..... PROGRAM_END() N..... ON_RESET() N..... ON_RESET() Legal test end-main-with-m02: N..... USE_LENGTH_UNITS(CANON_UNITS_MM) N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_REFERENCE(CANON_XYZ) N..... ON_RESET() N..... COMMENT("legal example") N..... COMMENT("Main program defined with numeric O-word title, terminated by M02") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("calling sub 2") N..... COMMENT("in sub 2") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 3.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("returning from sub 2") N..... COMMENT("returned from sub 2") N..... COMMENT("end of main") N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_MODE(0, 0) N..... SET_FEED_RATE(0.0000) N..... STOP_SPINDLE_TURNING(0) N..... SET_SPINDLE_MODE(0 0.0000) N..... PROGRAM_END() N..... ON_RESET() N..... ON_RESET() Legal test end-main-with-m30: N..... USE_LENGTH_UNITS(CANON_UNITS_MM) N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_REFERENCE(CANON_XYZ) N..... ON_RESET() N..... COMMENT("legal example") N..... COMMENT("Main program defined with numeric O-word title, terminated by M30") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("calling sub 2") N..... COMMENT("in sub 2") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 3.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("returning from sub 2") N..... COMMENT("returned from sub 2") N..... COMMENT("end of main") N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_MODE(0, 0) N..... SET_FEED_RATE(0.0000) N..... STOP_SPINDLE_TURNING(0) N..... SET_SPINDLE_MODE(0 0.0000) N..... PALLET_SHUTTLE() N..... PROGRAM_END() N..... ON_RESET() N..... ON_RESET() Legal test end-main-with-percent: N..... USE_LENGTH_UNITS(CANON_UNITS_MM) N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_REFERENCE(CANON_XYZ) N..... ON_RESET() N..... COMMENT("legal example") N..... COMMENT("Main program defined with numeric O-word title, terminated by percent") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("calling sub 2") N..... COMMENT("in sub 2") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 3.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("returning from sub 2") N..... COMMENT("returned from sub 2") N..... COMMENT("end of main signaled by percent") N..... FINISH() N..... ON_RESET() N..... ON_RESET() Illegal test end-main-with-eof: N..... USE_LENGTH_UNITS(CANON_UNITS_MM) N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_REFERENCE(CANON_XYZ) N..... ON_RESET() N..... COMMENT("legal example") N..... COMMENT("Main program defined with numeric O-word title, terminated by EOF") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("calling sub 2") N..... COMMENT("in sub 2") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 3.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("returning from sub 2") N..... COMMENT("returned from sub 2") N..... COMMENT("end of main signaled by EOF") N..... ON_RESET() N..... ON_RESET() Illegal test no-m30-before-osub: N..... USE_LENGTH_UNITS(CANON_UNITS_MM) N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_REFERENCE(CANON_XYZ) N..... ON_RESET() N..... COMMENT("illegal example") N..... COMMENT("Define rs274-style sub before numeric O-word main program end") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("calling sub 2") N..... COMMENT("in sub 2") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 3.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("returning from sub 2") N..... COMMENT("returned from sub 2") N..... COMMENT("Illegal: O-sub with no M02 or M30 terminating main") N..... ON_RESET() N..... ON_RESET() Illegal test sub-after-percent: N..... USE_LENGTH_UNITS(CANON_UNITS_MM) N..... SET_G5X_OFFSET(1, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_G92_OFFSET(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... SET_XY_ROTATION(0.0000) N..... SET_FEED_REFERENCE(CANON_XYZ) N..... ON_RESET() N..... COMMENT("illegal example") N..... COMMENT("Define sub after percent [= after EOF]") N..... STRAIGHT_TRAVERSE(1.0000, 2.0000, 0.0000, 0.0000, 0.0000, 0.0000) N..... COMMENT("calling sub 2") N..... FINISH() N..... ON_RESET() N..... ON_RESET()