progress-4gl
OS-Dienstprogramme
Suche…
Einführung
Es gibt mehrere integrierte Funktionen und Anweisungen für den Zugriff auf das Betriebssystem.
OS-COMMAND
Führt einen OS-Befehl aus.
OS-COMMAND ohne Optionen startet eine neue Shell und beendet sie nicht - Sie werden also auf grafischen OS: es ein Fenster "hängen lassen".
DEFINE VARIABLE cmd AS CHARACTER NO-UNDO.
cmd = "dir".
OS-COMMAND VALUE(cmd).
Es gibt drei Optionen: SILENT
, NO-WAIT
und NO-CONSOLE
.
LEISE
Nach der Verarbeitung eines Betriebssystembefehls wird die AVM-Shell angehalten. Um das Fenster auf Windows-GUI-Plattformen zu schließen, müssen Sie exit eingeben. Um das Fenster auf Windows-Zeichenplattformen zu schließen, müssen Sie exit eingeben und RETURN oder die LEERTASTE drücken. Mit der Option SILENT können Sie diese Pause beseitigen. Verwenden Sie diese Option nur, wenn Sie sicher sind, dass das Programm, der Befehl oder die Batchdatei keine Ausgabe auf dem Bildschirm generiert. Kann nicht mit NO-WAIT verwendet werden.
OS-COMMAND SILENT VALUE("runprogram.exe").
KEIN WARTEN
Bewirkt, dass AVM in einer Multitasking-Umgebung unmittelbar nach dem OS-COMMAND die Kontrolle an die nächste Anweisung zurückgibt, ohne auf das Beenden des Betriebssystembefehls zu warten. Kann nicht mit SILENT verwendet werden. Diese Option wird nur in Windows unterstützt.
OS-COMMAND NO-WAIT VALUE("DIR > dirfile.txt").
Unter Linux / Unix müssen Sie dies erreichen, indem Sie dem Befehl stattdessen ein &
-sign eingeben.
OS-COMMAND VALUE("ls >> file.txt &").
NO-CONSOLE
Während der Verarbeitung eines Betriebssystembefehls erstellt AVM ein Konsolenfenster. Das Konsolenfenster kann nach der Ausführung des Befehls nicht bereinigt werden. Mit der Option NO-CONSOLE können Sie verhindern, dass dieses Fenster überhaupt erstellt wird.
OS-COMMAND NO-CONSOLE VALUE("startbach.bat").
Es werden keine Fehler von OS-COMMAND
an Progress ABL zurückgegeben. Sie müssen also auf andere Weise nach Fehlern OS-COMMAND
, möglicherweise in eine Datei in einem Shell-Skript oder ähnlichem schreiben.
OPSYS
Die OPSYS
gibt an, unter welchem Betriebssystem das Programm läuft:
MESSAGE OPSYS VIEW-AS ALERT-BOX.
Ergebnis:
Mit dieser Option können Sie auswählen, welches Betriebssystem aufgerufen werden soll:
IF OPSYS = "LINUX" THEN
OS-COMMAND VALUE("ls -l").
ELSE
OS-COMMAND VALUE("dir").
OS-FEHLER
Gibt einen Fehler eines vorherigen OS-*
, der durch eine Ganzzahl dargestellt wird. Die Aufrufe, die einen OS-ERROR zurückgeben können, sind:
- OS-APPEND
- OS-COPY
- OS-CREATE-DIR
- OS-DELETE
- OS-RENAME
- CACHE SPEICHERN
Beachten Sie, dass OS-COMMAND
fehlt. Sie müssen Fehler in OS-COMMAND selbst behandeln.
Fehlernummer | Beschreibung |
---|---|
0 | Kein Fehler |
1 | Nicht Besitzer |
2 | Keine solche Datei oder Ordner |
3 | Unterbrochener Systemaufruf |
4 | E / A-Fehler |
5 | Ungültige Dateinummer |
6 | Keine Prozesse mehr |
7 | Nicht genügend Hauptspeicher |
8 | Zugang verweigert |
9 | Schlechte Adresse |
10 | Datei existiert |
11 | Kein solches Gerät |
12 | Kein Verzeichnis |
13 | Ist ein Verzeichnis |
14 | Datentabellenüberlauf |
fünfzehn | Zu viele offene Dateien |
16 | Datei zu groß |
17 | Kein Speicherplatz auf Gerät |
18 | Verzeichnis nicht leer |
999 | Nicht zugeordneter Fehler (Standardeinstellung ABL) |
OS-GETENV-Funktion
Gibt den Wert einer beliebigen Betriebssystemumgebungsvariablen zurück.
MESSAGE OS-GETENV ("OS") VIEW-AS ALERT-BOX.
Auf einem Windows-Computer:
MESSAGE OS-GETENV ("SHELL") VIEW-AS ALERT-BOX.
Ergebnis auf einem Linux-Rechner mit Bash als aktuelle Shell:
┌────── Message ───────┐
│ /bin/bash │
│ ──────────────────── │
│ <OK> │
└──────────────────────┘
OS-COPY
Kopieren Sie eine Datei
COPY-Quelldatei-Zieldatei
Kopieren Sie c:\temp\source-file.txt
nach c:\temp\target-file.txt
. Sie müssen OS-ERROR
auf Erfolg oder Mangel prüfen.
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
Löscht eine Datei oder einen Dateibaum.
Wie bei vielen anderen OS- * -Dienstprogrammen müssen Sie den Status in OS-ERROR
überprüfen.
OS-DELETE Datei oder Verzeichnis zum Löschen [RECURSIVE]
Löschen Sie den gesamten /tmp/dir
Baum:
OS-DELETE VALUE("/tmp/dir") RECURSIVE.
Löschen Sie die Datei mit dem Namen c:\dir\file.txt
OS-DELETE VALUE("c:\dir\file.txt").
OS-CREATE-DIR
Erzeugt ein Verzeichnis, Status befindet sich in OS-ERROR
OS-CREATE-DIR-Verzeichnis
Erstellen Sie ein Verzeichnis mit dem Namen /usr/local/appData
OS-CREATE-DIR VALUE("/usr/local/appData").
OS-APPEND
Eine Datei an eine andere anhängen. Der Status wird in OS-ERROR
geprüft
OS-APPEND-Quellziel
Hängt targetfile.txt
mit sourcefile.txt
:
OS-APPEND VALUE("sourcefile.txt") VALUE("targetfile.txt").
OS-RENAME
Benennen Sie eine Datei oder ein Verzeichnis um. Status ist in OS-ERROR
. Kann auch zum Verschieben von Dateien (oder Verschieben und Umbenennen) verwendet werden.
OS-RENAME alter Name neuer Name
Benennen Sie /tmp/old-name
in /tmp/new-name
:
OS-RENAME VALUE("/tmp/old-name") VALUE("/tmp/new-name").
Verschieben Sie die Datei c:\temp\old.txt
nach c:\new-dir\old.txt
:
OS-RENAME VALUE("c:\temp\old.txt") VALUE("c:\new-dir\old.txt").
OS-DRIVES (nur Windows)
Gibt eine Liste aller Laufwerke in einem System zurück.
MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.
Ergebnis mit vier Laufwerken C bis F:
Unter Linux ist die Liste einfach leer, da dort durch Definitionen keine "Laufwerke" verbunden sind. Das Auflisten von Verzeichnissen erfolgt auf andere Weise ( INPUT FROM OS-DIR
)