Помоему как-то так

компилится без глюков)
program test;
var a,b:boolean;
tbbuf:string;
procedure proc3;forward;
//!!! if a=b -проверка нужного условия!!!
procedure proc1;
begin
//возвращение в proc3
if a=b then
proc3;
end;
procedure proc2;
begin
//возвращение в proc3
if a=b then
proc3;
end;
procedure proc3;
begin
//переход на proc2 и proc3(это я уже знаю как делать)
if a=b then proc3;
if a<>b then proc2;
tbbuf:=gettextboxstring;//сохраняем текст и когда надо аосстанавлтваем
//возвращение в proc1 при этом это форма для письма ShowTexBox и надо что бы,
//в ней текст не проподал при возвращении!
proc1;
end;
procedure proc4;
begin
//здесь вызов proc4
if a=b then
proc4;
end;
begin
end.