Tivoli Service Desk 6.0 Developer's Toolkit - Referência de Linguagem do Script

Manipulação da Lista e Matriz

Retornar a Página Principal


ArrayLength

Descrição

Retorna o comprimento alocado atualmente de uma matriz.

Sintaxe

FUNCTION ArrayLength (VAL arr: ARRAY OF ANY): INTEGER;

Notas do Argumento

Nome do Argumento Descrição
arr A matriz cujo comprimento deve ser determinado

Notas

As matrizes do TSD Script são redimensionáveis no tempo de execução. A instrução SetArrayLength altera o tamanho de qualquer matriz. ArrayLength pode ser utilizado a qualquer momento, para determinar quantos elementos uma matriz pode manter atualmente.

Exemplo

VARIABLES
        i: INTEGER;
 a[10]: ARRAY OF INTEGER;
ACTIONS
 ...
 SetArrayLength(a,100);
 ...
 i:=ArrayLength(a);

Consulte também

Set ArrayLength


ListDelete

Descrição

Exclui um item a partir de uma lista.

Sintaxe

PROCEDURE ListDelete (REF lst: LIST OF ANY [,
                      VAL idx: integer | $FIRST |
                      $CURRENT | $LAST ] );

Notas do Argumento

Nome do Argumento Descrição
lst Um parâmetro de lista a partir do qual um elemento deve ser excluído.
idx O especificador de elemento deve ser um índice de número inteiro ou um dos símbolos especiais: $FIRST, $CURRENT de $LAST. Se o especificador de elemento for omitido a partir da chamada, ele será padronizado como $CURRENT.

Notas

A função ListDelete exclui o elemento no índice determinado a partir da lista especificada. O índice pode ser especificado numericamente ou através de qualquer um dos símbolos especiais $FIRST, $LAST ou $CURRENT.

Se o índice for omitido totalmente, ele será padronizado como $CURRENT. Se o elemento excluído foi o elemento atual, o elemento a seguir se tornará atual. Se não existir nenhum elemento seguinte, o elemento anterior se tornará atual.

Exemplo

ListSetPos(requestList, $FIRST);
 REPEAT
 IF requestList[$CURRENT].cost > costLimit THEN
 ListDelete(requestList, $CURRENT);
              END;
UNTIL ListNext(requestList) < 0;

Códigos de Retorno

Código de Retorno Descrição
1 Conclusão bem-sucedida
-1 O primeiro argumento não pode ser avaliado
-2 Expressão de índice desconhecida
-3 Memória insuficiente
-4 Índice sem limites

Consulte também


ListFind

Descrição

Procura um valor em uma lista.

Sintaxe

FUNCTION ListFind (REF lst: LIST OF T, VAL item: T): BOOLEAN;

Notas do Argumento

Nome do Argumento Descrição
lst Uma variável da lista a ser pesquisada
item Uma expressão do mesmo tipo que o tipo de elemento da lista

Notas

ListFind varre a lista indicada, do começo, à procura de um valor que corresponde à expressão indicada. Se um elemento tiver o mesmo valor que expressão, ListFind retornará TRUE e criará o elemento correspondente atual. Se nenhuma correspondência for encontrada, ListFind retornará FALSE e deixará o elemento atual da lista inalterado.

Nota: ListFind é relativo sem distinção de maiúsculas/minúsculas para listas de cadeias.

ListFind trabalha com listas de registros bem como com listas de tipos simples. Ele executa uma comparação campo a campo, para determinar a igualdade de registro.

Exemplo

VARIABLES
 employeeList: LIST OF STRING;
ACTIONS
 IF ListFind(employeeList,'SMITH') THEN
 PrintEmployee(employeeList[$Current]);
 ...

Códigos de Retorno

Código de Retorno Descrição
TRUE Elemento encontrado
FALSE Elemento não encontrado
$UNKNOWN Se o argumento de LIST é inválido

Consulte também

ListSort


ListInsert

Descrição

Insere um ou mais novos elementos em uma lista.

Sintaxe

FUNCTION ListInsert (REF lst: LIST OF T,
                     VAL item: [LIST OF] T,
                     $BEFORE|$AFTER] ): INTEGER;

Notas do Argumento

Nome do Argumento Descrição
lst Uma variável da lista na qual um novo elemento deve ser inserido.
item Cada expressão do mesmo tipo ou a lista do mesmo tipo.
$BEFORE, $AFTER Um argumento opcional que pode ser utilizado para indicar onde o novo valor deve ser inserido na lista:
  • $BEFORE será utilizado se for necessário que o novo elemento seja inserido, antes ao elemento atual.
  • $AFTER será utilizado se for necessário que o novo elemento seja inserido após o elemento atual.

