Абриаль 2.0 http://www.artint.ru/packin/abrial А.И.Пацкин [mailto:aleksandr@tochka.ru]
README 2.0 ] Абриаль 2.0 ] Введение (1.6) ] Обзор (1.6) ] Публикации ] Глоссарий ] Оглавление ] Руководство ] Выше ] _ operations ] A ] B ] C ] D ] E ] [ F ] G ] H-I ] L ] M ] N ] O ] P ] R ] S ] T-X ]

F


FILEAPPEND  Добавление текста в конец файла.


Формат:

<#FILEAPPEND file-name text

Аргументы/Атрибуты:

file-name - путь к файлу
text - текст добавляемый в файл

Описание:

Дописывает в конец файла file-name текст text

В случае успеха возвращает имя файла без изменений, иначе пусто.

Признаки:

простой, ленивый. 

Использование:  

 

Примечание:

 

Пример:

<#IFNOT (FILEAPPEND "result.txt" (FILELOAD "text.txt"))>
<#ERROR "Ошибка записи">
<#/> 

Дописываем текст файла "text.txt" в конец "result.txt", в случае неудачи генерируем ошибку.


FILEEXIST  Проверка наличия файла.


Формат:

<#FILEEXIST file-name>

Аргументы/Атрибуты:

file-name - путь к файлу

Описание:

Проверяет наличие файла по указанному пути file-name

Возвращает имя файла без изменений, если файл существует, иначе пусто.

Признаки:

простой, ленивый. 

Использование:  

 

Примечание:

 

Пример:

<#IFNOT (FILEEXIST (FileName))> <#ERROR (CAT "Ошибка! " (FileName) " отсутствует!")> <#/>

Выводим сообщение об ошибке, если указанный файл отсутствует. 


FILELOAD  Получение текста файла.


Формат:

<#FILELOAD file-name>

Аргументы/Атрибуты:

file-name - путь к файлу

Описание:

В случае успеха возвращает текст содержимого указанного текстового файла file-name, иначе пусто.

Признаки:

простой, ленивый. 

Использование:  

 

Примечание:

 

Пример:

<#SET ftext=(FILELOAD "Mytext.txt")> 

Переменной ftext присваиваем текст содержимого файла "Mytext.txt" из текущей директории.


FILESAVE  Создание текстового файла и запись текста файла.


Формат:

<#FILESAVE file-name text>

Аргументы/Атрибуты:

file-name - путь к файлу
text - текст для записи в файл.

Описание:

Создает текстовый файл с именем  file-name, записывает в него указанный текст text

В случае успеха возвращает имя файла без изменений, иначе пусто. 

Признаки:

простой, ленивый.  

Использование:  

 

Примечание:

 

Пример:

<#FUNC BackUp=(FILESAVE (PATH CHANGE=(1) TO=".bak") (FILELOAD (1)))>

Функция создает резервную копию файла, который указан первым аргументом. 


FIND  Поиск подстроки в строке.


Формат:

<#FIND string-expression substring

Аргументы/Атрибуты:

string-expression - исходная строка для поиска
substring - искомая подстрока

Описание:

Производит поиск первого вхождения подстроки substring в исходной строке string-expression

Возвращает номер позиции первого символа подстроки substring в исходной строке string-expression начиная с единицы, если вхождение найдено, иначе пусто. 

Признаки:

простой, ленивый.  

Использование:  

 

Примечание:

 

Пример:

<#IF (pointpos=(FIND (fname) "."))> найдена "." в позиции <#pointpos> <#ELSE> "." отсутствует <#/>

Позиция "." в строке (fname)


FOR  Цикл.


Формат:

<#FOR initialization condition iteration [body] > [body] <#/>

Аргументы/Атрибуты:

initialization - действие перед первым шагом цикла 
condition - условие выполнения тела цикла
iteration - действие на каждом шаге цикла 
body - тело цикла

Описание:

Оператор цикла. Выполняет тело цикла body до тех пор, пока выполняется условие condition

Аргументом initialization  может быть указано выражение, которое выполняется только перед началом выполнения итераций. 

Аргументом condition должно быть указано выражение, представляющее собой условие выполнения тела цикла. Если в результате вычисления выражения condition возвращается пустое значение, очередная итерация не выполняется, цикл заканчивается. 

