Podprogramy lokalne wywołuje się przy uzvciu M97. Stosowanie M97 może być nawet łatwiejsze niz M9S. ponieważ w M97 podprogram jest częścią pojedynczego programu głównego. Nie ma więc potrzeby definiowania oddzielnego programu Onnnn Przy podprogramach. lokalnych, główny program można zakończyć kodem M30, po którym następuje numer linii i podprogram kończący się M99.
Wywołanie podprogramu powoduje wykonanie jego bloków, tak jakby zawarte one były w programie głównym. Aby układ sterowania mógł wrócić do programu głównego podprogram musi kończyć się komendą M99.
Inną istotną cechą podprogramów jest fakt, że blok wywołania M98 może zawierać L lub liczbę powtórzeń, jeśli podprogram zawiera L, to jest on powtarzany tyle razy ile wskazuje L, zanim wykonany zostanie kolejny blok programu głównego.
Podprogramów najczęściej używa się do definiowania wykonania serii otworów, które najpierw są nawiercone, potem wiercone, gwintowane i fazowane. Jeśli podprogram jest zdefiniowany tak, ze zawiera tylko pozycje X-Y otworów, program główmy może go wywołać po zdefiniowaniu cyklu zamkniętego dla każdej z operacji. Tak więc pozycje X-Y mogą być wykorzystane kilkanaście razy' i nie musza być powtarzane dla każdego narzędzia. Obrazuje to poniższy przykład:
OOICO (PROGRAM GŁÓWNY DLA PRZYKŁADU PODPROGRAMU) ;
G54 GOC G90 X0. YO. ;
T01 M06 (NAWIERCENIE) ,
G81 R0.2 Z-0.1 F20. LO (ME MA OPERACJI, ZDEFTNTWANIE CYKLU
ZAMKNIĘTEGO);
S2000 MO3 ;
M9S P0200 (WIERCENIE KAŻDEGO OTWORU);
T02 M06 (WIERCENIE) .
GS3 R0.2 Z-l. FI o/ LO (NIE MA OPERACJI, ZDEFINTWAME CYKLU
ZAMKNIĘTEGO),
SI000 MO3 ;
M98 P0200 (WIERCENIE KAŻDEGO OTWORU) ,
TOS M06 (GWINTOWNIK W OPRAWCE WAHLIWEJ LUB SZTYWNE);
G84 R0.2 Z-l. F10. LO (ME MA OPERACJI, ZDEFINTWANIE CYKLU
ZAMKNIĘTEGO);
S200 (1/4 - 20) ;
M98 P0200 ( GWINTÓW ANIE KAŻDEGO OTWORU) ,
T04 MO6 (FAZOWANIE):
S2000 MOS .
M98 PO200 ( FAZOWANIE KAŻDEGO OTWORU) ;
_G23 M30 (KONIEC PROGRAMU GŁÓWNE.GQ1_.__
00200 (PODPROGRAM ZAWIERAJ AC Y POZYCJE OTWORÓW) ;
X0. Y0.;
XI. Y0. .
X2. Y0 ,
XI Yl. ,
X2 Yl ;