في بعض الأحيان، عند البرمجة الآلية، قد تواجه موقفًا تظهر فيه مجموعة من مقاطع البرنامج عدة مرات في برنامج واحد، أو يتم استخدامها في عدة برامج. يمكننا استخراج هذه المجموعة من مقاطع البرنامج، وتسميتها، وتخزينها بشكل منفصل؛ تسمى هذه المجموعة من مقاطع البرنامج بالروتين الفرعي. الروتين الفرعي هو جزء من برنامج التشغيل الآلي الذي يمكن استدعاؤه بواسطة تعليمات التحكم المناسبة في أداة الآلة، ويكون له بشكل عام معنى مستقل أثناء التشغيل الآلي. يُطلق على برنامج المعالجة الذي يحتوي على تعليمات استدعاء الروتين الفرعي للمستوى الأول-البرنامج الرئيسي. تعليمات استدعاء روتين فرعي هي أيضًا مقطع برنامج، والذي يتكون بشكل عام من تعليمات استدعاء روتين فرعي واسم الروتين الفرعي وعدد المكالمات. تختلف القواعد والتنسيقات المحددة وفقًا للنظام. على سبيل المثال، لنفس التعليمات "اتصل بالرقم الفرعي 55 مرة واحدة"، يستخدم نظام FANUC "M98 P55."، بينما يستخدم نظام AB الأمريكي "P55x".
يمكن أن تكون الإجراءات الفرعية متداخلة، أي مستوى داخل مستوى آخر. العلاقة بين المستويين العلوي والسفلي هي نفس العلاقة بين البرنامج الرئيسي والروتين الفرعي للمستوى - الأول. يتم تحديد الحد الأقصى لعدد المستويات المتداخلة بواسطة نظام CNC المحدد. شكل وتكوين الروتين الفرعي هما إلى حد كبير نفس شكل وتكوين البرنامج الرئيسي: السطر الأول هو رقم الروتين الفرعي (الاسم)، والسطر الأخير هو تعليمات "نهاية الروتين الفرعي"، مع وجود نص الروتين الفرعي بينهما. ومع ذلك، فإن تعليمات نهاية البرنامج الرئيسية تنهي البرنامج الرئيسي وتعيد ضبط نظام CNC؛ تعليماتها موحدة، حيث يستخدم كل نظام M02 أو M30. من ناحية أخرى، تنهي تعليمات نهاية الروتين الفرعي البرنامج الفرعي وتعود إلى البرنامج الرئيسي أو الروتين الفرعي السابق. تختلف تعليماتها عبر الأنظمة؛ على سبيل المثال، تستخدم أنظمة FANUC M99، وتستخدم أنظمة Siemens M17، وتستخدم أنظمة AB (American A/B) M02.