Аргументом  iteration может быть указано выражение, которое выполняется перед проверкой условия condition после очередного шага цикла. Последним аргументом, тело цикла body может быть указано внутри простого тега в функциональном стиле. 

Возвращает результат выражения initialization объединенный с вычисленным для каждой итерации телом body, если оно указано, внутри простого тега, затем внутри сложного тега. 

Признаки:

составной, энергичный.  

Использование:  

 

Примечание:

 

Пример:

<#FOR ((i=0) "<br>инициализация параметра цикла")
  (DIAL_ASK ("Step: " (i), "Next step?"))  (ADD i 1) (CAT "<br>" "тело простого тега, шаг "(i))>
 <br>тело сложного тега, шаг <#i>
<#/>


FORALLASP  Цикл по всем аспектам объекта.


Формат:

<#FORALLASP [{[N=]object-name [C=]class-name}| O=object] [[RET=]body] > [body] <#/>

Аргументы/Атрибуты:

object-name - имя объекта
class-name - имя класса объекта
object - идентификатор объекта
body - тело цикла

Описание:

В теле цикла body поочередно для каждого шага устанавливаются текущими все возможные аспекты объекта текущей БД, включая все наследованные, и в том числе от универсального класса TOBJ. 

Объект может быть указан числовым идентификатором object или своим именем object-name и именем своего класса class-name, без атрибутов "N= C=" ожидается в качестве первого и второго аргументов. По умолчанию используется текущий объект текущей БД. 

С атрибутом "RET=", или без него последним аргументом, тело цикла body может быть указано внутри простого тега в функциональном стиле. 

В случае успеха возвращает объединенный результат вычислений для каждой итерации тела body, сначала внутри простого тега, затем внутри сложного тега. 

Признаки:

составной, ленивый.  

Использование:  

 

Примечание:

 

Пример:

<br><h3>Аспекты класса "Личность":</h3>
<#FORALLASP N="Личность" C="CLASS" D=((XBASE)"Test\AIS.ab") RET="<br>">
  <#ASPECT>  
<#/>


FORALLOBJ  Цикл по всем объектам - значениям атрибута.


Формат:

<#FORALLOBJ [[AN=]aspect-name | A=aspect] [{N=object-name C=class-name}| O=object] [D=dbname] [TO=target-aspect-name] [POS=position] [NUM=number] [[RET=]body] > [body] <#/>

Аргументы/Атрибуты:

aspect-name - имя исходного аспекта
aspect - идентификатор исходного аспекта
object-name - имя объекта
class-name - имя класса объекта 
object - идентификатор объекта
dbname - путь к файлу БД
target-aspect-name - имя целевого аспекта
position - начало сегмента итераций
number - размер сегмента итераций
body - тело цикла

Описание:

Поочередно перебирает все связи указанного объекта через исходный аспект. В теле цикла body, внутри сегмента итераций, устанавливает текущим объект, участвующий в очередной связи по целевому аспекту. Для бинарных связей целевым аспектом является аспект, альтернативный исходному. Таким образом, в теле цикла поочередно для каждой связи итерации устанавливает текущими объекты - значения атрибута указанного объекта. 

Итерации не начинаются, если начало сегмента итераций превосходит имеющееся количество связей указанного объекта по исходному аспекту и заканчиваются, если пройдены все связи или достигнут конец сегмента. Если размер сегмента итераций не указан или нулевой, производит итерации по всем наличным связям. Если начальная позиция сегмента не указана, либо отрицательная или нулевая, то итерации начинаются с первой наличной связи (POS=1). 

Сегмент может быть задан с атрибутом "POS=" позицией position первого значения атрибута начиная с единицы и, с атрибутом "NUM=", количеством number значений атрибута в сегменте.

Исходный аспект может быть указан числовым идентификатором aspect или своим именем aspect-name, без атрибута "AN=" ожидается в качестве первого аргумента. По умолчанию в качестве исходного аспекта используется текущий. 

Целевой аспект может быть указан с атрибутом "TO=" своим именем target-aspect-name. Если целевой аспект не указан, и по умолчанию, используется целевой аспект, альтернативный исходному. Для бинарных аспектов объектов достаточно указать исходный аспект, для многоместных аспектов необходимо задавать целевой аспект.

Объект может быть указан с атрибутом "O=" числовым идентификатором object либо с атрибутом "N=" своим именем object-name и с атрибутом "C=" именем своего класса class-name. По умолчанию используется текущий объект. 

Если с атрибутом "D=" указана БД dbname, отличная от текущей, то необходимо явно указывать аспект и объект. По умолчанию используется текущая БД.  

С атрибутом "RET=", или без него, последним аргументом, тело цикла body может быть указано внутри простого тега в функциональном стиле. 

В случае успеха возвращает объединенный результат вычислений тела body на каждом шаге итераций сначала внутри простого тега, затем внутри сложного тега. 

Признаки:

составной, ленивый.  

Использование:  

 

Примечание:

 

Пример:

<#FORALLOBJ AN="увлеч\увлечения" N="Иванов ИИ" C="Личность" D=((XBASE)"Test\AIS.ab")>
<#NAME>&nbsp;
<#>

Выводим список увлечений конкретной личности.


FORASP  Цикл по всем связям аспекта.


Формат:

<#FORASP [[AN=]aspect-name | A=aspect] [{N=object-name C=class-name}| O=object] [D=dbname] [POS=position] [NUM=number] [[RET=]body] > [body] <#/>

Аргументы/Атрибуты:

aspect-name - имя исходного аспекта 
aspect - идентификатор исходного аспекта 
object-name - имя объекта 
class-name - имя класса объекта
object - идентификатор объекта 
dbname - путь к файлу БД 
position - начало сегмента итераций
number - размер сегмента итераций
body - тело области контекста

Описание:

Поочередно перебирает все связи исходного аспекта указанного объекта. В теле цикла body, для каждой связи внутри сегмента итераций устанавливает текущими указанные объект и исходный аспект.

Итераций не происходит, если начало сегмента итераций превосходит имеющееся количество связей указанного объекта по исходному аспекту. Итерации заканчиваются, если пройдены все связи или достигнут конец сегмента. Если размер сегмента итераций не указан или нулевой, производит итерации по всем наличным связям. Если начальная позиция сегмента не указана, либо отрицательная или нулевая, то итерации начинаются с первой наличной связи (POS=1). 

Сегмент может быть задан с атрибутом "POS=" позицией position первого значения атрибута начиная с единицы и, с атрибутом "NUM=", количеством number значений атрибута в сегменте.

Исходный аспект может быть указан числовым идентификатором aspect или своим именем aspect-name, без атрибута "AN=" ожидается в качестве первого аргумента. По умолчанию в качестве исходного аспекта используется текущий.

Объект может быть указан с атрибутом "O=" числовым идентификатором object либо с атрибутом "N=" своим именем object-name и с атрибутом "C=" именем своего класса class-name. По умолчанию используется текущий объект. 

Если с атрибутом "D=" указана БД dbname, отличная от текущей, то необходимо явно указывать аспект и объект. По умолчанию используется текущая БД.  

С атрибутом "RET=", или без него, последним аргументом, тело цикла body может быть указано внутри простого тега в функциональном стиле. 

В случае успеха возвращает объединенный результат вычислений тела body на каждом шаге итераций сначала внутри простого тега, затем внутри сложного тега. 

Признаки:

составной, ленивый.  

Использование:  

 

Примечание:

Аналогичен FORLINE. 

Пример:

<#FORASP AN="уч-ст\ученая степень" N="Иванов ИИ" C="Личность" D=((XBASE)"Test\AIS.ab")>
<#NAME>&nbsp(<#ASP AN="фио\ФИО" ТО="фио\ФИО для">)&nbsp;
<#ASP AN="уч-зв\ученое звание" TO="уч-зв\об-ты уч-зв">&nbsp;
<#ASP TO="уч-ст\об-ты уч-ст">&nbsp;
<#ASP TO="уч-ст\область наук">
<#/>


FORCLASSES  Цикл по всем классам БД.


Формат:

<#FORCLASSES [D=dbname] [[RET=]body] > [body] <#/>

Аргументы/Атрибуты:

dbname - путь к файлу БД
body - тело цикла

Описание:

В теле цикла body поочередно устанавливает текущими объекты - дескрипторы всех пользовательских классов БД dbname или текущей, по умолчанию. 

С атрибутом "RET=", или без него последним аргументом, тело цикла body может быть указано внутри простого тега в функциональном стиле. 

В случае успеха возвращает объединенный результат вычислений для каждой итерации тела body, если оно указано, внутри простого тега, затем внутри сложного тега. 

Признаки:

составной, ленивый.  

Использование:  

 

Примечание:

 

Пример:

<#FORCLASSES D=((XBASE)"Test\AIS.ab") RET="<br>"><#NAME><#/>

Выводим имена всех пользовательских классов БД "AIS.ab".


FORDB  Установка текущей БД.


Формат:

<#FORDB [D=]dbname [[RET=]body] > [body] <#/>

Аргументы/Атрибуты:

dbname - путь к файлу БД
body - тело области контекста

Описание:

В теле body устанавливает текущей указанную БД dbname. С атрибутом "RET=", или без него последним аргументом, тело body может быть указано внутри простого тега в функциональном стиле. 

В случае успеха возвращает объединенный результат вычисления тела body, если оно указано, внутри простого тега, затем внутри сложного тега. 

Признаки:

составной, ленивый.  

Использование:  

 

Примечание:

 

Пример:

<#FORDB D="MyDB.ab"><#DBASE><#/> 


FORLINE  Цикл по всем связям аспекта.


Формат:

<#FORLINE [[AN=]aspect-name | A=aspect] [{N=object-name C=class-name}| O=object] [D=dbname] [POS=position] [NUM=number] [[RET=]body]> [body] <#/>

Аргументы/Атрибуты:

aspect-name - имя аспекта 
aspect - идентификатор аспекта 
object-name - имя объекта 
class-name - имя класса объекта
object - идентификатор объекта 
dbname - путь к файлу БД 
position - позиция 
number - номер 
body - тело области контекста

Описание:

См. FORASP. 

Признаки:

составной, ленивый.  

Использование:  

 

Примечание:

Аналогичен FORASP. 

Пример:

<#FORLINE > <#/>


FORMEDIT  Редактирование строки.


Формат:

<#FORMEDIT [[AN=]aspect-name | A=aspect] [{[N=]object-name [C=]class-name}| O=object] [D=dbname] [LABEL=label] [ROWS=rows] [COLS=columns] [SIZE=size] [OTHER=other] > 

Аргументы/Атрибуты:

aspect-name - имя аспекта
aspect - идентификатор аспекта 
object-name - имя объекта
class-name - имя класса объекта
object - идентификатор объекта
dbname - путь к файлу БД
label - метка кнопки
columns - количество столбцов (символов в строке)
rows - количество строк 
size - количество столбцов (символов в строке)
other - другие параметры 

Описание:

Генерирует форму редактирования значения аспекта заданного объекта с кнопкой подтверждения внесенных изменений, в общем виде:
 <form name="Fobject_aspect" method="post" action="ab://ab/D=dbname&O=object&A=aspect&M=method&POS=1">
<input type="hidden" name="ACT " value={"_EDIT" | "_TEXT"}>
<input type="hidden" name="O" value="object">
<input type="hidden" name="A" value="aspect">
{<input type="text" name="_VAL" [size="size"] [other] value="value"> | 
 <textarea name="_VAL" [rows="rows"] [cols={"columns" | "size"}] [other]> [value] </textarea>}
<input type="submit" value={"label" | "OK!"}>
</form>
где: method-метод формирующий текущую страницу; value-значение аспекта объекта БД dbname.  

По нажатию кнопки подтверждения, выполняется одно из действий _EDIT или _TEXT. Затем вызывается метод, формирующий текущую страницу (&M=method). Если установлен аспект (текущий или указанный), выполняется действие (&ACT=) _EDIT _VAL=value, иначе выполняется действие (&ACT=)_TEXT _VAL=value

Исходный аспект может быть указан числовым идентификатором aspect или своим именем aspect-name, без атрибута "AN=" ожидается в качестве первого аргумента. Объект может быть указан числовым идентификатором object или своим именем object-name и именем своего класса class-name, без атрибутов "N= C=" ожидается в качестве второго и третьего аргумента. По умолчанию используется текущий аспект текущего объекта текущей БД. Если указана БД dbname, отличная от текущей, необходимо явно указывать объект и аспект.

Если указаны "ROWS=" или "COLS=", то формируется тег <textarea name="_VAL" [rows="rows"] [cols={"columns" | "size"}] [other]> [value] </textarea> для редактирования значения аспекта value с указанным количеством строк rows. Если rows<=0 или не указан, по умолчанию rows=3 (три строки). Ширина области редактирования текста устанавливается либо в columns, если "COLS=" указан, либо в size, если "SIZE=" указан. По умолчанию IE устанавливает стандартную ширину.

