Пример простейшей программы

Пример простейшей программы


database zawod

MAIN



  MENU "Главное меню"

    command key("w") "Ввод" "Ввод учетных данных"

      call wwod()

    command key("p") "Просмотр" "Просмотр таблицы kadry"

      call prosmotr()

    command "одиночный просмотр" "Поиск по табельному номеру"

      call odin_prosmotr()

    command "Kонец"

      clear screen

      exit program

  end menu



END MAIN



FUNCTION wwod()

  define c char(1) , zapisx record like kadry.*

    #           -DЭто объявление эквивалентно такому:-E

    # DEFINE zapisx RECORD

    #   nomerceh  INT,          # номер цеха

    #   tabnom    INT,          # табельный номер

    #   fio       CHAR(20),     # фамилия

    #   dolvn     CHAR(20),     # должность

    #   zarplata  MONEY(16,2),  # зарплата

    #   datarovd  DATE          # дата рождения

    # END RECORD



  OPEN WINDOW  wwod  AT 4,20 WITH FORM  "kadry"  attribute(border)

  MESSAGE "Введите учетные данные, и нажмите ESC" attribute (reverse)

  let c="Y"



    WHILE c NOT MATCHES "[nNНн]" or c is NULL   # В цикле

    INPUT by name zapisx.*              # -DВвести данные через экранную форму-E

    DISPLAY "Принято"    AT 1 , 1



    let   zapisx.tabnom=0

    INSERT INTO kadry values (zapisx.*) # -DВставить строку в таблицу kadry-E

    display   SQLCA.SQLERRD[2] to tabnom# -DКакой номер получил serial столбец ?-E

    prompt "Принято.  Вводить следующего (Да/Нет)?" for char c

    END WHILE



  CLOSE WINDOW WWOD                     # -DЛиквидируем окошко-E

END FUNCTION



FUNCTION prosmotr()

  define zapisx record like kadry.* , c char



  open window prosmotr  at 4,34 with form  "kadry" attribute(border)

  declare prosmotr cursor for select * from kadry order by nomerceh, tabnom

    FOREACH prosmotr INTO zapisx.*              # -DВ цикле для каждой строки-E

    DISPLAY BY NAME zapisx.*                    # -DВывели ее на экран-E

    prompt "Показывать следующего (Да/Нет)? " for char c

    IF c matches "[НнNn]" then exit foreach END IF # -DЕсли Нет то конец -E

    END foreach

  close window prosmotr         #       -DЛиквидируем окошко-E

END FUNCTION



FUNCTION odin_prosmotr()

  define zapisx record like kadry.* , nomer int



  open window odin_prosmotr  at 4,4 with form  "kadry" attribute(border)

    WHILE 1=1                                   # -DВ цикле-E

    prompt "Какой табельный номер показать: " attribute (reverse)

         for nomer  attribute (underline)

    IF nomer IS NULL THEN exit while END IF     # -DЕсли не ввел то конец-E



    SELECT * INTO zapisx.*

             FROM kadry WHERE nomer=tabnom      # -DЧитаем строчку-E

      if status = NOTFOUND then

        error "Нет таких" attribute (reverse)   # -DЕсли не нашлось то-E

        continue while                          #  -Dперейти на начало цикла-E

        end if



    DISPLAY BY NAME zapisx.*                    # -DВывести ее на экран-E

    END WHILE

  close window odin_prosmotr         #       -DЛиквидируем окошко-E

END FUNCTION

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