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

操作系统接口

返回主页


SysCallProgram

说明

调用程序。

语法

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 no file is specified on the command line prompt for one *)
 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 ];
 (* Display Progress window *)
 WinCreateScrollWindow( $Desktop, whdl, $NullHandler,
                       0, 0, 30, 4, 'Parsing', $Helvetica, 14,
                    BitOr($WinTitle, $WinBorder,
                       $WinAutoPos,$WinSYsMenu ));
 WinWriteLN( whdl, fileName );
(* Create a session for the Application Software-Script Parser. The session is
 created invisible. An error file in the IDE format is
 requested *)
 SysCallProgram('kp.exe', '/IDE', '/e', fileName.&:ERR',
                fileName);
  SendMessage( whdl, $MsgClose );
 IF FExists( fileName & '.ERR' ) THEN (* Test for error file *)
 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 内存不足

另见


SysCreateSession

说明

在新会话中启动程序,该新会话是正调用的会话的子会话。

语法

FUNCTION SysCreateSession(REF hdlSession: SESSION,
                          VAL program, argList: STRING,
                          VAL xLoc, yLoc, width,
                          height, style: INTEGER): INTEGER;

注意:终止应用程序时,将终止该应用程序创建的所有会话。

自变量说明

自变量名称 说明
hdlSession 返回新建会话的会话句柄。如果没有创建会话,将把句柄设置为 $Unknown
program 要执行的程序的名称。如果该程序不在 PATH 中,必须指定一个全限定的名称。
argList 被调用程序的所有命令行自变量。
xLoc 新会话左上角的横坐标。不是所有的程序都支持定位。
yLoc 新会话左上角的纵坐标。不是所有的程序都支持定位。
width 新会话的宽度。不是所有的程序都支持定位。
height 新会话的高度。不是所有的程序都支持定位。
style 控制新会话行为的样式标志。可以组合下列任何标志来形成样式:
  • $SessionBackground - $SessionBackground 在背景中进行创建。它不能在创建时接收焦点。
  • $SessionInvisible - $SessionInvisible 以不可视方式进行创建。
  • $SessionAutoPosition - $SessionAutoPosition 在屏幕上定位会话,而忽略大小和位置参数。

要使该函数运行,必须知道自变量表。如果没有自变量,应当传送一个长度为 0 的字符串('')。

注:请不要传入 $Unknown

在 OS/2 中,通过将 COMMAND.COM 指定为程序和将 /c win <progname> 指定为自变量,可以创建全屏幕 Windows 会话。

调整窗口大小的参数

在 OS/2 中,许多显示管理器应用程序在启动时自行设置窗口大小。在这种情况下,将忽略 xLoc、yLoc、xLen 和 yLen 参数。

在 Windows 中不使用 xLoc、yLoc、xLen 和 yLen 参数。在 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 no file is specified on the command line prompt for one *)
 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 ];
 (* Display Progress window *)
 WinCreateScrollWindow( $Desktop, whdl, $NullHandler,
                       0, 0, 30, 4,
                       'Parsing', $Helvetica, 14,
                    BitOr($WinTitle, $WinBorder,
                       $WinAutoPos,$WinSYsMenu ));
 WinWriteLN( whdl,fileName );
(* Create a session for the Application Software-Script parser. The session is *)
(* created invisibly. An error file in the IDE format *)
(* is requested *)
SysCreateSession( hdlsession, 'kp.exe','/IDE /e' &
                 fileName & '.ERR ' & fileName,
                  0, 0, 0, 0, $SessionInvisible );
 SysWaitSession( hdlSession ); 
(* Close progress window when parser is finished *)
  SendMessage( whdl, $MsgClose );
 IF FExists( fileName & '.ERR' ) THEN
(* Test for error file *)
 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 不能创建会话

另见


SysDelay

说明

使执行暂停 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 未知值

另见


SysGetClipboard

说明

从系统剪贴板上获取字符串。

语法

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 (* Menu Message *)
 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 访问剪贴板的操作系统调用之一失败

另见


SysGetContext

说明

用当前操作环境的有关信息来填充被引用的上下文记录的字段。

