КОМАНДЫ ОС
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.