Why is Datacom support for MetaCOBOL 15.1 translation giving error:
DLBA316E - FOUND "WHEN END" CLAUSE WHICH HAS NO CORRESPONDING "FOR" STATEMENT.
The same program translated with no error under MetaCOBOL+ 1.1.
The user had a customized version of MetaCOBOL+ 1.1 DLM macro that was provided by special PTF LS45563.
Since Broadcom no longer provides 'special' solutions, you can implement the same changes for 15.1 manually.
Change the user DLM copy of Datacom 15.1 CABSAMP(MCT#DLM) from:
* &IF NOT &B@-SPP-IS-ACTIVE /* GO77101
* ELSE /* SHOULD BE A
* &GOBACK /* SPECIAL
* &ENDIF
Change to (uncomment those statements by removing the *):
&IF NOT &B@-SPP-IS-ACTIVE /* GO77101
ELSE /* SHOULD BE A
&GOBACK /* SPECIAL
&ENDIF
NOTE: Do NOT change the CABDSAMP member as it is target library SMP/e maintained.
It may be that only some of the user programs needed the special DLM change for MetaCOBOL+ 1.1 so two versions of the DLM were provided.
If so, two versions of DLM would also need to be provided with 15.1.
Here is a bit of history about MetaCOBOL+ 1.1 special and PTFs GO77101/LS45563/LO12009:
PTF GO77101 although intended as a special was sourced into DLM with MetaCOBOL+ 1.1 genlevel 9511.
PTF LO12009 was provided for 1.1 to undo GO77101 commenting those statements.
PTF LS45563 was then provided for those situations that needed those statements uncommented.
As intended, Datacom support for MetaCOBOL 15.1 was provided with those statements commented (no special). And, since any of the MetaCOBOL macros could be customized by the user, the user continues to have the option to create copied version(s) of MCT#DLM.
Note that MetaCOBOL+ 1.1 has end of life (EOL) status since February 15, 2017, see the MetaCOBOL End of Life Announcement.