The
Programming Guide manual tells you the answer in chapter 4.1.2:
A subprogram is usually left in its last-used state when it terminates with EXIT PROGRAM or GOBACK. The next time the subprogram is called in the run unit, its internal values are as they were left, except that return values for PERFORM statements are reset to their initial values. (In contrast, a main program is initialized each time it is called.)
There are some cases where programs will be in their initial state:
A subprogram that is dynamically called and then canceled will be in the initial state the next time it is called.
A program that has the INITIAL attribute will be in the initial state each time it is called.
Data items defined in the LOCAL-STORAGE SECTION will be reset to the initial state specified by their VALUE clauses each time the program is called.
Learning to use the manuals will allow you to answer this type of question yourself, much faster than a forum could.