Usando contador de grupo periódico

De vez em quando precisamos contar quantos elementos temos em um vetor no banco (Adabas) através de um programa Natural.
Muitas vezes deparei com um código fazendo um loop de 1 a 199 e verificando um a um para ver se não está em branco ou zerado.
Ok! Às vezes é necessário, pois não se sabe como o programa foi inicialmente concebido e como pode se comportar (deixar posições sem uso, por exemplo). De qualquer forma, uma maneira de verificar a quantidade de elementos no vetor (múltiplo ou periódico) é usar o count:

IF C*GR-HISTORICO EQ 0...

Isso faz com que eu veja se está vazio – nunca foi populado -, ou já tem algo – quantos tem.
Hmmm deu pau 0047 (erro na definição da variável)…

Na definição do seu programa deve estar assim:
1 F513 VIEW OF AA-SIMRAV-ATIVACAO
...
2 C*GR-HISTORICO
2 GR-HISTORICO (1:191)
3 CO-HISTORICO
3 DA-HISTORICO
...

Deve-se repetir o campo, uma vez com o “C*” e a outra a definição propriamente dita. Aí funciona!

3 respostas para Usando contador de grupo periódico

  1. Wilson disse:

    eu sei que podemos usar algo como:
    if 10 eq vetor(*)
    perform faca-algo
    end-if

    queria saber como saber em que posicao esta um valor no vetor sem ter que fazer um loop em todos os elementos, voces sabem se existe algo assim no natural?

    obrigado

  2. Daniel disse:

    Boa noite Wilson,

    Dê uma olhada no comando EXAMINE. Ele é muito poderoso para trabalhos com vetores e strings – varre, conta, substitui etc.

    Talvez ajude este:
    EXAMINE #TEXTO FOR #CARACTERE GIVING NUMBER #TOTAL
    ou
    EXAMINE #VETOR(*) FOR #ARR-VALORES(*) GIVING NUMBER #TOTAL

    Aí se #TOTAL maior que 0, faça… você pode obter a posição da primeira ocorrência usando POSITION.

    Olhe a documentação oficial do EXAMINE no site: http://documentation.softwareag.com/natural/nat638vms/sm/examine.htm

    Espero ter ajudado! [pretendo postar algo sobre o EXAMINE]

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.