You are trying to call A from C, it's a recursive Call. It's possible in IBM COBOL & ENTERPRISE COBOL, but not in VS COBOL II. There is no Compiler Directives necessary to do so.
In IBM & ENTERPRISE COBOL:
A called program can directly or indirectly execute its caller. For example, program X calls program Y, program Y calls
program Z, and program Z then calls program X. This type of call is recursive.
To make a recursive call, you must code the RECURSIVE clause on the PROGRAM-ID paragraph of the recursively
called program. If you try to recursively call a COBOL program that does not have the RECURSIVE clause coded on its
PROGRAM-ID paragraph, a condition is signaled. If the condition remains unhandled, the run unit will end.
IN VS COBOL II:
A called program must not directly or indirectly execute its caller (such
as program X calling program Y; program Y calling program Z; and program Z
then calling program X). This is called a recursive call. If you attempt
to execute a recursive call to a COBOL program, the run unit will
terminate abnormally (abend).