Is there any disadvantage to using -cp compiler option for full pointer support?
By default (i.e. without -cp), the isCOBOL compiler uses Java memory for all data items. The Java Virtual Machine safeguards programs that use purely Java memory and that do not call native functions. These programs cannot cause memory protection faults, bus errors, segmentation violations, stack corruption, illegal instructions, and other memory related problems.
-cp is implemented using native memory. It enables the following functionality:
-
Pointer arithmetic
-
All uses of "ADDRESS OF". For example:
-
SET ptr to ADDRESS OF data-item
-
SET ADDRESS OF lk-item TO ptr
-
SET ADDRESS OF lk-item TO ADDRESS OF data-item
-
IF ADDRESS OF data-item NOT = ZERO
-
A COBOL program to receive and use memory addresses (pointers) from C language and other native functions that have allocated native memory.
-
A C language or other native function to save passed addresses and use them outside of the context of the CALL statement (such as is done by some 3rd party software such as Pro*COBOL)
Veryant recommends that you use the -cp compiler option only if you require one or more of the above capabilities.
Note: If you need to compile with -cp and your program uses the figurative constant NULL
then add the following compiler option in order to treat NULL
as ZERO
since NULL
is reserved for use with objects (object-oriented programming):
-rm=zero,null
Note: If your program uses pointers only within COBOL and between COBOL programs and does not use pointer arithmetic, then compile with the -ca compiler option instead of -cp. The -ca option has the following effects:
-
Allows the use of the figurative constant
NULL
-
Treats
USAGE POINTER
as
USAGE HANDLE
-
Treats
SET ADDRESS OF lk-item TO ptr
as
SET HANDLE OF lk-item TO ptr
-
Treats
SET ADDRESS OF lk-item TO ADDRESS OF data-item
as
SET HANDLE OF lk-item TO HANDLE OF data-item
-
Does not allow the following syntax:
SET ptr TO ADDRESS OF data-item
See also Does SET ADDRESS OF X TO Y work?
Article ID: 129
Created: May 28, 2010
Last Updated: May 28, 2010
Author: Support KB Author
Online URL: https://support.veryant.com/phpkb/article.php?id=129