A procedure is a set of self-contained high-level language statements that performs a particular task and then returns to the caller.
In CL, a procedure usually begins with a PGM statement and ends with an ENDPGM statement.