You can use CALL identifier statements to make dynamic calls in the CICS environment. However, you must set the COBPATH environment variable correctly.
Consider the following example, where alpha is a COBOL program that contains CICS statements:
WORKING-STORAGE SECTION.
01 WS-COMMAREA PIC 9 VALUE ZERO.
77 SUBPNAME PIC X(8) VALUE SPACES
. . .
PROCEDURE DIVISION.
MOVE 'alpha' TO SUBPNAME.
CALL SUBPNAME USING DFHEIBLK, DFHCOMMAREA, WS-COMMAREA.
You must pass the CICS control blocks DFHEIBLK and DFHCOMMAREA (as shown above) to alpha. The source for alpha is in file alpha.ccp. Use the command cicstcl to translate, compile, and link alpha.ccp.
With TXSeries, the cicstcl command creates a DLL called alpha.ibmcob. You must include the directory where alpha.ibmcob resides in the COBPATH environment variable. You must also do the following steps:
DLL considerations: If you have a DLL that contains one or more COBOL programs, do not use it in more than one run unit within the same CICS transaction, or the results will be unpredictable. The following figure shows a CICS transaction in which the same subprogram is called from two different run units:

Programs A and B share the same copy of Program C, and any changes to its state affect both.
In the CICS environment, programs in a DLL are initialized (both the WSCLEAR compiler option and VALUE clause initialization) only on the first call within a run unit. If a COBOL subprogram is called more than once, from either the same or different main programs, the subprogram is initialized on only the first call. If you need the subprogram initialized on the first call from each main program, statically link a separate copy of the subprogram with each calling program. If you need the subprogram initialized on every call, use one of the following methods: