<< Click to Display Table of Contents >> Navigation: Для опытных пользователей > Стандартные фрагменты > Метод стандартных фрагментов > Параметрические СФ |
Параметрические фрагменты представляют собой поименованные последовательности строк базисного входного языка, в которых может содержаться произвольное количество переменных параметров, обозначенных символов ?. Каждое появление символа ? в теле фрагмента есть запрос на подстановку очередного значения переменного параметра из обращения к фрагменту. В качестве фактического значения параметра может быть любая последовательность символов без использования символов ' и *. Значение числового параметра <пусто> не является особым случаем. Если в качестве значения параметра задается символ ?, то это приводит к исключению из тела ПФ строки, вызывающей этот параметр. Этот прием позволяет легко освободить тело СФ при его настройке на конкретное применение от всех лишних строк.
С целью самодокументирования ПФ в них допускается применять строки-комментарии, которые транслятором ПФ опускаются.
Обращение к ПФ имеет следующий общий вид:
<обращение к ПФ>::=<идентификатор обращения>['<параметр>]...*
где <идентификатор обращения> совпадает по написанию с идентификатором фрагмента, но только начальная буква идентификатора Ф заменяется символом ?.
Приведем небольшой пример.
Ф1'П*
Е48-76'Ф230*
Е48-187'Ф230*
Е48-202'Ф231*
Е48-225'Ф231*
<Ф*
Обращение к этому фрагменту имеет простейший вид: ?1*
На месте такой записи в исходных данных после трансляции стандартных фрагментов в тексте-результате будут записаны следующие строки:
Е48-76'Ф230*
Е48-187'Ф230*
Е48-202'Ф231*
Е48-225'Ф231*
В строках ПФ могут содержаться переменные параметры, которые обозначаются с помощью символа "?", например:
Ф2'П*
Е48-187'Ф230*
Е48-187'Ф230*
Е48-202'?=Ф231*
Е48-225'Ф231*
<Ф*
В этом случае, при обращении к параметрическому СФ, указывается идентификатор фрагмента и записываются значения переменных параметров в той последовательности, как они встречаются в теле фрагмента, например, обращение:
?2'76'100'237*
даст после трансляции следующий результат:
Е48-76'100=Ф230*
Е48-187'Ф230*
Е48-202'237=Ф231*
Е48-225'Ф231*
Таким образом, появление символа "?" в теле СФ есть запрос на подстановку очередного значения переменного параметра из обращения к СФ.
Значение переменного параметра <пусто> не является особым случаем, например, при обращении к следующему фрагменту:
Ф3'П*
Е48-?'?=Ф230*
Е48-187'Ф230'?
Е48-202'?=Ф231*
Е48-225'Ф231*
<Ф*
можно записать: ?3'76'100'35,6'237*
В этом случае будет получен следующий результат:
Е48-76'100=Ф230*
Е48-187'Ф230'35,6*
Е48-202'237=Ф231*
Е48-225'Ф231*
Если цену в расценке Е48-187 указывать не нужно, то обращение к СФ можно записать так:
?3'76'100''237*
После трансляции будет получен следующий результат:
Е48-76'100=Ф230*
Е48-187'Ф230'*
Е48-202'237=Ф231*
Е48-225'Ф231*
Если в качестве значения переменного параметра в обращении к фрагменту задан символ "?", то строка тела фрагмента, содержащая этот параметр, в текст-результат не записывается, например, при обращении к ФЗ в виде:
?3'76'100'?237*
будет получен следующий результат:
Е48-76'100=Ф230*
Е48-202'237=Ф231*
Е48-225'Ф21*
Если в исключаемой строке содержаться другие переменные параметры, то они не учитываются при формировании обращения к СФ, например, обращение в виде:
?3'?''237*
даст следующий результат:
Е48-187'Ф230*
Е48-202'237=Ф231*
Е48-225'Ф231*
В параметрических фрагментах можно применять строки-комментарии, имеющие следующий вид:
: <текст>*
Комментарии позволяют оформлять ПФ в удобном для чтения виде, например:
Ф4'П*
: СФ НА ПОСАДКУ ДЕРЕВЬЕВ*
: ПОДГОТОВКА ПОСАДОЧНЫХ МЕСТ*
Е48-?'?=Ф230*
: ПОСАДКА*
Е48-202'Ф230'?*
: ЗАГОТОВКА ДЕРЕВЬЕВ*
Е48-187'?=Ф231*
:УХОД ЗА ДЕРЕВЬЯМИ*
Е48-225'Ф231*
<Ф*
При трансляции ПФ все строки-комментарии автоматически опускаются.