progress-4gl
Utilidades del sistema operativo
Buscar..
Introducción
Hay varias funciones y sentencias incorporadas para acceder al sistema operativo.
OS-COMMAND
Ejecuta un comando del sistema operativo.
OS-COMMAND sin ninguna opción iniciará un nuevo shell y no saldrá de él, por lo tanto, en el sistema operativo gráfico: es dejar una ventana "colgando".
DEFINE VARIABLE cmd AS CHARACTER NO-UNDO.
cmd = "dir".
OS-COMMAND VALUE(cmd).
Hay tres opciones: SILENT
, NO-WAIT
y NO-CONSOLE
.
SILENCIO
Después de procesar un comando del sistema operativo, el shell AVM se detiene. Para salir de la ventana en las plataformas GUI de Windows, debe escribir exit. Para salir de la ventana en las plataformas de caracteres de Windows, debe escribir salir y presionar RETORNO o BARRA ESPACIADORA. Puede utilizar la opción SILENT para eliminar esta pausa. Use esta opción solo si está seguro de que el programa, el comando o el archivo por lotes no generan ningún resultado en la pantalla. No se puede utilizar con NO-WAIT.
OS-COMMAND SILENT VALUE("runprogram.exe").
NO, ESPERA
En un entorno multitarea, el AVM pasa inmediatamente el control de nuevo a la siguiente declaración después del COMANDO OS, sin esperar a que termine el comando del sistema operativo. No se puede utilizar con SILENT. Esta opción solo es compatible con Windows.
OS-COMMAND NO-WAIT VALUE("DIR > dirfile.txt").
En Linux / Unix, tendrá que lograr esto precediendo el comando con un &
-sign en su lugar:
OS-COMMAND VALUE("ls >> file.txt &").
NO CONSOLA
Mientras se procesa un comando del sistema operativo, el AVM crea una ventana de consola. La ventana de la consola no se puede limpiar después de ejecutar el comando. Puede usar la opción NO CONSOLA para evitar que esta ventana se cree en primer lugar.
OS-COMMAND NO-CONSOLE VALUE("startbach.bat").
OS-COMMAND
nunca devuelve errores a Progress ABL, por lo que debe verificar los errores de otra manera, posiblemente escribiéndolos en un archivo en un shell-script o similar.
OPSYS
La OPSYS
OPSYS devuelve en qué sistema operativo se está ejecutando el programa:
MESSAGE OPSYS VIEW-AS ALERT-BOX.
Resultado:
Se puede usar para seleccionar a qué utilidad del sistema operativo llamar:
IF OPSYS = "LINUX" THEN
OS-COMMAND VALUE("ls -l").
ELSE
OS-COMMAND VALUE("dir").
ERROR OS
Devuelve un error de una llamada anterior a OS-*
representada por un entero. Las llamadas que pueden devolver un SO-ERROR son:
- OS APENDER
- OS-COPY
- OS-CREATE-DIR
- OS-BORRAR
- OS-RENAME
- Guardar caché
Tenga en cuenta que OS-COMMAND
encuentra. Necesita manejar los errores en OS-COMMAND usted mismo.
Numero erroneo | Descripción |
---|---|
0 | No hay error |
1 | No propietario |
2 | El fichero o directorio no existe |
3 | Llamada de sistema interrumpida |
4 | Error de E / S |
5 | Número de archivo incorrecto |
6 | No mas procesos |
7 | No hay suficiente memoria central |
8 | Permiso denegado |
9 | Mala dirección |
10 | El archivo existe |
11 | Hay tal dispositivo |
12 | No es un directorio |
13 | Es un directorio |
14 | Desbordamiento de tabla de archivos |
15 | Demasiados archivos abiertos |
dieciséis | Archivo demasiado grande |
17 | no queda espacio en el dispositivo |
18 | Directorio no vacio |
999 | Error no asignado (valor predeterminado de ABL) |
Función OS-GETENV
Devuelve el valor de cualquier variable de entorno del sistema operativo.
MESSAGE OS-GETENV ("OS") VIEW-AS ALERT-BOX.
En una máquina de Windows:
MESSAGE OS-GETENV ("SHELL") VIEW-AS ALERT-BOX.
Resultado en una máquina Linux con Bash como shell actual:
┌────── Message ───────┐
│ /bin/bash │
│ ──────────────────── │
│ <OK> │
└──────────────────────┘
OS-COPY
Copiar un archivo
Copiar archivo de origen archivo de destino
Copie c:\temp\source-file.txt
en c:\temp\target-file.txt
. Es necesario comprobar OS-ERROR
para el éxito o falta de ella.
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-BORRAR
Elimina un archivo o un árbol de archivos.
Al igual que con muchas otras utilidades OS- *, debe verificar el estado en OS-ERROR
.
OS-DELETE archivo-o-dir-to-delete [RECURSIVE]
Eliminar el árbol completo /tmp/dir
:
OS-DELETE VALUE("/tmp/dir") RECURSIVE.
Borre el archivo llamado c:\dir\file.txt
OS-DELETE VALUE("c:\dir\file.txt").
OS-CREATE-DIR
Crea un directorio, el estado es en OS-ERROR
Directorio OS-CREATE-DIR
Cree un directorio llamado /usr/local/appData
OS-CREATE-DIR VALUE("/usr/local/appData").
OS APENDER
Adjuntar un archivo a otro. El estado se verifica en OS-ERROR
OS-APPEND origen objetivo
Anexa targetfile.txt
con sourcefile.txt
:
OS-APPEND VALUE("sourcefile.txt") VALUE("targetfile.txt").
OS-RENAME
Renombrar un archivo o directorio. El estado es en OS-ERROR
. También se puede utilizar para mover archivos (o mover y renombrar).
OS-RENAME oldname newname
Cambie el nombre de /tmp/old-name
a /tmp/new-name
:
OS-RENAME VALUE("/tmp/old-name") VALUE("/tmp/new-name").
Mueva el archivo c:\temp\old.txt
a c:\new-dir\old.txt
:
OS-RENAME VALUE("c:\temp\old.txt") VALUE("c:\new-dir\old.txt").
OS-DRIVES (solo Windows)
Devuelve una lista de todas las unidades en un sistema.
MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.
Resultado con cuatro unidades, de C a F:
En Linux, la lista simplemente estará vacía, ya que las definiciones no tienen "unidades" conectadas. El listado de directorios se realiza de otra manera ( INPUT FROM OS-DIR
)