Haas G150 Pocket Milling: How to Use It Like a Pro
Category : Haas
I must admit I used to think this feature was a waste of time. But I didn’t realise that some folks don’t have a CAM sytem so long hand programming would take ages.
CNC Training Call David: 07834 858 407
30 five star ratings on Google (just saying)
I got to work on a 1995 very old but brings back great memories for an old bastard like me.

Dirty old beast but then so am I and I still have my uses.
The Haas G150 pocket milling command is a versatile and powerful feature for CNC machinists looking to machine pocket shapes. By defining a pocket’s geometry in a subprogram and then using G150 to call it, you can streamline your code.
What is Haas G150 Pocket Milling?
The G150 G-code command on Haas CNC mills is designed for general-purpose pocket milling. It allows machinists to mill out complex pocket shapes by defining the geometry once in a subprogram, then calling it using a single line of code in the main program.
G150 Explained
The G150 command uses a range of parameters to control the milling operation:
- P – Subprogram number that defines the pocket shape, can be internal or external (but not on my old machine)
- X, Y – Starting location (usually the pre-drilled entry hole)
- Z – Final pocket depth
- I or J – Step-over distance in X or Y direction, make sure you only include one as you will get an alarm
- K – Finish allowance for a final pass
- Q – Incremental Z depth per pass
- R – Height for pocket, depth is from here
- F – Feed rate
- D – Tool diameter offset register (for G41/G42)
- L – Optional repeat count with incremental positioning
Writing the Pocket Geometry Subprogram
The subprogram specified by the P code outlines the pocket’s perimeter. Important rules:
- Must be a closed loop (start and end at the same point)
- Max 40 moves (linear or circular)
- Start move should go from entry hole to the boundary
- Final move must not go back to the entry hole
- Use cutter comp G41 with lead-in/lead-out moves add to cycle.
This example it really simple try it out first just to make sure all is ok. You can then hit it with a much more complex shape.
On older controls you have to put the shape in an external sub program like O500 you can’t use internal sub routine.