Если не указаны атрибуты "ROWS=" и "COLS=", генерирует однострочное поле ввода: <input type="text" name="_VAL" [size="size"] [other] value="value"> с шириной size, если "SIZE=" указан. По умолчанию IE устанавливает стандартную ширину.

Другие параметры формы ввода  задаются аргументом other ("disabled","maxlength="). Аргументом label устанавливается название кнопки подтверждения, по умолчанию LABEL="OK!".

В случае успеха возвращает полученную таким образом <form>-тег (форму редактирования), иначе пусто.

Признаки:

простой, ленивый.  

Использование:  

 

Примечание:

 

Пример:

<br>Ученая степень:
<#FORMEDIT AN="уч-ст\ученая степень" N="Иванов ИИ" C="Личность" D=((XBASE)"Test\AIS.ab") LABEL="Изменить"> 


FORNEMPASP  Цикл по всем непустым аспектам объекта.


Формат:

<#FORNEMPASP [{[N=]object-name [C=]class-name}| O=object] [[RET=]body] > [body] <#/>

Аргументы/Атрибуты:

object-name - имя объекта
class-name - имя класса объекта
object - идентификатор объекта
body - тело цикла

Описание:

В теле цикла body поочередно устанавливает текущими все непустые аспекты объекта (имеющие хотя бы одну связь по аспекту объекта).

Объект может быть указан своим именем object-name и именем класса class-name, членом которого он является, без атрибутов "N= C=" ожидается в качестве первого и второго аргументов. По умолчанию используется текущий объект текущей БД. 

С атрибутом "RET=", или без него последним аргументом, тело цикла body может быть указано внутри простого тега в функциональном стиле. 

В случае успеха возвращает объединенный результат вычислений на каждом шаге тела body, сначала внутри простого тега, затем внутри сложного тега. 

Признаки:

составной, ленивый.  

Использование:  

 

Примечание:

 

Пример:

<#FOROBJ (OBJ N="Иванов ИИ" C="Личность") D=((XBASE)"Test\AIS.ab")>
<#FORNEMPASP RET="<br>">
 <#ASPECT> 
<#/>
</#>


FOROBJ  Установка текущего объекта и аспекта.


Формат:

<#FOROBJ [[O=]object] [AN=aspect-name | A=aspect] [D=dbname] [[RET=]body]> [body] <#/>

Аргументы/Атрибуты:

object - идентификатор объекта
aspect-name - имя аспекта
aspect - идентификатор аспекта
dbname - путь к файлу БД
body - тело области контекста

Описание:

В теле body устанавливает текущим объект и аспект. Если указана БД dbname, отличная от текущей, то необходимо явно указывать объект и аспект. Объект может быть указан числовым идентификатором object, без атрибута "O=" ожидается в качестве первого аргумента. Аспект может быть указан числовым идентификатором aspect или своим именем aspect-name. По умолчанию внутри тела body используются текущий объект текущей БД. С атрибутом "RET=", или без него последним аргументом, тело body может быть указано внутри простого тега в функциональном стиле. 

В случае успеха возвращает объединенный результат вычисленного тела body с установленными или текущими объектом и аспектом, сначала внутри простого тега, затем внутри сложного тега. 

Признаки:

составной, ленивый.  

Использование:  

 

Примечание:

 

Пример:

<#FOROBJ (OBJ N="Names" C="CLASS") D="MyDB.ab" RET="<hr>")><#OBJFORM><#/>

Выводим в виде таблицы свойства класса Names БД "MyDB.ab".


FUNC  Объявление функций.


Формат:

<#FUNC {function-name=function-body}*

Аргументы/Атрибуты:

function-name - имя функции
function-body - тело функции

Описание:

Объявляет функции с именем function-name и телом функции function-body

Ничего не возвращает.

Признаки:

простой, энергичный.  

Использование:  

 

Примечание:

 

Пример:

<#FUNC GetObj= > 


 

Все права защищены. © 2000-2003 РосНИИ ИИ
http://www.artint.ru
Copyright. © 2000-2003 by RRIAI
Александр Иосифович Пацкин [mailto:aleksandr@tochka.ru].
07 марта, 2004

К началу документа.