En aquest tema, aprendrem sobre les estructures de control en DCL (Digital Command Language) a OpenVMS. Les estructures de control són fonamentals per a la programació, ja que permeten controlar el flux d'execució dels scripts. Veurem les següents estructures de control:

  1. Condicionals (IF-THEN-ELSE)
  2. Bucles (FOR, WHILE, REPEAT-UNTIL)
  3. Comandes de control de flux (GOTO, EXIT)

  1. Condicionals (IF-THEN-ELSE)

Els condicionals permeten executar diferents blocs de codi basant-se en una condició. La sintaxi bàsica és la següent:

$ IF <condició> THEN
$     <comandes>
$ ELSE
$     <comandes>

Exemple:

$! Exemple de condicional IF-THEN-ELSE
$ SET VERIFY
$ x = 10
$ IF x .GT. 5 THEN
$     WRITE SYS$OUTPUT "x és major que 5"
$ ELSE
$     WRITE SYS$OUTPUT "x és menor o igual a 5"
$ ENDIF

Explicació:

  • SET VERIFY activa la visualització de les comandes mentre s'executen.
  • x = 10 assigna el valor 10 a la variable x.
  • IF x .GT. 5 THEN comprova si x és major que 5.
  • WRITE SYS$OUTPUT imprimeix el missatge corresponent.

  1. Bucles

2.1. Bucle FOR

El bucle FOR s'utilitza per repetir un bloc de codi un nombre determinat de vegades. La sintaxi és:

$ FOR <variable> = <inici> TO <final> [BY <increment>] DO
$     <comandes>
$ ENDFOR

Exemple:

$! Exemple de bucle FOR
$ SET VERIFY
$ FOR i = 1 TO 5 DO
$     WRITE SYS$OUTPUT "Valor de i: ", i
$ ENDFOR

Explicació:

  • FOR i = 1 TO 5 DO repeteix el bloc de codi per i des de 1 fins a 5.
  • WRITE SYS$OUTPUT imprimeix el valor de i en cada iteració.

2.2. Bucle WHILE

El bucle WHILE repeteix un bloc de codi mentre una condició sigui certa. La sintaxi és:

$ WHILE <condició> DO
$     <comandes>
$ ENDWHILE

Exemple:

$! Exemple de bucle WHILE
$ SET VERIFY
$ x = 1
$ WHILE x .LE. 5 DO
$     WRITE SYS$OUTPUT "Valor de x: ", x
$     x = x + 1
$ ENDWHILE

Explicació:

  • x = 1 inicialitza la variable x a 1.
  • WHILE x .LE. 5 DO repeteix el bloc de codi mentre x sigui menor o igual a 5.
  • x = x + 1 incrementa x en 1 en cada iteració.

2.3. Bucle REPEAT-UNTIL

El bucle REPEAT-UNTIL repeteix un bloc de codi fins que una condició sigui certa. La sintaxi és:

$ REPEAT
$     <comandes>
$ UNTIL <condició>

Exemple:

$! Exemple de bucle REPEAT-UNTIL
$ SET VERIFY
$ x = 1
$ REPEAT
$     WRITE SYS$OUTPUT "Valor de x: ", x
$     x = x + 1
$ UNTIL x .GT. 5

Explicació:

  • x = 1 inicialitza la variable x a 1.
  • REPEAT inicia el bucle.
  • UNTIL x .GT. 5 finalitza el bucle quan x és major que 5.

  1. Comandes de Control de Flux

3.1. GOTO

La comanda GOTO permet saltar a una etiqueta específica dins del codi. La sintaxi és:

$ GOTO <etiqueta>
$ <etiqueta>:
$     <comandes>

Exemple:

$! Exemple de GOTO
$ SET VERIFY
$ x = 1
$ GOTO SALT
$ WRITE SYS$OUTPUT "Aquesta línia no s'executarà"
$ SALT:
$ WRITE SYS$OUTPUT "S'ha saltat a l'etiqueta SALT"

Explicació:

  • GOTO SALT salta a l'etiqueta SALT.
  • WRITE SYS$OUTPUT imprimeix el missatge després de l'etiqueta SALT.

3.2. EXIT

La comanda EXIT finalitza l'execució del script. La sintaxi és:

$ EXIT

Exemple:

$! Exemple de EXIT
$ SET VERIFY
$ WRITE SYS$OUTPUT "Abans de l'EXIT"
$ EXIT
$ WRITE SYS$OUTPUT "Aquesta línia no s'executarà"

Explicació:

  • EXIT finalitza l'execució del script immediatament.

Exercicis Pràctics

Exercici 1

Escriu un script que imprimeixi els nombres de 1 a 10 utilitzant un bucle FOR.

Solució:

$ SET VERIFY
$ FOR i = 1 TO 10 DO
$     WRITE SYS$OUTPUT "Nombre: ", i
$ ENDFOR

Exercici 2

Escriu un script que imprimeixi els nombres de 1 a 10 utilitzant un bucle WHILE.

Solució:

$ SET VERIFY
$ x = 1
$ WHILE x .LE. 10 DO
$     WRITE SYS$OUTPUT "Nombre: ", x
$     x = x + 1
$ ENDWHILE

Exercici 3

Escriu un script que imprimeixi els nombres de 1 a 10 utilitzant un bucle REPEAT-UNTIL.

Solució:

$ SET VERIFY
$ x = 1
$ REPEAT
$     WRITE SYS$OUTPUT "Nombre: ", x
$     x = x + 1
$ UNTIL x .GT. 10

Resum

En aquest tema, hem après sobre les estructures de control en DCL, incloent condicionals (IF-THEN-ELSE), bucles (FOR, WHILE, REPEAT-UNTIL) i comandes de control de flux (GOTO, EXIT). Aquestes estructures són essencials per controlar el flux d'execució dels scripts i permeten crear programes més dinàmics i flexibles.

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