Tivoli Service Desk 6.0 Developer's Toolkit Script - Manuel de référence du langage TSD Script

TSD Script - Manipulation des listes et des tableaux

Retour à la page principale


ArrayLength

Description

Renvoie la longueur actuellement attribuée à un tableau.

Syntaxe

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

Remarques concernant les arguments

Nom de l'argument Description
arr Tableau dont la longueur doit être déterminée

Remarques

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é.

Exemple

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

Voir aussi

Set ArrayLength


ListDelete

Description

Supprime un élément dans une liste.

Syntaxe

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

Remarques concernant les arguments

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.

Remarques

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.

Exemple

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

Codes retour

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

Voir aussi


ListFind

Description

Recherche une valeur à l'intérieur d'une liste.

Syntaxe

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

Remarques concernant les arguments

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

Remarques

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.

Exemple

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

Codes retour

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

Voir aussi

ListSort


ListInsert

Description

Insère un ou plusieurs éléments nouveaux dans une liste.

Syntaxe

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

Remarques concernant les arguments

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 :
  • $BEFORE est utilisé lorsque le nouvel élément doit être inséré avant l'élément en cours.
  • $AFTER est utilisé lorsque le nouvel élément doit être inséré après l'élément en cours.

Lorsque l'on omet de préciser ce paramète, la valeur $AFTER est supposée par défaut.

Remarques

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.

Exemple

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

Codes retour

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.

Voir aussi


ListLength

Description

Renvoie le nombre d'éléments contenus dans une liste.

Syntaxe

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.

Remarques concernant les arguments

Nom de l'argument Description
lst Variable de liste dont la longueur est à déterminer

Remarques

ListLength renvoie un nombre entier indiquant le nombre d'éléments actuellement enregistrés dans la liste concernée.

Exemple

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

Codes retour

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.

Voir aussi


ListNext

Description

Déplace le pointeur en cours sur l'emplacement suivant de la liste.

Syntaxe

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

Remarques concernant les arguments

Nom de l'argument Description
lst Variable de liste dont l'élément en cours doit être placé en avant.

Remarques

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

Exemple

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

Codes retour

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.

Voir aussi


ListPop

Description

Supprime le premier élément d'une liste et le renvoie sous la forme d'un résultat.

Syntaxe

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

Remarques concernant les arguments

Nom de l'argument Description
list Variable de liste à traiter sous forme de pile.

Remarques

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.

Exemple

 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

Codes retour

ListPop supprime le premier élément de la liste et le renvoie. Si la liste est vide, ListPop renvoie la valeur $Unknown.

Voir aussi


ListPos

Description

Renvoie l'indice de l'élément en cours pris dans une liste.

Syntaxe

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

Remarques concernant les arguments

Nom de l'argument Description
lst Variable de liste dont l'indice d'élément en cours doit être déterminé

Remarques

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.

Exemple

 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

Codes retour

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

Voir aussi

ListSetPos


ListPrev

Description

Déplace le pointeur de la liste en cours sur l'élément précédent.

Syntaxe

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

Remarques concernant les arguments

Nom de l'argument Description
lst Variable de liste dont l'élément en cours doit être replacé en arrière.

Remarques

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.

Exemple

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

Codes retour

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

Voir aussi


ListPush

Description

Insère un nouvel élément au début d'une liste.

Syntaxe

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

Remarques concernant les arguments

Nom de l'argument Description
lst Variable de liste traitée sous forme de pile
item Expression de type identique à celui de la liste

Remarques

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.

Exemple

 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

Codes retour

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

Voir aussi


ListSetPos

Description

Fait de l'élément spécifié l'élément en cours.

Syntaxe

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

Remarques concernant les arguments

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

Remarques

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.

Exemple

 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

Codes retour

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

Voir aussi

ListPos


ListSort

Description

Effectue le tri d'une liste.

Syntaxe

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

Remarques concernant les arguments

Nom de l'argument Description
lst Variable de liste à trier

Remarques

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.

Exemple

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

Codes retour

Code retour Description
1 Opération achevée avec succès
-1 Echec de l'évaluation du premier argument

Voir aussi

ListFind


SetArrayLength

Description

Modifie le nombre d'éléments pouvant être contenus dans un tableau.

Syntaxe

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

Remarques concernant les arguments

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

Remarques

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.

Exemple

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

Codes retour

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

Voir aussi

ArrayLength


Tivoli Service Desk 6.0 Developer's Toolkit Script - Manuel de référence du langage TSD Script

Retour à la page principale

Copyright