La gestió d'errors és una part fonamental de qualsevol llenguatge de programació, i el Digital Command Language (DCL) d'OpenVMS no és una excepció. En aquest tema, aprendrem com detectar, gestionar i respondre als errors en els scripts de DCL. Això inclou l'ús de variables de sistema, comandes de control de flux i tècniques per assegurar que els scripts siguin robustos i fiables.

Conceptes Clau

  1. Variables de Sistema per a la Gestió d'Errors:

    • STATUS: Conté el codi de retorn de l'última comanda executada.
    • SEVERITY: Conté el nivell de severitat de l'últim error (0 per a èxit, 1 per a advertència, 2 per a error, etc.).
  2. Comandes de Control de Flux:

    • ON: Defineix accions a realitzar en cas d'error.
    • IF: Permet condicionar l'execució de comandes basant-se en el valor de STATUS o SEVERITY.
  3. Tècniques de Gestió d'Errors:

    • Captura d'errors.
    • Registre d'errors.
    • Recuperació d'errors.

Variables de Sistema per a la Gestió d'Errors

STATUS i SEVERITY

Les variables STATUS i SEVERITY són fonamentals per a la gestió d'errors en DCL. Aquestes variables es poden utilitzar per determinar si una comanda s'ha executat correctament o si ha fallat, i per prendre decisions basades en aquesta informació.

$ RUN MYPROGRAM
$ IF $STATUS .NE. 1 THEN GOTO ERROR_HANDLER
$ EXIT
$ ERROR_HANDLER:
$ WRITE SYS$OUTPUT "S'ha produït un error en executar MYPROGRAM"
$ EXIT

En aquest exemple, si MYPROGRAM falla, el codi de retorn no serà 1, i el flux del programa saltarà a l'etiqueta ERROR_HANDLER.

Comandes de Control de Flux

ON

La comanda ON permet definir accions específiques a realitzar quan es produeix un error. Això és útil per centralitzar la gestió d'errors en un punt del script.

$ ON ERROR THEN GOTO ERROR_HANDLER
$ RUN MYPROGRAM
$ EXIT
$ ERROR_HANDLER:
$ WRITE SYS$OUTPUT "S'ha produït un error en executar MYPROGRAM"
$ EXIT

IF

La comanda IF es pot utilitzar per condicionar l'execució de comandes basant-se en el valor de STATUS o SEVERITY.

$ RUN MYPROGRAM
$ IF $SEVERITY .GE. 2 THEN GOTO ERROR_HANDLER
$ EXIT
$ ERROR_HANDLER:
$ WRITE SYS$OUTPUT "S'ha produït un error en executar MYPROGRAM"
$ EXIT

Tècniques de Gestió d'Errors

Captura d'Errors

Capturar errors implica detectar quan es produeix un error i prendre mesures per gestionar-lo. Això es pot fer utilitzant les variables STATUS i SEVERITY juntament amb les comandes ON i IF.

Registre d'Errors

Registrar errors és una pràctica recomanada per mantenir un registre dels problemes que es produeixen durant l'execució dels scripts. Això es pot fer escrivint missatges d'error a un fitxer de registre.

$ ON ERROR THEN GOTO ERROR_HANDLER
$ RUN MYPROGRAM
$ EXIT
$ ERROR_HANDLER:
$ OPEN/WRITE LOGFILE ERROR.LOG
$ WRITE LOGFILE "Error executant MYPROGRAM: ", $STATUS
$ CLOSE LOGFILE
$ EXIT

Recuperació d'Errors

La recuperació d'errors implica prendre mesures per corregir o mitigar els efectes d'un error. Això pot incloure la reexecució de comandes, la neteja de recursos o la notificació a l'usuari.

$ ON ERROR THEN GOTO ERROR_HANDLER
$ RUN MYPROGRAM
$ EXIT
$ ERROR_HANDLER:
$ WRITE SYS$OUTPUT "S'ha produït un error. Intentant de nou..."
$ RUN MYPROGRAM
$ IF $STATUS .NE. 1 THEN GOTO FINAL_ERROR
$ EXIT
$ FINAL_ERROR:
$ WRITE SYS$OUTPUT "Error persistent. Contacteu amb l'administrador."
$ EXIT

Exercici Pràctic

Exercici

Crea un script DCL que executi un programa anomenat DATA_PROCESSOR. Si el programa falla, el script ha de registrar l'error en un fitxer anomenat ERROR.LOG i intentar executar el programa de nou. Si el programa falla dues vegades consecutives, el script ha de mostrar un missatge d'error i finalitzar.

Solució

$ ON ERROR THEN GOTO ERROR_HANDLER
$ RUN DATA_PROCESSOR
$ IF $STATUS .EQ. 1 THEN EXIT
$ ERROR_HANDLER:
$ OPEN/WRITE LOGFILE ERROR.LOG
$ WRITE LOGFILE "Error executant DATA_PROCESSOR: ", $STATUS
$ CLOSE LOGFILE
$ WRITE SYS$OUTPUT "S'ha produït un error. Intentant de nou..."
$ RUN DATA_PROCESSOR
$ IF $STATUS .EQ. 1 THEN EXIT
$ WRITE SYS$OUTPUT "Error persistent. Contacteu amb l'administrador."
$ EXIT

Conclusió

La gestió d'errors en DCL és essencial per crear scripts robustos i fiables. Utilitzant les variables de sistema STATUS i SEVERITY, juntament amb les comandes ON i IF, podem detectar i gestionar errors de manera efectiva. A més, les tècniques de captura, registre i recuperació d'errors ens ajuden a mantenir els nostres scripts funcionant correctament fins i tot en situacions inesperades.

Curs de Programació OpenVMS

Mòdul 1: Introducció a OpenVMS

Mòdul 2: Comandes Bàsiques d'OpenVMS

Mòdul 3: Sistema de Fitxers d'OpenVMS

Mòdul 4: Scripting amb DCL

Mòdul 5: Gestió del Sistema OpenVMS

Mòdul 6: Xarxes a OpenVMS

Mòdul 7: Programació Avançada a OpenVMS

Mòdul 8: Clúster d'OpenVMS

Mòdul 9: Seguretat a OpenVMS

Mòdul 10: Resolució de Problemes i Optimització

© Copyright 2024. Tots els drets reservats