progress-4gl
OS-utilities
Ricerca…
introduzione
Esistono diverse funzioni e istruzioni incorporate per l'accesso al sistema operativo.
OS-COMANDO
Esegue un comando OS.
OS-COMMAND senza alcuna opzione avvierà una nuova shell e non la chiuderà, così farai su SO grafico: es una finestra "sospesa".
DEFINE VARIABLE cmd AS CHARACTER NO-UNDO.
cmd = "dir".
OS-COMMAND VALUE(cmd).
Ci sono tre opzioni: SILENT
, NO-WAIT
e NO-CONSOLE
.
SILENZIOSO
Dopo aver elaborato un comando del sistema operativo, la shell di AVM si interrompe. Per uscire dalla finestra nelle piattaforme GUI di Windows, è necessario digitare exit. Per uscire dalla finestra nelle piattaforme di caratteri di Windows, è necessario digitare exit e premere RETURN o BARRA SPAZIATRICE. È possibile utilizzare l'opzione SILENT per eliminare questa pausa. Utilizzare questa opzione solo se si è sicuri che il programma, il comando o il file batch non generano alcun output sullo schermo. Non può essere utilizzato con NO-WAIT.
OS-COMMAND SILENT VALUE("runprogram.exe").
NON ASPETTARE
In un ambiente multi-tasking, l'AVM passa immediatamente il controllo all'istruzione successiva dopo l'OS-COMMAND senza attendere il termine del comando del sistema operativo. Non può essere utilizzato con SILENT. Questa opzione è supportata solo in Windows.
OS-COMMAND NO-WAIT VALUE("DIR > dirfile.txt").
Su Linux / Unix dovrai ottenere questo facendo precedere il comando con un segno &
;
OS-COMMAND VALUE("ls >> file.txt &").
NO-CONSOLE
Durante l'elaborazione di un comando del sistema operativo, l'AVM crea una finestra della console. La finestra della console non può essere ripulita dopo l'esecuzione del comando. È possibile utilizzare l'opzione NO-CONSOLE per impedire che questa finestra venga creata in primo luogo.
OS-COMMAND NO-CONSOLE VALUE("startbach.bat").
Nessun errore viene mai restituito da OS-COMMAND
a Progress ABL, quindi è necessario verificare gli errori in un altro modo, possibilmente scrivendoli in un file in uno script di shell o simile.
opsys
La funzione OPSYS
restituisce su quale sistema operativo è in esecuzione il programma:
MESSAGE OPSYS VIEW-AS ALERT-BOX.
Risultato:
Può essere usato per selezionare quale utility OS chiamare:
IF OPSYS = "LINUX" THEN
OS-COMMAND VALUE("ls -l").
ELSE
OS-COMMAND VALUE("dir").
OS-ERRORE
Restituisce un errore da una precedente chiamata OS-*
rappresentata da un numero intero. Le chiamate che possono restituire un OS-ERROR sono:
- OS-APPEND
- OS-COPIA
- OS-CREATE-DIR
- OS-DELETE
- OS-RENAME
- SALVA CACHE
Si noti che manca OS-COMMAND
. Devi gestire gli errori in OS-COMANDO tu stesso.
Numero errore | Descrizione |
---|---|
0 | Nessun errore |
1 | Non proprietario |
2 | Nessun file o directory con questo nome |
3 | Chiamata di sistema interrotta |
4 | Errore I / O |
5 | Numero di file errato |
6 | Niente più processi |
7 | Memoria di base insufficiente |
8 | Permesso negato |
9 | Indirizzo errato |
10 | il file esiste |
11 | Nessun apparecchio di questo tipo |
12 | Non una directory |
13 | È una directory |
14 | Overflow tabella file |
15 | Troppi file aperti |
16 | File troppo grande |
17 | Spazio vuoto sul dispositivo |
18 | La directory non è vuota |
999 | Errore non mappato (predefinito ABL) |
Funzione OS-GETENV
Restituisce il valore di qualsiasi variabile di ambiente del sistema operativo.
MESSAGE OS-GETENV ("OS") VIEW-AS ALERT-BOX.
Su una macchina Windows:
MESSAGE OS-GETENV ("SHELL") VIEW-AS ALERT-BOX.
Risultato su una macchina Linux con Bash come shell corrente:
┌────── Message ───────┐
│ /bin/bash │
│ ──────────────────── │
│ <OK> │
└──────────────────────┘
OS-COPIA
Copia un file
Copia il file di destinazione del file di origine
Copia c:\temp\source-file.txt
in c:\temp\target-file.txt
. È necessario controllare OS-ERROR
per il successo o la mancanza di ciò.
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
Elimina un file o un albero di file.
Come con molte altre utility OS- *, è necessario controllare lo stato in OS-ERROR
.
OS-DELETE file-o-dir-to-delete [RECURSIVE]
Elimina l'intero albero /tmp/dir
:
OS-DELETE VALUE("/tmp/dir") RECURSIVE.
Elimina il file c:\dir\file.txt
OS-DELETE VALUE("c:\dir\file.txt").
OS-CREATE-DIR
Crea una directory, lo stato è in OS-ERROR
Directory OS-CREATE-DIR
Crea una directory chiamata /usr/local/appData
OS-CREATE-DIR VALUE("/usr/local/appData").
OS-APPEND
Aggiungi un file a un altro. Lo stato è controllato in OS-ERROR
Obiettivo sorgente OS-APPEND
targetfile.txt
con sourcefile.txt
:
OS-APPEND VALUE("sourcefile.txt") VALUE("targetfile.txt").
OS-RENAME
Rinominare un file o una directory. Lo stato è in OS-ERROR
. Può anche essere usato per spostare file (o spostarli e rinominarli).
OS-RENAME oldname newname
Rinomina /tmp/old-name
in /tmp/new-name
:
OS-RENAME VALUE("/tmp/old-name") VALUE("/tmp/new-name").
Sposta il file c:\temp\old.txt
in c:\new-dir\old.txt
:
OS-RENAME VALUE("c:\temp\old.txt") VALUE("c:\new-dir\old.txt").
OS-DRIVES (solo per Windows)
Restituisce un elenco di tutte le unità su un sistema.
MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.
Risultato con quattro unità, da C a F:
Su Linux, la lista sarà semplicemente vuota poiché le definizioni non sono "unità" connesse. L'elenco delle directory viene eseguito in un altro modo ( INPUT FROM OS-DIR
)