Переменная длина не проблема, не знаю точно, как это делается в VMS Cobol, но IBMese для этого: -
РАЗДЕЛ ФАЙЛА.
FD ЗАПИСЬ ФАЙЛА РАЗЛИЧАЕТСЯ В ЗАВИСИМОСТИ ОТ ДЛИНЫ.
01 THE RECORDORD PICTURE X (5000).
РАЗДЕЛ РАБОЧЕГО ХРАНЕНИЯ.
01 REC-LENGTH PICTURE 9 (5) ВЫЧИСЛИТЕЛЬНЫЙ.
Когда вы читаете файл "REC-LENGTH" будет содержать длину записи, при записи записи будет записываться запись длины REC-LENGTH.
Для обработки файлов записей с разделителями вам, вероятно, потребуется использовать глагол «UNSTRING» для преобразования в фиксированный формат. Это довольно многословно (но тогда это КОБОЛ).
UNSTRING record DELIMITED BY ","
INTO field1, field2, field3, field4, field5 etc....
END-UNSTRING
Когда запись в фиксированном формате, вы можете использовать SORT как обычно.