The Land Banner Network!
ИНЖЕНЕРНО ПРОИЗВОДСТВЕННОЕ ПРЕДПРИЯТИЕ "КСИ"
КОМПЛЕКС ЗАПИСИ ЦИФРОВОЙ ИНФОРМАЦИИ НА ВИДЕОКАССЕТЫ
"АрВид-1000"
ИНТЕРПРЕТАТОР КОМАНДНОЙ СТРОКИ
РУКОВОДСТВО ПРОГРАММИСТА
1994
АННОТАЦИЯ
В настоящем документе описывается интерпретатор командной строки (ИКС) AVCOMSTR.EXE для
выполнения функций комплекса "АрВид-1000" из программ пользователей и при работе вне
поставляемой программы-оболочки AVSHELL.
Функции комплекса "АрВид-1000" могут вызываться в двух режимах: через
программу-оболочку AVSHELL.EXE или через ИКС. В обоих случаях
пользователь должен запустить программу ARVIDxx.EXE, но с различными файлами
конфигурации.
Команда MS DOS для выполнения программы ARVID имеет вид:
ARVIDxx [-c<ИМЯ ФАЙЛА>] [<ПАРАМЕТР>]
ИМЯ ФАЙЛА задает имя файла конфигурации, в котором в параметре PROGRAM стоит имя программы,
запускаемой как дочерний процесс. Это или стандартная оболочка AVSHELL.EXE, или
интерпретатор
командной строки - AVCOMSTR.EXE, или имя программы пользователя, которая вызывает ИКС для
выполнения функций комплекса. По умолчанию берется файл ARVID.CFG.
ПАРАМЕТР должен задаваться только в случае запуска ИКС. Это или команда, которую необходимо
выполнить, или имя файла-задания с пакетом команд, подлежащих
последовательному исполнению. Имени файла-задания предшествует символ @.
Пользователь может изменить имя программы, запускаемой как дочерний процесс. В этом случае команда
MS DOS имеет вид:
ИМЯ ПРОГРАММЫ задает имя запускаемой программы. В этом случае значение параметра PROGRAM игнорируется
и пользователь может иметь только один файл конфигурации. Смысл значения ПАРАМЕТР не изменился.
При вызове ИКС из программы пользователя для порождения дочернего процесса в терминах MS DOS
необходимо выполнить команду вызова типа:
AVCOMSTR.EXE <ПАРАМЕТР>
где ПАРАМЕТР имеет тот же смысл что и при запуске программы ARVIDxx.
Ниже приведен пример вызова ИКС на языке С с использованием
библиотечной функции "spawnl":
#include
#include
main()
{
char *nameProg = "avcomstr.exe"; // имя программы
// выполняемые команды
const char *test1 ="mkdir tp:\\temp";
const char *test2 = "copydir e:\\black tp:\\temp";
const char *test3 = "copydir e:\\string tp:\\temp";
const char *test4 = "dir tp:\\/s/o:e/fe:\\comstr\\dt.lst";
// создание командного файла из команд test1, test2,test3.
FILE *f;
f = fopen("command.tst","wt");
fprintf(f,"%s\n%s\n%s\n",test1,test2,test3);
fclose(f);
// вызов ИКС для выполнения команд файла СOMMAND.TST
spawnl(P_WAIT,nameProg,nameProg,"@command.tst",NULL);
// вызов ИКС для выполнения команды test4
spawnl(P_WAIT,nameProg,nameProg,test4,NULL);
return 0;
}
Созданный этой программой командный файл COMMAND.TST можно было бы выполнить, набрав команду:
ARVIDxx @COMMAND.TST
если в файле ARVID.CFG задано значение PROGRAM = AVCOMSTR.EXE.
Предлагаемый набор команд
обеспечивает пользователю удобное использование функций комплекса "АрВид-1000". Внешне они напоминают
команды MS DOS. Главное отличие
заключается в следующем: когда пользователь формирует команду, он не знает какой буквой обозначить ленту.
Поэтому для обозначения ленты используется обозначение tp:. Следует
учитывать, что во время одного сеанса работы менять кассеты нельзя. Замена кассеты возможна только
после выхода из программы ARVID с поcледующим ее перезапуском.
DIR [УСТРОЙСТВО][ПУТЬ][ФАЙЛ][/F<ИМЯ>][/S][/W][/B][A:<ТA>][/O:<ТO>]
Ключи:
F - задает имя файла для сохранения распечатки каталога;
S - распечатать с подкаталогами;
W - вывод по четыре имени в столбец;
B - вывод только имен файлов;
A - включить в список элементы с атрибутами:
R - файлы с атрибутом 'только для чтения';
H - скрытые файлы;
D - директории;
S - системные файлы;
A - архивные файлы;
O - задает тип сортировки:
N - по именам;
E - по расширениям;
S - по размеру;
D - по дате создания.
Для распечатки каталога ленты, записанного на диске, вместо УСТРОЙСТВО необходимо указать _ИМЯ ЛЕНТЫ:.
В этом случае лента не монтируется и вставлять ее в ВМ нет необходимости.
TREE [УСТРОЙСТВО][ПУТЬ][/F<ИМЯ>][/I]
Ключи:
F - задает имя файла для сохранения распечатки дерева;
I - включить в распечатку имена файлов.
Для распечатки дерева ленты, записанного на диске, вместо
УСТРОЙСТВО необходимо указать _ИМЯ ЛЕНТЫ:. В этом случае лента не монтируется и вставлять ее в
ВМ нет необходимости.
COPY [УСТРОЙСТВО][ПУТЬ]<ФАЙЛ> [УСТРОЙСТВО][ПУТЬ][ФАЙЛ][/O][/R]
Ключи:
O - копировать файлы с обновлением;
R - копировать с обновлением файлы с атрибутом 'только для чтения';
N - копировать только новые файлы.
COPYDIR [УСТРОЙСТВО]<ПУТЬ> [УСТРОЙСТВО][ПУТЬ][/O][/I]
Ключи:
O - копировать директорию с обновлением;
I - копировать директорию без предудаления существующей;
N - копировать только новые файлы.
Копирование директории осуществляется с входящими в нее поддиректориями.
MOVE [УСТРОЙСТВО][ПУТЬ]<ФАЙЛ> [УСТРОЙСТВО][ПУТЬ][ФАЙЛ][/O][/R]
Ключи:
O - переместить файлы с обновлением;
R - переместить с обновлением файлы с атрибутом 'только для чтения';
N - переместить только новые файлы.
Перемещение файлов осуществляется только в пределах одного устройства.
MOVEDIR [УСТРОЙСТВО]<ПУТЬ> [УСТРОЙСТВО][ПУТЬ][/O][/I]
Ключ:
O - переместить директорию с обновлением;
I - переместить директорию без предудаления существующей;
N - переместить только новые файлы.
Перемещение директории осуществляется с входящими в нее поддиректориями и только в пределах одного
устройства.
Ход выполнения задания записывается ИКС в специальном файле с именем AVCOMSTR.LOG. Он формируется
в каталоге, определяемом переменной окружения AVDIR или в текущем, если она не о
пределена. Информация записывается в конец
существующего файла AVCOMSTR.LOG. А если его нет, то ИКС создает его автоматически.
В журнал ИКС заносит следующую информацию:
- время начала и конца сеанса работы;
- параметры ленты смонтированной для данного сеанса;
- выполняемые команды;
- сообщения об успешном выполнении или обнаруженных ошибках;
- статистика копирования информации.
ИКС завершает работу с кодом возврата. Он информирует пользователя об успешном выполнении или
обнаруженной ошибке. Ниже перечислены возвращаемые интерпретатором коды возврата.
0 - успешное завершение работы;
2 - файл или каталог не найдены;
5 - доступ запрещен. Этот код возврата может возникнуть в следующих случаях:
- создается директория с уже существующим именем (в команде MKDIR);
- удаляется не пустая директория без ключа /С (в команде RMDIR);
- удаляется без ключа /R файл с атрибутом 'только для чтения' (в команде DEL);
- копируются или перемещаются уже существующие файлы или директории без ключа /O (в командах COPY,
COPYDIR, MOVE, MOVEDIR);
- копируются или перемещаются уже существующие файлы c атрибутом 'только для чтения' без ключа
/R (в командах COPY, MOVE);
8 - не хватает оперативной памяти;
12 - недопустимая операция;
15 - устройство отсутствует;
17 - устройство не то же;
35 - файл уже существует;
40 - ошибка ввода/вывода;
49 - при выполнении команды возможна бесконечная рекурсия;
50 - при выполнении команды возможно предудаление копируемой директории;
51 - удаление корневой директории;
52 - копирование(перемещение) в исходный каталог;
55 - неправильное имя;
56 - ошибка открытия временного файла при переходе в режим отложенного копирования;
57 - ошибка записи во временный файл отложенного копирования;
58 - ошибка записи во временный файл оглавления;
59 - недопустимая команда;
60 - ошибка в команде;
61 - ошибка в имени файла;
62 - ошибка при монтировании ленты;
63 - драйвер не загружен;
64 - ИКС запущен без параметров;
65 - версии программы и драйвера не совпадают;
73 - операция прерывалась клавишей TAB;
74 - операция прервана пользователем;
75 - неверная
таблица распределения файлов;
76 - прерывание по тайм-ауту;
77 - неверные параметры для программы AVCOPIER;
78 - неудачная запись;
79 - неудачное чтение;
80 - не хватает оперативной памяти;
81 - программа AVCOPIER не найдена;
82 - канал выключен;
83 - канал не свободен;
84 - отсутствует блок параметров ленты;
85 - блок параметров ленты уже существует;
86 - отсутствует таблица позиционирования;
87 - таблица позиционирования уже существует;
88 - неизвестный формат ленты;
89 - оглавление ленты не найдено;
90 - недоступный формат для записи;
91 - сектор не найден;
92 - найдена информация, не относящаяся к данной ленте;
93 - операция прервана пользователем;
94 - за предполагаемым концом данных еще есть информация;
95 - при записи данных на ленту не найдено оглавление ленты;
96 - операция прервана пользователем;
97 - операция прервана пользователем;
98 - отсутствует сквозная трансляция при записи;
99 - ошибка обновления оглавления на диске.