Параметрические СФ

<< 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*

<Ф*

 

При трансляции   ПФ  все  строки-комментарии  автоматически опускаются.