progress-4gl
OS-utilities
Zoeken…
Invoering
Er zijn verschillende ingebouwde functies en verklaringen voor toegang tot het besturingssysteem.
OS-OPDRACHT
Voert een OS-opdracht uit.
OS-COMMAND zonder opties zal een nieuwe shell starten en deze niet verlaten - dus je zult op grafisch OS: es een venster "laten hangen".
DEFINE VARIABLE cmd AS CHARACTER NO-UNDO.
cmd = "dir".
OS-COMMAND VALUE(cmd).
Er zijn drie opties: SILENT
, NO-WAIT
en NO-CONSOLE
.
STIL
Na het verwerken van een opdracht van het besturingssysteem, pauzeert de AVM-shell. Als u het venster in Windows GUI-platforms wilt afsluiten, typt u exit. Als u het venster in Windows-tekenplatforms wilt afsluiten, typt u exit en drukt u op RETURN of SPATIEBALK. U kunt de optie STIL gebruiken om deze pauze te elimineren. Gebruik deze optie alleen als u zeker weet dat het programma, de opdracht of het batchbestand geen uitvoer naar het scherm genereert. Kan niet worden gebruikt met NO-WAIT.
OS-COMMAND SILENT VALUE("runprogram.exe").
NEE WACHT
Zorgt ervoor dat de AVM in een multi-tasking-omgeving de besturing onmiddellijk teruggeeft aan de volgende instructie na OS-COMMAND zonder te wachten tot het commando van het besturingssysteem wordt beëindigd. Kan niet worden gebruikt met SILENT. Deze optie wordt alleen ondersteund in Windows.
OS-COMMAND NO-WAIT VALUE("DIR > dirfile.txt").
Op Linux / Unix moet je dit bereiken door in plaats daarvan het commando vooraf te gaan met een &
-sign:
OS-COMMAND VALUE("ls >> file.txt &").
NO-CONSOLE
Tijdens het verwerken van een opdracht van het besturingssysteem, maakt de AVM een consolevenster. Het consolevenster wordt mogelijk niet opgeruimd nadat de opdracht is uitgevoerd. U kunt de optie GEEN CONSOLE gebruiken om te voorkomen dat dit venster überhaupt wordt gemaakt.
OS-COMMAND NO-CONSOLE VALUE("startbach.bat").
Er worden nooit fouten teruggestuurd van OS-COMMAND
naar Progress ABL, dus u moet op een andere manier controleren op fouten en deze mogelijk naar een bestand schrijven in een shellscript of iets dergelijks.
Opsys
De OPSYS
geeft terug op welk besturingssysteem het programma draait:
MESSAGE OPSYS VIEW-AS ALERT-BOX.
Resultaat:
Het kan worden gebruikt om te selecteren welk OS-hulpprogramma u wilt oproepen:
IF OPSYS = "LINUX" THEN
OS-COMMAND VALUE("ls -l").
ELSE
OS-COMMAND VALUE("dir").
OS-ERROR
Retourneert een fout van een eerdere OS-*
wordt weergegeven door een geheel getal. De oproepen die een OS-FOUT kunnen retourneren zijn:
- OS-APPEND
- OS-COPY
- OS-CREATE-DIR
- OS-DELETE
- OS-RENAME
- BESPAAR CACHE
Merk op dat OS-COMMAND
ontbreekt. U moet zelf fouten in OS-COMMAND afhandelen.
Foutnummer | Beschrijving |
---|---|
0 | Geen fout |
1 | Geen eigenaar |
2 | Bestand of map bestaat niet |
3 | Onderbroken systeemoproep |
4 | I / O-fout |
5 | Onjuist bestandsnummer |
6 | Geen processen meer |
7 | Onvoldoende kerngeheugen |
8 | Toestemming geweigerd |
9 | Slecht adres |
10 | Bestand bestaat |
11 | Geen dergelijk apparaat |
12 | Geen map |
13 | Is een map |
14 | Overloop bestandstabel |
15 | Te veel open bestanden |
16 | Bestand te groot |
17 | Geen ruimte meer op het apparaat |
18 | Directory niet leeg |
999 | Niet-toegewezen fout (standaard ABL) |
OS-GETENV-functie
Retourneert de waarde van elke OS-omgevingsvariabele.
MESSAGE OS-GETENV ("OS") VIEW-AS ALERT-BOX.
Op een Windows-machine:
MESSAGE OS-GETENV ("SHELL") VIEW-AS ALERT-BOX.
Resultaat op een Linux-machine met Bash als huidige shell:
┌────── Message ───────┐
│ /bin/bash │
│ ──────────────────── │
│ <OK> │
└──────────────────────┘
OS-COPY
Kopieer een bestand
KOPIE bronbestand doelbestand
Kopieer c:\temp\source-file.txt
naar c:\temp\target-file.txt
. U moet OS-ERROR
op succes of gebrek daaraan.
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
Hiermee verwijdert u een bestand of een bestandsstructuur.
Zoals bij veel andere OS- * hulpprogramma's, moet u de status controleren in OS-ERROR
.
OS-DELETE file-of-dir-to-delete [RECURSIEF]
Verwijder de hele /tmp/dir
boom:
OS-DELETE VALUE("/tmp/dir") RECURSIVE.
Verwijder het bestand met de naam c:\dir\file.txt
OS-DELETE VALUE("c:\dir\file.txt").
OS-CREATE-DIR
Maakt een map aan, de status is in OS-ERROR
OS-CREATE-DIR-directory
Maak een map met de naam /usr/local/appData
OS-CREATE-DIR VALUE("/usr/local/appData").
OS-APPEND
Voeg het ene bestand toe aan het andere. Status wordt gecontroleerd in OS-ERROR
OS-APPEND brondoel
Voegt targetfile.txt
met sourcefile.txt
:
OS-APPEND VALUE("sourcefile.txt") VALUE("targetfile.txt").
OS-RENAME
Hernoem een bestand of map. Status is in OS-ERROR
. Kan ook worden gebruikt om bestanden te verplaatsen (of verplaatsen en hernoemen).
OS-RENAME oude naam nieuwe naam
Hernoem /tmp/old-name
naar /tmp/new-name
:
OS-RENAME VALUE("/tmp/old-name") VALUE("/tmp/new-name").
Verplaats bestand c:\temp\old.txt
naar c:\new-dir\old.txt
:
OS-RENAME VALUE("c:\temp\old.txt") VALUE("c:\new-dir\old.txt").
OS-DRIVES (alleen Windows)
Retourneert een lijst van alle schijven op een systeem.
MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.
Resultaat met vier schijven, C tot en met F:
Op Linux is de lijst gewoon leeg, omdat er per definitie geen "schijven" zijn aangesloten. Het weergeven van mappen gebeurt op een andere manier ( INPUT FROM OS-DIR
)