Интересная штука - в исходнике, обобщённый алгоритм всегда внизу, а конкретика - вверху. Пишешь процедуру, а "подпрограммы" в ней выносятся в отдельные процедуры, которые всегда смещаются вверх. А упреждающее описание (forward declaration) разрушает эту схему.