Why is CA 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 CA MetaCOBOL+ 1.1.
The user had a customized version of CA MetaCOBOL+ 1.1 DLM macro that was provided by special PTF LS45563.
Since CA no longer provides 'special' solutions, the user can implement the same changes for 15.1 manually.
Change the user DLM copy of CA Datacom 15.1 CABSAMP(MCT#DLM) from:
* &IF NOT &[email protected] /* GO77101
* ELSE /* SHOULD BE A
* &GOBACK /* SPECIAL
Change to (uncomment those statements by removing the *):
&IF NOT &[email protected] /* GO77101
ELSE /* SHOULD BE A
&GOBACK /* SPECIAL
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 CA 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 CA MetaCOBOL+ 1.1 special and PTFs GO77101/LS45563/LO12009:
PTF GO77101 although intended as a special was sourced into DLM with CA 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, CA 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 CA MetaCOBOL+ 1.1 has end of life (EOL) status since February 15, 2017.