语法

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 供应商的工作站操作系统版本号。如果发生下列情况之一,该字段有可能是未知的:
  • 对版本号的确定不(像在 Microsoft Windows NT 中那样)具有足够的准确性。
  • 操作系统的版本号是操作系统名的一部分。
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 本地日期格式是用两位还是四位年份。

TRUE = 日期设置成像 1999 这样的格式

FALSE = 日期设置成像 99 这样的格式

DateOrdering 类似 MM/DD/YY 的格式字符串
DateSeparator 用于分隔日期中日、月和年的值的字符
DecimalSeparator 用于将数字与小数部分分隔开的字符
DecimalLeadingZero 在十进制数值小于 1 时是否在前加零(例如,0.123 或 .123)
IntlCurrencySymbol 在不能始终得到合适字符的地方使用的国际货币符号
LocaleId 主机的当前语言环境
NumCurrencyDecimalDigit 通常用于小数点左面的数字位数
NumCurrencyExtraSpaces 在货币符号和数字之间插入的空格数
NumericGroupSeparator 用于对大数字中的数位进行分组的字符(即,千位分隔符)
NumRealDecimalDigits 显示实数时显示的数字位数(例如,3.14159 或 3.14)
TimeSeparator 用于分隔小时、分钟和秒钟的字符

该函数使用的 $SystemContext RECORD 具有一个名为 GMTBias 的新字段。这是本地时间和相应的
GMT 时间相差的秒数。通常是从主机操作系统上检索该值,但也可以使用 SysSetGMTDiff 来手动设置它。

输入字段属性

该对话框的文本框页包括一个标记为“转换到/自 GMT”的新复选框。只能为包含 Time 或 Date 模式的输入字段选择该框。选择该框,表示要 Tivoli 服务台开发工具包自动地本地化(请参见 SysLocalizeTime)提供的时间和日期。

多栏列表框属性

该对话框的“栏”标签包括一个标记为“转换到/自 GMT”的新复选框。可以分别为
MCLB 中的各个栏单独设置该框。只能为将要包含 DATE 或 TIME 类型值的栏进行这种设置。

对控件中的日期/时间字段进行配对

将“转换到/自 GMT”复选框用于输入字段和 MCLB 栏时(如上文所述),必须遵守一个简单的
命名约定才能进行这种转换。

对于每个已作 GMT 转换标记的时间字段,必须也标记相应的日期字段。必须使用命名约定来使这两个字段互相关联(其他信息,请参见 SysLocalizeTimeSysGlobalizeTime
文档)。

时间和日期字段必须分别具有以 “_TIME” 和 “_DATE” 结束的控件名。该名称的所有其他前置部分必须是完全相同的。现举例如下:

时间字段控件名 日期字段控件名 有效性
----------------------- ----------------------- --------
START_TIME START_DATE 正确
MY_BIRTH_TIME MY_BIRTH_DATE 正确
MYBIRTHTIME MYBIRTHDATE 不正确
THE_TIME_ENDS THE_DATE_ENDS 不正确

如果不正确地配对这两个字段,将不能进行转换。

另见

返回码 说明
1 成功完成
-2 上下文参数包含无效的引用

SysGetEnvironment

说明

SysGetEnvironment 函数在操作系统提供的环境列表中搜索与给定关键字相匹配的字符串。找到关键字后,SysGetEnvironment 返回与该关键字相关联的字符串。

语法

FUNCTION SysGetEnvironment (VAL key: STRING): STRING;

自变量说明

自变量名称 说明
key 要搜索的关键字

注释

如果环境列表不包含与给定关键字相匹配的条目,将返回 $Unknown

实例

IF UNKNOWN (fileName := SysGetEnvironment ('CONFIG')) THEN
            CreateDefaultConfigFile;\
  END;
ConfigFile :=FOpen (fileName);

返回码

找到关键字后,SysGetEnvironment 返回与该关键字相关联的字符串。

另见

SysSetEnvironment


SysGetTaskList

说明

在系统中查询所有活动任务的列表。

语法

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 脚本会话的会话。每个任务记录包含来自其相应会话的顶级窗口的标题文本。

实例

KNOWLEDGEBASE Tasks;
ROUTINES
 FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN;
PRIVATE
ROUTINES
FUNCTION SelectTask( VAL taskName: STRING ): BOOLEAN IS
VARIABLES
 taskList: LIST OF $TASKRECORD; 
(* $TASKRECORD is system-
 defined *)
