progress-4gl
Utilitaires OS
Recherche…
Introduction
Il existe plusieurs fonctions et instructions intégrées pour accéder au système d'exploitation.
OS-COMMAND
Exécute une commande OS.
OS-COMMAND sans aucune option démarrera un nouveau shell et ne le quittera pas. Ainsi, sous OS graphique: vous laisserez une fenêtre "en suspens".
DEFINE VARIABLE cmd AS CHARACTER NO-UNDO.
cmd = "dir".
OS-COMMAND VALUE(cmd).
Il existe trois options: SILENT
, NO-WAIT
et NO-CONSOLE
.
SILENCIEUX
Après avoir traité une commande du système d'exploitation, le shell AVM s'interrompt. Pour quitter la fenêtre dans les plates-formes d'interface graphique Windows, vous devez taper exit. Pour quitter la fenêtre dans les plates-formes de caractères Windows, vous devez taper exit et appuyer sur RETOUR ou sur ESPACE. Vous pouvez utiliser l'option SILENT pour éliminer cette pause. Utilisez cette option uniquement si vous êtes certain que le programme, la commande ou le fichier de commandes ne génère aucune sortie à l'écran. Ne peut pas être utilisé avec NO-WAIT.
OS-COMMAND SILENT VALUE("runprogram.exe").
NON ATTENDS
Dans un environnement multitâche, l'AVM passe immédiatement le contrôle à l'instruction suivante après l'OS-COMMAND sans attendre la fin de la commande du système d'exploitation. Ne peut pas être utilisé avec SILENT. Cette option est prise en charge uniquement sous Windows.
OS-COMMAND NO-WAIT VALUE("DIR > dirfile.txt").
Sur Linux / Unix, vous devrez le faire en précédant la commande par un signe &
-sign:
OS-COMMAND VALUE("ls >> file.txt &").
NO-CONSOLE
Lors du traitement d'une commande du système d'exploitation, l'AVM crée une fenêtre de console. La fenêtre de la console ne peut pas être nettoyée après l'exécution de la commande. Vous pouvez utiliser l'option NO-CONSOLE pour empêcher cette fenêtre d'être créée en premier lieu.
OS-COMMAND NO-CONSOLE VALUE("startbach.bat").
Aucune erreur n’est jamais renvoyée de OS-COMMAND
vers Progress ABL, vous devez donc rechercher les erreurs d’une autre manière, en les écrivant éventuellement dans un fichier dans un script shell ou similaire.
OPSYS
La OPSYS
OPSYS renvoie le système d'exploitation sur lequel le programme est exécuté:
MESSAGE OPSYS VIEW-AS ALERT-BOX.
Résultat:
Il peut être utilisé pour sélectionner l'utilitaire OS à appeler:
IF OPSYS = "LINUX" THEN
OS-COMMAND VALUE("ls -l").
ELSE
OS-COMMAND VALUE("dir").
OS-ERROR
Retourne une erreur d'un précédent appel OS-*
représenté par un entier. Les appels pouvant renvoyer une erreur OS sont les suivants:
- OS-APPEND
- OS-COPY
- OS-CREATE-DIR
- OS-DELETE
- OS-RENAME
- SAUVEZ CACHE
Notez que OS-COMMAND
est manquant. Vous devez gérer vous-même les erreurs dans OS-COMMAND.
Numéro d'erreur | La description |
---|---|
0 | Pas d'erreur |
1 | Pas propriétaire |
2 | Aucun fichier ou répertoire de ce nom |
3 | Appel système interrompu |
4 | Erreur d'E / S |
5 | Numéro de dossier incorrect |
6 | Plus de processus |
7 | Pas assez de mémoire de base |
8 | Permission refusée |
9 | Mauvaise adresse |
dix | le fichier existe |
11 | Aucun tel appareil |
12 | Pas un annuaire |
13 | Est un directeur |
14 | Débordement de table de fichiers |
15 | Trop de fichiers ouverts |
16 | Fichier trop large |
17 | Pas d'espace disponible sur le périphérique |
18 | Répertoire non vide |
999 | Erreur non mappée (par défaut ABL) |
Fonction OS-GETENV
Renvoie la valeur de toute variable d'environnement du système d'exploitation.
MESSAGE OS-GETENV ("OS") VIEW-AS ALERT-BOX.
Sur une machine Windows:
MESSAGE OS-GETENV ("SHELL") VIEW-AS ALERT-BOX.
Résultat sur une machine Linux avec Bash en tant que shell actuel:
┌────── Message ───────┐
│ /bin/bash │
│ ──────────────────── │
│ <OK> │
└──────────────────────┘
OS-COPY
Copier un fichier
Fichier cible du fichier source COPY
Copiez c:\temp\source-file.txt
dans c:\temp\target-file.txt
. Vous devez vérifier OS-ERROR
pour la réussite ou l'absence de celle-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
Supprime un fichier ou une arborescence de fichiers.
Comme avec beaucoup d'autres utilitaires OS- *, vous devez vérifier l'état dans OS-ERROR
.
OS-DELETE fichier-ou-dir-to-delete [RECURSIVE]
Supprimez l’arbre entier /tmp/dir
:
OS-DELETE VALUE("/tmp/dir") RECURSIVE.
Supprimez le fichier appelé c:\dir\file.txt
OS-DELETE VALUE("c:\dir\file.txt").
OS-CREATE-DIR
Crée un répertoire, le statut est dans OS-ERROR
Répertoire OS-CREATE-DIR
Créez un répertoire appelé /usr/local/appData
OS-CREATE-DIR VALUE("/usr/local/appData").
OS-APPEND
Ajouter un fichier à un autre. L'état est vérifié dans OS-ERROR
Cible source OS-APPEND
Ajoute targetfile.txt
avec sourcefile.txt
:
OS-APPEND VALUE("sourcefile.txt") VALUE("targetfile.txt").
OS-RENAME
Renommez un fichier ou un répertoire. L'état est dans OS-ERROR
. Peut également être utilisé pour déplacer des fichiers (ou les déplacer et les renommer).
OS-RENAME oldname newname
Renommez /tmp/old-name
en /tmp/new-name
:
OS-RENAME VALUE("/tmp/old-name") VALUE("/tmp/new-name").
Déplacez le fichier c:\temp\old.txt
vers c:\new-dir\old.txt
:
OS-RENAME VALUE("c:\temp\old.txt") VALUE("c:\new-dir\old.txt").
OS-DRIVES (Windows uniquement)
Renvoie une liste de tous les lecteurs d'un système.
MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.
Résultat avec quatre lecteurs, C à F:
Sous Linux, la liste sera simplement vide car, par définition, aucun "lecteur" n'est connecté. Lister les répertoires se fait d’une autre manière ( INPUT FROM OS-DIR
)