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
нажмите ВВОД

Популярность: 5, Last-modified: Wed, 17 Apr 1996 04:45:13 GmT