ACTIONS
 IF SysGetTaskList( taskList ) <= 0 THEN EXIT FALSE;
  END;
 FOR taskList DO (* Search list for task name *)
 IF taskList[ $CURRENT ].title = taskName THEN
 SysSelectTask (taskList[ $CURRENT ] );
 EXIT TRUE;
  END;
  END;
 EXIT FALSE;
  END;

返回码

返回码 说明
任意值 返回各个打开会话的任务记录,包括不是 TSD 脚本会话的会话。每个任务记录包含来自其相应会话的顶级窗口的标题文本。请参见注释获取 OS/2 和 Windows 的差别。
-2 未知值。
-3 内存不足。

另见

SysSelectTask


SysOSShell

说明

创建新的命令处理器会话。

语法

FUNCTION SysOSShell(VAL commandLine: STRING): INTEGER;

注意

在 OS/2 中,终止 TSD 脚本应用程序(父会话)时将终止 SysOSShell 启动的 shell。

自变量说明

自变量名称 说明
commandLine 命令处理器执行的命令。空字符串创建新的命令提示。

在 OS/2 中,SysOSShell 启动的会话运行 COMSPEC 环境变量指定的 shell。 (这通常是 OS/2 命令处理器,cmd.exe。) SysOSShell 的自变量被传送给 shell 并用作其命令行。SysOSShell 启动的 shell 与调用进程的执行是异步的。

在 UNIX 中,作为自变量而给定的命令是按下列方式之一直接执行的:

SysOSShell 启动 /usr/bin/X11/xterm 程序(对 Sun 计算机,则为 /usr/openwin/bin/xterm)。通过为可在 PATH 环境中找到的程序或具有全限定路径的程序设置 SAI_XTERM 变量,可以超越这种规律。(在运行调用 SysOSShell 的 TSD 脚本程序之前,SAI_XTERM 必须处于用户环境中。)

在 Windows 中,SysOSShell 进行下列工作:

有两个自变量(/C 和 /K)用于在命令行中运行 shell。/C 执行命令并关闭 shell。/K 执行命令并使 shell 保持打开。不能将这些自变量应用于 UNIX。

实例

KNOWLEDGEBASE OSShell;
ROUTINES
PROCEDURE OSShellExample;
PRIVATE
ROUTINES
PROCEDURE OSShellExample IS
ACTIONS
 (* /C or /K is required to run an external command for
 Windows or OS/2 *)
 SysOSShell( '/C aseedit' );
 (* Child sessions end when parent session is terminated *)
 WinMessageBox( $Desktop, 'Cancel', $mbok, '' );
  END;

返回码

返回码 说明
1 成功完成
-2 未知值

另见

关于 cmd.exe 的其他信息,请参见 OS/2 文档。

关于 command.com 的其他信息,请参见 DOS 帮助系统。


SysSelectSession

说明

选择会话并向其提供焦点。

语法

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 no file is specified on the command line prompt for one *)
 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 ];
 (* Display Progress window *)
 WinCreateScrollWindow( $Desktop, whdl, $NullHandler,
                       0, 0, 30, 4, 'Parsing', $Helvetica, 14,
                    BitOr($WinTitle, $WinBorder,
                       $WinAutoPos, $WinSYsMenu ));
 WinWrIteLN( whdl, fileName );
(* Create a session for the Application Software-Script parser.
The session is created invisible.An error file in the IDE format *)
(* is requested *)
 SysCreateSession( hdlSession, 'kp.exe', '/IDE /e' &
                  fileName & '.ERR ' & fileName, 0, 0, 0, 0,
                  $SessionInvisible );
 SysWaitSession( hdlSession );
(* Close progress window when parser is finished *)
  SendMessage( whdl, $MsgClose );
 IF FExists( fileName & '.ERR' ) THEN
(* Test for error file *)
 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 of FOR*)
END; (* end of make KB*)

返回码

返回码 说明
1 成功完成。
-2 未知值。
-369 会话句柄没有引用到有效的会话。
-460 该调用进程不是该会话的父会话。只有创建会话的进程才可以选择该会话。

另见


SysSelectTask

说明

激活已选择的任务。

