Labels = Bad according to Wizzup? (Though you should only use when you NEED to skip a block of code in between destination, Your situation only needs a loop).
Then again, Da 0wner pointed you in a very easy and quick direction 
You can do it like this to make it look good, and work pretty OK:
SCAR Code:
procedure BankOpen;
var
i, t: Integer;
begin
MarkTime(t);
while(not(OpenBankQuiet(Bank))) do
begin
Writeln('Could not find bank, trying again');
wait(200 + Random(200));
Logout;
Wait(5000 + Random(2000));
Inc(i);
if (i > 1) then
begin
Writeln('Could not find bank... Exiting :(');
NextPlayer(False);
i := 0;
end else
begin
Writeln('Could not find bank, trying again');
LoginPlayer;
end;
Setup;
if (TimeFromMark(t) > 20000) then Break;
end;
if OpenBankQuiet(Bank) then
Writeln('Found Bank.');
Wait(500+random(300));
end;
~NS