Oprócz powyższego podziału, wyróżnić także należy podprogram główny, tj. taki od którego rozpoczyna się wykonywanie skompilowanego programu. W językach programowania zastosowano zasadniczo kilka różnych rozwiązań. Albo zdefiniowana jest w składni odrębna jednostka (np. program w Pascalu), albo stosuje się specjalną frazę, dyrektywę języka, informującą aby program łączący dany podprogram wybrał jako podprogram główny (np. OPTIONS(MAIN) w języku PL/1). W języku C i pokrewnych definiuje się zwykłą funkcję lecz o specjalnym identyfikatorze main.

Podprogramy wewnętrzne Różne języki programowania umożliwiają także definiowanie podprogramów wewnętrznych, tzn. podprogramu w innym podprogramie nadrzędnym. Do takich języków należą między innymi Pascal, PL/1 i inne. Nie ma takich możliwości np. w języku C.

procedure z; procedure w1; begin ... end; procedure w2; begin ... end; begin ... w1; ... w2; ... end;