H je broj kompenzacije, sličan kompenzaciji radijusa, vrijednost dužine alata je pohranjena na adresi navedenoj iza H.
Prilikom izvođenja kompenzacije dužine, alat se mora kretati po z-osi: stvarni položaj alata pod različitim komandama, među kojima će izjava "G90 G54(XIZ0;") uzrokovati ozbiljnu nesreću ako nema G43 naredba pod uslovom kompenzacije dužine.U opštim programima Programska riječ tokom kompilacije je konstanta, a program može opisati samo jedan geometrijski oblik, tako da mu nedostaje fleksibilnost i svestranost.U nekim slučajevima mašina alatka treba da se ponaša prema određena pravila, kao što je u ciklusu bušenja, korisnik treba da bude u mogućnosti da odredi parametre rezanja u skladu sa situacijom. Zahteva se da se opšti program ne može postići. Kada se izvrši automatsko merenje, čovek ili mašina alatke moraju obraditi podatke mjerenja.Ovi podaci se pohranjuju u varijablu, a opći program se ne može obraditi.U odgovoru na ovu situaciju, CNC alatni stroj nudi drugu metodu programiranja, odnosno makro programiranje .
U programu se koriste varijable, a funkcija programa se ostvaruje dodjeljivanjem i obradom varijabli. Ova vrsta programa sa varijablama naziva se makro program. Format makro programa Format makro programa je isti kao i potprogram, a M99 se koristi na kraju za povratak u glavni program.
