Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script
Ritorna alla pagina principale
Restituisce la lunghezza correntemente assegnata di una schiera.
FUNCTION ArrayLength (VAL arr: ARRAY OF ANY): INTEGER;
Nome dell'argomento | Descrizione |
arr | La schiera di cui determinare la lunghezza |
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.
VARIABLES i: INTEGER; a[10]: ARRAY OF INTEGER;
ACTIONS ... SetArrayLength(a,100); ... i:=ArrayLength(a);
Imposta ArrayLength
Cancella una voce da un elenco.
PROCEDURE ListDelete (REF lst: LIST OF ANY [, VAL idx: integer | $FIRST | $CURRENT | $LAST ] );
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. |
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.
ListSetPos(requestList, $FIRST); REPEAT IF requestList[$CURRENT].cost > costLimit THEN ListDelete(requestList, $CURRENT); END; UNTIL ListNext(requestList) < 0;
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 |
Ricerca un valore in un elenco.
FUNCTION ListFind (REF lst: LIST OF T, VAL item: T): BOOLEAN;
Nome dell'argomento | Descrizione |
lst | Una variabile elenco da ricerca |
item | Un'espressione dello stesso tipo come tipo di elemento dell'elenco |
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.
VARIABLES employeeList: LIST OF STRING;
ACTIONS IF ListFind(employeeList,'SMITH') THEN PrintEmployee(employeeList[$Current]); ...
Codice di ritorno | Descrizione |
TRUE | Elemento trovato |
FALSE | Elemento non trovato |
$UNKNOWN | Se l'argomento dell'ELENCO non è valido |
ListSort
Inserisce uno o più elementi nuovi in un elenco.
FUNCTION ListInsert (REF lst: LIST OF T, VAL item: [LIST OF] T, $BEFORE|$AFTER] ): INTEGER;
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.
Se omesso, si suppone $AFTER. |
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.
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' *)
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. |
Restituisce il numero di elementi in un elenco.
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.
Nome dell'argomento | Descrizione |
lst | Una variabile elenco di cui è necessario determinare la lunghezza |
ListLength restituisce un numero intero che indica quanti elementi sono correntemente memorizzati nell'elenco.
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);
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. |
Sposta il puntatore corrente sull'elemento successivo nell'elenco.
FUNCTION ListNext (REF lst: LIST OF ANY): INTEGER;
Nome dell'argomento | Descrizione |
lst | Una variabile elenco il cui elemento corrente deve essere avanzato. |
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.
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 *)
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. |
Rimuove il primo elemento da un elenco e lo restituisce come risultato.
FUNCTION ListPop (REF lst: LIST OF T): T;
Nome dell'argomento | Descrizione |
list | Una variabile elenco da trattare come uno stack. |
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.
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 rimuove il primo elemento dall'elenco dato e lo restituisce. Se l'elenco è vuoto, ListPop restituisce $Unknown.
Restituisce l'indice dell'elemento corrente di un elenco.
FUNCTION ListPos (REF lst: LIST OF ANY): INTEGER;
Nome dell'argomento | Descrizione |
lst | Una variabile elenco di cui si deve determinare l'indice dell'elemento corrente. |
ListPos restituisce l'indice dell'elemento corrente di un elenco. Se l'elenco è vuoto, ListPos restituisce 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
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 |
ListSetPos
Sposta il puntatore dell'elenco corrente sull'elemento precedente.
FUNCTION ListPrev (REF lst: LIST OF ANY): INTEGER;
Nome dell'argomento | Descrizione |
lst | Una variabile elenco di cui si deve spostare all'indietro il puntatore corrente. |
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.
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 *)
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 |
Inserisce un nuovo elemento all'inizio di un elenco.
FUNCTION ListPush (REF lst: LIST OF T, VAL item: T): INTEGER;
Nome dell'argomento | Descrizione |
lst | Una variabile elenco trattata come uno stack |
item | Un'espressione dello stesso tipo o l'elenco |
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.
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
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 |
Rende corrente l'elemento specificato.
FUNCTION ListSetPos (REF lst: LIST OF ANY, VAL index:
INTEGER | $FIRST | $LAST): INTEGER;
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 |
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.
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
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 |
ListPos
Ordina un elenco.
FUNCTION ListSort (REF lst: LIST OF ANY): INTEGER;
Nome dell'argomento | Descrizione |
lst | Una variabile elenco da ordinare |
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.
VARIABLES lis{ 'Tom', 'Dick', 'Harry' }: LIST OF STRING;
ACTIONS ListSort(lis); -- now lis = 'Dick', 'Harry', 'Tom'
Codice di ritorno | Descrizione |
1 | Completamento riuscito |
-1 | La valutazione del primo argomento ha avuto esito negativo |
ListFind
Modifica il numero di elementi che una schiera può contenere.
FUNCTION SetArrayLength (REF arr: ARRAY OF ANY, VAL len: INTEGER): INTEGER;
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 |
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.
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);
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. |
ArrayLength
Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script
Ritorna alla pagina principale