[an error occurred while processing this directive]

HP OpenVMS Systems Documentation

Content starts here

HP COBOL
User Manual


Previous Contents Index

C.5.3 Recording Dependencies

When you compile a program with the /DEPENDENCY_DATA qualifier, the compiler creates the following repository objects to represent the compiled modules, the resulting object module, and the relationships between them:

  • A compiled module object is created for each separately compiled program. The name of the object is the PROGRAM-ID name with hyphens translated to underscores. Compiled module objects are put in the repository pointed to by the logical name CDD$DEFAULT, or in the compatibility dictionary if CDD$DEFAULT is not defined.
  • For each object file generated by the compilation, the compiler creates a temporary file object. Each compiled module object contains a pointer to a file object, and several compiled module objects can point to the same file object. At the end of the compilation, the file object does not actually exist in the repository. However, information relating the compiled module object and the object file does exist in the repository.

The /DEPENDENCY_DATA qualifier can also direct the compiler to create relationships between the compiled module object and other objects in the repository:

  • If the source file contains a COPY FROM DICTIONARY statement, the compiler creates a CDD$COMPILED_DEPENDS_ON relationship between the compiled module object and the record or field definition that is being copied. It also copies the repository object into the compiled module.
  • If the source file contains a RECORD statement, the compiler creates a relationship between the compiled module object and the specified repository object, but it does not copy the repository object into the compiled module. The relationship can be either CDD$COMPILED_DEPENDS_ON or CDD$COMPILED_DERIVED_FROM. The default relationship type is CDD$COMPILED_DEPENDS_ON.

For example, recall the program that used COPY FROM DICTIONARY to include the customer and employee address record definitions:


IDENTIFICATION DIVISION.
PROGRAM-ID. MASTER-FILE.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY "DEVICE:[VMS_DIRECTORY]SALES.CUSTOMER_ADDRESS_RECORD" FROM DICTIONARY.
COPY "DEVICE:[VMS_DIRECTORY]SALES.EMPLOYEE_ADDRESS_RECORD" FROM DICTIONARY.
   .
   .
   .

When this program is compiled with the /DEPENDENCY_DATA qualifier, the following objects are created in the repository:

  • A compiled module object called MASTER_FILE
  • A temporary file object representing the object file produced by the compilation
  • A relationship between the MASTER_FILE compiled module object and the object file
  • A relationship between the MASTER_FILE object and the CUSTOMER_ADDRESS_RECORD definition
  • A relationship between the MASTER_FILE object and the EMPLOYEE_ADDRESS_RECORD definition

In addition, the record definitions are included in the compiled module.

The COPY FROM DICTIONARY statement is used when you want to create a relationship between a compiled module and a record or field definition. The RECORD statement is used when you need to create a relationship between a compiled module and some other kind of repository object --- one that you do not want copied into the compiled module. For example, suppose you need to create a relationship between the MASTER_FILE compiled module object and a text file object, such as a functional specification. This relationship would indicate that the compiled module is derived from the functional specification. For example:


IDENTIFICATION DIVISION.
PROGRAM-ID. MASTER-FILE.
    .
    .
    .
PROCEDURE DIVISION.
A0100.
    .
    .
    .
    RECORD DEPENDENCY "DEVICE:[VMS_DIRECTORY]SALES.SPECIFICATION"
    TYPE IS "CDD$COMPILED_DERIVED_FROM" IN DICTIONARY.
    .
    .
    .

When this program is compiled with the /DEPENDENCY_DATA qualifier, the compiler creates the following objects and relationships:

  • A compiled module object called MASTER_FILE
  • A temporary file object representing the object file produced by the compilation
  • A relationship between the MASTER_FILE compiled module object and the object file
  • A relationship between the MASTER_FILE object and the repository object called SPECIFICATION, which represents the functional specification text file

For more information on the RECORD statement, refer to the HP COBOL Reference Manual. For more information on the /DEPENDENCY_DATA qualifier, invoke the online help facility for COBOL at the operating system prompt.

C.5.4 Data Types

Oracle CDD/Repository supports some data types that are not native to HP COBOL. If a data definition contains a field declared with an unsupported data type, HP COBOL issues a fatal diagnostic. The HP COBOL compiler does not attempt to approximate a data type that it does not support.

Table C-1 shows how Oracle CDD/Repository data types are translated into COBOL data types. It also states the level of support HP COBOL provides for Oracle CDD/Repository data types.

Table C-1 Oracle CDD/Repository Data Types: Level of Support in HP COBOL on OpenVMS
Data Type VAX Alpha I64
UNSPECIFIED U U U
SIGNED BYTE W W W
UNSIGNED BYTE W W W
SIGNED WORD S S S
UNSIGNED WORD W W W
SIGNED LONGWORD S S S
UNSIGNED LONGWORD S S S
SIGNED QUADWORD S S S
UNSIGNED QUADWORD W W W
SIGNED OCTAWORD W W W
UNSIGNED OCTAWORD W W W
F_FLOATING S S S
F_FLOATING COMPLEX W W W
D_FLOATING S S S
D_FLOATING COMPLEX W W W
G_FLOATING W S S
G_FLOATING COMPLEX W W W
H_FLOATING W W W
H_FLOATING COMPLEX W W W
UNSIGNED NUMERIC S S S
LEFT OVERPUNCHED NUMERIC S S S
LEFT SEPARATE NUMERIC S S S
RIGHT OVERPUNCHED NUMERIC S S S
RIGHT SEPARATE NUMERIC S S S
PACKED DECIMAL S S S
ZONED NUMERIC W W W
BIT W W W
DATE W W W
TEXT S S S
VARYING STRING W W W
POINTER S S S
VIRTUAL FIELD W W W
SEGMENTED STRING W W W
REAL U S S
ALPHABETIC U S S

S --Fully supported
W---The data type is translated into a supported type and a diagnostic message is issued.
U---The data type is unsupported and a fatal diagnostic message is issued.


Previous Next Contents Index