कभी-कभी प्रोग्रामिंग मशीनिंग करते समय, आपको ऐसी स्थिति का सामना करना पड़ सकता है जहां प्रोग्राम सेगमेंट का एक समूह एक ही प्रोग्राम में कई बार दिखाई देता है, या कई प्रोग्रामों में उपयोग किया जाता है। हम प्रोग्राम खंडों के इस समूह को निकाल सकते हैं, उन्हें नाम दे सकते हैं और उन्हें अलग से संग्रहीत कर सकते हैं; प्रोग्राम खंडों के इस समूह को सबरूटीन कहा जाता है। एक सबरूटीन एक मशीनिंग प्रोग्राम खंड है जिसे उपयुक्त मशीन टूल नियंत्रण निर्देशों द्वारा बुलाया जा सकता है, और मशीनिंग के दौरान इसका आम तौर पर स्वतंत्र अर्थ होता है। प्रथम स्तर के सबरूटीन को कॉल करने के निर्देश वाले मशीनिंग प्रोग्राम को मुख्य प्रोग्राम कहा जाता है। सबरूटीन को कॉल करने का निर्देश भी एक प्रोग्राम सेगमेंट है, जिसमें आम तौर पर सबरूटीन कॉल निर्देश, सबरूटीन नाम और कॉल की संख्या शामिल होती है। विशिष्ट नियम और प्रारूप सिस्टम के आधार पर भिन्न-भिन्न होते हैं। उदाहरण के लिए, उसी निर्देश के लिए "एक बार सबरूटीन नंबर 55 पर कॉल करें," FANUC प्रणाली "M98 P55" का उपयोग करती है, जबकि अमेरिकी AB प्रणाली "P55x" का उपयोग करती है।
सबरूटीन्स को नेस्ट किया जा सकता है, यानी एक स्तर से दूसरे स्तर के अंदर। ऊपरी और निचले स्तरों के बीच का संबंध मुख्य कार्यक्रम और पहले स्तर के सबरूटीन के बीच के रिश्ते के समान है। नेस्टेड स्तरों की अधिकतम संख्या विशिष्ट सीएनसी प्रणाली द्वारा निर्धारित की जाती है। सबरूटीन का रूप और संरचना काफी हद तक मुख्य प्रोग्राम के समान ही होती है: पहली पंक्ति सबरूटीन संख्या (नाम) होती है, और अंतिम पंक्ति "सबरूटीन अंत" निर्देश होती है, जिसके बीच में सबरूटीन बॉडी होती है। हालाँकि, मुख्य प्रोग्राम अंतिम निर्देश मुख्य प्रोग्राम को समाप्त कर देता है और सीएनसी सिस्टम को रीसेट कर देता है; इसके निर्देश मानकीकृत हैं, प्रत्येक सिस्टम M02 या M30 का उपयोग करता है। दूसरी ओर, सबरूटीन अंत निर्देश, सबरूटीन को समाप्त कर देता है और मुख्य प्रोग्राम या पिछले सबरूटीन पर वापस आ जाता है। इसके निर्देश विभिन्न प्रणालियों में भिन्न-भिन्न होते हैं; उदाहरण के लिए, FANUC सिस्टम M99 का उपयोग करते हैं, सीमेंस सिस्टम M17 का उपयोग करते हैं, और AB (अमेरिकी A/B) सिस्टम M02 का उपयोग करते हैं।

