Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script

Manipolazione di elenchi e schiere

Ritorna alla pagina principale


ArrayLength

Descrizione

Restituisce la lunghezza correntemente assegnata di una schiera.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
arr La schiera di cui determinare la lunghezza

Note

Le schiere TSD Script sono ridimensionabili al tempo di esecuzione. L'istruzione SetArrayLength modifica la dimensione di una schiera. E' possibile utilizzare ArrayLength in ogni momento per determinare quanti elementi una schiera può correntemente contenere.

Esempio

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

Consultare anche

Imposta ArrayLength


ListDelete

Descrizione

Cancella una voce da un elenco.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
lst Un parametro elenco da cui deve essere cancellato un elemento.
idx E' necessario che lo specificativo dell'elemento sia un indice numero intero o uno dei simboli speciali: $FIRST, $CURRENT di $LAST. Se lo specificativo dell'elemento viene omesso dalla chiamata, è impostato per default su $CURRENT.

Note

La funzione ListDelete cancella l'elemento all'indice dato dall'elenco specificato. E' possibile specificare l'indice numericamente o tramite uno dei simboli speciali $FIRST, $LAST, o $CURRENT.

Se l'indice viene omesso completamente, esso viene impostato per default su $CURRENT. Se l'elemento cancellato era l'elemento corrente, diventa corrente quello che segue. Se non esiste un elemento successivo, diventa corrente quello precedente.

Esempio

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

Codici di ritorno

Codice di ritorno Descrizione
1 Completamento riuscito
-1 E' stato impossibile calcolare il primo argomento
-2 Espressione di indice sconosciuta
-3 Memoria insufficiente
-4 Indice fuori limite

Consultare anche


ListFind

Descrizione

Ricerca un valore in un elenco.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
lst Una variabile elenco da ricerca
item Un'espressione dello stesso tipo come tipo di elemento dell'elenco

Note

ListFind esegue la scansione dell'elenco indicato, dall'inizio, per cercare un valore che corrisponda all'espressione indicata. Se un elemento ha lo stesso valore dell'espressione, ListFind restituisce TRUE e rende corrente l'elemento corrispondente. Se non viene trovata nessuna corrispondenza, ListFind restituisce FALSE e lascia immutato l'elemento corrente dell'elenco.

Nota: ListFind è sensibile al maiuscolo-minuscolo rispetto agli elenchi di stringhe.

ListFind funziona con elenchi di record e di tipi semplici. Esegue un confronto campo per campo per determinare l'uguaglianza dei record.

Esempio

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

Codici di ritorno

Codice di ritorno Descrizione
TRUE Elemento trovato
FALSE Elemento non trovato
$UNKNOWN Se l'argomento dell'ELENCO non è valido

Consultare anche

ListSort


ListInsert

Descrizione

Inserisce uno o più elementi nuovi in un elenco.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
lst Una variabile elenco in cui deve essere inserito un nuovo elemento.
item Un'espressione dello stesso tipo o l'elenco dello stesso tipo.
$BEFORE, $AFTER Un argomento facoltativo che può essere utilizzato per indicare in quale punto dell'elenco deve essere inserito il nuovo valore.
  • $BEFORE viene utilizzato se il nuovo elemento deve essere inserito prima dell'elemento corrente.
  • $AFTER viene utilizzato se il nuovo elemento deve essere inserito dopo l'elemento corrente.

Se omesso, si suppone $AFTER.

Note

E' possibile utilizzare la funzione ListInsert per aggiungere un nuovo elemento a un elenco o per inserire un elenco in un altro. L'inserimento è sempre relativo all'elemento corrente. Per default, il nuovo elemento o elenco viene inserito dopo l'elemento corrente.

Se viene inserito un elemento singolo, esso diventa il nuovo elemento corrente. ListInsert restituisce il numero di elementi inseriti.

Esempio

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' *)

Codici di ritorno

