Tivoli Service Desk 6.0 Developer's Toolkit Script 言語解説書

リストおよび配列操作

メイン・ページに戻る


ArrayLength

説明

現在割り振られている配列の長さを戻します。

構文

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


ListDelete

説明

リストからアイテムを削除します。

構文

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 索引が境界外です

次も参照してください


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

説明

1 つ以上の要素をリストに挿入します。

構文

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
 (* リスト・ポインターは 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 番目の引き数が不明でした。

次も参照してください


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
 (* テキスト・ファイルを文字列のリストに読み込みます *)
 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 を戻します。

次も参照してください


ListNext

説明

現行ポインターをリスト中の次の位置へ移動します。

構文

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 現行要素は最後の要素です。

次も参照してください


ListPop

説明

最初の要素をリストから除去し、それを結果として戻します。

構文

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 を戻します。

次も参照してください


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 より大 現行リスト位置
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
 (* リスト・ポインターは 1 から始まります - 'Tom' *)
 ListSetPos(lis,3);
 (* これで現行ポインターは 3 です - 'Harry' *)
 ListPrev(lis);
 (* これで現行ポインターは 2 です - 'Dick' *)
 ListPrev(lis);
 (* これで現行ポインターは 1 です - 'Tom' *)
 ListPrev(lis);
 (* まだ 'Tom' ですが ListPrev は -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

戻りコード

戻りコード 説明
0 より大 関数が成功すると、リストの新規長さが戻されます。
-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 (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


ListSort

説明

リストをソートします。

構文

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


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
 (* テキスト・ファイルを文字列のリストに読み込みます *)
 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 言語解説書

メイン・ページに戻る

著作権