Przykład programu z wykorzystaniem podprogramów
Poniżej przedstawiamy przykładowy program napisany na maszynę HAAS, po kliknięciu na daną linijkę ukarze się krótki opis.
%
Znak rozpoczęcia programu, każdy program powinien zaczynać się oraz kończyć tym znakiem.
o000001 (Spirala)
Numer programu zaczynający się od literki "o" następnie 5 cyfrowy numer programu, w nawiasie nazwa lub krótki opis programu, który będzie wyświetlany na liście programów.
G17 G90 G54
G17 -wybranie płaszczyzny pracy XY, G90 -wybranie współrzędnych absolutnych, G54 -przywołanie offsetu przedmiotu obrabianego (tzw. przywołanie punktu materiałowego) .
T01 M6
T01 -Wywołanie narzędzia z kieszeni magazynu narzędziowego o numerze 1, M6- komenda do wymiany narzędzia, bez niej nie nastąpi wymiana narzędzia.
G43 H01 D01
G43- odwołanie do tabeli z wymiarami geometrycznymi narzędzia, H01- przywołanie korekcji długościowej narzędzia, D01- przywołanie korekcji średnicowej narzędzia.
S4000 M3 F2000
S4000- zadania prędkości obrotowej wrzeciona 4000obr/min, M3- włączenie prawych obrotów wrzeciona, F2000- zadania posuwu roboczego 2000mm/min (domyślnie jeśli nie uwzględniono w Gcodzie {G94 - posuw minutowy} jest on włączony)
G0 X0 Y0
G0 X0 Y0 - najazd ruchem szybkim na pozycję X0 Y0 względem G54
G0 Z100
G0 Z100 -najazd ruchem szybkim na pozycję Z100 względem G54
M97 P1 L1
M97 -wywołanie lokalnego podprogramu (lokalny czyli znajdujący się w tym samym pliku (za M30) co program główny) P1 -Numer linii od której ma zostać on wykonany (odwołuje się do lini zaczynającej się od "N1", dla P2 do linii zaczynającej się od "N2" itd.).
X100 Y100
Najazd ruchem szybkim na pozycję X100 Y100 (zauważyć należy że nie zostało powtórzone G0 wynika to z tego iż do czasu gdy nie wywołamy innego rodzaju ruchu, domyślnie pozostanie G0 i nie musimy go powtarzać)
M97 P1 L1
M97 -wywołanie lokalnego podprogramu (lokalny czyli znajdujący się w tym samym pliku (za M30) co program główny) P1 -Numer linii od której ma zostać on wykonany (odwołuje się do lini zaczynającej się od "N1", dla P2 do linii zaczynającej się od "N2" itd.).
Y-100
Najazd ruchem szybkim na pozycje X100 Y-100 (zauważyć należy że wsp. X100 nie została tutaj wymieniona, wynika to z tego iż nie zmieniamy pozycji w osi X względem poprzedniej pozycji, dlatego nie musimy a nawet nie powinniśmy wymieniać tej wsp. ze względu na możliwość pomylenia się i wpisania błędnej pozycji).
M97 P1 L1
M97 -wywołanie lokalnego podprogramu (lokalny czyli znajdujący się w tym samym pliku (za M30) co program główny) P1 -Numer linii od której ma zostać on wykonany (odwołuje się do lini zaczynającej się od "N1", dla P2 do linii zaczynającej się od "N2" itd.).
X-100
Najazd ruchem szybkim na pozycje X-100
M97 P1 L1
M97 -wywołanie lokalnego podprogramu (lokalny czyli znajdujący się w tym samym pliku (za M30) co program główny) P1 -Numer linii od której ma zostać on wykonany (odwołuje się do lini zaczynającej się od "N1", dla P2 do linii zaczynającej się od "N2" itd.).
Y100
Najazd ruchem szybkim na pozycję Y100
M97 P1 L1
M97 -wywołanie lokalnego podprogramu (lokalny czyli znajdujący się w tym samym pliku (za M30) co program główny) P1 -Numer linii od której ma zostać on wykonany (odwołuje się do lini zaczynającej się od "N1", dla P2 do linii zaczynającej się od "N2" itd.).
G53 Z0
"Wyzerowanie osi Z". Zjazd na 0 maszynowe w osi Z.
G53 Y0
"Wyzerowanie osi Y". Zjazd na 0 maszynowe w osi Y.
M30
Zakończenie programu i reset.
(Podprogram na wykonanie spirali i podcięcia na dnie)
Komentarz
N1
Numer bloku podprogramu, do tego odwołuje się M97 P1.
G0 G90 Z1
Ruchem szybkim w układnie absolutnym zjazd na pozycję Z1
G1 Z0
Ruchem roboczym (czyli z uwzględnieniem posuwu roboczego) zjazd na pozycję Z0
G91
Przełączenie na podawanie współrzędnych przyrostowo.
G41 X10
Włączenie kompensacji G41 (lewa) w ruchu! do pozycji X10 (kompensację można włączyć jedynie podczas ruchu!)
M97 P2 L10
Odwołanie do kolejnego lokalnego podprogramu zaczynającego się od linii "N2" zgodnie z wywołaniem "P2" oraz wykonanie go 10 razy (w wcześniej wywołanym układnie przyrostowym)
G3 I-10 J0
Wykonanie pełnego okręgu przeciwnie do ruchu wskazówek zegara (w lewo), w celu wyrównania dna frezowanego otworu.
G40 G1 X-10
Wyłączenie kompensacji narzędzia w ruchu! podczas zjazdu na pozycję X-10 ruchem roboczym.
G0 G90 Z100
Ruchem szybkim dojazd na pozycję Z100 w układzie absolutnym.
M99
Zakończenie podprogramu i powrót do poprzedniego programu
(Podprogram do wykonania przejscia spirali)
Komentarz
N2
Numer bloku podprogramu, do tego odwołuje się M97 P2.
G3 I-10 J0 Z-1
Wykonanie ruchu spiralnego -jednoczesny ruch po okręgu oraz zejście w osi Z
M99
Zakończenie podprogramu i powrót do poprzedniego programu
%
Znak zakończenia całego programu

Efekt powyższego programu przedstawiony w formie ścieżek w programie CIMCO
Kod do skopiowania:
% o000001 (Spirala) G17 G90 G54 T01 M6 G43 H01 D01 S4000 M3 F2000 G0 X0 Y0 G0 Z100 M97 P1 L1 X100 Y100 M97 P1 L1 Y-100 M97 P1 L1 X-100 M97 P1 L1 Y100 M97 P1 L1 G53 Z0 G53 Y0 M30 (Podprogram na wykonanie spirali i podcięcia na dnie) N1 G0 G90 Z1 G1 Z0 G91 G41 X10 M97 P2 L10 G3 I-10 J0 G40 G1 X-10 G0 G90 Z100 M99 (Podprogram do wykonania przejscia spirali) N2 G3 I-10 J0 Z-1 M99 %