Codice di ritorno Descrizione
Maggiore di o
uguale a zero
Il numero di elementi inseriti nell'elenco può essere un qualsiasi valore maggiore di o uguale a zero. E' possibile inserire un elenco senza controllare se è vuoto. Se lo è, il codice di ritorno è zero.
-1 Impossibile valutare l'argomento elenco. Questo codice di errore indica che non esiste un elenco reale associato all'argomento dato. E' possibile che si verifichi ciò se l'argomento faceva riferimento a un campo record di tipo elenco, che era esso stesso un membro di un elenco di record e l'indice fornito per quell'elenco esterno è fuori limite.
-2 Secondo argomento sconosciuto.

Consultare anche


ListLength

Descrizione

Restituisce il numero di elementi in un elenco.

Sintassi

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

Avvertenza: Se è impossibile valutare l'espressione di elenco (ad esempio, se si verifica un errore) ListLength restituisce $Unknown.

Note argomenti

Nome dell'argomento Descrizione
lst Una variabile elenco di cui è necessario determinare la lunghezza

Note

ListLength restituisce un numero intero che indica quanti elementi sono correntemente memorizzati nell'elenco.

Esempio

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);

Codici di ritorno

Codice di ritorno Descrizione
Maggiore di o
uguale a zero
Riuscito. Restituisce il numero di elementi nell'elenco.
$Unknown Non esistono codici di ritorno negativi. Se si verifica un errore durante la valutazione dell'argomento elenco, ListLength restituisce $Unknown.

Consultare anche


ListNext

Descrizione

Sposta il puntatore corrente sull'elemento successivo nell'elenco.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
lst Una variabile elenco il cui elemento corrente deve essere avanzato.

Note

ListNext può essere utilizzato per avanzare il puntatore dell'elemento corrente all'interno di un elenco. Se esiste un elemento successivo, ListNext sposta in quel punto il puntatore dell'elemento corrente e ne restituisce l'indice. Altrimenti, ListNext lascia immutato il puntatore dell'elemento corrente e restituisce -2.

Esempio

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 *)

Codici di ritorno

Codice di ritorno Descrizione
Maggiore di zero L'indice del puntatore dell'elemento corrente dopo che è stato spostato dall'istruzione ListNext.
-1 Il primo argomento è inesistente.
-2 L'elemento corrente è l'ultimo elemento.

Consultare anche


ListPop

Descrizione

Rimuove il primo elemento da un elenco e lo restituisce come risultato.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
list Una variabile elenco da trattare come uno stack.

Note

ListPop e ListPush possono essere utilizzati per creare una struttura di dati stack. ListPop rimuove il primo elemento dall'elenco e lo restituisce come suo risultato. Se l'elenco è vuoto, ListPop restituisce $Unknown. Il puntatore corrente dell'elenco rimane immutato a meno che non puntava originariamente sul primo elemento. In quel caso, viene spostato per puntare sul nuovo primo elemento.

Esempio

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

Codici di ritorno

ListPop rimuove il primo elemento dall'elenco dato e lo restituisce. Se l'elenco è vuoto, ListPop restituisce $Unknown.

Consultare anche


ListPos

Descrizione

Restituisce l'indice dell'elemento corrente di un elenco.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
lst Una variabile elenco di cui si deve determinare l'indice dell'elemento corrente.

Note

ListPos restituisce l'indice dell'elemento corrente di un elenco. Se l'elenco è vuoto, ListPos restituisce 0.

Esempio

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

Codici di ritorno

Codice di ritorno Descrizione
Maggiore di zero La posizione corrente dell'elenco
0 L'elenco è vuoto
$UNKNOWN Se l'argomento per l'ELENCO non è valido

Consultare anche

ListSetPos


ListPrev

Descrizione

Sposta il puntatore dell'elenco corrente sull'elemento precedente.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
lst Una variabile elenco di cui si deve spostare all'indietro il puntatore corrente.

Note