Se omitido, $AFTER será assumido.

Notas

A função ListInsert pode ser utilizada para incluir um novo elemento em uma lista ou para inserir uma lista em outra. A inserção é sempre relativa ao elemento atual. Por padrão, o novo elemento ou a lista é inserida após o elemento atual.

Se um elemento individual for inserido, ele se tornará o novo elemento atual. ListInsert retornará o número de elementos inseridos.

Exemplo

VARIABLES
 name1:={'Tom','Dick','Harry'}: LIST OF STRING;
ACTION
 (* list pointer starts off at 1 - 'Tom' *)
 ListInsert(name1,'Mary',$Before);
 (* now name1 = 'Mary', 'Tom', 'Dick', 'Harry' *
 name2:={'Charlotte','Herman'}: LIST OF STRING;
 ListInsert(name1,name2,$After);
 (* now name1 = 'Mary','Charlotte','Herman','Tom','Dick','Harry' *)

Códigos de Retorno

Código de Retorno Descrição
Maior que ou
igual a zero
O número de elementos inseridos na lista pode conter qualquer valor maior que ou igual a zero. É possível inserir uma lista sem verificação para ver se está vazia, e se estiver, o código de retorno será zero.
-1 Não é possível avaliar o argumento da lista. Este código de erro indica que não existe nenhuma lista atual associada ao argumento determinado. Isso poderá ocorrer se o argumento mencionado a um campo de registro digitado pela lista, que era o próprio membro de uma lista de registros, e o índice determinado para esta lista externa estava fora de limites.
-2 O segundo argumento era desconhecido.

Consulte também


ListLength

Descrição

Retorna o número de elementos em uma lista.

Sintaxe

FUNCTION ListLength (VAL lst: LIST OF ANY): INTEGER;

Cuidado: Se a expressão da lista não puder ser avaliada (por exemplo, se um erro ocorrer) ListLength retornará $Unknown.

Notas do Argumento

Nome do Argumento Descrição
lst Uma variável da lista cujo comprimento precisa ser determinado

Notas

ListLength retorna um número inteiro que indica quantos elementos estão atualmente armazenados na lista.

Exemplo

VARIABLES
 a: ARRAY OF STRING;
 lis: LIST OF STRING;
 f: FILE;
ACTIONS
 (* read a text file into a list of strings *)
 FOpen(f,'DATA.TXT',$Read);
 FReadText(f,lis);
 FClose(f);
 (* make the array the same length as the list *)
 SetArrayLength(a,ListLength(lis));
 (* copy the strings from the list into the array *)
FOR lis DO
 a[ListGetPos(lis)]:=lis[$Current];
              END;
 (* get rid of the list *)
SetUnknown(lis);

Códigos de Retorno

Código de Retorno Descrição
Maior que ou
igual a zero
Bem sucedido. Retorna o número de elementos na lista.
$Unknown Não existe nenhum código de retorno negativo. Se ocorrer um erro durante a avaliação do argumento da lista, ListLength retornará $Unknown.

Consulte também


ListNext

Descrição

Move o indicador atual para o próximo elemento na lista.

Sintaxe

FUNCTION ListNext (REF lst: LIST OF ANY): INTEGER;

Notas do Argumento

Nome do Argumento Descrição
lst Uma variável da lista cujo elemento atual deve ser avançado.

Notas

ListNext pode ser utilizado para avançar o indicador de elemento atual dentro de uma lista. Se existir um próximo elemento, ListNext moverá o indicador de elemento atual para lá e retornará seu índice. Se não mover, ListNext deixará o indicador de elemento atual inalterado e retornará um número negativo dois (-2).

Exemplo

VARIABLES
 lis: LIST OF STRING;
ACTIONS
 lis:={'Tom','Dick','Harry'}: LIST OF STRING;
 (* list pointer starts off at 1 - 'Tom' *)
 ListNext(lis);
 (* now current pointer is at 2 - 'Dick' *)
 ListNext(lis);
 (* now current pointer is at 3 - 'Harry' *)
 ListNext(lis);
 (* still at 'Harry' but ListNext returned a -2 *)

Códigos de Retorno

Código de Retorno Descrição
Maior que zero Índice do indicador de elemento atual após ter sido movido pela instrução ListNext.
-1 O primeiro argumento não é existente.
-2 O elemento atual é o último elemento.

Consulte também


ListPop

Descrição

Remove o primeiro elemento de uma lista e o retorna como um resultado.

Sintaxe

FUNCTION ListPop (REF lst: LIST OF T): T;

Notas do Argumento

Nome do Argumento Descrição
list Uma variável da lista s ser tratada como uma pilha.

Notas

ListPop e ListPush podem ser utilizadas para criar uma estrutura de dados de pilha. ListPop remove o primeiro elemento da lista e o retorna como seu resultado. Se a lista estiver vazia, ListPop retornará $Unknown. O indicador atual da lista não é alterado, a menos que seja originalmente indicado para o primeiro elemento. Neste caso, ele é movido para indicar o primeiro elemento novo.

Exemplo

VARIABLES
 myStack: LIST OF STRING;
   name :STRING;
ACTIONS
 ListPush(myStack, 'Harry');
 -- myStack is { 'Harry' }
 ListPush(myStack, 'Dick');
 -- myStack is { 'Dick', 'Harry' }
 ListPush(myStack, 'Tom');
 -- myStack is { 'Tom', 'Dick', 'Harry' }
 name := ListPop(myStack);
 -- myStack is { 'Dick', 'Harry' } and name is 'Tom'
 name := ListPop(myStack);
 -- myStack is { 'Harry' } and name is 'Dick'
 name := ListPop(myStack);
 -- myStack is UNKNOWN and name is 'Harry'
 name := ListPop(myStack);
 -- myStack is UNKNOWN and name is UNKNOWN

Códigos de Retorno

ListPop remove o primeiro elemento da lista determinada e o retorna. Se a lista estiver vazia, ListPop retornará $Unknown.

Consulte também


ListPos

Descrição

Retorna o índice do elemento atual de uma lista.

Sintaxe

FUNCTION ListPos (REF lst: LIST OF ANY): INTEGER;

Notas do Argumento

Nome do Argumento Descrição
lst Uma variável da lista cujo índice do elemento deve ser determinado

Notas

ListPos retorna o índice do elemento atual de uma lista. Se a lista estiver vazia, ListPos retornará 0.

Exemplo

VARIABLES
 lis{ 'Tom', 'Dick', 'Harry' }: LIST OF STRING;
        i: INTEGER;
ACTIONS
 -- list pointer starts off at 1 - 'Tom'
 i:=ListPos(lis);
 -- i = 1
 ListSetPos(lis,3);
 i:=ListPos(lis);
 -- i = 3
 ListPrev(lis);
 -- i = 2

Códigos de Retorno

Código de Retorno Descrição
Maior que zero Posição da lista atual
0 A lista está vazia
$UNKNOWN Se o argumento de LIST é inválido

Consulte também

ListSetPos


ListPrev

Descrição

Move o indicador da lista atual para o elemento anterior.

Sintaxe

FUNCTION ListPrev (REF lst: LIST OF ANY): INTEGER;

Notas do Argumento

Nome do Argumento Descrição
lst Uma variável da lista cujo indicador atual deve ser retrocedido.

Notas

ListPrev é utilizado para retroceder através de uma lista. Se o índice atual for 2 ou maior, ListPrev moverá o indicador atual para o elemento anterior e retornará o índice desse elemento. Se o indicador atual estiver no início da lista, ListPrev o deixará inalterado e retornará um valor -2.

Exemplo

VARIABLES
 lis: LIST OF STRING;
ACTIONS
 (* list pointer starts off at 1 - 'Tom' *)
 ListSetPos(lis,3);
 (* now current pointer is at 3 - 'Harry' *)
 ListPrev(lis);
 (* now current pointer is at 2 - 'Dick' *)
 ListPrev(lis);
 (* now current pointer is at 1 - 'Tom' *)
 ListPrev(lis);
 (* still at 'Tom' but ListPrev returned a -2 *)

Códigos de Retorno

Código de Retorno Descrição
any O índice do elemento atual é retornado na conclusão bem-sucedida.
-1 Falha ao avaliar o primeiro argumento
-2 Não existe elemento anterior

Consulte também


ListPush

Descrição

Insere um novo elemento no início de uma lista.

Sintaxe

FUNCTION ListPush (REF lst: LIST OF T, VAL item: T): INTEGER;

Notas do Argumento

Nome do Argumento Descrição
lst Uma variável da lista tratada como uma pilha
item Uma expressão do mesmo tipo que a lista

Notas

A função ListPush é utilizada em conjunto com a função ListPop, para implementar uma estrutura de dados de pilha. ListPush insere um novo item no início de uma lista.
O elemento atual da lista não é executado pela função ListPush, a menos que a lista esteja vazia. Neste caso, o novo elemento torna-se atual.

Exemplo

VARIABLES
 myStack: LIST OF STRING;
   name :STRING;
ACTIONS
 ListPush(myStack, 'Harry');
 -- myStack is { 'Harry' }
 ListPush(myStack, 'Dick');
 -- myStack is { 'Dick', 'Harry' }
 ListPush(myStack, 'Tom');
 -- myStack is { 'Tom', 'Dick', 'Harry' }
 name := ListPop(myStack);
 -- myStack is { 'Dick', 'Harry' } and name is 'Tom
 name := ListPop(myStack);
 -- myStack is { 'Harry' } and name is 'Dick'
 name := ListPop(myStack)
 -- myStack is UNKNOWN and name is 'Harry'
 name := ListPop(myStack);
 -- myStack is UNKNOWN and name is UNKNOWN

Códigos de Retorno

Código de Retorno Descrição
Maior que zero O novo comprimento da lista será retornado, se a função for bem-sucedida
-1 Falha ao avaliar o primeiro elemento com êxito

Consulte também


ListSetPos

Descrição

Torna o elemento especificado o elemento atual.

Sintaxe

FUNCTION ListSetPos (REF lst: LIST OF ANY, VAL index:
INTEGER | $FIRST | $LAST): INTEGER;

Notas do Argumento

Nome do Argumento Descrição
lst Uma variável da lista cujo indicador atual deve ser movido
index Uma expressão numérica ou um dos símbolos $FIRST ou $LAST

Notas

ListSetPos pode ser utilizada para alterar a posição do indicador atual de uma lista. Ela obtém uma variável da lista e um índice de número inteiro entre 1 e o comprimento da lista atual ou $FIRST (mesmo que 1) ou $LAST (mesmo que ListLength (lista)). Em qualquer caso, o índice da posição atual é retornado.

Exemplo

VARIABLES
 lis{ 'Tom', 'Dick', 'Harry' }: LIST OF STRING;
        i: INTEGER;
ACTIONS
 -- list pointer starts off at 1 - 'Tom'
 i:=ListPos(lis);
 -- i = 1
 ListSetPos(lis,3);
 i:=ListPos(lis);
 -- i = 3
 ListPrev(lis);
 -- i = 2

Códigos de Retorno

Código de Retorno Descrição
index O índice da posição atual é retornado quando a operação é bem-sucedida
-1 Avaliação do primeiro argumento falhou
-2 O índice especificado é desconhecido
-3 Memória insuficiente

Consulte também

ListPos


ListSort

Descrição

Ordena uma lista.

Sintaxe

FUNCTION ListSort (REF lst: LIST OF ANY): INTEGER;

Notas do Argumento

Nome do Argumento Descrição
lst Uma variável da lista a ser ordenada

Notas

ListSort ordena a lista indicada em ordem crescente. Se uma lista de registros for transmitida, o primeiro campo de registro será utilizado como a chave de classificação principal, o segundo campo será a chave de classificação secundária e assim por diante.

Exemplo

 VARIABLES
 lis{ 'Tom', 'Dick', 'Harry' }: LIST OF STRING;
 ACTIONS
 ListSort(lis);
 -- now lis = 'Dick', 'Harry', 'Tom'

Códigos de Retorno

Código de Retorno Descrição
1 Conclusão bem-sucedida
-1 A avaliação do primeiro argumento falho

Consulte também

ListFind


SetArrayLength

Descrição

Altera o número de elementos que uma matriz pode manter.

Sintaxe

FUNCTION SetArrayLength (REF arr: ARRAY OF ANY,
                         VAL len: INTEGER): INTEGER;

Notas do Argumento

Nome do Argumento Descrição
arr Uma variável de matriz cujo comprimento deve ser alterado
len O número de elementos que a matriz deve manter

Notas

A função SetArrayLength altera o comprimento de uma matriz Script. Se o comprimento aumentar, os valores de todos os elementos existentes permanecerão com novos elementos inicializados para o valor padrão de seu tipo (geralmente $Unknown). Se o comprimento diminuir, os elementos com índices de len+1 e maiores serão descartados.

Exemplo

VARIABLES
 a: ARRAY OF STRING;
 l: LIST OF STRING;
 f: FILE;
ACTIONS
 (* read a text file into a list of strings *)
 FOpen(f,'DATA.TXT',$Read);
 FReadText(f,l);
 FClose(f);
 (* make the array the same length as the list *)
 SetArrayLength(a,ListLength(l));
 (* copy the strings from the list into the array *)
 FOR l DO
 a[ListGetPos(l)]:=l[$Current];
              END;
 (* get rid of the list *)
 SetUnknown(l);

Códigos de Retorno

Código de Retorno Descrição
Maior ou igual a zero Novo comprimento da matriz. É possível definir o comprimento da matriz como zero, no qual o valor de retorno é zero.
-1 Matriz desconhecida.
-2 Argumento de tamanho desconhecido.
-3 Memória insuficiente.

Consulte também

ArrayLength


Tivoli Service Desk 6.0 Developer's Toolkit - Referência de Linguagem do Script

Retornar à Página Principal

Copyright