progress-4gl
Narzędzia systemowe
Szukaj…
Wprowadzenie
Istnieje kilka wbudowanych funkcji i instrukcji dostępu do systemu operacyjnego.
OS-COMMAND
Wykonuje polecenie systemu operacyjnego.
OS-COMMAND bez żadnych opcji uruchomi nową powłokę i nie wyjdzie z niej - w ten sposób na graficznym systemie operacyjnym pozostawisz okno „wiszące”.
DEFINE VARIABLE cmd AS CHARACTER NO-UNDO.
cmd = "dir".
OS-COMMAND VALUE(cmd).
Istnieją trzy opcje: SILENT
, NO-WAIT
i NO-CONSOLE
.
CICHY
Po przetworzeniu polecenia systemu operacyjnego powłoka AVM zatrzymuje się. Aby wyjść z okna na platformach GUI systemu Windows, należy wpisać polecenie exit. Aby wyjść z okna na platformach znaków Windows, musisz wpisać exit i nacisnąć RETURN lub SPACJĘ. Możesz użyć opcji CICHY, aby wyeliminować tę pauzę. Tej opcji należy używać tylko wtedy, gdy masz pewność, że program, polecenie lub plik wsadowy nie generuje żadnych danych wyjściowych na ekranie. Nie można używać z trybem BRAK CZEKAJ.
OS-COMMAND SILENT VALUE("runprogram.exe").
NIE, CZEKAJ
W środowisku wielozadaniowym powoduje, że AVM natychmiast przekazuje kontrolę z powrotem do następnej instrukcji po OS-COMMAND bez oczekiwania na zakończenie komendy systemu operacyjnego. Nie można używać z SILENT. Ta opcja jest obsługiwana tylko w systemie Windows.
OS-COMMAND NO-WAIT VALUE("DIR > dirfile.txt").
W systemie Linux / Unix trzeba to osiągnąć, poprzedzając polecenie znakiem &
-sign zamiast tego:
OS-COMMAND VALUE("ls >> file.txt &").
BEZ KONSOLI
Podczas przetwarzania polecenia systemu operacyjnego AVM tworzy okno konsoli. Okno konsoli może nie zostać wyczyszczone po wykonaniu polecenia. Możesz użyć opcji BEZ KONSOLI, aby zapobiec tworzeniu tego okna.
OS-COMMAND NO-CONSOLE VALUE("startbach.bat").
Błędy z OS-COMMAND
nigdy nie są zwracane do Progress ABL, więc musisz sprawdzić błędy w inny sposób, prawdopodobnie zapisując je do pliku w skrypcie powłoki lub podobnym.
OPSYS
Funkcja OPSYS
zwraca system operacyjny, na którym działa program:
MESSAGE OPSYS VIEW-AS ALERT-BOX.
Wynik:
Można go użyć do wybrania, które narzędzie systemu operacyjnego ma zadzwonić:
IF OPSYS = "LINUX" THEN
OS-COMMAND VALUE("ls -l").
ELSE
OS-COMMAND VALUE("dir").
BŁĄD OS
Zwraca błąd z poprzedniego wywołania OS-*
reprezentowanego przez liczbę całkowitą. Połączenia, które mogą zwrócić błąd systemu operacyjnego to:
- OS-APPEND
- OS-COPY
- OS-CREATE-DIR
- OS-DELETE
- OS-RENAME
- SAVE CACHE
Zauważ, że brakuje OS-COMMAND
. Musisz samodzielnie obsługiwać błędy w OS-COMMAND.
Numer błędu | Opis |
---|---|
0 | Żaden błąd |
1 | Nie właściciel |
2) | Brak takiego pliku lub katalogu |
3) | Przerwane wywołanie systemowe |
4 | Błąd we / wy |
5 | Zły numer pliku |
6 | Nigdy więcej procesów |
7 | Za mało pamięci podstawowej |
8 | Odmowa zezwolenia |
9 | Zły adres |
10 | plik istnieje |
11 | Nie ma takiego urządzenia |
12 | To nie jest katalog |
13 | Jest katalogiem |
14 | Przepełnienie tabeli plików |
15 | Zbyt wiele otwartych plików |
16 | Plik zbyt duży |
17 | Brak miejsca w urządzeniu |
18 | Katalog nie jest pusty |
999 | Błąd niezapisany (domyślnie ABL) |
Funkcja OS-GETENV
Zwraca wartość dowolnej zmiennej środowiskowej systemu operacyjnego.
MESSAGE OS-GETENV ("OS") VIEW-AS ALERT-BOX.
Na komputerze z systemem Windows:
MESSAGE OS-GETENV ("SHELL") VIEW-AS ALERT-BOX.
Wynik na maszynie z systemem Linux z Bash jako bieżącą powłoką:
┌────── Message ───────┐
│ /bin/bash │
│ ──────────────────── │
│ <OK> │
└──────────────────────┘
OS-COPY
Skopiuj plik
KOPIUJ plik źródłowy plik docelowy
Skopiuj c:\temp\source-file.txt
do c:\temp\target-file.txt
. Musisz sprawdzić OS-ERROR
kątem powodzenia lub jego braku.
OS-COPY VALUE("c:\temp\source-file.txt") VALUE("c:\temp\target-file.txt").
IF OS-ERROR <> 0 THEN DO:
MESSAGE "An error occured" VIEW-AS ALERT-BOX ERROR.
END.
OS-DELETE
Usuwa plik lub drzewo plików.
Podobnie jak w przypadku wielu innych narzędzi OS- *, musisz sprawdzić status w OS-ERROR
.
OS-DELETE file-or-dir-to-delete [RECURSIVE]
Usuń całe drzewo /tmp/dir
:
OS-DELETE VALUE("/tmp/dir") RECURSIVE.
Usuń plik o nazwie c:\dir\file.txt
OS-DELETE VALUE("c:\dir\file.txt").
OS-CREATE-DIR
Tworzy katalog, status to OS-ERROR
Katalog OS-CREATE-DIR
Utwórz katalog o nazwie /usr/local/appData
OS-CREATE-DIR VALUE("/usr/local/appData").
OS-APPEND
Dołącz jeden plik do drugiego. Status jest sprawdzany w OS-ERROR
Cel źródłowy OS-APPEND
Dokleja targetfile.txt
z sourcefile.txt
:
OS-APPEND VALUE("sourcefile.txt") VALUE("targetfile.txt").
OS-RENAME
Zmień nazwę pliku lub katalogu. Status to OS-ERROR
. Może być również używany do przenoszenia plików (lub przenoszenia i zmiany nazwy).
OS-RENAME stara nazwa nowa nazwa
Zmień nazwę /tmp/old-name
na /tmp/new-name
:
OS-RENAME VALUE("/tmp/old-name") VALUE("/tmp/new-name").
Przenieś plik c:\temp\old.txt
do c:\new-dir\old.txt
:
OS-RENAME VALUE("c:\temp\old.txt") VALUE("c:\new-dir\old.txt").
OS-DRIVES (tylko Windows)
Zwraca listę wszystkich dysków w systemie.
MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.
Wynik z czterema dyskami, od C do F:
W systemie Linux lista będzie po prostu pusta, ponieważ z definicji nie ma podłączonych „napędów”. Listowanie katalogów odbywa się w inny sposób ( INPUT FROM OS-DIR
)