En aquest tema, aprendrem sobre les funcions i procediments en RPG. Aquestes estructures són fonamentals per a l'organització i reutilització del codi, així com per a la creació de programes més modulars i mantenibles.

Què són les Funcions i Procediments?

Funcions

Una funció és un bloc de codi que realitza una tasca específica i retorna un valor. Les funcions són útils per encapsular codi que es repeteix i per dividir un programa en parts més manejables.

Procediments

Un procediment és similar a una funció, però no retorna cap valor. Els procediments s'utilitzen per executar una sèrie d'instruccions que no necessiten retornar un resultat.

Definició de Funcions i Procediments en RPG

Sintaxi Bàsica

Funcions

Dcl-Proc MyFunction;
  Dcl-Pi MyFunction Int(10);
    param1 Int(10);
    param2 Int(10);
  End-Pi;

  // Cos de la funció
  Return param1 + param2;

End-Proc;

Procediments

Dcl-Proc MyProcedure;
  Dcl-Pi *N;
    param1 Int(10);
    param2 Int(10);
  End-Pi;

  // Cos del procediment
  Dsply 'Executant el procediment';

End-Proc;

Explicació del Codi

  • Dcl-Proc: Declara l'inici d'una funció o procediment.
  • Dcl-Pi: Declara la interfície del procediment (paràmetres d'entrada i tipus de retorn).
  • Return: Retorna un valor des d'una funció.
  • End-Proc: Marca el final de la funció o procediment.

Exemple Pràctic

Funció per Calcular la Suma de Dos Nombres

Dcl-Proc Sum;
  Dcl-Pi Sum Int(10);
    num1 Int(10);
    num2 Int(10);
  End-Pi;

  Return num1 + num2;

End-Proc;

Procediment per Mostrar un Missatge

Dcl-Proc ShowMessage;
  Dcl-Pi *N;
    message Char(50);
  End-Pi;

  Dsply message;

End-Proc;

Utilització de Funcions i Procediments en un Programa

Dcl-Proc Main;
  Dcl-Pi *N;
  End-Pi;

  Dcl-S result Int(10);
  Dcl-S msg Char(50);

  result = Sum(5, 10);
  msg = 'El resultat és: ' + %Char(result);

  ShowMessage(msg);

End-Proc;

Dcl-Proc Sum;
  Dcl-Pi Sum Int(10);
    num1 Int(10);
    num2 Int(10);
  End-Pi;

  Return num1 + num2;

End-Proc;

Dcl-Proc ShowMessage;
  Dcl-Pi *N;
    message Char(50);
  End-Pi;

  Dsply message;

End-Proc;

Exercicis Pràctics

Exercici 1: Crear una Funció per Calcular el Factorial d'un Nombre

  1. Defineix una funció Factorial que prengui un nombre enter com a paràmetre i retorni el factorial d'aquest nombre.
  2. Utilitza la funció en un programa principal per calcular el factorial de 5 i mostrar el resultat.

Solució

Dcl-Proc Main;
  Dcl-Pi *N;
  End-Pi;

  Dcl-S result Int(10);
  Dcl-S msg Char(50);

  result = Factorial(5);
  msg = 'El factorial de 5 és: ' + %Char(result);

  ShowMessage(msg);

End-Proc;

Dcl-Proc Factorial;
  Dcl-Pi Factorial Int(10);
    num Int(10);
  End-Pi;

  Dcl-S i Int(10);
  Dcl-S fact Int(10) Inz(1);

  For i = 1 to num;
    fact *= i;
  EndFor;

  Return fact;

End-Proc;

Dcl-Proc ShowMessage;
  Dcl-Pi *N;
    message Char(50);
  End-Pi;

  Dsply message;

End-Proc;

Exercici 2: Crear un Procediment per Mostrar una Taula de Multiplicar

  1. Defineix un procediment MultiplicationTable que prengui un nombre enter com a paràmetre i mostri la seva taula de multiplicar fins a 10.
  2. Utilitza el procediment en un programa principal per mostrar la taula de multiplicar del 7.

Solució

Dcl-Proc Main;
  Dcl-Pi *N;
  End-Pi;

  MultiplicationTable(7);

End-Proc;

Dcl-Proc MultiplicationTable;
  Dcl-Pi *N;
    num Int(10);
  End-Pi;

  Dcl-S i Int(10);
  Dcl-S result Int(10);
  Dcl-S msg Char(50);

  For i = 1 to 10;
    result = num * i;
    msg = %Char(num) + ' x ' + %Char(i) + ' = ' + %Char(result);
    ShowMessage(msg);
  EndFor;

End-Proc;

Dcl-Proc ShowMessage;
  Dcl-Pi *N;
    message Char(50);
  End-Pi;

  Dsply message;

End-Proc;

Errors Comuns i Consells

Errors Comuns

  • No declarar correctament els paràmetres d'entrada i sortida.
  • Oblidar-se de tancar les declaracions amb End-Pi i End-Proc.
  • No inicialitzar les variables dins de les funcions o procediments.

Consells

  • Utilitza noms descriptius per a les funcions i procediments per millorar la llegibilitat del codi.
  • Divideix el codi en funcions i procediments més petits per facilitar el manteniment i la depuració.
  • Documenta les funcions i procediments amb comentaris per explicar la seva funcionalitat.

Conclusió

En aquesta secció, hem après a definir i utilitzar funcions i procediments en RPG. Aquestes estructures ens permeten escriure codi més modular, reutilitzable i fàcil de mantenir. Hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. En el següent mòdul, explorarem la gestió d'arxius en RPG.

© Copyright 2024. Tots els drets reservats