In COBOL, a program cannot cancel itself or be cancelled by its own subroutines. The CANCEL statement must be executed by a program at a higher level in the calling hierarchy. This prevents attempting to release resources and code that are currently in use.