Tivoli 服务台 6.0 开发工具包脚本语言参考

列表和数组处理

返回主页


ArrayLength

说明

返回当前分配给数组的长度。

语法

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

自变量说明

自变量名称 说明
arr 要确定其长度的数组

注释

在运行时可以改变 TSD 脚本数组的大小。SetArrayLength 语句可以改变任一数组的大小。任何时侯都可以使用 ArrayLength 来确定一个数组当前能包含多少个元素。

实例

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

另见

设置 ArrayLength


ListDelete

说明

从列表中删除项目。

语法

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

自变量说明

自变量名称 说明
lst 要从中删除元素的列表参数。
idx 元素说明符必须是一个整型下标或下列特殊符号之一:$FIRST$LAST$CURRENT。如果调用省略了元素说明符,它将取缺省值 $CURRENT

注释

ListDelete 函数删除给定列表中给定下标的元素。可以将该下标指定为数字,也可以通过特殊符号 $FIRST$LAST$CURRENT 来指定该下标。

如果该下标全被省略了,它将取缺省值 $CURRENT。如果删除的元素是当前元素,其后面的元素将变成当前元素。然而,如果后面没有元素,则前面的元素将变成当前元素。

实例

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

返回码

返回码 说明
1 成功完成
-1 不能求第一个自变量的值
-2 下标表达式未知
-3 内存不足
-4 下标出界

另见


ListFind

说明

在某个列表中搜索某个值。

语法

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

自变量说明

自变量名称 说明
lst 要搜索的列表变量
item 与列表元素类型相同的表达式

注释

ListFind 从被指示列表的开始处,搜索与被指示的表达式相匹配的值。如果某个元素的值与表达式的值相同,ListFind 将返回 TRUE,并将该匹配的元素作为当前元素。如果没有找到匹配的值,ListFind 将返回 FALSE,而且不改变列表的当前元素。

注:对于字符串列表,ListFind 是不区分大小写的。

ListFind 处理记录列表和简单类型列表。它逐个字段地执行比较,以确定记录相等与否。

实例

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

返回码

返回码 说明
TRUE 找到元素
FALSE 没有找到元素
$UNKNOWN 如果 LIST 中的自变量是无效的

另见

ListSort


ListInsert

说明

将一个或多个新元素插入列表。

语法

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

自变量说明

自变量名称 说明
lst 要向其中插入新元素的列表变量。
item 类型相同的表达式或类型相同的列表。
$BEFORE,$AFTER 一个可选自变量,用于指示列表中要插入新值的位置:
  • 如果要在当前元素之前插入新元素,则使用 $BEFORE
  • 如果要在当前元素之后插入新元素,则使用 $AFTER

如果省略,则假定使用 $AFTER

注释

可以使用 ListInsert 函数来向某个列表添加新元素,或将一个列表插入另一个列表。插入总是相对于当前元素进行的。缺省情况下,在当前元素的后面插入新元素或列表。

如果插入了单个元素,它将变成新的当前元素。ListInsert 返回已插入的元素数目。

实例

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

返回码

返回码 说明
大于或
等于零
插入列表中的元素数目可以是大于或等于零的任意值。在不检查列表是否为空的情况下插入列表是可能的,如果它是空的,返回码是零。
-1 不能求列表自变量的值。该错误代码表示实际上没有与给定自变量关联的列表。这在该自变量引用了一个列表类型的记录字段(其本身就是记录列表的一个成员)以及该外部列表的给定下标出界时发生。
-2 第二个自变量是未知的。

另见


ListLength

说明

返回列表中的元素数目。

语法

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

注意:如果不能求列表表达式的值(例如,出现了错误),ListLength 将返回 $Unknown。

自变量说明

自变量名称 说明
lst 需要确定其长度的列表变量

注释

ListLength 返回一个整数,显示列表中当前存储的元素个数。

实例

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

返回码

返回码 说明
大于或
等于零
成功。返回列表中的元素数目。
$Unknown 没有负的返回码。如果在对列表自变量求值的过程中产生了错误,ListLength 将返回 $Unknown

另见


ListNext

说明

将当前指针移动到列表中的下一个元素。

语法

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

自变量说明

自变量名称 说明
lst 将要向前移动其当前元素的列表变量。

注释

ListNext 可以用来向前移动列表中的当前元素指针。如果存在下一个元素,ListNext 将把当前元素指针移动到那里并返回其下标。如果不存在,ListNext 就不会改变当前元素指针,但它将返回负二(-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 *)

