DML084 error in the IDMSDMLC pre-compile of a cobol program.

Document ID : KB000006371
Last Modified Date : 14/02/2018
Show Technical Document Details
Issue:

A cobol compile is getting error DML084 in the IDMSDMLC pre-compile.

Environment:
CA-IDMS, any release from r17.0 onwards.The same cobol source compiles cleanly on releases prior to r17.0.
Cause:

There was a change introduced in r17.0 which enforces the requirement that in a FIND/OBTAIN WITHIN SET USING SORT-KEY statement, the SORT-KEY identified by the USING clause can only be one field. This requires that the statement be delimited with a “;” or a “.”.

Resolution:

The best resolution is to add a “;” or a “.” to the statement depending on whether or not the statement is inside an IF/THEN/ELSE construct.

Alternatively, optional bits 309 and/or 310 can be used to change the behaviour of the compiler.

By default, the DML084 will cause the compile to end with RC=8.

If you enable bit 309 in RHDCOPTF, the compile will end with RC=4.
#DEFOPT OPT00309

If you enable bits 309 and 310 in RHDCOPTF, the compile will end with RC=0.
#DEFOPT OPT00309
#DEFOPT OPT00310

The functionality of bits 309 and 310 was added to CA-IDMS by r17.0 APAR RO12491.

From r18.0 and onwards, APAR RO12491 is fixed in the base release of CA-IDMS and therefore should not, and can not, be applied at those releases. 

Additional Information:

For more information, see the following CA IDMS DocOps pages:

Applying Optional Functionality

FIND/OBTAIN WITHIN SET USING SORT KEY (COBOL)

See also the documentation of the change in the r17.0 Release Summary.

See also RO12491.