The Land Banner Network!
ИНЖЕНЕРНО ПРОИЗВОДСТВЕННОЕ ПРЕДПРИЯТИЕ "КСИ"
КОМПЛЕКС ЗАПИСИ ЦИФРОВОЙ ИНФОРМАЦИИ НА ВИДЕОКАССЕТЫ
"АрВид-1000"
ИНТЕРПРЕТАТОР КОМАНДНОЙ СТРОКИ
РУКОВОДСТВО ПРОГРАММИСТА
1994

АННОТАЦИЯ

В настоящем документе описывается интерпретатор командной строки (ИКС) AVCOMSTR.EXE для выполнения функций комплекса "АрВид-1000" из программ пользователей и при работе вне поставляемой программы-оболочки AVSHELL.

1. ЗАПУСК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
2. ОПИСАНИЕ КОМАНД ИКС.
   1. РАСПЕЧАТАТЬ КАТАЛОГ.
   2. РАСПЕЧАТАТЬ ДЕРЕВО.
   3. ИЗМЕНИТЬ ТЕКУЩИЙ КАТАЛОГ.
   4. CОЗДАТЬ КАТАЛОГ.
   5. УДАЛИТЬ КАТАЛОГ.
   6. УДАЛИТЬ ФАЙЛ.
   7. СКОПИРОВАТЬ ФАЙЛЫ.
   8. СКОПИРОВАТЬ ДИРЕКТОРИЮ.
   9. ПЕРЕМЕСТИТЬ/ПЕРЕИМЕНОВАТЬ ФАЙЛЫ.
   10. ПЕРЕМЕСТИТЬ/ПЕРЕИМЕНОВАТЬ ДИРЕКТОРИЮ.
   11. РАЗРЕШИТЬ АВТОВЕРИФИКАЦИЮ ПОСЛЕ ЗАПИСИ ДАННЫХ НА ЛЕНТУ.
   12. ЗАПРЕТИТЬ АВТОВЕРИФИКАЦИЮ ПОСЛЕ ЗАПИСИ ДАННЫХ НА ЛЕНТУ.
3. ЖУРНАЛ.
4. СООБЩЕНИЯ ОБ ОШИБКАХ.

1. ЗАПУСК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
Функции комплекса "АрВид-1000" могут вызываться в двух режимах: через программу-оболочку AVSHELL.EXE или через ИКС. В обоих случаях пользователь должен запустить программу ARVIDxx.EXE, но с различными файлами конфигурации.
Команда MS DOS для выполнения программы ARVID имеет вид:
ARVIDxx [-c<ИМЯ ФАЙЛА>] [<ПАРАМЕТР>]
ИМЯ ФАЙЛА задает имя файла конфигурации, в котором в параметре PROGRAM стоит имя программы, запускаемой как дочерний процесс. Это или стандартная оболочка AVSHELL.EXE, или интерпретатор командной строки - AVCOMSTR.EXE, или имя программы пользователя, которая вызывает ИКС для выполнения функций комплекса. По умолчанию берется файл ARVID.CFG.
ПАРАМЕТР должен задаваться только в случае запуска ИКС. Это или команда, которую необходимо выполнить, или имя файла-задания с пакетом команд, подлежащих последовательному исполнению. Имени файла-задания предшествует символ @.
Пользователь может изменить имя программы, запускаемой как дочерний процесс. В этом случае команда MS DOS имеет вид:

или | ARVIDxx [-y<ИМЯ ПРОГРАММЫ] [<ПАРАМЕТР>] AVCOMSTR.BAT [<ПАРАМЕТРЫ>]

ИМЯ ПРОГРАММЫ задает имя запускаемой программы. В этом случае значение параметра PROGRAM игнорируется и пользователь может иметь только один файл конфигурации. Смысл значения ПАРАМЕТР не изменился.
При вызове ИКС из программы пользователя для порождения дочернего процесса в терминах MS DOS необходимо выполнить команду вызова типа:
AVCOMSTR.EXE <ПАРАМЕТР>
где ПАРАМЕТР имеет тот же смысл что и при запуске программы ARVIDxx.
Ниже приведен пример вызова ИКС на языке С с использованием библиотечной функции "spawnl":

      #include <process.h>
      #include <stdio.h>
      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);

      // вызов <B>ИКС</B> для выполнения команд файла СOMMAND.TST
      spawnl(P_WAIT,nameProg,nameProg,"@command.tst",NULL);

      // вызов <B>ИКС</B> для выполнения команды test4
      spawnl(P_WAIT,nameProg,nameProg,test4,NULL);

      return 0;
      }

Созданный этой программой командный файл COMMAND.TST можно было бы выполнить, набрав команду:
ARVIDxx @COMMAND.TST
если в файле ARVID.CFG задано значение PROGRAM = AVCOMSTR.EXE.

2. ОПИСАНИЕ КОМАНД ИКС.
Предлагаемый набор команд обеспечивает пользователю удобное использование функций комплекса "АрВид-1000". Внешне они напоминают команды MS DOS. Главное отличие заключается в следующем: когда пользователь формирует команду, он не знает какой буквой обозначить ленту. Поэтому для обозначения ленты используется обозначение tp:. Следует учитывать, что во время одного сеанса работы менять кассеты нельзя. Замена кассеты возможна только после выхода из программы ARVID с поcледующим ее перезапуском.
2.1. РАСПЕЧАТАТЬ КАТАЛОГ.
Формат команды:
DIR [УСТРОЙСТВО][ПУТЬ][ФАЙЛ][/F<ИМЯ>][/S][/W][/B][A:<ТA>][/O:<ТO>]
Ключи:

