No cóż zacząłem walkę z linux'em cnc - jak na razie on wygrywa

Udało mi się uruchomić w wersji mikro czyli brak sterowania obrotami wrzeciona , chłodziwo z "ręki" itd ale coś tam chodzi , coś tam frezuje, włączanie maszyny to trochę tajemne misterium ale ogólnie jest ok.
Uznałem że trzeba spalić okręty i wywaliłem windowsa całkiem coby nie korciło. Szukałem jakiegoś poradnika do linux'a (bardziej chodzi mi o składnię poleceń niż samą instalację ) bo jak napisałem program do frezowania prostokątnego otworu z zaokrąglonymi kątami i wymyśliłem sobie że zarówno boki jak kąty oraz średnicę freza będę miał jako zmienne (czyli niby uniwersalna procedura) to załapałem się na błędy w co drugiej linii. No ale to efekt braku wiedzy i ślepoty

Pisałem kilka razy to upraszczając to komplikując coby wreszcie poszło no i wreszcie się udało , błędy wyeliminowane i nawet efekt końcowy zgodny z założeniem . Jednego nie kapuję i proszę o wyjaśnienie. Założyłem sobie dla wygody że na początku programu wpisuję wartości np
#<sred_freza> = 5 potem jest pętla której "licznikiem" jest głębokość i stamtąd wywołanie podprogramu o nazwie <frezowanie> który sobie ten zaokrąglony prostokąt frezuje. Za każdym razem dostawałem błąd braku zadeklarowania kolejnej zmiennej (zadeklarowanej na początku) . Dopiero wpisanie tych deklaracji do podprogramu spowodowało że zaczął pracować. Czy to ja coś namieszałem czy podprogram trzeba wywołać z argumentami a nie zadeklarować je na początku programu ?