В общем случае можно выделить следующие каталоги, используемые при выполнении приложения на языке zCode (некоторые или все каталоги могут совпадать):
* Системный каталог - каталог, в котором находится полное ядро системы (программа Z.EXE) и файл системных подсказок Z.HLP. Путь к этому каталогу обычно задается в вызывающем командном файле (Z.BAT).
* Домашний каталог - каталог в котором находится запускаемое пользователем приложение (задача). Путь к домашнему каталогу задается параметром командной строки -H. Файл Z.CFG в этом каталоге определяет общую конфигурацию приложения. Файлы меню (в том числе главный, который имеет обычно имя MAIN.MNU) определяют общую структуру приложения.
* Каталоги баз данных и сценариев обычно определяются параметрами BASEDIR, PANELDIR и BLANKDIR, заданными в файле Z.CFG. (См. Приложение B).
* Текущий каталог - каталог пользователя из которого он запускает приложение. Здесь также может находиться файл Z.CFG, с личными настройки данного пользователя (имеюют более высокий приоритет, чем настройки, заданные в Z.CFG из домашнего каталога).
Назначение некоторых файлов Обычно (наряду с файлами сценариев и баз данных) используются следующие файлы: Z.EXE /Z32.EXE - Головная программа (ядро системы zCode) Z.HLP - Файл системных сообщений и подсказок Z.CFG - Файл конфигурации MAIN.SCR - Экранная заставка главной программы MAIN.MNU - Головное меню (текстовый файл) *.MNU - Дополнительные меню USER.HLP - Файл прикладных подсказок Программа Z.EXE / Z32.EXE (Z.EXE - вариант для DOS, Z32.EXE - для WIN9X/NT) Программа работает в стиле интерпретатора экранных и отчетных форм, легко допускает расширение круга решаемых задач. Файл Z.HLP содержит необходимые системные сообщения и контекстные подсказки. Подсказки выдаются на экран во время работы программы при нажатии клавиши F1. Файл USER.HLP - Файл прикладных подсказок (см. функцию HELP()).
Цвета могут задаваться для следующих элементов: WCOL - Цвет фона экpана PCOL - Цвет инфомации из БД для начального индекса ACOL - Цвет маркера табличной формы ECOL - Цвет стpоки pедактирования CURCOL - Цвет текущей строки активного фрейма BACKCOL - Цвет текущей строки пассивного фрейма Цвета задаются двухразрядными шестнадцатиричными числами. Первая цифра кодирует цвет фона, а вторая - цвет символа соответствующего элемента декорации. Каждый бит данного числа отвечает за определенную составляющую цвета: | Старшая цифра | Младшая цифра | -----------|---------------|---------------| Бит | 7 6 5 4 | 3 2 1 0 | -----------|---------------|---------------| Функция | b R G B | I R G B | -----------|-------------------------------- | Ф О Н | СИМВОЛ | b - Мерцание символа I - Интенсивность цвета символа R - Красная составляющая цвета G - Зеленая составляющая цвета B - Синяя составляющая цвета Например, WCOL 1f - означает ярко белый символ на синем фоне. Расположение программ и баз данных задается тремя каталогами (параметрами): BASEDIR - каталог информационных файлов (.dbf), шаблонов (.dbh), индексных файлов (.ntx) и их списков для каждой базы (.ils), кодовых таблиц (.dic) PANELDIR - каталог экранных форм (.pan), списков выходных документов по каждой экранной форме (.lst) BLANKDIR - каталог форм выходных документов (.blk) Например, оператор: BASEDIR base\ означает, что файлы .dbf, .dbh, .ntx, .ils, .dic расположены в подкаталоге base текущего каталога (обратный слэш '\' в конце не обязателен). В файле z.cfg можно задавать значения символьных констант, которые затем используются в прикладных программах (видеоформах и отчетах). С помощью этих констант задаются, например, атрибуты предприятия, фамилии и телефоны его руководителей, и т.п. Константы начинаются с символа '@', например: @ДИРЕКТОР А.Н.Коновалов @КОД_ОКОНХ 0123456 В качестве идентификаторов констант можно использовать любые сочетания символов, кроме следующих зарезервированних идентификаторов: @S0 - @S19, @L0 - @L19, @D0 - @D19, @0 - @255 Вышеперечисленные переменные также можно инициализировать в файле z.cfg, но они не являются константами и их значения могут меняться программным путем. В файле конфигурации с помощью операторов LOAD можно загрузить одну или несколько задач с описанием общесистемных прикладных процедур и видеоформ, например: LOAD "proc.tsk" LOAD "common.tsk" Все действующие команды и операторы файла конфигурации должны начинаться с первой позиции строки. Поэтому самый простой способ "отключить" какой либо оператор - это отодвинуть его от начала строки на одну или несколько позиций, например: @ГЛ_БУХ А.М.ШИПИЛОВА - действующий оператор @ГЛ_БУХ Д.М.КРОШИН - недействующий оператор Для этой же цели можно использовать оператор rem, например: rem - Это строка комментария Любой из элементов файла Z.CFG может отсутствовать. В этом случае соответствующее значение выбирается по умолчанию. При отсутствии файла Z.CFG все элементы принимают свои умолчательные значения.
Пример конфигурационного файла (Z.CFG)
WCOL 1f - Цвет фона экpана PCOL 1e - Цвет инфомации из БД для начального индекса ACOL 3f - Цвет окна пpокpутки ECOL 4f - Цвет стpоки pедактирования CURCOL 70 - Цвет текущей строки активного фрейма BACKCOL 12 - Цвет текущей строки пассивного фрейма /* Имя файла главного меню задачи и его координаты */ MENU main 4 8 38 9 17 70 /* Значения различных переменных, используемых в задаче */ @NAME "АО УАЗ" @TOWN Ульяновск @INDEX 432700 @ADDR "Московское шоссе, 8" @EISDRV z:\ @SUBDRV x:\ @UKSDRV t:\ @KASDRV y:\ @LINKDIR z:\base_l\ @MAINDIR z:\base.eis\ @SUBDIR x:\subconto.net\ @CLNDIR z:\home_l\ /* Глобальные параметры системы */ BASEDIR z:\base.eis\ /* каталог по умолчанию баз данных */ PANELDIR z:\panel.eis\ /* каталог по умолчанию описаний панелей */ BLANKDIR z:\blank.eis\ /* каталог по умолчанию описаний отчетов */ LOAD "proc.tsk" ; /* загрузка процедур из файла proc.tsk */ /****** конец Z.CFG *********/
Файлы меню имеют расширение MNU. Через них реализуется вызов всех функций системы. Система меню может быть иерархической, т.е. из главного меню вызывается подменю, из подменю следующее подменю более низкого уровня. Ограничения здесь накладываются только возможностями операционной системы. Обычно главное меню называют MAIN.MNU. Загрузка главного меню происходит после отработки операторов LOAD, указанных в Z.CFG.
Пример главного меню (MAIN.MNU)
# Картотеки контрагентов # Menu("client",35,9,35,5,"^30","^70"); # Первичные документы # While( Info_mnu( '*', '*')) "" ; # Вызов отдельных задач # Menu("tasks",20,8,38,12,"^30","^70"); # Картотеки материальных средств # Menu("tovar",35,14,38,8,"^30","^70"); # Администратор # Menu("admin",35,14,38,7,"^30","^70"); # Смена личного пароля # Video( "pas_set") ; # Выход # /****** конец MAIN.MNU *********/
Пример 1. Просмотр журнала учета первичных документов
/**************************************************************************/ use "doc" ; LINES 22 /* Первый элемент описания фрейма */ UNDERLINE 1 HEAD { D F П Исх дата Документ Дата акц ДтКлиент КтКлиент Сумма по документу } ; REPEAT { X X XX XXXXXXXX XX XXXXXX X XXXXXXXX X XXXXXX X XXXXXX XXXXXXXXXXXXXXX.XX } Del(), Fcod, Pd, Ddoc, Vd, Nd, Nde, Date, Vkd, Nkd, Vkk, Nkk, $ Sumdoc ; PREVIOUS : Deleted() ? Color( "^17") ; /* Событие: переход к очередной строке табличной формы */ /**************************************************************************/
Пример 2. Распечатка журнала учета хозяйственных операций
/*********** Отчет "prt_dks.blk"*******************************************/ use "dks" ; /* открываем базу данных "DKS.DBF" */ LINES 60 /* Число строк на листе */ HEAD { РАСПЕЧАТКА ЖУРНАЛА ПРОВОДОК дата: XXXXXXXX F ПД Документ Позиц Дата СчДт СчКт Сумма проводки ДтКлиент КтКлиент } Date() ; /* Текущая дата */ REPEAT { X XX XX XXXXXX X XXXX XXXXXXXX XXXX XXXX XXXXXXXXXXXX.XX X XXXXXX X XXXXXX } Del(), Fcod, Podr, Vd, Nd, Kp, Npd, Date, Dt, Kt, Sum, Vkd, Nkd, Vkk, Nkk ; /********************************************************************/
Пример 3. Восстановление базы данных
/*******************************************/ Use -i "dks" ; /* -i - стирание индексных файлов */ Adjust( dks, Reccount() ) ; /* восстанавливаем "хвостик" базы данных */ /*******************************************/ Первым оператором мы открываем для использования базу данных DKS.DBF. Ключ -i определяет опцию удаления всех файлов из списка индексных файлов этой базы данных. Второй оператор (функция Adjust()) подрезает базу данных под указанный размер и восстанавливает "хвостик" (код 1A). Эта программа полезна для восстановления целостности информации при внезапном отключении питания во время работы с базами данных, когда из-за незавершенной операции записи теряется "хвостик" базы данных или становятся неактуальными ее индексные файлы.
Пример 4. Восстановление с удалением пустых записей в конце базы данных.
/******************************************************************/ Use -i "dks" ; GoBottom() ? { While( Empty( Buffer()) .and. Recno() > 0) Skip( -1) ; Adjust( Recno() ) ; } /******************************************************************/
Пример 5. Распечатка содержимого нескольких баз одинаковой структуры.
Отдельным оператором Headfile cоздается пустой регион с требуемой структурой, в котором по мере обработки открываются реальные базы данных. Имена дисковых .dbf - файлов берутся из базы данных "pay_list". /*********** EX_1.BLK ****************************************************/ Headfile pay ; /* Создаем пустой регион с именем pay по шаблону "pay.dbh" */ Use "pay_list" ; /* Открываем базу баз. В поле B_NAME содержатся полные путевые имена баз данных структуры pay */ /* Главный фрейм. Сканирование базы баз */ Frame -v << select pay_list ; REPEAT { Файл XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ----------------------------------------------------- NN Фамилия И.О. Дата рождения ----------------------------------------------------- } B_name ; /* Полное путевое имя очередной базы */ >> /* Зависимый фрейм. Выполняется каждый раз при переходе к следующей записи в основном фрейме */ Frame << select pay( pay_list->B_name) ; /* Оператором select выбирается пустой регион, в котором закрывается прежний и открывается новый .dbf файл, причем его имя берется из поля B_name базы pay_list */ REPEAT { XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXX } Recno(), Fio, Date ; /* Распечатка счетчика записи, поля Fio и Date базы данных из региона pay */ >>
В командной строке (или командном файле) может быть указана следующая информация:
где <номер> может иметь значения: 0 - DOS-866 (по умолчанию), 3 - KOI8-R, 4 - CP-1251 (Windows russian). Кодовая страница DOS-866 используется для внутреннего хранения в базах данных и по умолчанию для ввода-вывода. Например: -cp 3 /* KOI-8 */
<адрес> -по умолчанию определяется IP-адресом машины сервера; <порт> - 2 байта (по умолчанию 20000). Например: -s 172.18.93.1:20002
<адрес> - IP-адрес сервера приложения, к которому подключен данный терминал <порт> - 2 байта (по умолчанию 10000). Например: -t 172.18.93.1:20002
Пример командной строки: