Tivoli Service Desk 6.0 Developer's Toolkit Script - Manuel de référence du langage TSD Script
Retour à la page principale
Renvoie la longueur actuellement attribuée à un tableau.
FUNCTION ArrayLength (VAL arr: ARRAY OF ANY): INTEGER;
Nom de l'argument | Description |
arr | Tableau dont la longueur doit être déterminée |
Les tableaux TSD Script peuvent être redimensionnés au moment de l'exécution. L'instruction SetArrayLength modifie les dimensions d'un tableau. Cette instruction ArrayLengthest utilisable à tout moment pour déterminer le nombre d'éléments pouvant être contenus dans un tableau à un moment donné.
VARIABLES i: INTEGER; a[10]: ARRAY OF INTEGER;
ACTIONS ... SetArrayLength(a,100); ... i:=ArrayLength(a);
Set ArrayLength
Supprime un élément dans une liste.
PROCEDURE ListDelete (REF lst: LIST OF ANY [, VAL idx: integer | $FIRST | $CURRENT | $LAST ] );
Nom de l'argument | Description |
lst | Paramètre de liste à partir duquel un élément est destiné à être supprimé. |
idx | L'élément doit être spécifié au moyen d'un nombre entier, ou de l'un des symboles spéciaux suivants : $FIRST, $CURRENT ou $LAST. Lorsque la spécification de l'élément est omise par l'appel, la valeur par défaut est $CURRENT. |
La fonction ListDelete supprime l'élément, à l'emplacement donné de l'indice, dans la liste donnée. Cet indice peut être défini de façon numérique ou à l'aide de l'un des symboles spéciaux suivants : $FIRST, $LAST ou $CURRENT.
Lorsque l'indice est également omis, la valeur par défaut est $CURRENT. Si l'élément qui a été supprimé était l'élément en cours, ce dernier est remplacé par l'élément suivant. Lorsqu'aucun élément suivant n'est disponible, c'est l'élément précédent qui devient l'élément en cours.
ListSetPos(requestList, $FIRST); REPEAT IF requestList[$CURRENT].cost > costLimit THEN ListDelete(requestList, $CURRENT); END; UNTIL ListNext(requestList) < 0;
Code retour | Description |
1 | Opération achevée avec succès |
-1 | L'évaluation du premier argument n'a pas été effectuée |
-2 | L'expression de l'indice est inconnue |
-3 | Mémoire insuffisante |
-4 | L'indice est situé hors des limites admises |
Recherche une valeur à l'intérieur d'une liste.
FUNCTION ListFind (REF lst: LIST OF T, VAL item: T): BOOLEAN;
Nom de l'argument | Description |
lst | Variable qui doit être recherchée dans une liste |
item | Expression de type identique à celui de l'élément de la liste |
ListFind effectue une scrutation dans la liste indiquée, en commençant par le début de celle-ci et en recherchant une valeur qui corresponde à l'expression indiquée. Si la valeur d'un élément est égale à celle de l'expression, ListFind renvoie la valeur TRUE et considère l'élément correspondant comme l'élément en cours. Si aucune correspondance n'est trouvée, ListFind renvoie la valeur FALSE et laisse intacte la valeur de l'élément de la liste en cours.
Remarque : ListFind est une fonction indépendante de la distinction majuscules-minuscules dans le cas des listes de chaînes de caractères.
ListFind fonctionne à l'aide de listes d'enregistrements et de listes de types simples. Une comparaison est effectuée entre différentes zones afin de déterminer l'équivalence des enregistrements.
VARIABLES employeeList: LIST OF STRING;
ACTIONS IF ListFind(employeeList,'DUPONT') THEN PrintEmployee(employeeList[$Current]); ...
Code retour | Description |
TRUE | L'élément a été trouvé |
FALSE | Aucun élément n'a été trouvé |
$UNKNOWN | Si l'argument extrait de LIST est non valide |
ListSort
Insère un ou plusieurs éléments nouveaux dans une liste.
FUNCTION ListInsert (REF lst: LIST OF T, VAL item: [LIST OF] T, $BEFORE|$AFTER] ): INTEGER;
Nom de l'argument | Description |
lst | Variable de liste dans laquelle un nouvel élément doit être inséré. |
item | Expression ou liste de même type. |
$BEFORE, $AFTER | Argument facultatif pouvant servir à indiquer
le lieu d'insertion de la nouvelle valur dans la liste :
Lorsque l'on omet de préciser ce paramète, la valeur $AFTER est supposée par défaut. |
La fonction ListInsert peut être utilisée pour ajouter un nouvel élément à une liste, ou à insérer une liste à l'intérieur d'une autre. L'insertion est toujours relative à l'élément en cours. L'insertion du nouvel élément ou de la liste a toujours lieu, par défaut, après l'élément en cours.
Lorsqu'un élément individuel est inséré, il devient le nouvel élément en cours. La fonction ListInsert renvoie le nombre d'éléments qui ont été insérés.
VARIABLES name1:={'Tom','Dick','Harry'}: LIST OF STRING;
ACTION (* le pointeur de liste démarre à 1 - 'Tom' *) ListInsert(name1,'Mary',$Before); (* puis : name1 = 'Mary', 'Tom', 'Dick', 'Harry' * name2:={'Charlotte','Herman'}: LIST OF STRING; ListInsert(name1,name2,$After); (* puis name1 = 'Mary','Charlotte','Herman','Tom','Dick','Harry' *)
Code retour | Description |
Supérieur ou égal à zéro |
Le nombre d'éléments insérés dans la liste peut être une valeur quelconque supérieure ou égale à zéro. Il est possible d'insérer une liste sans vérifier que celle-ci elle est vide ou non et, dans le cas où elle est vide, le code retour est zéro. |
-1 | Impossible d'évaluer l'argumnt de la liste. Ce code d'erreur indique qu'aucune liste réelle n'est associée à l'argument donné. Cette situation peut se produire lorsque l'argument fait référence à une zone d'enregistrement de type liste faisant elle-même partie d'une liste d'enregistrements, et que l'indice mentionné pour cette liste externe se situe hors des limites admises. |
-2 | Le deuxième argument est inconnu. |
Renvoie le nombre d'éléments contenus dans une liste.
FUNCTION ListLength (VAL lst: LIST OF ANY): INTEGER;
Attention : S'il est impossible d'évaluer l'expression de la liste (par exemple, en cas d'erreur), la fonction ListLength renvoie la valeur $Unknown.
Nom de l'argument | Description |
lst | Variable de liste dont la longueur est à déterminer |
ListLength renvoie un nombre entier indiquant le nombre d'éléments actuellement enregistrés dans la liste concernée.
VARIABLES a: ARRAY OF STRING; lis: LIST OF STRING; f: FILE;
ACTIONS (* lecture d'un fichier texte inclus dans une liste de chaînes *) FOpen(f,'DATA.TXT',$Read); FReadText(f,lis); FClose(f); (* égalisation entre la longueur du tableau et de la liste *) SetArrayLength(a,ListLength(lis)); (* copie des chaînes de la liste vers le tableau *)
FOR lis DO a[ListGetPos(lis)]:=lis[$Current]; END; (* effacement de la liste *) SetUnknown(lis);
Code retour | Description |
Supérieur ou égal à zéro |
L'opération a abouti. Renvoie le nombre d'éléments figurant dans la liste. |
$Unknown | Il n'existe aucun code retour négatif. Si une erreur survient pendant l'évaluation de l'argument de liste, la fonction ListLength renvoie la valeur $Unknown. |
Déplace le pointeur en cours sur l'emplacement suivant de la liste.
FUNCTION ListNext (REF lst: LIST OF ANY): INTEGER;
Nom de l'argument | Description |
lst | Variable de liste dont l'élément en cours doit être placé en avant. |
ListNext est utilisable pour faire progresser le pointeur d'élément en cours à l'intérieur d'une liste. Si un élément suivant est disponible dans la liste, ListNext déplace le pointeur du curseur en cours sur cet élément et renvoie l'indice associé à celui-ci. Dans le cas contraire, ListNext laisse le pointeur d'élément en cours dans sa position et renvoie un code négatif (-2).
VARIABLES lis: LIST OF STRING;
ACTIONS lis:={'Tom','Dick','Harry'}: LIST OF STRING; (* le pointeur de liste démarre à 1 - 'Tom' *) ListNext(lis); (* le pointeur en cours est situé sur 2 - 'Dick' *) ListNext(lis); (* le pointeur en cours est situé sur 3 - 'Harry' *) ListNext(lis); (* pointeur maintenu sur 'Harry', mais ListNext renvoie la valeur -2 *)
Code retour | Description |
Supérieur à zéro | indice correspondant au pointeur d'élément en cours après son déplacement par l'instruction ListNext. |
-1 | Le premier argument est inexistant. |
-2 | L'élément en cours est le dernier élément. |
Supprime le premier élément d'une liste et le renvoie sous la forme d'un résultat.
FUNCTION ListPop (REF lst: LIST OF T): T;
Nom de l'argument | Description |
list | Variable de liste à traiter sous forme de pile. |
ListPop et ListPush sont les fonctions utilisables pour créer une structure de données empilées. ListPop supprime le premier élément de la liste et le renvoie sous la forme d'un résultat. Si la liste est vide, ListPop renvoie la valeur $Unknown. La position du pointeur de liste en cours reste inchangée, sauf lorsqu'elle se trouvait sur le premier élément. Dans ce cas, le pointeur est déplacé sur le premier élément nouvellement défini.
VARIABLES myStack: LIST OF STRING; name :STRING;
ACTIONS ListPush(myStack, 'Harry'); -- myStack correspond à { 'Harry' } ListPush(myStack, 'Dick'); -- myStack correspond à { 'Dick', 'Harry' } ListPush(myStack, 'Tom'); -- myStack correspond à { 'Tom', 'Dick', 'Harry' } name := ListPop(myStack); -- myStack correspond à { 'Dick', 'Harry' } et le nom est 'Tom' name := ListPop(myStack); -- myStack correspond à { 'Harry' } et le nom est 'Dick' name := ListPop(myStack); -- myStack correspond à UNKNOWN et le nom est 'Harry' name := ListPop(myStack); -- myStack correspond à UNKNOWN et le nom est UNKNOWN
ListPop supprime le premier élément de la liste et le renvoie. Si la liste est vide, ListPop renvoie la valeur $Unknown.
Renvoie l'indice de l'élément en cours pris dans une liste.
FUNCTION ListPos (REF lst: LIST OF ANY): INTEGER;
Nom de l'argument | Description |
lst | Variable de liste dont l'indice d'élément en cours doit être déterminé |
ListPos renvoie l'indice de l'élément en cours d'une liste. Si la liste est vide, la fonction ListPos renvoie la valeur 0.
VARIABLES lis{ 'Tom', 'Dick', 'Harry' }: LIST OF STRING; i: INTEGER;
ACTIONS -- le pointeur de liste démarre à 1 - 'Tom' i:=ListPos(lis); -- i = 1 ListSetPos(lis,3); i:=ListPos(lis); -- i = 3 ListPrev(lis); -- i = 2
Code retour | Description |
Supérieur à zéro | Position en cours de la liste |
0 | La liste est vide |
$UNKNOWN | Si l'argument pour LIST est non valide |
ListSetPos
Déplace le pointeur de la liste en cours sur l'élément précédent.
FUNCTION ListPrev (REF lst: LIST OF ANY): INTEGER;
Nom de l'argument | Description |
lst | Variable de liste dont l'élément en cours doit être replacé en arrière. |
ListPrev est utilisé pour les déplacements en arrière à l'intérieur d'une liste. Si l'indice en cours est upérieur ou égal à 2, ListPrev déplace le pointeur en cours sur l'élément précédent et renvoie l'indice de cet élément. Si le pointeur en cours se trouve au début de la liste, ListPrev le laisse inchangé et renvoie la valeur -2.
VARIABLES lis: LIST OF STRING;
ACTIONS (* le pointeur de liste démarre à 1 - 'Tom' *) ListSetPos(lis,3); (* le pointeur en cours est situé sur 3 - 'Harry' *) ListPrev(lis); (* le pointeur en cours est situé sur 2 - 'Dick' *) ListPrev(lis); (* le pointeur en cours est situé sur 1 - 'Tom' *) ListPrev(lis); (* pointeur maintenu sur 'Tom', mais ListPrev renvoie la valeur -2 *)
Code retour | Description |
any | L'indice de l'élément en cours est renvoyé si l'opération a abouti |
-1 | Echec de l'évaluation du premier argument |
-2 | Il n'existe aucun élément précédent |
Insère un nouvel élément au début d'une liste.
FUNCTION ListPush (REF lst: LIST OF T, VAL item: T): INTEGER;
Nom de l'argument | Description |
lst | Variable de liste traitée sous forme de pile |
item | Expression de type identique à celui de la liste |
La fonction ListPush est utilisée en association
avec la fonction ListPop afin de mettre en oeuvre une
structure de données empilées. ListPush insère un nouvel
élément au début d'une liste.
L'élément en cours de la liste n'est pas affecté par la fontion
ListPush, sauf lorsque la liste est vide. Dans ce cas, le
nouvel élément devient alors l'élément en cours.
VARIABLES myStack: LIST OF STRING; name :STRING;
ACTIONS ListPush(myStack, 'Harry'); -- myStack correspond à { 'Harry' } ListPush(myStack, 'Dick'); -- myStack correspond à { 'Dick', 'Harry' } ListPush(myStack, 'Tom'); -- myStack correspond à { 'Tom', 'Dick', 'Harry' } name := ListPop(myStack); -- myStack correspond à { 'Dick', 'Harry' } et le nom est 'Tom' name := ListPop(myStack); -- myStack correspond à { 'Harry' } et le nom est 'Dick' name := ListPop(myStack); -- myStack correspond à UNKNOWN et le nom est 'Harry' name := ListPop(myStack); -- myStack correspond à UNKNOWN et le nom est UNKNOWN
Code retour | Description |
Supérieur à zéro | La nouvelle longueur de la liste est renvoyée si la fonction est exécutée avec succès |
-1 | Echec de l'évaluation du premier argument |
Fait de l'élément spécifié l'élément en cours.
FUNCTION ListSetPos (REF lst: LIST OF ANY, VAL index:
INTEGER | $FIRST | $LAST): INTEGER;
Nom de l'argument | Description |
lst | Variable de liste dont le pointeur en cours doit être déplacé |
index | Expression numérique, ou bien l'un des symboles $FIRST ou $LAST |
ListSetPos peut être utilisé pour modifier la position du pointeur en cours dans une liste. Cette fonction prend une variable de liste, ainsi que, selon les cas, un indice entier compris entre 1 et la longueur de liste courante, ou $FIRST (égal à 1), ou encore $LAST (égal à ListLength (liste)). Dans tous les cas, l'indice renvoyé est celui de la position courante.
VARIABLES lis{ 'Tom', 'Dick', 'Harry' }: LIST OF STRING; i: INTEGER;
ACTIONS -- le pointeur de liste démarre à 1 - 'Tom' i:=ListPos(lis); -- i = 1 ListSetPos(lis,3); i:=ListPos(lis); -- i = 3 ListPrev(lis); -- i = 2
Code retour | Description |
index | L'indice de la position courante est renvoyé lorsque l'opération est exécutée avec succès |
-1 | Echec de l'évaluation du premier argument |
-2 | L'indice spécifié est inconnu |
-3 | Mémoire insuffisante |
ListPos
Effectue le tri d'une liste.
FUNCTION ListSort (REF lst: LIST OF ANY): INTEGER;
Nom de l'argument | Description |
lst | Variable de liste à trier |
ListSort trie la liste indiquée par ordre croissant. Si une liste d'enregistrements st transmise, la première zone d'enregistrement est utilisée en tant que clé de tri primaire, la deuxième zone correspond à la clé de tri secondaire, et ainsi de suite.
VARIABLES lis{ 'Tom', 'Dick', 'Harry' }: LIST OF STRING;
ACTIONS ListSort(lis); -- lis = 'Dick', 'Harry', 'Tom'
Code retour | Description |
1 | Opération achevée avec succès |
-1 | Echec de l'évaluation du premier argument |
ListFind
Modifie le nombre d'éléments pouvant être contenus dans un tableau.
FUNCTION SetArrayLength (REF arr: ARRAY OF ANY, VAL len: INTEGER): INTEGER;
Nom de l'argument | Description |
arr | Variable de tableau dont la longueur doit être modifiée |
len | Nombre d'éléments devant être contenus dans le tableau |
La fonction SetArrayLength modifie la longueur d'un tableau Script. Si cette longueur augmente, les valeurs de tous les éléments existants restent inchangées, tandis que les nouveaux éléments sont initialisés en fonction de la valeur par défaut correspondant à leur type (généralement, cette valeur est $Unknown). Si la longueur diminue, les éléments dont les indices sont supérieures ou égaux à len + 1 ne sont pas pris en compte.
VARIABLES a: ARRAY OF STRING; l: LIST OF STRING; f: FILE;
ACTIONS (* lecture d'un fichier texte inclus dans une liste de chaînes *) FOpen(f,'DATA.TXT',$Read); FReadText(f,l); FClose(f); (* égalisation entre la longueur du tableau et de la liste *) SetArrayLength(a,ListLength(l)); (* copie des chaînes de la liste vers le tableau *) FOR l DO a[ListGetPos(l)]:=l[$Current]; END; (* effacement de la liste *) SetUnknown(l);
Code retour | Description |
Supérieur ou égal à zéro | Nouvelle longueur du tableau. La longueur du tableau peut être définie comme ayant une valeur nulle, auquel cas la valeur de retour est zéro. |
-1 | Tableau inconnu. |
-2 | Argument de taille inconnu. |
-3 | La mémoire est insuffisante |
ArrayLength
Tivoli Service Desk 6.0 Developer's Toolkit Script - Manuel de référence du langage TSD Script