返回码

返回码 说明
大于零 ListNext 语句移动后的当前元素指针的下标。
-1 第一个自变量不存在。
-2 当前元素是最后一个元素。

另见


ListPop

说明

移去某个列表中的第一个元素并将它作为结果返回。

语法

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

自变量说明

自变量名称 说明
list 被当作堆栈的列表变量。

注释

ListPopListPush 可以用于创建堆栈数据结构。ListPop 移去该列表中的第一个元素并将其作为结果返回。如果该列表为空,ListPop 将返回 $Unknown。不会改变列表的当前指针,除非它起初是指向第一个元素的。在那种情况下,将把它移动到指向新的第一元素。

实例

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 移去给定列表的第一个元素并将它返回。如果该列表为空,ListPop 将返回 $Unknown

另见


ListPos

说明

返回某个列表的当前元素下标。

语法

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

自变量说明

自变量名称 说明
lst 要确定其当前元素下标的列表变量

注释

ListPos 返回某个列表的当前元素下标。如果该列表为空,ListPos 将返回 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

返回码

返回码 说明
大于零 列表的当前位置
0 列表为空
$UNKNOWN 如果 LIST 中的自变量是无效的

另见

ListSetPos


ListPrev

说明

将当前列表指针移动到前一元素。

语法

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

自变量说明

自变量名称 说明
lst 将要向后移动其当前指针的列表变量。

注释

ListPrev 用于在列表中向后移动。如果当前下标是 2 或更大,ListPrev 将把当前指针移动到前一元素并返回该元素的下标。如果当前指针位于列表起始位置,ListPrev 将不会改变它,并会返回值 -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 *)

返回码

返回码 说明
任意值 在成功完成时,将返回当前元素的下标
-1 对第一个自变量求值失败
-2 前面没有元素

另见


ListPush

说明

在列表的起始位置插入新元素。

语法

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

自变量说明

自变量名称 说明
lst 被当作堆栈的列表变量
item 与列表元素类型相同的表达式

注释

联合使用 ListPush 函数和 ListPop 函数可以实现堆栈数据结构。ListPush 在列表的起始位置插入新项目。
该列表的当前元素不受 ListPush 函数的影响,除非该列表为空。在这种情况下,新元素将成为当前元素。

实例

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

返回码

返回码 说明
大于零 如果该函数成功,将返回列表的新长度
-1 对第一个自变量求值失败

另见


ListSetPos

说明

将指定元素作为当前元素。

语法

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

自变量说明

自变量名称 说明
lst 要移动其当前指针的列表变量
index 数字表达式或符号 $FIRST$LAST 之一

注释

ListSetPos 可以用于改变某个列表的当前指针的位置。它带有一个列表变量、以及一个 1 和当前列表长度之间的整型下标,或 $FIRST(与 1 一样)或 $LAST(与 ListLength(列表)一样)。在任何情况下,都返回当前位置的下标。

实例

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

返回码

返回码 说明
index 操作成功,返回当前位置的下标
-1 对第一个自变量求值失败
-2 指定下标是未知的
-3 内存不足

另见

ListPos


ListSort

说明

对列表进行排序。

语法

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

自变量说明

自变量名称 说明
lst 要排序的列表变量

注释

ListSort 按升序对指示的列表进行排序。如果传送记录列表,将把第一个记录字段用作主排序关键字,将第二个字段用作次排序关键字,依次类推。

实例

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

返回码

返回码 说明
1 成功完成
-1 对第一个自变量求值失败

另见

ListFind


SetArrayLength

说明

更改数组可以保留的元素数目。

语法

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

自变量说明

自变量名称 说明
arr 要更改其长度的数组变量
len 数组要保留的元素数目

注释

SetArrayLength 函数改变脚本数组的长度。如果该长度增加,所有现存元素都将保留原来的值,新元素则将本类型的缺省值(通常是 $Unknown)作为初始值。如果长度减小,将丢弃具有 len+1 和更高下标的元素。

实例

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

返回码

返回码 说明
大于或等于零 数组的新长度。将数组长度设置为零是可能的,在这种情况下,返回值将是零。
-1 未知数组。
-2 未知大小的自变量。
-3 内存不足。

另见

ArrayLength


Tivoli 服务台 6.0 开发工具包脚本语言参考

返回主页

版权所有