Podprogramy Język BCPL wyróżnia dwa rodzaje podprogramów: procedury i funkcje. Zasadniczą różnicą między nimi jest fakt, że tylko te drugie mogą zwracać wartość. Oba deklaruje się w podobny sposób, z użyciem słowa LET, po którym następuje nazwa podprogramu i lista argumentów w nawiasach okrągłych:// Deklaracja funkcji: zwraca sumę trzech liczb LET FUNKCJA(ARG0, ARG1, ARG2) = ARG0 + ARG1 + ARG2
// Deklaracja procedury: wypisuje na ekran sumę trzech liczb LET PROCEDURA(ARG0, ARG1, ARG2) BE WRITEN(ARG0 + ARG1 + ARG2)Po znaku równości musi znaleźć się wyrażenie, którego wartość zostanie zwrócona jako wartość funkcji. Z kolei po słowie BE umieszcza się instrukcję, wykonywaną przy wywołaniu procedury. Liczba argumentów w wywołaniu podprogramu nie musi być równa liczbie formalnych parametrów. W sytuacji, gdy przekazane zostanie za dużo argumentów, nadmiarowe są obliczane a następnie odrzucane. Z kolei, jeśli w wywołaniu umieści się mniej wartości niż oczekuje podprogram, pozostałe pozostają niezainicjalizowane.
Przekazywanie parametrów w BCPL odbywa się na ogół przez wartość. Wyjątkiem są przekazywane przez referencję wektory.