F - задает имя файла для сохранения распечатки каталога;
S - распечатать с подкаталогами;
W - вывод по четыре имени в столбец;
B - вывод только имен файлов;
A - включить в список элементы с атрибутами:

R - файлы с атрибутом 'только для чтения';
H - скрытые файлы;
D - директории;
S - системные файлы;
A - архивные файлы;

O - задает тип сортировки:

N - по именам;
E - по расширениям;
S - по размеру;
D - по дате создания.

Для распечатки каталога ленты, записанного на диске, вместо УСТРОЙСТВО необходимо указать _ИМЯ ЛЕНТЫ:. В этом случае лента не монтируется и вставлять ее в ВМ нет необходимости.
2.2. РАСПЕЧАТАТЬ ДЕРЕВО.
Формат команды:

TREE [УСТРОЙСТВО][ПУТЬ][/F<ИМЯ>][/I]
Ключи:
F - задает имя файла для сохранения распечатки дерева;
I - включить в распечатку имена файлов.

Для распечатки дерева ленты, записанного на диске, вместо УСТРОЙСТВО необходимо указать _ИМЯ ЛЕНТЫ:. В этом случае лента не монтируется и вставлять ее в ВМ нет необходимости.
2.3. ИЗМЕНИТЬ ТЕКУЩИЙ КАТАЛОГ.
Формат команды:

CHDIR <ПУТЬ>
или
CD <ПУТЬ>

2.4. CОЗДАТЬ КАТАЛОГ.
Формат команды:

MKDIR <ПУТЬ>
или
MD <ПУТЬ>

2.5. УДАЛИТЬ КАТАЛОГ.
Формат команды:

RMDIR <ПУТЬ>[/C]
или
RD <ПУТЬ>[/C]
Ключ:
C - удалить непустой каталог.

2.6. УДАЛИТЬ ФАЙЛ.
Формат команды:

DEL [УСТРОЙСТВО][ПУТЬ]<ФАЙЛ>
Ключ:
R - удалить файл с атрибутом 'только для чтения'.

2.7. СКОПИРОВАТЬ ФАЙЛЫ.
Формат команды:

COPY [УСТРОЙСТВО][ПУТЬ]<ФАЙЛ> [УСТРОЙСТВО][ПУТЬ][ФАЙЛ][/O][/R]
Ключи:
O - копировать файлы с обновлением;
R - копировать с обновлением файлы с атрибутом 'только для чтения';
N - копировать только новые файлы.

2.8. СКОПИРОВАТЬ ДИРЕКТОРИЮ.
Формат команды:

COPYDIR [УСТРОЙСТВО]<ПУТЬ> [УСТРОЙСТВО][ПУТЬ][/O][/I]
Ключи:
O - копировать директорию с обновлением;
I - копировать директорию без предудаления существующей;
N - копировать только новые файлы.

Копирование директории осуществляется с входящими в нее поддиректориями.
2.9. ПЕРЕМЕСТИТЬ/ПЕРЕИМЕНОВАТЬ ФАЙЛЫ.
Формат команды:

MOVE [УСТРОЙСТВО][ПУТЬ]<ФАЙЛ> [УСТРОЙСТВО][ПУТЬ][ФАЙЛ][/O][/R]
Ключи:
O - переместить файлы с обновлением;
R - переместить с обновлением файлы с атрибутом 'только для чтения';
N - переместить только новые файлы.

Перемещение файлов осуществляется только в пределах одного устройства.
2.10. ПЕРЕМЕСТИТЬ/ПЕРЕИМЕНОВАТЬ ДИРЕКТОРИЮ.
Формат команды:

MOVEDIR [УСТРОЙСТВО]<ПУТЬ> [УСТРОЙСТВО][ПУТЬ][/O][/I]
Ключ:
O - переместить директорию с обновлением;
I - переместить директорию без предудаления существующей;
N - переместить только новые файлы.

Перемещение директории осуществляется с входящими в нее поддиректориями и только в пределах одного устройства.
2.11. РАЗРЕШИТЬ АВТОВЕРИФИКАЦИЮ ПОСЛЕ ЗАПИСИ ДАННЫХ НА ЛЕНТУ.
Формат команды для автоверификации по CRC.
VERIFY ON.
Формат команды для автоверификации сравнением информации на ленте и диске.
VERIFY COMP.
2.12. ЗАПРЕТИТЬ АВТОВЕРИФИКАЦИЮ ПОСЛЕ ЗАПИСИ ДАННЫХ НА ЛЕНТУ.
Формат команды:
VERIFY OFF.

3. ЖУРНАЛ.
Ход выполнения задания записывается ИКС в специальном файле с именем AVCOMSTR.LOG. Он формируется в каталоге, определяемом переменной окружения AVDIR или в текущем, если она не о пределена. Информация записывается в конец существующего файла AVCOMSTR.LOG. А если его нет, то ИКС создает его автоматически.
В журнал ИКС заносит следующую информацию:

- время начала и конца сеанса работы;
- параметры ленты смонтированной для данного сеанса;
- выполняемые команды;
- сообщения об успешном выполнении или обнаруженных ошибках;
- статистика копирования информации.

4. СООБЩЕНИЯ ОБ ОШИБКАХ.
ИКС завершает работу с кодом возврата. Он информирует пользователя об успешном выполнении или обнаруженной ошибке. Ниже перечислены возвращаемые интерпретатором коды возврата.
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 - ошибка обновления оглавления на диске.