语法

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 is system-defined *)
ACTIONS
 IF SysGetTaskList( taskList ) <= 0 THEN
 EXIT FALSE;
  END;
 FOR taskList DO (* Search list for task name *)
 IF taskList[ $CURRENT ].title = taskName THEN
 SysSelectTask (taskList[ $CURRENT ] );
 EXIT TRUE;
  END;
  END;
 EXIT FALSE;
  END;

返回码

返回码 说明
1 成功完成。
-2 未知值。
-10 对执行函数所必需的操作系统服务的请求失败。可能的原因是供给语句的自变量值无效或系统资源有限。

另见

SysGetTaskList


SysSetClipboard

说明

设置系统剪贴板的字符串值。

语法

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 访问剪贴板所需要的操作系统操作之一失败

另见

SysGetClipboard


SysSetEnvironment

说明

向操作系统提供的环境列表添加条目(或改变其中的条目),以使新的值(如果有)与给定关键字关联。

语法

FUNCTION SysSetEnvironment (VAL key: STRING [, VAL newValue: STRING]): INTEGER;

注意

DOS 和 OS/2 不复制传送到环境列表的字符串。取而代之的是,它们直接使用传送到环境列表中的字符串。这将对内存的使用产生两种影响:

自变量说明

自变量名称 说明
key 环境列表中的关键字字符串
newValue 要与关键字关联的新的字符串

注释

SysSetEnvironment 函数使新的值与环境列表中的给定关键字相关联,或在省略 newValue 自变量时删除给定关键字和与其相关联的值。

环境列表的具体性质取决于操作系统。不过,通常是将环境变量列表从父进程复制到子进程,并在子进程终止时将其损坏。

通过 SysSetEnvironment 设置的环境变量应返回新的值,而且应当将该环境变量复制到由调用、SysCallProgramSysCreateSessionSysOSShell启动的子进程。不能将变量复制回启动 Tivoli 服务台开发工具包运行时系统的环境。

注:如果不提供 newValue,则“不会设置”指定的环境变量。

实例

IF SQLSelectInto ('SELECT ICONS FROM DIRECTORIES',
 iconPATHPATHPATHPATH)
 >= 1 AND
 StrPos (globalPath := SysGetEnvironment ('PATH'), iconPath)
 = 0
                 THEN
 SysSetEnvironment ('PATH', globalPath & ';' & iconPath);
  END;

返回码

返回码 说明
1 成功完成
-10 操作系统调用失败

另见


SysSetGMTDiff

说明

通常情况下,Tivoli 服务台开发工具包内部命令对主机操作系统进行查询,以获得本地时间和格林威治标准时间之差。该函数可以用于手动设置此差值和覆盖本地值。

语法

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);
 --Set the GMT bias to something funky. This is the equivalent of
 --the GMT Moscow...
 nRC := SysSetGMTDiff(-3, $hours);
 WinWriteLn(whdl, 'SysSetGMTDiff returned: ' & nRC);
 --Retrieve the GMT bias which should now be -3 hours (but specified in
 --seconds) and display it
 SysGetContext(r);
 WinWriteLn(whdl, 'GMT Bias = ' & r.GMTBias);
 --I picked this time and date at random
 t := {01,07,07}:TIME;
 d := {07,07,1993}:DATE;
 WinWriteLn(whdl, 'Before globalization: ' & d & ' ' & t );
 --Globalize the time and display it
 SysGlobalizeTime(t, d);
 WinWriteLn(whdl, 'After globalization: ' & d & ' ' & t );
 --Localize it again and display it (this should be the same as ”before
 --globalization"
 SysLocalizeTime(t, d);
 WinWriteLn(whdl, 'After localization: ' & d & ' ' & t );
 WinWait( whdl );
  END;

另见


SysSetReturnCode

说明

设置成功退出时,TSD 脚本解释器返回给 UNIX 命令 shell 或 DOS 窗口的整数值。如果没有使用 SysSetReturnCode,解释器将返回 1。

语法

FUNCTION SysSetReturnCode(VAL Code: INTEGER]):INTEGER;

注意:如果 TSD 脚本解释器遇到致命错误并退出,它将覆盖由 SysSetReturnCode 设置的任何值。

自变量说明

自变量名称 说明
code 返回到命令 shell 或 DOS 窗口的代码

注释

如果多次调用该函数,将使用最后一次调用传送的值。

