КОМАНДЫ ОС

OS-COMMAND Выполнение команды операционной системы.

OS-COMMAND [SILENT | NO-WAIT | NO-CONSOLE] [command-token | VALUE(expression)].

command-token | VALUE(expression) - выполняемая команда.

Так например, для создания tar архива каталога в UNIX необходимо выполнить команду:

tar -cvf <имя архива> <директория>

Для создания архива testdir.tar директории testdir из рабочего каталога пользователя в UNIX системе необходимо выполнить команду:

tar -cvf ./testdir.tar ./testdir 

Выполнение этой же команды из ABL будет выглядеть следующим образом:

OS-COMMAND VALUE("tar -cvf ./testdir.tar ./testdir").

После выполнения команды возникает пауза и в UNIX системах пользователю предлагается нажать клавишу пробел для продолжения.

Выполнение OS-COMMAND с опцией SILENT позволяет исключить такое поведение системы.


OS-GETENV Возвращает текстовое значение системной переменной ОС.

OS-GETENV (system-variable).

system-variable - идентификатор системной переменной.

DISPLAY OS-GETENV "PROPATH" FORMAT "x(20)".


Команды работы с файлами и каталогами:


OS-COPY Осуществляет копирование файла.

OS-COPY "src_file" "dest_file".

src_file - файл для копирования;
dest_file - скопированный файл.

Для создания копии файла test.txt из рабочего каталога пользователя с именем test1.txt в том же каталоге:

OS-COPY "./test.txt" "./test1.txt".

OS-RENAME Осуществляет переименование файла.

OS-RENAME "old_name" "new_name".

old_name   - переименовываемый файл;
new_name - новое имя файла.

OS-RENAME "./test1.txt" "./test.txt".

OS-DELETE Осуществляет удаление файла или директории.

OS-DELETE src_name [RECURSIVE].

src_name - полный путь к удаляемому файлу или директории.

Для удаления файла test.txt из рабочего каталога пользователя:

OS-DELETE ./test.txt.

Для удаления пустой директории testdir находящейся в рабочем каталоге пользователя:

OS-DELETE ./testdir.

Если удаляемая директория содержит поддиректории или файлы, то ее удаление необходимо осуществлять рекурсивно, т.е. вместе с ее содержимом. Удаление не пустой директории без указания RECURSIVE не будет осуществлено.

Таким образом если директория testdir не пуста, то для ее удаления:

OS-DELETE ./testdir RECURSIVE.

OS-APPEND  Осуществляет "слияние" содержимого одного файла в конец другого.

OS-APPEND "src_file" "dest_file".

src_file - файл содержимое которого будет скопировано;
dest_file - файл в конец которого будет скопировано содержимое src_file.


OS-CREATE-DIR Осуществляет создание каталога.

OS-CREATE-DIR {dirname | VALUE (expression)} ...

dirname - создаваемый каталог.


Во время выполнения описанных выше операций могут возникать различного рода ошибки. При этом возникающие ошибки никаким образом не проявляют себя во время выполнения операций. Данный факт может привести к ошибочному мнению, что операция выполнена успешно, хотя на самом деле она завершилась с ошибкой.

Для контроля успешности выполнения описанных операций существует функция OS-ERROR возвращающая цифровой код ошибки типа INTEGER возникшей в ходе выполнения операций.

Код ошибки Сообщение ошибки  Расшифровка ошибки
0 No error Операция выполнена успешно
1 Not owner Не является владельцем
2 No such file or directory Нет такого файла или директории
3 Interrupted system call  Системное прерывание
4 I/O error Ошибка ввода/вывода
5 Bad file number Неверный номер файла
6 No more processes достигнут лимит процессов
7 Not enough core memory Недостаточно места
8 Permission denied Доступ запрещен
9 Bad address Неверный адрес
10 File exists Файл существует
11 No such device Устройство не найдено
12 Not a directory Не является директорией
13 Is a directory Является директорией
14 File table overflow Переполнение таблицы файлов 
15 Too many open files Слишком много открытых файлов
16 File too large Слишком большой файл
17 No space left on device Недостаточно места
18 Directory not empty Директория не пуста
999 Unmapped error (ABL default) Неизвестная ошибка
 

Пример:

OS-DELETE "./testdir" RECURSIVE.
IF OS-ERROR > 0 THEN
DISPL "Во время выполнения возникла ошибка:" OS-ERROR.
Вы здесь: Главная Основы ABL КОМАНДЫ ОС