De vegades, quan es programa el mecanitzat, es pot trobar una situació en què un grup de segments de programa apareix diverses vegades en un sol programa o s'utilitza en diversos programes. Podem extreure aquest grup de segments de programa, nomenar-los i emmagatzemar-los per separat; aquest grup de segments de programa s'anomena subrutina. Una subrutina és un segment de programa de mecanitzat que es pot cridar mitjançant instruccions de control de màquina-eina adequades i, generalment, té un significat independent durant el mecanitzat. El programa de mecanitzat que conté la instrucció per cridar la subrutina de primer-nivell s'anomena programa principal. La instrucció per trucar a una subrutina també és un segment de programa, que generalment consisteix en la instrucció de trucada a la subrutina, el nom de la subrutina i el nombre de trucades. Les regles i els formats específics varien segons el sistema. Per exemple, per a la mateixa instrucció "truca una vegada al número de subrutina 55", el sistema FANUC utilitza "M98 P55.", mentre que el sistema AB americà utilitza "P55x".
Les subrutines es poden imbricar, és a dir, un nivell dins d'un altre. La relació entre els nivells superior i inferior és la mateixa que la relació entre el programa principal i la subrutina de primer-nivell. El nombre màxim de nivells imbricats està determinat pel sistema CNC específic. La forma i la composició d'una subrutina són en gran part les mateixes que les del programa principal: la primera línia és el número de la subrutina (nom) i l'última línia és la instrucció "final de la subrutina", amb el cos de la subrutina entremig. Tanmateix, la instrucció final del programa principal finalitza el programa principal i reinicia el sistema CNC; les seves instruccions estan estandarditzades, amb cada sistema utilitzant M02 o M30. La instrucció de finalització de subrutina, en canvi, finalitza la subrutina i torna al programa principal o a la subrutina anterior. Les seves instruccions varien segons els sistemes; per exemple, els sistemes FANUC utilitzen M99, els sistemes Siemens utilitzen M17 i els sistemes AB (American A/B) utilitzen M02.