ListPrev viene utilizzato per spostarsi all'indietro nell'elenco. Se l'indice corrente è 2 o maggiore, ListPrev sposta il puntatore corrente sull'elemento precedente e restituisce l'indice di quell'elemento. Se il puntatore corrente si trova all'inizio dell'elenco, ListPrev lo lascia immutato e restituisce un valore di -2.

Esempio

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 *)

Codici di ritorno

Codice di ritorno Descrizione
tutti L'indice dell'elemento corrente viene restituito alla riuscita del completamento.
-1 Errore di valutazione del primo argomento
-2 Non esiste nessun elemento precedente

Consultare anche


ListPush

Descrizione

Inserisce un nuovo elemento all'inizio di un elenco.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
lst Una variabile elenco trattata come uno stack
item Un'espressione dello stesso tipo o l'elenco

Note

La funzione ListPush viene utilizzata insieme alla funzione ListPop per implementare una struttura di dati stack. ListPush inserisce una nuova voce all'inizio di un elenco.
L'elemento corrente dell'elenco non viene influenzato dalla funzione ListPush a meno che l'elenco non è vuoto. In quel caso, il nuovo elemento diventa corrente.

Esempio

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

Codici di ritorno

Codice di ritorno Descrizione
Maggiore di zero Se la funzione riesce, viene restituita la nuova lunghezza dell'elenco
-1 Errore nella valutazione corretta del primo argomento

Consultare anche


ListSetPos

Descrizione

Rende corrente l'elemento specificato.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
lst Una variabile elenco di cui si deve spostare il puntatore corrente
index Un'espressione numerica o uno dei simboli $FIRST o $LAST

Note

ListSetPos può essere utilizzato per modificare la posizione del puntatore corrente di un elenco. Ciò richiede una variabile elenco e un indice numero intero compreso tra 1 e la lunghezza dell'elenco corrente o $FIRST (uguale a 1) o $LAST (uguale a ListLength (elenco)). In ogni caso, viene restituito l'indice della posizione corrente.

Esempio

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

Codici di ritorno

Codice di ritorno Descrizione
indice Viene restituito l'indice della posizione corrente quando l'operazione ha esito positivo
-1 La valutazione del primo argomento ha avuto esito negativo
-2 L'indice specificato è sconosciuto
-3 Memoria insufficiente

Consultare anche

ListPos


ListSort

Descrizione

Ordina un elenco.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
lst Una variabile elenco da ordinare

Note

ListSort ordina l'elenco indicato in ordine ascendente. Se viene inoltrato un elenco di record, il primo campo record viene utilizzato come chiave di ordinamento primaria, il secondo campo è la chiave di ordinamento secondaria e così via.

Esempio

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

Codici di ritorno

Codice di ritorno Descrizione
1 Completamento riuscito
-1 La valutazione del primo argomento ha avuto esito negativo

Consultare anche

ListFind


SetArrayLength

Descrizione

Modifica il numero di elementi che una schiera può contenere.

Sintassi

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

Note argomenti

Nome dell'argomento Descrizione
arr Una variabile schiera di cui si deve modificare la lunghezza
len Il numero di elementi che la schiera deve contenere

Note

La funzione SetArrayLength modifica la lunghezza di una schiera Script. Se la lunghezza aumenta, i valori di tutti gli elementi esistenti rimangono per i nuovi elementi inizializzati per il valore di default del loro tipo (generalmente $Unknown). Se la lunghezza diminuisce, gli elementi con indici len+1 e superiori vengono scartati.

Esempio

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);

Codici di ritorno

Codice di ritorno Descrizione
Maggiore di o uguale a zero La nuova lunghezza della schiera. E' possibile impostare la lunghezza della schiera su zero, in questo caso il valore restituito è zero.
-1 Schiera sconosciuta.
-2 Argomento dimensione sconosciuto.
-3 Memoria insufficiente.

Consultare anche

ArrayLength


Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script

Ritorna alla pagina principale

Copyright