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:

inserisci la descrizione dell'immagine qui

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:

inserisci la descrizione dell'immagine qui

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:

inserisci la descrizione dell'immagine qui

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 )



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow