Описание команд макроязыка генератора докумнтов Используя макрокязык, Вы можите формировать по входным фор- мам выходные документы, в которых на месте команд макроязы- ка будут подставлятся данные из активных Баз Данных (БД). Текст формы не должен привышать 64 kB. Макроязык состоит из: - макрокоманд - описателей форматов - знаков операций - макрооператров 1. Макрокоманды. Макрокоманда описывает данные, которые надо подставить в вы- ходной документ из активных БД. Синтаксис: &[0.]b.p1[,pn..][;r.i/n.p1[,pn..]]& | | | | | | | |_ конец макро | | | | | | | | | | | | | | | | | | | | | | | | | | | |_ описатель классифика- | | | | | | тора | | | | | |___ номер активного ин- | | | | | декса | | | | |_____ номер БД - сына | | | | | | | |_ номера полей, в случае если необходимо | | | определить несколько полей, то их номе- | | | ра перечесляют через <,> в порядке их | | | использования | | | | | |_ номер области в которой находится БД, из | | которой будет братся информация | | | |_ указатель на использование выражения, опре- | деляемого значением полей с номерами | для текущей записи из области , в качестве | ключа при поиске информации в БД из области | с активным индексом . | |___ начало макро Макрокоманда должна начинаться и заканчиваться символом <&>. Если не указан <0.> в начале макрокоманды, то выполняется прямая подстановка значений полей с номерами теку- щей записи БД, отрытой в области . При этом информация из БД преобразуется в символьный тип: - для СИМВОЛОВ обрубаются пробелы справа - для ЧИСЕЛ выполняется STR() - для ДАТ выполняется DTOC(), т.е. даты будут выводится в соответствии с текущей установкой SET DATE Если требуется подставить не прямое значение из БД, а ис- пользовать это значение в качестве ключа для поиска в дру- гой БД и в случае успеха подставлять в документ значения из последней, то макрокоманду следует начать с <0.>. Да- лее указывается номер области в которой находится БД из ко- торой организуется ссылка и через <.> список номеров полей, по зеачениям которых будет сформировано ключевое выражение в соответствии с принятым в Clipper формате. Список должен заканчиватся <;>, а если требуемых полей более одного, то их номера разделяются <,>. После <;> описывают БД на кото- рую организованна ссылка: указывают номер области и номер индесного файла из списка установленных при открытии БД.Да- лее описывают номера полей, значение которых подставляется выходной документ в случае если найдена запись соответствую- щая ключу (ссылке). Таким образом описываются общие ссылки. Макроязык позволяет организовать особенные ссылки в специ- альную БД - КЛАССИФИКАТОР (CLAS.DBF). Генератор сам опреде- ляет наименование БД - сына и если ее имя `CLAS.DBF`, то ссылка выполняется по следуещим правилам: значение группы описателя берется из (для общей ссылки это номер индекс- ного файла), а признок определяется значением ссылки. Гене- ратор использует полученный таким образом ключ для поиска в классификаторе. В качестве подставляемого в документ выраже- ния в данном случае целесообразно использовать значение поля номер 3 БД КЛАССИФИКАТОР. 2. Описатели форматов. Описатели используют для изменения формата подставляемой в до- кумент из активных БД информации. Описатели бывают внешние и внутрение. - Внешние описатели Синтаксис: & макрокоманда &o |_ знак описателя формата $ - описатель денежных выражений, используется для символь- ного представления чисел. Если указать за концом макрокоманды описатель <$>, то после значения поля в документе будет подставленно выра- жение суммы прописью в рублях. Данный описатель можно использовать только с числовыми полямя. d - описатель выражений даты, используется для символьного представления дат. Если указать за концом макрокоманды описатель , то в документ будет подставленно следующие выражение: DD месяц YYYY, где DD - день, месяц - название месяца, YYYY - год. Данный описатель можно использовать только с полями типа дата. Генератор проверяет возможность применения описателя к указан- ному полю. - Внутрение описатели Синтаксис: &0.b.p1[,pn..][;r.i/n.p1[,pn..]]W<условие>F|#|& W - описатель цыкла , используется для организации подста - новки по ссылке в случаях когда ключевому выражению соотвтствует более одной записи в БД - сыне т.е. меж- ду БД - отцом и БД - сыном нет взаимо-одназначного со- ответствия. Генератор формирует выражение для ключа и устанавливает указатель в БД - сыне на первой записи, удовлетворяющей значению ключа. После этого генератор начинает выполнять подстановку по списку полей для БД - сына. После этого выполняется SKIP проверяется соответ- ствие ключу новой записи и в случае совпадения выпол- няется подстановка. Если из общего объема записей БД - сына, соответствующих ключу, необходимо выполнить под- становку из записей соответствующих дополнительному ус- ловию, то после описателя в квадратных скобках начи- ная с пробела описывают это условие. Генератор выделяет условие и делает макроподстановку в подпрограмме сканиро- вания для проверки заданного условия. В случае отсутствия дополнительного условия генератор подставляет `.T.` исти- на. К описанию дополнительного условия применяются стан- дартные правила макроподстановок Clipper. F - описатель формата, используют для организации вывода при цыкличном просмотре БД - сына. Формат описывается для каждого поля из списка полей БД - сына внутри ограничи- телей <|>: |<текст>#[`макро`]<текст>|.... | | | | | | | |_ текст после подстановки | | | | | |_ выполнить макрокоманду | | | |_ подстановка | |_ текст до подстановки на место <#> подставляется значение поля из списка по- лей, в частности если номер поля равен 0, то подстав- ляется пустая строка ""; при необходимости можно выпол- нить макрокоманду, заключенную в символы <`>. Обычно этот прием используют для организации ссылки на поле из списка. <текст> - любой набор ASCII символов, включая управляющие `макро` - макрокомпнда без описателей Внимание! Даже если Вы не хотите формотировать значение поля, надо поставить <| # |>. Это стандартный формат. 3. Знаки операций. Знаки операций используют для вычисления выражений и подста- новки в документ результата этих вычислений. Синтаксис: z...z= | | | |_ конец вычислений и подстановка | | | | | |_____ числовые константы или макро- | | команды | | | |_____________ мат.операции | |_________________ макрокоманда Выражение должно начинатся с макрокоманды описывающей число- вое поле и связывается при помощи знаков +,-,*,/ со вторым выражением (константа или макро). Генератор вычисляет значе- ние выражения и если следующий знак <=>, то выполняет подс- тановку результата в документ;если же далее следует мат.знак, то генератор продолжает вычисление. Следует отметить, что внутри выражения между аргументами не допускаются пробелы. Знаки математических операций: + сложение - вычитание * умнажение / деление 4. Макрооператоры. Макрооператоры используют для организации выполнения логи- ческих условий при подстановке информации в документ. Синтаксис: IF <выражение> T <подстановка> E <подстановка> D <выражение> - соостоит из двух аргументов, причем первый дол- жен быть макрокомандой,а вторй можит быть лю- бым выражение такогоже типа, что и значение макро; эти аргументы связываются знаками от- нашений: <,>,=,#,<=,>=. <подстановка> - текст, макро, мат.выражение, нулевая строка Генератор проверяет истенность <выражения> и вслучае истены выполняет подстановку, определенную после T, в противном случае генератор выполняет подстановку, определенную после E. Заключение. В настоящие время генератор документов используется в качестве приложения т.е. может выполнять подстановки из актвных БД. В фирме ведется работа над созданием универсального генератора, каторый может оперировать с любыми указаннами БД и индексами при этом генерировать не только документы, но и отчеты.