Tivoli 服务台 6.0 开发工具包脚本语言参考
返回主页
返回当前分配给数组的长度。
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
从列表中删除项目。
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 | 下标出界 |
在某个列表中搜索某个值。
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
将一个或多个新元素插入列表。
FUNCTION ListInsert (REF lst: LIST OF T, VAL item: [LIST OF] T, $BEFORE|$AFTER] ): INTEGER;
自变量名称 | 说明 |
lst | 要向其中插入新元素的列表变量。 |
item | 类型相同的表达式或类型相同的列表。 |
$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 | 第二个自变量是未知的。 |
返回列表中的元素数目。
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。 |
将当前指针移动到列表中的下一个元素。
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 | 当前元素是最后一个元素。 |
移去某个列表中的第一个元素并将它作为结果返回。
FUNCTION ListPop (REF lst: LIST OF T): T;
自变量名称 | 说明 |
list | 被当作堆栈的列表变量。 |
ListPop 和 ListPush 可以用于创建堆栈数据结构。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。
返回某个列表的当前元素下标。
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
将当前列表指针移动到前一元素。
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 | 前面没有元素 |
在列表的起始位置插入新元素。
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 | 对第一个自变量求值失败 |
将指定元素作为当前元素。
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
对列表进行排序。
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
更改数组可以保留的元素数目。
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 开发工具包脚本语言参考