I suggest something like :

DECLARE -- main declaring of the PROG
v_1 number;
v_2 table of ...
v_3 varchar2(20);
--
PROCEDURE P_SUBPROC is
Begin
-- do something ...
End;
--=======================
BEGIN -- main program starting point
... do something
v_1 := nnnn
v_2 := zzzzz
P_SUBPROC;
... PL/SQL will return here after P_SUBPROC executing
do anotherthing
v_1 := yyyyy
v_2 := kdkdk
P_SUBPROC;
and so on ...
END; -- main program end here


===> In this example, you can call P_SUBPROC n times, each time it will exec P_SUBPROC (and P_SUBPROC will "see" the current value of v_1, v_2, and the execution will be like a PERFORM : you go to another point, exec something there and return exactly after the starting point.

[]s

Chiappa