[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: IBM Compilers (was RE: gnubol: How do we parse this language,anyway?



In a message dated 12/4/99 4:17:11 PM EST, wmklein@ix.netcom.com writes:

<< 
 A big note needs to be made here about the *OLD* OS/VS COBOL and DOS/VS COBOL
 compilers.  These products are '74 compilers that have been out of service
 for a LONG time now.  UNFORTUNATELY, there is still a relatively big code
 base out there that still uses them.  Also, unfortunately, these compilers
 have an INCREDIBLY large number of "undocumented extensions" (code that
 works, that programs rely on, but that IBM doesn't/never did support).  I
 can't recommend strongly enough to NOT get into the business of trying to
 support these.  The good news (at least for the conditional statement
 question) is that they support NONE of the '85 Standard "enhancements".
 
   ***
 
 Does this help?
 
 Bill Klein
   wmklein <at> ix.netcom.com>
  >>


Bill's breadth of knowledge is definitely awesome. As a footnote let me say 
that 'though the COBOL '74 product did not have the COBOL '85 things, the 
product had vendor extensions. 
Regrettably it included some NOT alternatives to conditional clauses. The 
regress parm in later compilers would the later compilers to see that stuff 
the 'old' way. Early versions of these later compilers were not actually 
COBOL '85; and when you left the regress parm off, as far as I understand, 
the NOT clauses died (if present anyway). Leap froggers never saw this: most 
shops were leap froggers. Later compilers had COBOL '85 syntax support for 
NOT alternatives. Leap froggers met a number of collision points when 
ultimately moving to the later compilers because numerous IBM extensions did 
not get further support. But if they did not go through the early version 
un-regressed, potentially they never knew the old NOTs would be different 
from the new NOTs.

I am confident that any old NOTs changed semantically at a point prior to 
this GNU project if the code went to new compilers unregressed. There are 
probably few. But the general phenomenon of the smaller vendor mimmicking the 
larger vendor probably suggest that some of the mainframe COBOL '74 code, 
which insists upon surviving, may actually have artifacts of this shell game. 
The fact that by the very nature of the language elements we are interested 
in here, we are dealing typically with exceptions within exceptions, there 
are probably few problems.

Depending upon our decision we may have some MF code port over and change to 
either an error or a changed semantic. If mainframe stuff arrives on this 
tool with any of its probably few incidents of this, it might well have gone 
through a flip-flop already.

Let me pull a quote out of context here to get to a slightly different angle

Again from William M. Klein
<<
NOTE: These compilers (as well as VS COBOL II) can be run with the CMPR2
compiler option.  I would suggest NOT testing with that (even though some
sites still use it) because this put the compiler in ANS'74 mode - instead of
ANS'85 mode. (This isn't its official definition, but BASICALLY is what it
does.)
>>

I do agree with his point, it is the un-regressed behavior of the compilers 
that is more important for our decision (although using them in regressed 
mode might reveal what the original NOTs did).  But for the sake of clarity. 
Some of the multi-mode compilers survive as supported products into the next 
millenium, ... for a while. A few people believe that a shop trying that is 
about to contribute to a major expansion of demand for techincal laborers. 
But the presence of code in that form is important. This project might 
deliver something in 2000, and some code on mainframe might actually still be 
the 'extended' COBOL '74 (by measn of a regressed compilation on a later 
product). I don't think that argues for any difference in our decision on the 
semantics of the nested conditionals; we just need to be able to help people 
understand what is happening to them if they move to this compiler from that 
older mainframe compilers ... then we become the lilly pad that the toads 
leap to. Which is okay as long as they know what is happening.  The incidence 
of the NOT clauses is probably small, and there can be much bigger code 
changes to make if these shops got into other vendor extensions, so the worst 
case senarios actually involve major code review requirements to come across.

But one small point that may help clarify this, and I ask for broad comment 
if there are those who see it clearly in their documentation.  I am not sure 
that all the COBOL for this-and-that
products allow the regress parm (COMPR2/NOCMPR2). There may be a clear end 
date for support of the set of products that can regress (if the regress 
feature is not in all of the really current compilers).

Bob Rayhawk

--
This message was sent through the gnu-cobol mailing list.  To remove yourself
from this mailing list, send a message to majordomo@lusars.net with the
words "unsubscribe gnu-cobol" in the message body.  For more information on
the GNU COBOL project, send mail to gnu-cobol-owner@lusars.net.