Tivoli Service Desk 6.0 Developer's Toolkit Script 言語解説書
メイン・ページに戻る
現在割り振られている配列の長さを戻します。
FUNCTION ArrayLength (VAL arr: ARRAY OF ANY): INTEGER;
引き数名 | 説明 |
arr | 長さを判別する配列 |
TSD Script 配列は実行時にサイズ変更可能です。SetArrayLength ステートメントは任意の配列のサイズを変更します。ArrayLength は、現在配列に保持できる要素数を判別するために、いつでも使用することができます。
VARIABLES i: INTEGER; a[10]: ARRAY OF INTEGER;
ACTIONS ... SetArrayLength(a,100); ... i:=ArrayLength(a);
Set ArrayLength
リストからアイテムを削除します。
PROCEDURE ListDelete (REF lst: LIST OF ANY [, VAL idx: integer | $FIRST | $CURRENT | $LAST ] );
引き数名 | 説明 |
lst | 要素を削除するリスト・パラメーター。 |
idx | 要素指定子は、整数索引または特殊記号 ($FIRST、 $CURRENT、または $LAST) のいずれか 1 つでなければなりません。要素指定子が呼び出しから省略されると、デフォルトとして $CURRENT が使用されます。 |
ListDelete 関数は指定の索引位置の要素を指定のリストから削除します。索引は、手操作で指定するか、あるいは特殊記号 ($FIRST、 $CURRENT、または $LAST) のいずれかによって指定することができます。
索引が一切省略されると、デフォルトとして $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
1 つ以上の要素をリストに挿入します。
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 (* リスト・ポインターは 1 から始まります - 'Tom' *) ListInsert(name1,'Mary',$Before); (* これで name1 = 'Mary', 'Tom', 'Dick', 'Harry' *) name2:={'Charlotte','Herman'}: LIST OF STRING; ListInsert(name1,name2,$After); (* これで name1 = 'Mary','Charlotte','Herman','Tom','Dick','Harry' *)
戻りコード | 説明 |
ゼロ 以上 |
リストに挿入する要素の数は、ゼロ以上の任意の値とすることができます。リストは検査なしで挿入してそのリストが空かどうかを確認することができ、空の場合には、戻りコードはゼロになります。 |
-1 | リスト引き数を評価できません。このエラー・コードは、指定の引き数と関連した実際のリストがないことを示します。これが起こる可能性があるのは、引き数で、それ自体がレコードのリストのメンバーであるリスト・タイプ付きレコード・フィールドが参照され、リストの外部に指定された索引が境界外だった場合です。 |
-2 | 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 (* テキスト・ファイルを文字列のリストに読み込みます *) FOpen(f,'DATA.TXT',$Read); FReadText(f,lis); FClose(f); (* 配列の長さをリストと同じにします *) SetArrayLength(a,ListLength(lis)); (* 文字列をリストから配列にコピーします *)
FOR lis DO a[ListGetPos(lis)]:=lis[$Current]; END; (* リストの rid を取得します *) SetUnknown(lis);
戻りコード | 説明 |
ゼロ 以上 |
成功。リスト中の要素の数を戻します。 |
$Unknown | 負の戻りコードはありません。リスト引き数の評価中にエラーが起こると、ListLength は $Unknown を戻します。 |
現行ポインターをリスト中の次の位置へ移動します。
FUNCTION ListNext (REF lst: LIST OF ANY): INTEGER;
引き数名 | 説明 |
lst | 現行要素を前進させるリスト変数。 |
ListNext は、リスト内の現行要素ポインターを前進させるために使用することができます。次の要素が存在している場合には、ListNext は現行要素ポインターをその位置に移動し、その索引を戻します。そうでない場合には、ListNext は現行要素ポインターを未変更のままにして、負の 2 (-2) を戻します。
VARIABLES lis: LIST OF STRING;
ACTIONS lis:={'Tom','Dick','Harry'}: LIST OF STRING; (* リスト・ポインターは 1 から始まります - 'Tom' *) ListNext(lis); (* これで現行ポインターは 2 です - 'Dick' *) ListNext(lis); (* これで現行ポインターは 3 です - 'Harry' *) ListNext(lis); (* まだ 'Harry' ですが ListNext は -2 を戻しました *)
戻りコード | 説明 |
0 より大 | 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 より大 | 現行リスト位置 |
0 | リストが空です |
$UNKNOWN | LIST の引き数が無効の場合 |
ListSetPos
現行リスト・ポインターを直前の要素に移動します。
FUNCTION ListPrev (REF lst: LIST OF ANY): INTEGER;
引き数名 | 説明 |
lst | 現行要素を後退させるリスト変数。 |
ListPrev は、リスト全体を逆方向に移動するために使用します。現行索引が 2 以上の場合には、ListPrev は現行ポインターを直前の要素に移動し、その要素の索引を戻します。現行ポインターがリストの先頭になっている場合には、 ListPrev はそのポインターを未変更のままにして、値 -2 を戻します。
VARIABLES lis: LIST OF STRING;
ACTIONS (* リスト・ポインターは 1 から始まります - 'Tom' *) ListSetPos(lis,3); (* これで現行ポインターは 3 です - 'Harry' *) ListPrev(lis); (* これで現行ポインターは 2 です - 'Dick' *) ListPrev(lis); (* これで現行ポインターは 1 です - 'Tom' *) ListPrev(lis); (* まだ 'Tom' ですが ListPrev は -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
戻りコード | 説明 |
0 より大 | 関数が成功すると、リストの新規長さが戻されます。 |
-1 | 最初の引き数の正常な評価の障害 |
指定の要素を現行要素にします。
FUNCTION ListSetPos (REF lst: LIST OF ANY, VAL index:
INTEGER | $FIRST | $LAST): INTEGER;
引き数名 | 説明 |
lst | 現行ポインターを移動するリスト変数 |
index | 数値式あるいは記号 $FIRST または $LAST のいずれか一方 |
ListSetPos は、リストの現行ポインターの位置を変更するために使用することができます。これは、リスト変数および 1 〜現行リスト長の範囲の整数索引あるいは $FIRST (1 と同じ) または $LAST (ListLength (list) と同じ) を取ります。いずれの場合にも、現在位置の索引が戻されます。
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 は、指示したリストを昇順にソートします。レコードのリストが渡されると、最初のレコード・フィールドは 1 次 ソート・キーとして使用され、2 番目のフィールドは 2 次ソート・キーとなり、以下同様です。
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 (* テキスト・ファイルを文字列のリストに読み込みます *) FOpen(f,'DATA.TXT',$Read); FReadText(f,l); FClose(f); (* 配列の長さをリストと同じにします *) SetArrayLength(a,ListLength(l)); (* 文字列をリストから配列にコピーします *) FOR l DO a[ListGetPos(l)]:=l[$Current]; END; (* リストの rid を取得します *) SetUnknown(l);
戻りコード | 説明 |
0 より大きいか等しい | 配列の新規長さ。配列の長さはゼロに設定することができ、その場合には、戻り値はゼロです。 |
-1 | 不明の配列。 |
-2 | 不明のサイズ引き数。 |
-3 | メモリー不足。 |
ArrayLength
Tivoli Service Desk 6.0 Developer's Toolkit Script 言語解説書