Пример программы

Пример программы, выдающей отчет


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

нажмите ВВОД

Назад || Оглавление || Вперед

Используются технологии uCoz