На самом деле задача стоит - делать именно ЧУВСТВИТЕЛЬНУЮ к регистру сортировку.
А функция SORT делает это "НЕЧУВСТВИТЕЛЬНО" - проверено на практике.
Причем проверялось все на чисто латинских словах - русских букв там и рядом не стояло.
Изначально было так (к примеру):
bus
Dialogue
wild
WWW
После того, как перед SORT я добавил команду
LOCALE('CLACOLSEQ','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')
стало сортироваться так:
Dialogue
WWW
bus
wild
То есть, в частном случае задача была решена.
Но на самом деле нужно общее решение - ибо могут в конце концов "попасться" не только латинские буквы, но и русские, а также всякие другие символы.
Получается, что по идее в LOCALE('CLACOLSEQ",....) нужно будет прописать практически всю таблицу ASCII - от 32-го символа до 255-го (первые 31 считаются "непечатными").
Ситуация какая-то непонятная. Неужели разработчики Клариона не сталкивались с тем, что возникает необходимость сортировки очередей по разным алгоритмам - причем, по известным алгоритмам. Они же предусмотрели возможность ключей физической таблицы с вариантами чувствительностиили нечувствительности к регистру.
И самое забавное, что в хелпе о регистрочувствительной сортировке очереди - ни слова.
Игорь Смирнов
Общее решение состоит в том, что CLACOLSEQ не зашивается в программу а хранится во внешнем файле - ini или если их надо много и разных - в таблице БД.
И самое забавное, что в хелпе о регистрочувствительной сортировке очереди - ни слова.
Так как бы само понятно - сортируется по правилам сравнения строк.
WBR,
Nick Tsigouro
В общем случае можно завести в очереди дополнительное поле, куда записывать сортирующее выражение - в данном случае - просто UPPER().
С таким дополнительным полем как раз и будет реализована НЕЧУВСТВИТЕЛЬНОСТЬ к регистру.
А ее система и так дает - зачем же масло масляное делать?
Нужна на самом деле именно ЧУВСТВИТЕЛЬНОСТЬ.
Игорь Смирнов
Система сама ничего не дает. Значит такой CLACOLSEQ.
Нужна на самом деле именно ЧУВСТВИТЕЛЬНОСТЬ.
Пардон. Я понял наоборот. Тогда VAL(Str[1]) & Str
Точнее FORMAT(VAL(Str[1]),@n03) & Str
WBR,
Nick Tsigouro
Не юзабельно. Т.к. пригодно только для случая, когда не требуется сортировка по соседним символам.
По ходу диалога я вник в проблему

Просто я привык к тому, что первое действие в новой APP - выставить правильную локаль. Соответственно, и все сортировки у меня были регистрочувствительные.
Да и поведение приложения без явно указанной локали мне всегда казалось весьма странным. Особенно в русских буквах.
С уважением,
Владимир Смелик
Ну да, для регистрочуствительных кодов (паролей - "аБв" vs. "абВ") маловато будет. А для имен собственных - вполне.
WBR,
Nick Tsigouro
Система сама ничего не дает. Значит такой CLACOLSEQ.
Никакого CLACOLSEQ'а нигде в программе не прописано.
Просто Кларион жестко знает про соответствие заглавных и строчных букв для латинского (читай - английского) алфавита. А больше на эту тему не знает ничего

:):)
И сортирует такие значения регистронечувствительно - типа, вот я какой умный.
А если попадаются, скажем, русские значения, то ситуация меняется. Так как Кларион ничего не значет про алфавит русского языка (мы же нигде ему CLACOLSEQ не подсовываем), то он начинает сортировать эти буквы в так называемом бинарном порядке - то есть, просто по возрастанию ASCII-кодов.
С другой стороны, в кодовой таблице русские буквы расположены почти на 100% так, что алфаитный порядок совпадает с бинарным (исключения - русская буква Ё, а также специфические буквы украинского, белорусского и южнославянских языков, которые находятся до основного кириллического алфавита).
Поэтому при использовании букв только базовой кириллицы создается визуальное впечатление регистрочувствительной сортировки. Но это - только лишь "кажимая видимость".
Потому что стоит только добавить в сортируемый список значение на ту же пресловутую букву "Ё", как сразу все и вскроется - эта самая "Ё" будет при сортировке помещена перед "А" - просто потому, что ее ASCII-код меньше.
Вот, собственно, и вся тайна.
Igor Smirnov

:):) Читаем хелп:
CLACOLSEQ=WINDOWS
CLACOLSEQ="string"
[...]
If this entry is omitted from the environment file, then the default ANSI ordering is used, not the windows default.
Сие означает, что если ничего нигде не задано, то сортировка будет регистрочуствительная, как для латиницы, так и для кириллицы.
И сортирует такие значения регистронечувствительно - типа, вот я какой умный.
Чудес в программировании не бывает. "Ищите и обрящете."
TIP. В среде есть поиск файлов. Иногда поиск с использованием red файла много неожиданного открывает.
WBR,
Nick Tsigouro
Написал: ClaList(2)