You can use CALL identifier (where identifier is not a procedure-pointer) to call a nested ILE COBOL program or a program object. The contents of the identifier determine, at run time, whether a nested program is called or a program object is called.
An open pointer that associates an identifier with an object is set the first time you use the identifier in a CALL statement.
If you carry out a call by an identifier to a program object that you subsequently delete or rename, you must use the CANCEL statement to null the open pointer associated with the identifier. This ensures that when you next use the identifier to call your program object, the associated open pointer will be set again.
The value of the open pointer changes if you change the value of the identifier and perform a call using this new value.