En aquest tema, explorarem les subrutines i els procediments en el Llenguatge de Control (CL). Les subrutines i els procediments són eines fonamentals per organitzar i modularitzar el codi, permetent la reutilització i la simplificació de tasques complexes.

Què són les Subrutines i els Procediments?

Subrutines

Una subrutina és un bloc de codi que es pot cridar des de diferents parts d'un programa. Les subrutines permeten dividir el codi en parts més petites i manejables, facilitant la seva lectura i manteniment.

Procediments

Un procediment és similar a una subrutina, però sovint es refereix a una funció que realitza una tasca específica i pot retornar un valor. En CL, els procediments es defineixen i es criden de manera similar a les subrutines.

Definició de Subrutines

Sintaxi Bàsica

Per definir una subrutina en CL, utilitzem la comanda SUBR. Aquí teniu un exemple bàsic:

PGM
    DCL VAR(&RESULT) TYPE(*CHAR) LEN(10)
    
    CALLSUBR SUBR(MYSUBR)
    
    ENDPGM

SUBR MYSUBR
    CHGVAR VAR(&RESULT) VALUE('Hello')
    ENDSUBR

Explicació del Codi

  1. PGM: Inici del programa.
  2. DCL VAR(&RESULT) TYPE(*CHAR) LEN(10): Declaració d'una variable &RESULT de tipus caràcter amb una longitud de 10.
  3. CALLSUBR SUBR(MYSUBR): Crida a la subrutina MYSUBR.
  4. ENDPGM: Final del programa.
  5. SUBR MYSUBR: Definició de la subrutina MYSUBR.
  6. CHGVAR VAR(&RESULT) VALUE('Hello'): Canvia el valor de la variable &RESULT a 'Hello'.
  7. ENDSUBR: Final de la subrutina.

Definició de Procediments

Sintaxi Bàsica

Els procediments en CL es defineixen amb la comanda PROC. Aquí teniu un exemple bàsic:

PGM
    DCL VAR(&RESULT) TYPE(*CHAR) LEN(10)
    
    CALLPROC PROC(MYPROC) PARM(&RESULT)
    
    ENDPGM

PROC MYPROC
    DCL VAR(&RESULT) TYPE(*CHAR) LEN(10)
    CHGVAR VAR(&RESULT) VALUE('World')
    ENDPROC

Explicació del Codi

  1. PGM: Inici del programa.
  2. DCL VAR(&RESULT) TYPE(*CHAR) LEN(10): Declaració d'una variable &RESULT de tipus caràcter amb una longitud de 10.
  3. CALLPROC PROC(MYPROC) PARM(&RESULT): Crida al procediment MYPROC passant la variable &RESULT com a paràmetre.
  4. ENDPGM: Final del programa.
  5. PROC MYPROC: Definició del procediment MYPROC.
  6. DCL VAR(&RESULT) TYPE(*CHAR) LEN(10): Declaració de la variable &RESULT dins del procediment.
  7. CHGVAR VAR(&RESULT) VALUE('World'): Canvia el valor de la variable &RESULT a 'World'.
  8. ENDPROC: Final del procediment.

Exercicis Pràctics

Exercici 1: Crear una Subrutina

Crea una subrutina que multipliqui dos nombres i emmagatzemi el resultat en una variable.

Solució

PGM
    DCL VAR(&NUM1) TYPE(*DEC) LEN(5 0) VALUE(5)
    DCL VAR(&NUM2) TYPE(*DEC) LEN(5 0) VALUE(10)
    DCL VAR(&RESULT) TYPE(*DEC) LEN(10 0)
    
    CALLSUBR SUBR(MULTIPLY)
    
    ENDPGM

SUBR MULTIPLY
    CHGVAR VAR(&RESULT) VALUE(&NUM1 * &NUM2)
    ENDSUBR

Exercici 2: Crear un Procediment

Crea un procediment que rebi un nom com a paràmetre i retorni una salutació personalitzada.

Solució

PGM
    DCL VAR(&NAME) TYPE(*CHAR) LEN(10) VALUE('John')
    DCL VAR(&GREETING) TYPE(*CHAR) LEN(20)
    
    CALLPROC PROC(GREET) PARM(&NAME &GREETING)
    
    ENDPGM

PROC GREET
    DCL VAR(&NAME) TYPE(*CHAR) LEN(10)
    DCL VAR(&GREETING) TYPE(*CHAR) LEN(20)
    CHGVAR VAR(&GREETING) VALUE('Hello, ' *CAT &NAME)
    ENDSUBR

Errors Comuns i Consells

  1. No Declarar Variables: Assegura't de declarar totes les variables abans d'utilitzar-les.
  2. Oblidar ENDSUBR o ENDPROC: Sempre tanca les subrutines i els procediments amb ENDSUBR o ENDPROC.
  3. Passar Paràmetres Correctament: Quan cridis procediments, assegura't de passar els paràmetres correctament.

Resum

En aquesta secció, hem après a:

  • Definir i utilitzar subrutines i procediments en CL.
  • Modularitzar el codi per millorar la seva llegibilitat i mantenibilitat.
  • Passar paràmetres a procediments per realitzar tasques específiques.

Amb aquests coneixements, estàs preparat per escriure codi CL més organitzat i eficient. En el següent mòdul, explorarem les comandes avançades de CL per aprofundir encara més en les capacitats d'aquest llenguatge.

© Copyright 2024. Tots els drets reservats