Tivoli Service Desk 6.0 Developer's Toolkit - Referência de Linguagem do Script
Retornar a Página Principal
Retorna o comprimento alocado atualmente de uma matriz.
FUNCTION ArrayLength (VAL arr: ARRAY OF ANY): INTEGER;
Nome do Argumento | Descrição |
arr | A matriz cujo comprimento deve ser determinado |
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.
VARIABLES i: INTEGER; a[10]: ARRAY OF INTEGER;
ACTIONS ... SetArrayLength(a,100); ... i:=ArrayLength(a);
Set ArrayLength
Exclui um item a partir de uma lista.
PROCEDURE ListDelete (REF lst: LIST OF ANY [, VAL idx: integer | $FIRST | $CURRENT | $LAST ] );
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. |
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.
ListSetPos(requestList, $FIRST); REPEAT IF requestList[$CURRENT].cost > costLimit THEN ListDelete(requestList, $CURRENT); END; UNTIL ListNext(requestList) < 0;
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 |
Procura um valor em uma lista.
FUNCTION ListFind (REF lst: LIST OF T, VAL item: T): BOOLEAN;
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 |
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.
VARIABLES employeeList: LIST OF STRING;
ACTIONS IF ListFind(employeeList,'SMITH') THEN PrintEmployee(employeeList[$Current]); ...
Código de Retorno | Descrição |
TRUE | Elemento encontrado |
FALSE | Elemento não encontrado |
$UNKNOWN | Se o argumento de LIST é inválido |
ListSort
Insere um ou mais novos elementos em uma lista.
FUNCTION ListInsert (REF lst: LIST OF T, VAL item: [LIST OF] T, $BEFORE|$AFTER] ): INTEGER;
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:
Se omitido, $AFTER será assumido. |
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.
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ó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. |
Retorna o número de elementos em uma lista.
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.
Nome do Argumento | Descrição |
lst | Uma variável da lista cujo comprimento precisa ser determinado |
ListLength retorna um número inteiro que indica quantos elementos estão atualmente armazenados na lista.
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ó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. |
Move o indicador atual para o próximo elemento na lista.
FUNCTION ListNext (REF lst: LIST OF ANY): INTEGER;
Nome do Argumento | Descrição |
lst | Uma variável da lista cujo elemento atual deve ser avançado. |
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).
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ó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. |
Remove o primeiro elemento de uma lista e o retorna como um resultado.
FUNCTION ListPop (REF lst: LIST OF T): T;
Nome do Argumento | Descrição |
list | Uma variável da lista s ser tratada como uma pilha. |
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.
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
ListPop remove o primeiro elemento da lista determinada e o retorna. Se a lista estiver vazia, ListPop retornará $Unknown.
Retorna o índice do elemento atual de uma lista.
FUNCTION ListPos (REF lst: LIST OF ANY): INTEGER;
Nome do Argumento | Descrição |
lst | Uma variável da lista cujo índice do elemento deve ser determinado |
ListPos retorna o índice do elemento atual de uma lista. Se a lista estiver vazia, ListPos retornará 0.
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ó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 |
ListSetPos
Move o indicador da lista atual para o elemento anterior.
FUNCTION ListPrev (REF lst: LIST OF ANY): INTEGER;
Nome do Argumento | Descrição |
lst | Uma variável da lista cujo indicador atual deve ser retrocedido. |
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.
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ó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 |
Insere um novo elemento no início de uma lista.
FUNCTION ListPush (REF lst: LIST OF T, VAL item: T): INTEGER;
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 |
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.
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ó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 |
Torna o elemento especificado o elemento atual.
FUNCTION ListSetPos (REF lst: LIST OF ANY, VAL index:
INTEGER | $FIRST | $LAST): INTEGER;
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 |
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.
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ó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 |
ListPos
Ordena uma lista.
FUNCTION ListSort (REF lst: LIST OF ANY): INTEGER;
Nome do Argumento | Descrição |
lst | Uma variável da lista a ser ordenada |
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.
VARIABLES lis{ 'Tom', 'Dick', 'Harry' }: LIST OF STRING;
ACTIONS ListSort(lis); -- now lis = 'Dick', 'Harry', 'Tom'
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida |
-1 | A avaliação do primeiro argumento falho |
ListFind
Altera o número de elementos que uma matriz pode manter.
FUNCTION SetArrayLength (REF arr: ARRAY OF ANY, VAL len: INTEGER): INTEGER;
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 |
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.
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ó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. |
ArrayLength
Tivoli Service Desk 6.0 Developer's Toolkit - Referência de Linguagem do Script