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:

wprowadź opis zdjęcia tutaj

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:

wprowadź opis zdjęcia tutaj

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:

wprowadź opis zdjęcia tutaj

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 )



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow