Tivoli Service Desk 6.0 Developer's Toolkit Script 言語解説書
メイン・ページに戻る
プログラムを呼び出します。
FUNCTION SysCallProgram(VAL commandLine: STRING [VAL arg: STRING ... ]): INTEGER;
引き数名 | 説明 |
commandLine | 呼び出される実行可能プログラムの名前を含むストリング式。名前が修飾されていない場合には、PATH からプログラムが検索されます。 |
arg | 呼び出されるプログラムのコマンド行引き数。各引き数は、タイプ STRING でなければなりません。 |
SysCallProgram は、プログラムを開始するためにだけ使用されます。
KNOWLEDGEBASE Make;
ROUTINES PROCEDURE MakeKB( VAL argList: LIST OF STRING );
PRIVATE ROUTINES
EVENT ErrorEvent IS ACTIONS WHEN $Event IS $MsgLabel THEN SysCallProgram( 'aseedit.exe', $EventParm( 2, STRING ) ); END; END;
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING;
ACTIONS (* コマンド入力行にファイルが指定されていない場合に、プロンプトを表示 *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'File to parse?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength ( fileName )- 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* 「進行中」ウィンドウを表示 *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Parsing', $Helvetica, 14, BitOr($WinTitle, $WinBorder, $WinAutoPos,$WinSYsMenu )); WinWriteLN( whdl, fileName ); (* アプリケーション・ソフトウェア・スクリプト構文解析プログラムのセッション を作成します。セッションは目に見えない状態で作成されます。エラーのある IDE 形式ファイルが要求されました *) SysCallProgram('kp.exe', '/IDE', '/e', fileName.&:ERR', fileName); SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* エラーのあるファイルをテスト *) WinCreateHyperViewer( $Desktop, whdl, '', ErrorEvent, 0, 0, 0, 0, fileName & '.ERR', BitOr($WinTitle, $WinBorder, $WinAutoPos, $WinAutoSize, $WinSysMenu, $WinReSize )); SendMessage( whdl, $MsgOpenFile, fileName & '.ERR', fileName, $HyperNoWordWrap ); WinWait( whdl ); END; END; END;
戻りコード | 説明 |
1 | 成功 |
-2 | 不明の値 |
-3 | メモリー不足 |
新規セッションでプログラムを呼び出し元プログラムの子として開始します。
FUNCTION SysCreateSession(REF hdlSession: SESSION, VAL program, argList: STRING, VAL xLoc, yLoc, width, height, style: INTEGER): INTEGER;
注意: アプリケーションが終了すると、アプリケーションによって作成されたすべてのセッションが終了します
引き数名 | 説明 |
hdlSession | 新しく作成されたセッションのセッション・ハンドルが戻されます。セッションが作成されていない場合には、ハンドルは $Unknown に設定されます。 |
program | 実行するプログラムの名前。プログラムが PATH にない場合には、完全修飾名を指定しなければなりません。 |
argList | 呼び出されるプログラムのすべてのコマンド行引き数。 |
xLoc | 新規セッションの左上隅の X 座標。必ずしもすべてのプログラムが位置決めをサポートしているわけではありません。 |
yLoc | 新規セッションの左上隅の Y 座標。必ずしもすべてのプログラムが位置決めをサポートしているわけではありません。 |
width | 新規セッションの幅。必ずしもすべてのプログラムが位置決めをサポートしているわけではありません。 |
height | 新規セッションの高さ。必ずしもすべてのプログラムが位置決めをサポートしているわけではありません。 |
style | 新規セッションの動作をコントロールするスタイル・フラグ。次のフラグを結合して、このスタイルを作ることができます。
|
この関数が機能するには、引き数リストが知られていなければなりません。引き数がない場合には、長さが 0 のストリング ('') を渡さなければなりません。
注: $Unknown を渡さないでください。
OS/2 では、プログラムとして COMMAND.COM、引き数として /c win <progname> を指定することによって、全画面 Windows セッションを作成することができます。
OS/2 では、多くのプレゼンテーション・マネージャー・アプリケーションがその始動時にその独自のウィンドウ・サイズを設定します。この場合には、xLoc、yLoc、xLen、および yLen の各パラメーターは、無視されます。
xLoc、yLoc、xLen、および yLen のパラメーターは、Windows では使用されません。Windows では、これらのスタイルを $SessionAutoPosition とみなしてすべてのセッションが作成されます。
KNOWLEDGEBASE Make;
ROUTINES PROCEDURE MakeKB( VAL argList: LIST OF STRING );
PRIVATE ROUTINES
EVENT ErrorEvent IS ACTIONS WHEN $Event IS $MsgLabel THEN SysCallProgram( 'aseedit.exe', $EventParm( 2, STRING ) ); END; END;
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING;
ACTIONS (* コマンド入力行にファイルが指定されていない場合に、プロンプトを表示 *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'File to parse?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength (fileName) - 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* 「進行中」ウィンドウを表示 *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Parsing', $Helvetica, 14, BitOr($WinTitle, $WinBorder, $WinAutoPos,$WinSYsMenu )); WinWriteLN( whdl,fileName ); (* アプリケーション・ソフトウェア・スクリプト構文解析プログラムのセッション *) (* を作成します。セッションは目に見えない状態で作成されます。エラーのある *) (* IDE 形式ファイルが要求されました *) SysCreateSession( hdlsession, 'kp.exe','/IDE /e' & fileName & '.ERR ' & fileName, 0, 0, 0, 0, $SessionInvisible ); SysWaitSession( hdlSession );
(* 構文解析プログラムが完了した時に、「進行中」ウィンドウをクローズ *) SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* エラーのあるファイルをテスト *) WinCreateHyperViewer( $Desktop, whdl, '', ErrorEvent, 0, 0, 0, 0, fileName & '.ERR', BitOr($WinTitle, $WinBorder, $WinAutoPos, $WinAutoSize, $WinSysMenu, $WinReSize )); SendMessage( whdl, $MsgOpenFile, fileName & '.ERR', fileName, $HyperNoWordWrap ); WinWait( whdl ); END; END; END;
戻りコード | 説明 |
1 | 正常終了 |
-2 | 不明の値 |
-4 | セッションを作成できませんでした。 |
n ミリ秒間実行を休止させます。
FUNCTION SysDelay(VAL time: INTEGER): INTEGER;
引き数名 | 説明 |
time | 遅延期間 (ミリ秒) |
KNOWLEDGEBASE Tone;
ROUTINES PROCEDURE ToneExample;
PRIVATE ROUTINES PROCEDURE ToneExample IS
ACTIONS SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 300, 400 ); END;
戻りコード | 説明 |
1 | 正常終了 |
-2 | 不明の値 |
システム・クリップボードからストリングを取り出します。
FUNCTION SysGetClipboard(REF clipBoard: STRING): INTEGER;
引き数名 | 説明 |
clipBoard | システム・クリップボードの値を戻します。クリップボードにテキストがない場合には、$Unknown に設定されます。 |
KNOWLEDGEBASE Clip;
CONSTANTS MENU_REFRESH IS 101; MENU_EXIT IS 102;
ROUTINES PROCEDURE ClipView;
PRIVATE CONSTANTS menuList IS { '~File', '~Refresh', 'e~xit', '' }: LIST OF
STRING;
ROUTINES (* ******** EDITOR EVENT HANDLER ******** *) EVENT ClipboardEvent( REF clipBoard: STRING ) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar( $Handle, menuList ); SysGetClipboard( clipBoard ); WinWrite( $Handle, clipBoard ); ELSWHEN $MsgMenu THEN (* メニュー・メッセージ *) WHEN $MenuSelection IS MENU_REFRESH THEN SysGetClipboard( clipBoard ); WinCLear( $Handle ); WinWrite( $Handle, clipBoard ); ELSWHEN MENU_EXIT THEN SendMessage( $Handle, $MsgClose ); END; END; END;
PROCEDURE ClipView IS
VARIABLES whdl: WINDOW; result: INTEGER;
ACTIONS result := WinCreateScrollWindow( $Desktop, whdl, ClipboardEvent{''}, 0, 0, 0, 0, 'KML Clipboard viewer', '', 10, BitOr($WinBorder, $WinTitle, $WinResize, $WinSysMenu, $WinMenu, $WinAutoPos, $WinAutoSize, $WinVScroll, $WinHScroll, $WinTaskList )) IF result < 1 THEN WinMessageBox( $Desktop, 'Error', $mbok + $MBIconError, 'Open failed' & result ); END; WinWait( whdl ); END;
戻りコード | 説明 |
1 | 正常終了 |
0 | クリップボードが空です |
-3 | メモリー不足 |
-10 | クリップボードにアクセスするためのオペレーティング・システム呼び出しの 1 つが失敗しました |
参照されたコンテキスト・レコードのフィールドを現行操作環境についての情報で完成させます。
FUNCTION SysGetContext (REF context: $SystemContext): INTEGER;
引き数名 | 説明 |
context | タイプ $SystemContext の変数 |
$SystemContext は、知識ベース kml.kb で宣言された RECORD タイプです。 $SystemContext の宣言は次の通りです。
$SystemContext IS RECORD operatingSystem: String; ASEVersion: String; VendorOSName: String: VendorOSVersion: String; FreeMemory: Integer: FreeResources: Integer: NLSInfo: $SystemNlsInfo; END;
$SystemContext で使用される各フィールドの説明は次の通りです。
フィールド | 説明 |
operatingSystem | Windows、OS/2、または UNIX。 |
ASEVersion | 現在 5.0。 |
VendorOSName | ワークステーションのオペレーティング・システムのベンダーのフルネーム。このフィールドは、$SystemContext operatingSystem フィールドと異なり、識別子の代わりに 'Microsoft Windows 95' などオペレーティング・システムの実際の名前を含みます。 |
VendorOSVersion | ワークステーションのオペレーティング・システムのベンダーのバージョン番号。 以下の場合には、このフィールドが不明になる可能性があります。
|
FreeMemory | SysGetContext 呼び出しが行われた時点にオペレーティング・システムで使用可能な空きメモリー (物理と仮想の両方) の現在の見積容量。 戻される値は、キロバイト (KB) 単位で表されます。 |
FreeResources | このフィールドには、SysGetContext 呼び出しが行われた時点にオペレーティング・システムで使用可能な空きリソースの現在の見積容量が含まれます。オペレーティング・システムがこの概念をサポートしない場合には (OS/2 の場合にはこれが該当します)、このフィールドが不明になる可能性があります。 |
NlsInfo | 各国語サポート情報。下の $SystemNlsInfo レコードの説明を参照してください。 |
SysGetContext によって戻されるレコードには次の各国語サポート (NLS) 情報が含まれます。
$SystemNlsInfo IS RECORD CountryCode: Integer; CurrencySymbol: String; CurrencyBefore: Boolean; DateFourDigitYear: Boolean; DateOrdering: String; DateSeparator: String; DecimalSeparator: String; DecimalLeadingZero: Boolean; NumCurrencyDecimalDigits: Integer; NumCurrencyExtraSpaces: Integer; NumericGroupSeparator: String; NumRealDecimalDigits: Integer; TimeSeparator: String;
フィールド | 説明 |
CountryCode | ホスト・マシンの国別コード。 |
CurrencyBefore | 数値の前または後に通貨記号が表示されるかどうか。 TRUE - 通貨記号は数値の前におかれます。 FALSE - 通貨記号は数値の後におかれます。 |
CurrencySymbol | ホスト・マシンの通貨記号 |
DateFourDigitYear | 固有日付形式が 2 桁であるか、それとも 4 桁であるか。 TRUE = 日付は 1999 として形式設定されます FALSE = 日付は 99 として形式設定されます |
DateOrdering | MM/DD/YY のような書式制御ストリング。 |
DateSeparator | 日付の日、月、および年の値を区切るために使用される文字。 |
DecimalSeparator | 正数部と小数部を区切るために使用される文字。 |
DecimalLeadingZero | 1 より小さい 10 進数が先行ゼロを必要とするかどうか (たとえば 0.123 か .123) |
IntlCurrencySymbol | 正しい文字が常に使用可能であるとは限らない場所で国際的に使用される通過記号 |
LocaleId | ホスト・マシンの現在の地域。 |
NumCurrencyDecimalDigit | 小数点の左側に一般的に使用される桁数 |
NumCurrencyExtraSpaces | 通貨記号と数値の間に挿入されるスペース数 |
NumericGroupSeparator | 大きな数字の桁のグループをまとめるために使用される文字 (言い換えると 3 桁ごとの区切り文字) |
NumRealDecimalDigits | 実数を示す時に表示される桁数 (たとえば、3.14159 または 3.14) |
TimeSeparator | 時分秒を区切るために使用される文字 |
この関数によって使用される $SystemContext RECORD には、GMTBias という名前の新規フィールドがあります。
これは、現地時間と同時刻の GMT 時間との時差を
秒数で示したものです。この値は通常、ホストのオペレーティング・システムから取り出されますが、SysSetGMTDiff を使用して手操作で設定することもできます。
このダイアログ・ボックスの「テキスト・ボックス」ページには、「GMT との間で変換」というラベルのついた新規チェック・ボックスが含まれています。このボックスは、時刻または日付パターンを含む入力フィールドの場合にのみチェックすることができます。このボックスをチェックすると、提供された時間または日付を Tivoli Service Desk Developer's Toolkit が自動的に地方時間に合わせるようにしたいということを示すことができます (SysLocalizeTime を参照)。
このダイアログ・ボックスの「欄」タブには、「GMT との間で変換」というラベルのついた新規チェック・ボックスが含まれています。このボックスは、MCLB の各欄に対して個別に設定することができます。タイプ DATE または TIME の値を含むことになる欄にだけこれを設定してください。
入力フィールドおよび MCLB 欄 (前に説明) の「GMT との間で変換」チェック・ボックスを使用する時には、変換が行えるように、
簡単な命名規則を使用するように心掛ける必要があります。
GMT 変換用にマークされた時刻フィールドのそれぞれに対応する日付フィールドもマークしなければなりません。これら 2 つのフィールドは、命名規則を使用して相互に関連付けなければなりません (詳細については、SysLocalizeTime と SysGlobalizeTime
の説明を参照してください。
時刻フィールドおよび日付フィールドは、それぞれ "_TIME" と "_DATE" で終わるコントロール名をもつ必要があります。名前の先行する他の部分は、すべて同じでなければなりません。
以下に幾つか例を示してあります。
時刻フィールド・ 日付フィールド・
コントロール名 コントロール名 妥当性
----------------------- ----------------------- --------
START_TIME START_DATE (正)
MY_BIRTH_TIME MY_BIRTH_DATE (正)
MYBIRTHTIME MYBIRTHDATE (誤)
THE_TIME_ENDS THE_DATE_ENDS (誤)
2 つのフィールドが正しく対になっていない場合には、変換が行われないことがあります。
戻りコード | 説明 |
1 | 正常終了 |
-2 | コンテキスト・パラメーターに無効な参照が含まれています |
SysGetEnvironment 関数は、オペレーティング・システムによって環境リストが提供されていれば、そのリストから指定のキーに一致するストリングを検索します。キーが見つかると、SysGetEnvironment は、そのキーに関連したストリングを戻します。
FUNCTION SysGetEnvironment (VAL key: STRING): STRING;
引き数名 | 説明 |
key | 検索するキー |
環境リストに指定のキーと一致する項目が含まれていない場合には、$Unknown が戻されます。
IF UNKNOWN (fileName := SysGetEnvironment ('CONFIG')) THEN CreateDefaultConfigFile;\ END; ConfigFile :=FOpen (fileName);
キーが見つかると、SysGetEnvironment は、そのキーに関連したストリングを戻します。
システムですべてのアクティブ・タスクのリストを照会します。
FUNCTION SysGetTaskList(REF taskList: LIST OF $TASKRECORD): INTEGER;
注: システムのセッション・コマンドは、呼び出し元のセッションによって作成されたセッションにのみ使用することができます
OS/2 では、異なるプロセスに属するウィンドウに送られるメッセージについて制限が設けられています。 こうした制限の詳細については、OS/2 システムのプログラミング資料を参照してください。
引き数名 | 説明 |
taskList | この引き数は、システム定義のレコード・タイプ $TASKRECORD のリスト変数でなければなりません。
$TASKRECORD は、システムの知識ベース kml.kb 中に次のように定義されています。$TASKRECORD IS title: STRING; hWindow: WINDOW; hSession: SESSION; hProcess: PROCESS; END; |
SysGetTaskList は、TSD Script セッションでないセッションを含め、オープンされている各セッションからのタスク・レコードを戻します。各タスク・レコードには、その対応するセッションの最上位ウィンドウからのタイトル・テキストが含まれています。
KNOWLEDGEBASE Tasks;
ROUTINES FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN;
PRIVATE ROUTINES
FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN IS VARIABLES taskList: LIST OF $TASKRECORD; (* $TASKRECORD はシステム定義です *)
ACTIONS IF SysGetTaskList( taskList ) <= 0 THEN EXIT FALSE; END; FOR taskList DO (* リストからタスク名を検索 *) IF taskList[ $CURRENT ].title = taskName THEN SysSelectTask (taskList[ $CURRENT ] ); EXIT TRUE; END; END; EXIT FALSE; END;
戻りコード | 説明 |
いずれか | TSD Script セッションでないセッションを含め、オープンされている各セッションからのタスク・レコードを戻します。各タスク・レコードには、その対応するセッションの最上位ウィンドウからのタイトル・テキストが含まれています。OS/2 と Windows の間の相違については、注を参照してください。 |
-2 | 不明な値。 |
-3 | メモリー不足。 |
新規コマンド・プロセッサー・セッションを作成します。
FUNCTION SysOSShell(VAL commandLine: STRING): INTEGER;
OS/2 では、SysOSShell によって開始されたシェルは、TSD Script アプリケーション (親セッション) が終了すると終了します。
引き数名 | 説明 |
commandLine | コマンド・プロセッサーによって実行されるコマンド。空ストリングの場合には、新規コマンド・プロンプトが作成されます。 |
OS/2 では、SysOSShell は、COMSPEC 環境変数によって指定されたシェルを実行するセッションを開始します。(これは通常、OS/2 コマンド・プロセッサー cmd.exe です。) SysOSShell への引き数は、コマンド行としてシェルに渡されます。SysOSShell によって開始されたシェルは、呼び出し元プロセスとは非同期に実行されます。
UNIX では、 引き数として与えられたコマンドは、次の 1 つとして直接に実行されます。
SysOSShell は、/usr/bin/X11/xterm プログラム (Sun マシンの場合には、 /usr/openwin/bin/xterm) を起動します。これは、PATH 環境で見つけることができるプログラムまたは完全修飾パスをもつプログラムへの SAI_XTERM 変数を設定することによって指定変更することができます。 (SAI_XTERM は、ユーザーの環境にない限り、SysOSShell を呼び出す TSD Script プログラムを実行することはできません。)
Windows では、SysOSShell は、次のことを行います。
コマンド行からシェルを実行するために使用される /C と /K という 2 つの引き数があります。 /C はコマンドを実行して、シェルをクローズします。/K はコマンドを実行しますが、シェルをオープン状態のままにしておきます。これらの引き数は、UNIX には適用できません。
KNOWLEDGEBASE OSShell;
ROUTINES PROCEDURE OSShellExample;
PRIVATE ROUTINES
PROCEDURE OSShellExample IS
ACTIONS (* Windows または OS/2 の外部コマンドを実行するには、 /C または /K が必要です。*) SysOSShell( '/C aseedit' ); (* 親セッションが終了すると、子セッションが終了します *) WinMessageBox( $Desktop, 'Cancel', $mbok, '' ); END;
戻りコード | 説明 |
1 | 正常終了 |
-2 | 不明の値 |
cmd.exe の詳細については、OS/2 の資料を参照してください。
COMMAND.COM の詳細については、DOS のヘルプ・システムを参照してください。
セッションを選択し、それにフォーカスをおきます。
FUNCTION SysSelectSession(VAL hdlSession: SESSION): INTEGER;
引き数名 | 説明 |
hdlSession | 選択されたセッションのハンドル |
OS/2 セッションは、$WinTaskList スタイルのあるウィンドウがない限り、選択することはできません。タスク・リストに表示されないセッションは、選択することができません。 セッションは、呼び出し元のセッションによって作成されていなければなりません。UNIX では、この関数は、セッションの選択を試みることなく 1 (成功) を戻すだけです。
KNOWLEDGEBASE Make2;
ROUTINES PROCEDURE MakeKB( VAL argList: LIST OF STRING );
PRIVATE VARIABLES hdlSessionEdit: SESSION;
ROUTINES
EVENT ErrorEvent IS ACTIONS WHEN $Event IS $MsgLabel THEN IF SysSelectSession( hdlSessionEdit ) < 1 THEN SysCreateSession( hdlSessionEdit, 'vi.exe', $EventParm(2, STRING ), 0, 0, 0, 0, $SessionAutoPosition ); END; END; END;
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING; ACTIONS (* コマンド入力行にファイルが指定されていない場合に、プロンプトを表示 *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'File to parse?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength (fileName) - 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* 「進行中」ウィンドウを表示 *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Parsing', $Helvetica, 14, BitOr($WinTitle, $WinBorder, $WinAutoPos, $WinSYsMenu )); WinWrIteLN( whdl, fileName ); (* アプリケーション・ソフトウェア・スクリプト構文解析プログラムのセッション *) (* を作成します。セッションは目に見えない状態で作成されます。エラーのある *) (* IDE 形式ファイルが要求されました *) SysCreateSession( hdlSession, 'kp.exe', '/IDE /e' & fileName & '.ERR ' & fileName, 0, 0, 0, 0, $SessionInvisible ); SysWaitSession( hdlSession ); (* 構文解析プログラムが完了した時に、「進行中」ウィンドウをクローズ *) SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* エラーのあるファイルをテスト *) WinCreateHyperViewer( $Desktop, whdl, '', ErrorEvent, 0, 0, 0, 0, fileName & '.ERR', BitOr($WinTitle, $WinBorder, $WinAutoPos, $WinAutoSize, $WinSysMenu, $WinReSize )); SendMessage( whdl, $MsgOpenFile, fileName & '.ERR', fileName, $HyperNoWordWrap ); WinWait( whdl ); END; END; (* FOR の終わり *) END; (* KB 作成の終わり *)
戻りコード | 説明 |
1 | 正常終了。 |
-2 | 不明な値。 |
-369 | セッション・ハンドルが有効なセッションを参照していません。 |
-460 | 呼び出し元プロセスがセッションの親でありません。セッションは、それを作成したプロセスのみが選択することができます。 |
選択されたタスクをアクティブ化します。
FUNCTION SysSelectTask(VAL task: $TASKRECORD): INTEGER;
引き数名 | 説明 |
task | この引き数は、システム定義のレコード・タイプ $TASKRECORD でなければなりません。
$TASKRECORD は、システムの知識ベース kml.kb 中に次のように定義されています。$TASKRECORD IS title: STRING;hWindow: WINDOW; hSession: SESSION; hProcess: PROCESS; END; レコードのフィールドは、SysGetTaskList によって設定されていなければなりません。 |
KNOWLEDGEBASE Tasks;
ROUTINES FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN;
PRIVATE ROUTINES
FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN IS VARIABLES taskList: LIST OF $TASKRECORD; (* $TASKRECORD はシステム定義です *)
ACTIONS IF SysGetTaskList( taskList ) <= 0 THEN EXIT FALSE; END; FOR taskList DO (* リストからタスク名を検索 *) IF taskList[ $CURRENT ].title = taskName THEN SysSelectTask (taskList[ $CURRENT ] ); EXIT TRUE; END; END; EXIT FALSE; END;
戻りコード | 説明 |
1 | 正常終了。 |
-2 | 不明な値。 |
-10 | 関数の完了に必要なオペレーティング・システム・サービスの要求が失敗しました。ステートメントに対する引き数として値が無効であるか、あるいはシステム・リソースの制限が原因として考えられます。 |
システム・クリップボードのストリング値を設定します。
FUNCTION SysSetClipboard(VAL clipBoard: STRING): INTEGER;
引き数名 | 説明 |
clipBoard | クリップボードの前の値に置き換わる新規値。 |
KNOWLEDGEBASE SetClip;
ROUTINES PROCEDURE SetClipBoard( VAL clipBoard: LIST OF STRING );
PRIVATE ROUTINES PROCEDURE SetClipBoard( VAL clipBoard: LIST OF STRING ) IS VARIABLES clipBoardString: STRING;
ACTIONS clipBoardString := ''; FOR clipBoard DO clipBoardString := clipBoardString & ' ' & clipBoard[ $CURRENT ]; END; SysSetClipboard( clipBoardString ); END;
戻りコード | 説明 |
1 | 正常終了 |
-2 | 不明の値 |
-3 | メモリー不足 |
-10 | クリップボードへのアクセスのために必要なオペレーティング・システム操作の 1 つが失敗しました |
オペレーティング・システムによって提供される環境リストに項目を追加 (あるいはその中の項目を変更) して、新規値があればそれが指定のキーに関連付けられるようにします。
FUNCTION SysSetEnvironment (VAL key: STRING [, VAL newValue: STRING]): INTEGER;
DOS および OS/2 の場合には、環境リストに渡されるストリングのコピーは作成されません。その代わりに、環境リストに渡されるストリングが直接に使用されます。これは、メモリーの使用に関して次の 2 つの結論を導きます。
引き数名 | 説明 |
key | 環境リスト中のキー・ストリング |
newValue | キーに関連した新規ストリング。 |
SysSetEnvironment 関数は、新規値を環境リスト中の指定のキーに関連付けるか、あるいは newValue 引き数が除外されている場合には、指定のキーおよびその関連値を除去します。
環境リストの正確の性質は、オペレーティング・システムによります。しかし、一般的には、環境リストは親プロセスから子プロセスにコピーされ、子プロセスが終了すると、破棄されます。
SysSetEnvironment を介して設定される環境変数は、新規値を戻し、呼び出し SysCallProgram、SysCreateSession、および SysOSShell よって開始される子プロセスにコピーされるようになっていなければなりません。この変数は、Tivoli Service Desk Developer's Toolkit 実行時システムが始動された環境にコピーし戻されることはありません。
注: newValue が提供されていない場合には、指定される環境変数は "unset" となります。
IF SQLSelectInto ('SELECT ICONS FROM DIRECTORIES', iconPATHPATHPATHPATH) >= 1 AND StrPos (globalPath := SysGetEnvironment ('PATH'), iconPath) = 0 THEN SysSetEnvironment ('PATH', globalPath & ';' & iconPath); END;
戻りコード | 説明 |
1 | 正常終了 |
-10 | オペレーティング・システムの呼び出しが失敗しました |
通常、Tivoli Service Desk Developer's Toolkit 内部プログラムは、ホスト・オペレーティング・システムを照会して、地方時とグリニッジ標準時 (GMT) の間の時差を入手します。この関数は、時差を手操作で設定するか、現地値を指定変更するために使用することができます。
FUNCTION SysSetGMTDiff( VAL NewDiff : Integer [, $Seconds | $Minutes | $Hours]) : INTEGER;
引き数 | 説明 |
NewDiff | これは、GMT と地方時の間の新規時差です。指定された数値は、地方時に加算され、GMT 時間を作ります。たとえば、ニューヨークのデフォルトの GMT 時差は +5 時間です。カイロの GMT 時差は -2 時間です。引き数に有効な範囲は、-12 時間 <= NewDiff <= +12 時間です。 |
Units | 時差を指定するために使用される単位。 |
戻りコード | 説明 |
1 | 成功 |
-1 | 無効な時差が指定されました。 |
KNOWLEDGEBASE GMTTest; ROUTINES
Procedure Proc1;
PRIVATE ROUTINES
Procedure Proc1 IS
VARIABLES whdl : Window; r : $SystemContext; t : TIME; d : DATE; nRC : Integer;
ACTIONS WinCreateScrollWindow($Desktop, whdl, $NullHandler, 15,10,80,20, 'Stuff', $SystemMonospaced, 10, $WinDefaultStyle); --GMT 偏差を奇妙なものに設定します。これは、モスクワの --GMT 時間に相当します... nRC := SysSetGMTDiff(-3, $hours); WinWriteLn(whdl, 'SysSetGMTDiff returned: ' & nRC); --現在 -3 時間 (ただし秒数で指定) となっている GMT 偏差を取り出し、 --表示します SysGetContext(r); WinWriteLn(whdl, 'GMT Bias = ' & r.GMTBias); --この時刻と日付はランダムに取り出しました t := {01,07,07}:TIME; d := {07,07,1993}:DATE; WinWriteLn(whdl, 'Before globalization: ' & d & ' ' & t ); --この時刻を世界標準化して、表示します SysGlobalizeTime(t, d); WinWriteLn(whdl, 'After globalization: ' & d & ' ' & t ); --もう一度この時刻を地域化して、表示します (「世界標準化」の前 --と同じになっているはずです) SysLocalizeTime(t, d); WinWriteLn(whdl, 'After localization: ' & d & ' ' & t ); WinWait( whdl ); END;
TSD Script インタープリターが正常終了の場合に UNIX コマンド・シェルまたは DOS ウィンドウに戻す整数値を設定します。SysSetReturnCode が使用されなかった場合には、インタープリターは 1 を戻します。
FUNCTION SysSetReturnCode(VAL Code: INTEGER]):INTEGER;
注意: TSD Script インタープリターは、致命的エラーを見つけ、終了すると、SysSetReturnCode によって設定された値を指定変更します
引き数名 | 説明 |
code | コマンド・シェルまたは DOS ウィンドウに戻すコード |
この関数が複数回呼び出された場合には、最後の呼び出しによって渡された値が使用されます。
注: この関数と TSD Script の RETURN ステートメントを混同しないでください。後者は、TSD Script 関数によって戻される値を設定するものです
PROCEDURE DeepThought IS ACTIONS SysDelay(1000000); SysSetReturnCode(42); END;
戻りコード | 説明 |
1 | 正常終了 |
-10 | オペレーティング・システムの呼び出しが失敗しました |
アクティブ・セッションを停止します。
FUNCTION SysStopSession(VAL hdlSession: SESSION): INTEGER;
引き数名 | 説明 |
hdlSession | 停止されるセッションのハンドル。セッションは、呼び出し元のセッションが開始しなければなりません。 |
KNOWLEDGEBASE Make;
ROUTINES PROCEDURE SessionExp( VAL argList: LIST OF STRING );
PRIVATE ROUTINES
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING;
ACTIONS SysCreateSession( hdlSession, argList[1], argList[2], 0, 0, 0, 0, $SessionAutoPos ); SysStopSession( hdlSession ); END;
戻りコード | 説明 |
1 | 正常終了 |
-2 | 不明の値 |
-369 | ハンドルは、有効なセッションを参照していません。セッションがもう存在していない可能性があります。 |
-460 | 呼び出し元プロセスがセッションの親でありません。プロセスは、それが作成したセッションしか停止することができません。 |
システム・スピーカーから音を出します。
FUNCTION SysTone(VAL frequency: INTEGER, VAL duration: INTEGER ): INTEGER;
引き数名 | 説明 |
frequency | 鳴る音の周波数 (ヘルツ) |
duration | 音が鳴っている時間 (ミリ秒) |
Windows では、継続時間と周波数のデフォルトはシステム・サウンドです。
KNOWLEDGEBASE Tone;
ROUTINES PROCEDURE ToneExample;
PRIVATE ROUTINES PROCEDURE ToneExample IS
ACTIONS SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 440, 100 ); SysDelay( 50 ); SysTone( 300, 400 ); END;
戻りコード | 説明 |
1 | 正常終了 |
-2 | 不明の値 |
セッションが終了するのを待機します。
FUNCTION SysWaitSession(VAL hdlSession: SESSION): INTEGER;
注意: セッション待機スタック これは、待機中のセッションが終了する場合であっても、先行する呼び出しで戻る前に、SysWaitSession に対する最後の呼び出しで戻らなければないということを意味します。
引き数名 | 説明 |
hdlSession | 待機するセッションのハンドル。セッションは、呼び出し元のプロセスが開始しなければなりません。 |
KNOWLEDGEBASE Make;
ROUTINES PROCEDURE MakeKB( VAL argList: LIST OF STRING );
PRIVATE ROUTINES
EVENT ErrorEvent IS ACTIONS WHEN $Event IS $MsgLabel THEN SysCallProgram( 'aseedit.exe', $EventParm( 2, STRING ) ); END; END;
PROCEDURE MakeKB( VAL argList: LIST OF STRING ) IS VARIABLES whdl: WINDOW; hdlSession: SESSION; fileName: STRING;
ACTIONS (* コマンド入力行にファイルが指定されていない場合に、プロンプトを表示 *) IF ListLength( argList ) = 0 THEN IF WinFileDialog( $Desktop, fileName, '*.kb', 0, 0, 'File to parse?', $FileDlgCenter + $FileDlgOpen ) <1 THEN Exit; END; fileName := StrDelete( fileName, StrLength( fileName ) - 2, 3 ); ListInsert( argList, fileName ); END; FOR argList DO fileName := argList[ $CURRENT ]; (* 「進行中」ウィンドウを表示 *) WinCreateScrollWindow( $Desktop, whdl, $NullHandler, 0, 0, 30, 4, 'Parsing', $Helvetica, 14, BitOr($WinTitle, $WinBorder, $WinAutoPos, $WinSYsMenu )); WinWriteLN( whdl, fileName ); (* アプリケーション・ソフトウェア・スクリプト構文解析プログラムのセッション *) (* を作成します。セッションは目に見えない状態で作成されます。エラーのある *) (* IDE 形式ファイルが要求されました *) SysCreateSession( hdlSession, 'kp.exe', '/IDE /e' & fileName & '.ERR ' & fileName, 0, 0, 0, 0, $SessionInvisible ); SysWaitSession( hdlSession ); (* 構文解析プログラムが完了した時に、「進行中」ウィンドウをクローズ *) SendMessage( whdl, $MsgClose ); IF FExists( fileName & '.ERR' ) THEN (* エラーのあるファイルをテスト *) WinCreateHyperViewer( $Desktop, whdl, '', ErrorEvent, 0, 0, 0, 0, fileName & '.ERR', BitOr($WinTitle, $WinBorder, $WinAutoPos, $WinAutoSize, $WinSysMenu, (* 目に見えない状態で 作成。エラーのある IDE 形式ファイル が要求されました *) $WinReSize )); SendMessage( whdl, $MsgOpenFile, fileName & '.ERR', fileName, $HyperNoWordWrap ); WinWait( whdl ); END; END; (* FOR の終わり *) END; (* KB 作成の終わり *)
戻りコード | 説明 |
1 | 正常終了 |
-2 | 不明の値 |
待ち行列中のすべてのメッセージ がディスパッチされるまで、現行スレッドの実行が防止されます。
FUNCTION SysYield
アプリケーションのユーザー・インターフェースがプロセッサーの内包機能によって生成されたメッセージを反映する必要がある場合に、SysYield が役立ちます。
地方時とみなされる時間タイプの変数を与えると、この関数は、それを同時刻の GMT 時間に調整します。調整が日付に影響する場合には、日付も指定しなければなりません。
FUNCTION SysGlobalizeTime(REF t : TIME, REF d : DATE) : INTEGER;
引き数 | 説明 |
t | これは、世界標準化される時刻です。 |
d | この値は、指定しなければなりません。指定の時刻を調整すると、翌日 (または前日) にまたがる場合には、 日付がこれを反映するように調整されます。日付 / 時刻の対では「常に」SysGlobalizeTime を使用してください。 |
戻りコード | 説明 |
1 | 成功 |
-1 | 不明の日付または時刻が指定されました |
SysSetGMTDiff の例を参照してください。
GMT 時とみなされる時間タイプの変数を与えると、この関数は、それを地方時に調整します。調整が日付に影響する場合には、日付も指定しなければなりません。
FUNCTION SysLocalizeTime(REF t : TIME, REF d : DATE) : INTEGER;
引き数 | 説明 |
t | これは、地域化される時刻です。 |
d | この値は、指定しなければなりません。指定の時刻を調整すると、翌日 (または前日) にまたがる場合には、日付がこれを反映するように調整されます。日付 / 時刻の対では常に SysLocalizeTime を使用してください。 |
戻りコード | 説明 |
1 | 成功 |
-1 | 不明の日付または時刻が指定されました |
SysSetGMTDiff の例を参照してください。
Tivoli Service Desk 6.0 Developer's Toolkit Script 言語解説書