And some small corrections...at least for RM/COBOL:
Split keys do not cause the compiler to generate extra instructions. There is a very, very small runtime cost resulting from the need to gather key information from more than one location in the record, but my guess is that one cannot measure this in any real situation, as it is a tiny fraction of the total 'cost' of an I/O operation.
Split keys do not take any more space in the file. RM/COBOL uses multiple algorithms to compress keys, thereby making the index trees smaller (by placing more key values at each level of the tree). Split keys will take no more space, or i/o processing time, than contiguous keys containing identical data. (BTW, it is smaller index trees that improve indexed file performance.)
Hope this helps clarify technical issues.
As to coding style, split keys came very late in the COBOL language evolution, so most programs use the contiguous approach. Clearly the contiguous approach has led to some truly convoluted record definitions where a simple split key declaration would have allowed the placement of some fields in a record layout in a more 'natural' place (such as
last name near
first name) within the record. But there is too much history in the COBOL legacy data to unwind this now.
Tom Morrison