23 | 07 | 2017

  Глава 9 Процесс Выполнения.

Глава 9 содержит сведения о процессе выполнения программ в
clipperе и связи с со средствами и параметрами DOS. Вперечень входят
следующие пункты

- Коммандный процессор DOS
- Файлы и буфера DOS
- Драйвер ANSI поддержки терминала
- использование оперативной памяти
- изменения параметров для выполняемой программы

Коммандный процессор DOS

Описание параметров работы команндного процессора DOS влияет
только на компилированные и линкованные программы. Модификации
параметров описанные ниже прямо не отражаются на компиляторе clipperа
и линкере.



Когда в процессе выполнения программы требуется выполнить
команду RUN т.е. вызвать внешнюю программу , DOS должен иметь
способность обратиться к своему коммандному процессору(COMMAND.COM).
Если ваша выполняемая клиппер-программа не находиться в одной директории с
команндным процессором (или путь поиска последнего не указан) , вы
должны определить способность вызова коммандного процессора используя
команду DOS "SET".
Введя команду SET без параметра вы увидите список параметров ,
которые DOS использует в данное время. Место откуда DOS пытается
загрузить коммандный процессор определено в опции " COMSPEC= ". Для
изменения текущего пути поиска для коммандного процессора введите
команду :
C> Set COMSPEC = <имя диска>:\<имя директории>\Command.com





- 233 -

Файлы и буфера DOS

Использование СУБД требует большего внимания к использованию
диска нежели другие типы программ. DOS дает вам способность изменять
параметры работы с дисками и с файлами.
Комманда " FILES= " определяет для системы число файлов которые
могут быть открыты одновременно. Величина принимаемая по умолчанию -
8. Программа созданная с помощью компилятора clipperа позволяет
одновременно открывать до 15 файлов, а при использовании версиии DOS
3.3 - 255 файлов. Число файлов открытых одновременно зависит от вашей
программы. Используя комманду DOS "FILES=" вы имеете способность
меняить число открытых файлов.
Параметр "BUFFERS=" используется для определения числа буферов
,которы DOS использует в операциях чтения/строки. По умолчания - 2
буфера. По нашим данным оптимальное число буферов для clipperа - 8.
Параметры "FILES" "BUFFERS" могут быть определены при загрузке в
файле CONFIG.SYS Если указанный файл создан то DOS использует
указания записанные в нем для установки своих параметров.
Для примера для данного случая вы можете вставить в файл CONFIG.SYS
следующие комманды :
FILES = 20
BUFFERS = 8

Этим вы установите число одновременно открытых файлов - 20,
число мспользуемых буферов - 8.

Заметьте что DOS 3.3 позволяет открывать до 255 файлов, более
ранние версии до 20.
Для более полной информации смотрите документацию по DOS.


Драйвер ANSI поддержки терминала

Для выполнения рыда прикладных программ необходимо использовать
драйвер поддержки терминала ANSI.SYS , входящий в комплект поставки.
Данный файл может быть прилинкован к вашей программе с помощью
линкера. В данной версии драйвера нет управления курсором и
функциональными клавишами, следовательно вы можете работать с зтими
режимами через авашу программу.
Прилинковка данного драйвера к программе не обязательна.
Возможно указать его включение в файле CONFIG.SYS используя
команду :
DEVICE = ANSI.SYS
При включении этой комманды в конфигурационный файл, загрузка
драйвера производиться автоматически. Данный тип драйвера пригоден
для использования на других типах PC ( RainBow, Wang or Texas
Instruments). Для ещей информации о линковке читайте главу
7.


Использование оперативной памяти.

Clipper дает способность контролировать использование
оперативной памяти. Имеется способность использовать в clipperе и
расширенную память.
При выполнении клиппер-программа на clipperе использует оперативную

- 234 -
память под следующие задачи :
- размещение переменных;
- память под буфферизацию при индекном поиске;
- Память для вызова внешних комманд , используя RUN
- специальная зона памяти для работы с данными.

Если вы не использовали команду DOSа SET для определения
размеров памяти, используемых вашей программой то компилятор
определяет их автоматически.Автоматически определяемые параметры
являются достаточно хорошими для выполнения любых программ на
clipperе , но в некоторых случаях необходимо заранее их определить.
Обычная причина например недосьтаток свободной памяти.

Используя комманду SET DOS помните, что размер оперативной
памяти под различные разделы следующий :
1. При вызове внешних программ размещение их в памяти
определяется DOSом.

2. Приблизительно 20 % памяти используется под зону переменных
44 КБайта максимум.

