Пример программы, выдающей отчет
DATABASE zawod
MAIN
DEFINE zapisx record like kadry.*
DEFINE simw char (200), zapr char (300),fn char (18)
OPEN form maxprim from "maxprim"
DISPLAY form maxprim # вывести экранную форму
CONSTRUCT BY NAME simw ON kadry.* # Введение критериев выбора
# с экрана
LET zapr="select * from kadry where ",
simw clipped," order by tabnom "
MESSAGE simw
PREPARE selpr FROM zapr # Изготовление запроса
DECLARE qquer CURSOR FOR selpr # Объявление курсора для него
DISPLAY "Не забудьте нажать CTRL-O" AT 2,40
PROMPT "Файл, куда выводить отчет? или CR, если на экран: "
FOR fn
IF length(fn)=0 then START REPORT kadryrep # на экран
else START REPORT kadryrep TO fn # в файл
END IF
# выполнить запрос и сбросить выбранные строки в отчет
FOREACH qquer into zapisx.* # Очередную строку из курсора
OUTPUT TO REPORT kadryrep(zapisx.*) # поместить в отчет
END FOREACH
FINISH REPORT kadryrep # Вывести результаты отчета
END MAIN
REPORT kadryrep(z)
DEFINE nameceh like ceh.nameceh
DEFINE z record like kadry.*
# nomerceh int, # номер цеха
# tabnom serial, # табельн. номер
# fio char(20), # фамилия
# dolvn char(20), # должность
# zarplata money(16,2), # зарплата
# datarovd date # дата рожд.
OUTPUT
left margin 0
right margin 80
top margin 0
bottom margin 0
page length 23
ORDER BY z.nomerceh, z.tabnom # Упорядочить
FORMAT
PAGE HEADER
print "-------------------------------------------------------"
print "цех|таб.ном|фио |должность |зарплата| дата рожд"
print "_______________________________________________________"
ON EVERY ROW
print z.nomerceh using "##", column 4,z.tabnom using "#####",
column 13,z.fio clipped,
column 28,z.dolvn clipped,
column 43,z.zarplata using "$####.##",
column 53,z.datarovd using "dd-mm-yyyy"
BEFORE GROUP OF z.nomerceh
select @nameceh into nameceh from ceh where nomerceh=z.nomerceh
skip to top of page
skip 1 line
print "Цех ",nameceh
skip 1 line
AFTER GROUP OF z.nomerceh
need 2 lines
print " В цехе ",nameceh clipped,2 spaces,
group count(*) using "#####" ," человек, "
print " Средняя зарплата ",
group avg(z.zarplata) using "##### руб.## коп"
PAGE TRAILER
print "заполнена страница номер", pageno
pause "нажмите ВВОД"
END REPORT
Вот что увидит на пользователь во время работы программы:
+-------------------------------------------------------------+
|Укажите файл, куда выводить отчет, или CR, если на экран: |
| Не забудьте нажать CONTROL-О|
| |
|---------------------------------------------- |
| цех [1:4] [ ] |
| таб.номер [ ] |
| фамилия [*ов ] |
| должность [ ] |
| зарплата [>500 ] |
|дата рождения [ ] |
| |
| |
nomerceh between 1 and 4 and fio matches "*о*" and zarplata>500
| |
+-------------------------------------------------------------+
---------------------------------------------------------------
цех|таб.ном|фио |должность |зарплата| дата рожд
_______________________________________________________________
Цех дирекция
1 34 иванов директор $ 4000.00
1 35 кононов зав. по снабжению$ 4000.00
В цехе дирекция 2 человек,
Средняя зарплата 4000 руб.00 коп
заполнена страница номер 1
нажмите ВВОД
---------------------------------------------------------------
цех|таб.ном|фио |должность |зарплата| дата рожд
_______________________________________________________________
Цех литейный
2 12 окунев рабочий $ 2000.00
2 14 липко лаборант $ 2000.00
2 18 пухов мастер $ 2000.00
2 21 сухов рабочий $ 2000.00
2 24 угольков рабочий $ 2000.00
В цехе литейный 5 человек,
Средняя зарплата 2000 руб.00 коп
заполнена страница номер 2
нажмите ВВОД
---------------------------------------------------------------
цех|таб.ном|фио |должность |зарплата| дата рожд
_______________________________________________________________
Цех гараж
4 9 потруев слесарь $ 1230.00
4 12 гундосов шофер $ 2000.00
В цехе гараж 2 человек,
Средняя зарплата 1615 руб.00 коп
заполнена страница номер 3
нажмите ВВОД
Last-modified: Wed, 17 Apr 1996 04:45:13 GMT