W programowaniu obrabiarek sterowanych numerycznie funkcje pomocnicze M służą do sterowania zdarzeniami "niegeometrycznymi" (np. zakończeniem programu, pracą wrzeciona, chłodziwem, zaciskami). Wśród tych funkcji szczególnie ważne są kody kończące przebieg programu.
Odpowiedź "M30" jest właściwa, ponieważ w powszechnie spotykanej konwencji programowania oznacza koniec programu połączony z powrotem (przewinięciem) na początek. W praktyce operator widzi to jako zakończenie wykonania i gotowość do ponownego uruchomienia programu od pierwszego bloku. To istotne przy produkcji seryjnej, gdzie po zakończeniu jednego detalu program ma być od razu przygotowany do startu kolejnego cyklu.
Odpowiedź "M17" jest błędna, bo w wielu sterowaniach bywa kojarzona z powrotem z podprogramu (a nie z zakończeniem programu głównego). To inna logika sterowania przebiegiem: dotyczy struktury wywołań i powrotów, a nie finalnego zakończenia całego programu.
Odpowiedź "M04" jest błędna, ponieważ typowo odnosi się do kierunku obrotów wrzeciona (urządzenie wykonawcze), a nie do zakończenia programu. To częsty błąd wynikający z kojarzenia "M" z jedną kategorią, bez rozróżnienia funkcji.
Odpowiedź "M33" również jest błędna: nie jest standardowo kodem końca programu z przewinięciem i zależy od producenta/konfiguracji. W zadaniach egzaminacyjnych, gdy pytanie dotyczy końca programu ze skokiem na początek, oczekiwana jest klasyczna odpowiedź "M30".
Wskazówka egzaminacyjna: gdy w treści pojawia się "koniec programu" oraz "powrót/skok na początek", szukaj kodu M kojarzonego z zakończeniem programu, a nie z wrzecionem lub podprogramami.