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

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

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

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


Copyright © CIT