Группа технических форматных выходов&unifor('+9…') |
&UNIFOR(‘+9….) - Группа технических форматных выходов |
Структура форматного выхода: &unifor(‘+9T<исходные_данные>,
|
где T – определяет тип и принимает след.значения:
0 - вернуть номер текущего повторения в повторяющейся группе (исходные данные не задаются);
1 - вернуть имя файла из заданного полного пути/имени;
2 - вернуть путь из заданного полного пути/имени;
3 - вернуть расширение из заданного полного пути/имени;
4–вернуть имя диска из заданного полного пути
5 - вернуть длину исходной строки;
6 - вернуть фрагмент строки: +96A*SSS.NNN#<строка>
A - направление: 0 - с начала строки; 1 - с конца
SSS – смещение
NNN - кол-во символов;
7 - вернуть строку в верхнем регистре;
8 - заменить в заданной строке один символ на другой (регистр учитывается):
+98ab<строка>
a - заменяемый символ
b – заменяющий символ;
9 - групповая установка глобальных переменных (для ИРБИС-Навигатора). Исходная строка закодирована через URLEncode (&unifor('+3E....). После раскодировки рассматривается как список строк(TStringList.Text). Каждая строка этого списка имеет структуру:
NNN#<значение_глобальной_переменной_NNN>;
A – Вернуть размер файла в байтах.
C – вставить данные из заданного текстового файла:
+9С<path>,<dbname>,<filename>
<path> – определяет относительный путь к файлу в рамках ИРБИС и принимает значения: 0 – основная директория системы (для ИРБИС32 – та, где находятся исполняемые модули; для ИРБИС64 – та, где находятся исполняемые модули сервера); 1 – общая директория баз данных (по умолчанию \DATAI); 10 – директория конкретной БД;
<dbname> – имя БД (имеет смысл только при path=10). По умолчанию – предполагается текущая БД;
<filename> – имя файла;
D – сохранить заданный внутренний двоичный объект в заданном файле:
+9DNN#<полный путь>
NN – Номер внутреннего двоичного объекта;
F – вернуть ANSI-символ с заданным кодом; &uf('+9FNNN') Где NNN - код символа Такой форматный выход может пригодиться, например, когда надо вывести в литерале символ, совпадающий с ограничителями литерала. '11111',&Uf('+9F39'),'22222' результат расформатирования: 11111'22222
G - преобразовать заданную строку в список слов; Извлечь из заданной строки слова и вернуть их в виде списка
&uf('+9G<text>') границы слов определяются на основе ISISACW.TAB (таблицы алфавитных символов).
I - Заменить в исходных данных некоторую заданную последовательность символов другой заданной последовательностью символов
('+9I !AAAA!/BBBB/',<данные>') - где:
! - уникальный разделитель, отсутствующий в строке АААА
/ - уникальный разделитель, отсутствующий в строке ВВВВ
ВВВВ - может быть пустым значением, в этом случае последовательность АААА будет удаляться.
Обрабатываются ВСЕ (а не только первое) вхождения АААА в исходные данные. В качестве разделителей можно использовать ТОЛЬКО символы стандартного набора (с кодом <128).
J - <полный путь и имя файла> - представить заданный ДВОИЧНЫЙ файл в виде: ^A<тип_файла>^B<данные файла перекодированные на основе URLEncode> (при этом имя файла может задаваться в виде маски; использоваться будет ПЕРВЫЙ найденный файл с такой маской).
K - <полный путь и имя файла>') - удалить заданный файл. (при этом имя файла может задаваться в виде маски; удаляться будут ВСЕ файлы с такой маской).
L - Проверить наличие файла/корректность URL
&unifor('+9L',<path>,<dbname>,<filename>)
<path> - условный путь к файлу, принимает значения:
0 - основная папка IRBIS64 на сервере (\irbis64\);
1 - папка DATAPATH (\irbis64\datai\)
2,3,10 - папка БД <dbname>
11 - абсолютный путь/URL
<dbname> - имя БД, имеет смысл только при path=2,3,10
<filename> - имя файла (в случае path=11 - полный путь и имя файла ИЛИ URL)
Функция возвращает:
0 - если файл отсутствует/некорректный URL
1 - если файл присутствует/корректный URL
&uf('+9L1,,\deposit\rksu.fst')
(....&uf('+9L10,',&uf('+D'),',',v951^A)....)
R - &uf('+9R<римское_число> - преобразование римского числа в арабское
S - Найти подстроку.
+9S!подстрока!<исходная_строка>
где подстрока – подстрока, которую нужно найти; <исходная_строка> – исходная строка для поиска; символ ! – уникальный разделитель, отсутствующий в искомой подстроке.
Возвращает позицию первого символа найденного вхождения подстроки в исходную строку. Считается, что символы в строке нумеруются с 1. Если подстрока не найдена, то возвращает 0. Комментарий: следует отметить, что в функции Вернуть часть строки – &uf('+96… указывают смещение, а не позицию символа.
X - &uf('+9X<арабское_число> - преобразование арабского числа в римское
V - &uf('+9V')? который возвращает номер поколения ИРБИС:
- 32 - если форматирование выполняется в ИРБИС32
- 64 - если в ИРБИС64 (и ИРБИС128)
Может быть полезен при разработки единых форматов, которые по-разному выполняются в ИРБИС32 и ИРБИС64.
См. также: