কখনও কখনও প্রোগ্রামিং মেশিনিং করার সময়, আপনি এমন একটি পরিস্থিতির সম্মুখীন হতে পারেন যেখানে একটি একক প্রোগ্রামে একাধিকবার প্রোগ্রাম অংশগুলির একটি গ্রুপ প্রদর্শিত হয়, বা একাধিক প্রোগ্রামে ব্যবহৃত হয়। আমরা প্রোগ্রাম বিভাগের এই গ্রুপটি বের করতে পারি, তাদের নাম দিতে পারি এবং আলাদাভাবে সংরক্ষণ করতে পারি; প্রোগ্রাম বিভাগের এই গ্রুপটিকে একটি সাবরুটিন বলা হয়। একটি সাবরুটিন হল একটি মেশিনিং প্রোগ্রাম সেগমেন্ট যা উপযুক্ত মেশিন টুল নিয়ন্ত্রণ নির্দেশাবলী দ্বারা কল করা যেতে পারে এবং এটি সাধারণত মেশিনের সময় স্বাধীন অর্থ রাখে। প্রথম-স্তরের সাবরুটিনকে কল করার নির্দেশ সহ মেশিনিং প্রোগ্রামকে প্রধান প্রোগ্রাম বলা হয়। একটি সাবরুটিন কল করার নির্দেশনাটিও একটি প্রোগ্রাম সেগমেন্ট, যেটিতে সাধারণত সাবরুটিন কল নির্দেশ, সাবরুটিনের নাম এবং কলের সংখ্যা থাকে। সিস্টেমের উপর নির্ভর করে নির্দিষ্ট নিয়ম এবং বিন্যাস পরিবর্তিত হয়। উদাহরণস্বরূপ, একই নির্দেশের জন্য "একবার সাবরুটিন নম্বর 55 এ কল করুন", FANUC সিস্টেম "M98 P55" ব্যবহার করে, যখন আমেরিকান AB সিস্টেম "P55x" ব্যবহার করে।
সাবরুটিনগুলি নেস্ট করা যেতে পারে, অর্থাৎ এক স্তরের ভিতরে অন্য স্তর। উপরের এবং নিম্ন স্তরের মধ্যে সম্পর্ক মূল প্রোগ্রাম এবং প্রথম-স্তরের সাবরুটিনের মধ্যে সম্পর্কের মতোই। নেস্টেড স্তরের সর্বাধিক সংখ্যা নির্দিষ্ট CNC সিস্টেম দ্বারা নির্ধারিত হয়। একটি সাবরুটিনের ফর্ম এবং কম্পোজিশন মূলত মূল প্রোগ্রামের মতোই: প্রথম লাইনটি হল সাবরুটিন নম্বর (নাম), এবং শেষ লাইনটি হল "সাবরুটিন শেষ" নির্দেশনা, যার মধ্যে সাবরুটিন বডি থাকে। যাইহোক, প্রধান প্রোগ্রাম শেষ নির্দেশ প্রধান প্রোগ্রাম বন্ধ করে এবং CNC সিস্টেম রিসেট; প্রতিটি সিস্টেম M02 বা M30 ব্যবহার করে এর নির্দেশাবলী প্রমিত। অন্যদিকে, সাবরুটিন শেষ নির্দেশ, সাবরুটিনটি বন্ধ করে এবং মূল প্রোগ্রাম বা পূর্ববর্তী সাবরুটিনে ফিরে আসে। এর নির্দেশাবলী সিস্টেম জুড়ে পরিবর্তিত হয়; উদাহরণস্বরূপ, FANUC সিস্টেম M99 ব্যবহার করে, সিমেন্স সিস্টেম M17 ব্যবহার করে এবং AB (আমেরিকান A/B) সিস্টেম M02 ব্যবহার করে।

