Улучшил алгоритм, теперь работает в разы быстрее
SUB(Cap, $mode, $input_str) // Подпрограмму пишем в начале скрипта до основного кода
IF($first = 0)
$first = 1
$a_let = "А:Б:В:Г:Д:Е:Ё:Ж:З:И:Й:К:Л:М:Н:О:П:Р:С:Т:У:Ф:Х:Ц:Ч:Ш:Щ:Ъ:Ы:Ь:Э:Ю:Я:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"
$a_let_f = STRFILTER($a_let, ":", 0)
STRSEPARATE($a_let,":",$arr_cap)
STRSEPARATE("а:б:в:г:д:е:ё:ж:з:и:й:к:л:м:н:о:п:р:с:т:у:ф:х:ц:ч:ш:щ:ъ:ы:ь:э:ю:я:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z", ":", $arr_cap2)
$arrsiz=ARRSIZE($arr_cap)
END_IF
$let = $input_str
$let3 = ""
FOR($i1=1,$i1<=STRLEN($let))
$let2 = STRCUT($let,$i1,1)
$str_pos = STRPOS($a_let_f,$let2)
IF($str_pos > 0)
$out = 0
IF(($let2 = $arr_cap[$str_pos-1]) & (($mode = 3)|($mode = 2))) // Большие в маленькие
$let2 = $arr_cap2[$str_pos-1]
$out = 1
END_IF
IF(($let2 = $arr_cap2[$str_pos-1]) & (($mode = 3)|($mode = 1))&($out = 0)) // Маленькие в большие
$let2 = $arr_cap[$str_pos-1]
$out = 1
END_IF
END_IF
$let3 = STRCONCAT($let3, $let2)
END_CYC
$let = $let3
END_SUB
// В скрипте в нужном месте вызываем подпрограмму Cap(режим,строка)
// Параметры 1 - ВСЕ БУКВЫ БОЛЬШИЕ
// 2 - все буквы маленькие
// 3 - БОЛЬШИЕ в маленькие - маленькие в БОЛЬШИЕ
Cap(1, "Тут сТрОкА Текста ИЛИ пЕРЕМЕННАЯ")
LOGWRITE ($let) // Итоговая строка выводится в переменную $let
HALT