I am working through the Cakewalk Application Language Programming Guide.pdf
I made some test scripts which successfully change Now, track titles, get the event kind, etc.
So fundamentally, CAL is there and still works.
The scripts seem to be divided into 2 types:
1) Ones with author details inside. These have filenames that conform to the DOS 8.3 all-caps format and appear to to originate from a competition held in 1991. Each author has an ID and seems keen to publish personal details. All of these have a 3-part structure comprising 3 do-blocks which, in some file comments, are identified as Prolog, Body and Epilog. UNDUPE.CAL is one of these, the attribution is however a bit vague. It only states "Maybe Miguel Ratton".
2) Ones with no author in the comments. These have mixed-case long names. None have originator or author info.
These are also structurally different in that they have a single do block and most have looping statements such as while and, significantly, forEachEvent.
There is one from this group that stands out: Split Note to Tracks.cal in that it has in the comments:
Courtesy Red Nile Productions 1993
Modified Greg Hendershott at user's request 12/10/93
There is also a script called need20.cal which is called up by many other scripts. All it does is check whether the CAL engine is version 2.0 or higher. (X3 is 100 = v10.0)
I am not deep enough into CAL yet but my guess is that the older scripts conform to this 3-block Prolog-Body-Epilog idiom which carries with it an implied looping and that this is now superseded by explicit looping statements, which may explain why icontakt finds only one note is being deleted from a selected range in UNDUPE.CAL. (Although I am not getting it to delete ANY yet...)
Having said that, I am finding that I can play with the 3-block idiom and it does seem to work to some degree.
I have found no mention of the 3-block idiom in the document so far, so this is all speculation at this point.