3. 24 КБайта используются под зону данных.

4. Минимум 16КБайт используется для вызова коммандного
процессора и буферов под индексы.

5. Приблизительно еще 24 КБайта используются,как правило, сверх
всего для длинных стрингов,массивов и стринговых копий файлов данных.

Иными словами для нормального выполнения программы необходимо
иметь следующий размер свободной памяти:

Размер EXE файла + 24 КБайта для зоны данных + 16 КБайт под
буфферы индексов + размер зоны переменных

Если в вашем копьютере есть расширенная память clipper имеет
способность использовать ее до 1МБайта для индксных буфферов. В этом
случае пункт 4 вклычает только вызов RUN. Минимальный размер
расширенной памяти для использования 16 КБайт.


Изменения параметров для выполняемой программы


Синтакс команды SET устанавливающей для clipperа способность
управления памятью :

SET CLIPPER=[Vnnn][;Rnnn][;Ennn][;Xnnn][;Fnnn]

Величина типа nnn размер в килобайтах для конкретного параметра.
Если указать пробел между выражениями "CLIPPER" и "=" установка
по использованию памяти будет проигнорирована.
Вы можете указать данную команду в файле AUTOEXEC.BAT и в этом
случае определение размеров используемой памяти будет производиться
согласно команде.

Зона переменных : Если в команде вы указываете параметр V то

- 235 -
clipper назначает размер зоны переменных в соответствии с числом
стоящим после параметра. В случае отсутствия этого параметра
назначается 20 % от доступной памяти , но не более чем 44 КБ.
Максимум переменных в clipperе - 2048. На каждую переменную для
описания ее имени типа и содержимого(или ссылки на адрес в памяти
если переменная текстовая ) необходимо 22 байта.
Если в вашей программе вы не используете всего количества
переменных, а лишь 256 - ограничте размер памяти под зону переменных
указав параметр "V006" т.е. 6 килобайт под зону переменных из расчета
256 переменных * 22 байта = 5 652 байта. Округление при
определении числа килобайт производиться в большую сторону.
Если вы в опции "V" укажите величину более 44 КБ эта память
отведется под зону данных, но clipper никогда не использует более 44
К под эти цели. Расширенная память не может быть использована для
размещения зоны переменных


Буфера и команда : Величина указанная после опции "R"
резервируется под RUN зону буферов при индексации и для вызова
внешних программ по команде RUN. Понятие буфера в данном случае не
однозначно с понятием буфер для DOS. Размер памяти необходимый для
вызова внешних программ зависит от размера самой внешней программы.
Если указанная вами величина превышает размер памяти компьютера то
при выполнении возникнет ошибка типа (" System error - not enough
memo- ry "). При наличие расширенной памяти можно определить для
буферов индекса эту часть памяти. Указав в опции "E" размер памяти
отводимой под буфера индксации .
Использование расширенной памяти. Если расширенная память есть ,
но памяти параметр в коммандной строке пропущен то используется вся
расширенная память до 1 МБ. Расширенная память может быть
использована только для размещения индексных буферов. Индексные
операции обычно ускоряются при работе с расширенной памятью. Если вы
определяете этот параметр то минимальный размер для него 16 К
("E016;").
Исключение памяти: Параметр "X" используется для ограничения
общего размера памяти для использования его clipperом. Если например
вы в командной строке указали "Х128;" и ваш компьютер имеет 640 К
основной памяти clipper под свои программы будет занимать максимум
512 К, однако внешняя вызываемая клиппер-программа имеет способность
использовать всю память в том числе и исключенную через "Х". Однако
размер памяти оставленной для использования clipperом не должен быть
меньше чем того требует тип программы на clipperе.
Открытые файлы : Параметр "F" максимум одновременно открытых
файлов для выполняемой программы. Clipper может использовать только
меньшее или равное число файлов определенной в опции "FILES=" файла
Config.sys Если используете DOS ниже чем 3.3 максимальное число
одновременно открытых файлов 20, если DOS 3.3 то до 255 файлов.
ПРИМЕР:
files = 120
CONFIG.SYS buffers = 8


SET CLIPPER = F50

В clipperе одновременно может быть открыто 50 файлов. или
files = 20
CONFIG.SYS buffers = 8

- 236 -


SET CLIPPER = F50

В clipperе одновременно может быть открыто 20 файлов. Параметр
"F" нужно использовать осмотрительно . Он должен быть достаточно
велик для открытия всех необходимых в данный момент времени файлов ,
но его значение не должно быть слишком велико , чтобы не использовать
память не рационально.