
Declarar os parâmetros que serão recebidos por programas e subrotinas (proc ou func).
PARAMETERS <nome>[(tipo)][,<nome>[(tipo)]]ou em proc/func
PARAMETERS <nome>[][(tipo)][,<nome>[][(tipo)]]
<nome> representa o nome do parâmetro formal (parâmetro a ser recebido).
<tipo> representa o tipo da variável que constitui o parâmetro:
[ ] declara que o parâmetro é um vetor.
Em OPUS, parâmetros são passados por referência. Isto quer dizer que é passado o endereço de memória do parâmetro e não seu valor. Com esta característica a linguagem permite alterar os valores dos parâmetros passados, alterando os valores recebidos pelo comando PARAMETERS.
Em programas, procedimentos ou funções que necessitem receber parâmetros.
Para cada parâmetro deve ser declarado o seu tipo. Se isto não ocorrer, a OPUS assume que o parâmetro é do tipo cadeia.
Funções e procedimentos podem receber vetores como parâmetros, bastando indicar com os símbolos "[]" após o nome do vetor.
O exemplo a seguir mostra-nos uma rotina que efetua a alteração do valor da variável passada como parâmetro.
numero = 3 && Atribuição da variável numero.
cadeia = "teste" && Atribuição da variável cadeia.
DO proce WITH numero,cadeia && Invoca a PROCEDURE proce
? numero, " " ,cadeia
QUIT && Fim do programa
PROCEDURE proce && Declaração da PROCEDURE
PARAMETERS num(n),cad(c) && Declaração dos parâmetros recebidos
? num, " " ,cad, " dentro da PROCEDURE"
++num
cad = "alterei o valor dos parâmetros"
RETURN
O exemplo a seguir mostra-nos como não alterar os valores passados.
Para isso, basta criar variáveis locais que recebam os valores passados.
numero = 3
cadeia = "teste"
DO proce WITH numero,cadeia
numero, " " ,cadeia
QUIT
PROCEDURE proce
PARAMETERS num(n),cad(c)
* Declara variáveis locais para trabalhar com os
* parâmetros
num2 = num
cad2 = cad
? num, " " ,cad, " dentro da PROCEDURE"
++num2
cad2 = "ano alterei o valor dos parâmetros"
RETURN
$LIBRARY, FUNCTION, PRIVATE, PROCEDURE, PROGRAM, PUBLIC.
