Complex variables allow for the storage and manipulation of complex values in a program. The interpretation of complex values is the usual mathematical one. The real and imaginary parts of complex values are always stored separately as single-precision real values.
Because a real value is a complex value with an imaginary part equal to 0 (zero), the set of real values is a subset of the set of complex values. Therefore, arithmetic values can be assigned to complex variables, but complex values cannot be assigned to arithmetic variables.
The PRIVATE and PUBLIC specifiers can only be used for simple variables that are declared within a structure block or a connection block. The PRIVATE specifier limits visibility of the simple variable to the scope of the structure or connection block. A PRIVATE simple variable cannot be accessed using a structure block or the connection block qualifier. The PUBLIC specifier allows the simple variable to be accessed using a structure or connection block qualifier. If neither PRIVATE nor PUBLIC is specified, the default value is PUBLIC and access to the simple variable using a structure or connection block qualifier is allowed.
A simple variable declared to be OWN retains its value when the program exits the block in which it is declared. The value of that variable is again available when the program reenters the block in which the variable is declared.
Refer to Data Representation for additional information on the internal structure of a complex operand.

