
Serve para declarar vetores de variáveis. Na linguagem Opus vetores são unidimensionais.
DECL[ARE] [[LONG] [DYNAMIC] [PRIVATE | PUBLIC | STATIC]] <vetor>[<exp.N>] = <exp>
|
LONG |
indica que a quantidade de elementos do vetor pode ser maior que 65.535 |
|
DYNAMIC |
indica que as cadeias são dinâmicas no vetor |
|
PUBLIC |
determina que o vetor será público, isto é, terá escopo global. |
|
STATIC |
determina que o vetor será estático. |
|
PRIVATE |
determina que o vetor será privado. |
|
<vetor> |
determina o nome do vetor. |
|
<exp.N> |
determina a quantidade de elementos do vetor. |
|
<exp> |
representa uma expressão que definirá o tipo, o tamanho e o valor inicial de todos os elementos. |
O comando DECL permite a utilização de vetores em um programa. Vetores são variáveis indexadas cujos índices variam de 1 até <exp.N>, inclusive. Não se pode declarar mais de um vetor em um único comando DECLARE.
Para vetores públicos, em subprogramas (procedimentos e funções), no lugar de <exp.N> pode ser declarado um "*" (asterisco).
Para vetores dinãmicos, poniers ou estruturas <exp> não é especificado.
O exemplo a seguir mostra a declaração de dois vetores locais do tipo cadeia.
INPUT TO varnum
DECL vetcad1[10]=SPACE(10)
DECL vetcad2[varnum]=SPACE(50)
O exemplo a seguir mostra a declaração de vetores públicos e vetores locais de mais de um tipo.
@ 1,2 SAY " forneça o nome " GET nome PIC rep("x",40)
READ
DECLARE PUBLIC vpcad[10] = SPACE(10)
DECLARE PUBLIC vpnum[10] = 10
DECLARE PUBLIC vplog[25]=.T.
DECLARE vl_num[6]=0
DECLARE vl_cad[90] = SPACE(LEN(nome))
O exemplo a seguir mostra como passar vetores LONG como parâmetros e como recebé-los dentro de uma sub-rotina.
prog
declare long v1[50 ]= 0
do proc_1 with v1
...
proc proc_1
parameters long v1[](n)
...
outro exemplo mais completo:
decl a1[5]=space(10)
decl private a2[5]=space(10)
decl long static a3[5]=space(10)
decl long public a4[5]=space(10)
decl long pointer a5[5]
decl long static pointer a6[5]
declare dynamic d1[5]
declare dynamic private d2[5]
declare dynamic public d3[5]
declare dynamic static d4[5]
struct {a(Y),b(N)} s
decl s1[]{s}
decl static s3[]{s}
decl public s4[]{s}
PRIVATE, PUBLIC, PARAMETERS, SET DECIMALS, STATIC, STORE.
