Группа технических форматных выходов

&unifor('+9…')

Navigation:  ПРИЛОЖЕНИЯ > 4. ЯЗЫК ФОРМАТИРОВАНИЯ ДАННЫХ. РЕДАКТОР ФОРМАТОВ > Функции > Строковые функции > Форматные выходы > UNIFOR формат-программа >

Группа технических форматных выходов

&unifor('+9…')

Previous pageReturn to chapter overviewNext page

&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.

 


См. также:

Формат-программа UNIFOR