注:请不要使 TSD 脚本 RETURN 语句与该函数相混淆,该语句设置 TSD 脚本函数返回的值。

实例

PROCEDURE DeepThought IS
ACTIONS
 SysDelay(1000000);
 SysSetReturnCode(42);
  END;

返回码

返回码 说明
1 成功完成
-10 操作系统调用失败

另见


SysStopSession

说明

停止活动会话。

语法

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 该调用进程不是该会话的父会话。进程只能停止由它创建的会话

另见


SysTone

说明

从系统扬声器发出声音。

语法

FUNCTION SysTone(VAL frequency: INTEGER, VAL duration: INTEGER
                    ): INTEGER;

自变量说明

自变量名称 说明
frequency 所发声音的频率,以赫兹为单位
duration 声音的持续时间,以毫秒为单位

注释

在 Windows 98 中,持续时间和频率都默认地采用系统声音的值。

实例

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 未知值

另见

SysDelay


SysWaitSession

说明

等待会话终止。

语法

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 no file is specified on the command line prompt for one *)
 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 ];
 (* Display Progress window *)
 WinCreateScrollWindow( $Desktop, whdl, $NullHandler,
                       0, 0, 30, 4, 'Parsing', $Helvetica, 14,
                    BitOr($WinTitle, $WinBorder,
                       $WinAutoPos, $WinSYsMenu ));
 WinWriteLN( whdl, fileName );
(* Create a session for the Application Software-Script parser. The session is
 created invisible. An error file in the IDE format is *)
(* requested *)
 SysCreateSession( hdlSession, 'kp.exe', '/IDE
                  /e' & fileName & '.ERR ' & fileName,
                  0, 0, 0, 0, $SessionInvisible );
 SysWaitSession( hdlSession );
(* Close progress window when parser is finished *)
  SendMessage( whdl, $MsgClose );
 IF FExists( fileName & '.ERR' ) THEN
(* Test for error file *)
 WinCreateHyperViewer( $Desktop, whdl, '',
                      ErrorEvent, 0, 0, 0, 0,
                      fileName & '.ERR',
                    BitOr($WinTitle, $WinBorder,
                      $WinAutoPos, $WinAutoSize,
                      $WinSysMenu, (* created
                      invisible. An error file
                      in the IDE format is requested
                      *) $WinReSize ));
 SendMessage( whdl, $MsgOpenFile, fileName & '.ERR',
 fileName, $HyperNoWordWrap );
 WinWait( whdl );
  END;
 END; (* end of FOR*)
END; (* end of make KB*)

返回码

返回码 说明
1 成功完成
-2 未知值

另见


SysYield

说明

阻塞执行当前线程,直到调遣完队列中的所有消息时为止。

语法

FUNCTION SysYield

注释

如果应用程序接口需要反映由处理器加强函数生成的消息,SysYield 将很有用。

另见

SysDelay


SysGlobalizeTime

说明

已知一个时间类型的变量作为本地时间,则该函数将它调整成相应的 GMT 时间。如果这种调整也影响到日期,则还必须提供一个日期。

语法

FUNCTION SysGlobalizeTime(REF t : TIME, REF d : DATE) : INTEGER;

自变量说明

自变量 说明
t 要全球化的时间
d 必须提供此值。如果调整给定时间将使日期滚动到下一天(或前一天),则调整日期以反应此变化。
应当*始终*将 SysGlobalizeTime 用在日期/时间对上。

返回码

返回码 说明
1 成功
-1 提供的日期或时间未知

实例

请参见 SysSetGMTDiff 实例。

另见


SysLocalizeTime

说明

已知一个时间类型的变量作为 GMT 时间,则该函数将它调整成相应的本地时间。如果这种调整也影响到日期,则还必须提供一个日期。

语法

FUNCTION SysLocalizeTime(REF t : TIME, REF d : DATE) : INTEGER;

自变量说明

自变量 说明
t 要本地化的时间
d 必须提供此值。如果调整给定时间将是日期滚动到下一天(或前一天),则调整日期以反应此变化。应当*始终*将 SysLocalizeTime 用在日期/时间对上。

返回码

返回码 说明
1 成功
-1 提供的日期或时间未知

实例

请参见 SysSetGMTDiff 实例。

另见


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

返回主页

版权所有