Tivoli 服务台 6.0 开发工具包脚本语言参考
返回主页
返回一个包含公共字符的字符串,这些字符用于分隔全限定文件名中的目录名称。在 Windows 和 OS/2 中,这种字符是反斜杠('\')。在 UNIX 中,它是正斜杠('/')。
FUNCTION $DirSeprStr : STRING;
此函数对分析全限定文件名和目录名称是很有用的。
(* Function MakeFilename assembles a fully qualified filename given a list of directory names, a basename, and an extension.*)
FUNCTION MakeFilename(VAL Dir : LIST OF STRING, VAL Base : STRING, VAL Ext : STRING) : STRING IS
ACTIONS
$Result := '';
FOR Dir DO $Result := $Result & $DirSeprStr & Dir[$CURRENT]; END;
$Result := $Result & $DirSeprStr & Base & '.' & Ext; END;
$PathSeprStr
返回一个包含控制字符的字符串,本地操作系统在文件中使用这些字符来指示行的结束。在 Windows 和 OS/2 中,此字符串由“回车”(ASCII 13)和“换行” (ASCII 10)字符组成。在 UNIX 中,此字符串由“换行”字符组成。
FUNCTION $Newline : STRING;
注意:在操作系统间转移文件时,请记住本地操作系统可能要求不同于
您的文件的行结束字符串。如果发生这种情况,文件格式显示可能会出现错乱。
此函数有助于向文件写入格式化文本。TSD 脚本函数 FWriteLn 自动为写入文件的全部行添加本地行结束字符串。
(* Function WriteDates: This function writes a list of dates to a file with only one date per line. It returns the number of dates written.*)
FUNCTION WriteDates(VAL Dates : LIST OF DATE, VAL fhdl : FILE) : INTEGER IS
ACTIONS
$Result := 0; FOR Dates DO FWrite(fhdl, Dates[$CURRENT]); FWrite(fhdl, $NewLine); $Result := $Result + 1; END; END;
返回一个字符串,它包含在含有多个目录名称的路径中,用来分开目录名称的字符。在 Windows 和 OS/2 中,它是分号(';'),而在 UNIX 中,它是冒号(':')。
FUNCTION $PathSeprStr: STRING;
此函数对分析搜索路径很有用。
(* Function MakePath assembles a complete path from a list of directories. *)
FUNCTION MakePath ( VAL Dirs : LIST OF STRING )
: STRING IS
ACTIONS $Result := '';
FOR Dirs DO $Result := $Result & Dirs[$CURRENT] & $PathSeprStr; END; END;
$DirSeprStr
关闭打开的文件。
FUNCTION FClose (VAL fHdl: FILE): INTEGER;
自变量名称 | 说明 |
fHdl | 要关闭的打开文件的句柄 |
FClose 函数将清仓(如果已打开并准备输出它)和关闭给定文件。
FUNCTION MakeLogEntry (VAL entry: STRING): INTEGER IS
CONSTANTS logFileName IS 'LOGFILE.TXT'; expirationLimit IS 30;
VARIABLES logFile: FILE; files: $DirectoryList;
ACTIONS IF FExists(logFileName) THEN FGetDirectory(logFileName, files); IF DateDif($Today, files[1].modificationDate) > expirationLimit THEN FErase(logFileName); END; END; IF FOpen(logFile, logFileName, $Append) < 0 THEN $Result := -1; ELSIF FWrite(logFile, $Today & ' ' & $Now & ': ' & entry) < 0 THEN $Result := -2; ELSIF FClose(logFile) > 0 THEN EXIT 1; END; FClose(logFile); END;
返回码 | 说明 |
1 | 成功完成。 |
-1 | 操作失败 |
-2 | 未知的文件自变量 |
-6 | 无效的句柄。 |
FOpen
指示打开的文件是否在文件的末尾。
FUNCTION FEnd (VALUE fHdl: FILE): BOOLEAN;
注意:如果文件自变量是未知的,FEnd 将返回一个未知值。
自变量名称 | 说明 |
fHdl | 为要测试的文件产生句柄的表达式。 |
如果已打开给定文件并准备阅读它,但是它的当前位置是在文件的末尾(再也没有可以阅读的内容),FEnd 函数将返回 TRUE。若 FEnd 返回 FALSE,则文件中至少有一个未读字符。
VARIABLES inFile: FILE; line: STRING;
ACTIONS FOpen(inFile,'EMPLOYEES.TXT',$Read); WHILE NOT FEnd(inFile) DO IF FReadLn(inFile,line) = 1 THEN GoProcess(line); END; END;
返回码 | 说明 |
TRUE | 给定文件当前位于它的文件结束标记处(即文件中再也没有输入挂起)。 |
$Unknown | 向 $Unknown 赋值的自变量。 |
FALSE | 给定文件当前不位于文件结束标记处(即输入尚未决定)。 |
删除文件。
FUNCTION FErase (VAL fileName: STRING): INTEGER;
注意:如果命名的文件是打开的,则没有定义该函数的作用。
自变量名称 | 说明 |
fileName | 要删除的文件名称 |
FErase 函数删除给定名称的文件。以后任何使用以前的名称打开文件的尝试都会失败。
FUNCTION MakeLogEntry (VAL entry: STRING): INTEGER IS CONSTANTS logFileName IS 'LOGFILE.TXT'; expirationLimit IS 30;
VARIABLES logFile: FILE; files: $DirectoryList;
ACTIONS IF FExists(logFileName) THEN FGetDirectory(logFileName, files); IF DateDif($Today, files[1].modificationDate) > expirationLimit THEN FErase(logFileName); END; END; IF FOpen(logFile, logFileName, $Append) < 0 THEN $Result := -1; ELSIF FWrite(logFile, $Today & ' ' & $Now & ': ' & entry) < 0 THEN $Result := -2; ELSIF FClose(logFile) > 0 THEN EXIT 1; END; FClose(logFile); END;
返回码 | 说明 |
1 | 成功完成 |
-1 | 操作失败 |
-2 | 未知文件自变量 |
FOpen
对文件存在性的测试。
FUNCTION FExists (VAL fileName: STRING): BOOLEAN;
自变量名称 | 说明 |
fileName | 产生有效文件名的字符串表达式。 |
If FExists (“C:\MYFILE.DAT”) THEN DoProcessFile; ELSE DoCreateFile; END;
返回码 | 说明 |
TRUE | 文件存在 |
FALSE | 文件不存在 |
获得同给定文件相关联的本地文件系统属性。
FUNCTION FGetAttributes (VAL filename: STRING, REF attributes: INTEGER ) : INTEGER
自变量名称 | 说明 |
filename | 文件的完整路径 |
attributes | 将更改该参数来列出给定文件的属性。属性变量中可以一起排序的属性是:
|
下面是对 FGetAttributes 属性标记的说明。
属性 | Windows & OS/2 | UNIX |
$FILENOPRIVS | 文件是只读的 | 文件不可读、写或执行 |
$FILEREADABLE | 文件不是只读的 | 文件是可读的 |
$FILEWRITEABLE | 无 | 文件是可写的 |
$FILEEXECUTABLE | 无 | 文件是可执行的 |
$FILEHIDDEN | 文件是隐含的 | 无 |
请参见 FSetAttributes 的实例。
返回码 | 说明 |
1 | 成功完成 |
-1 | 操作失败 |
-2 | 自变量未知 |
FSetAttributes
建立目录列表。
FUNCTION FGetDirectory(VAL pattern: STRING, REF directoryList: LIST OF $DIRECTORYRECORD) : INTEGER;
自变量名称 | 说明 |
pattern | 模式指定目录列表所包含的文件。可能要用到 * 和 ? 通配符。 在目录列表中将返回所有名称跟这个模式匹配的文件和目录。 |
directoryList | 该参数必须是 $DirectoryRecord 类型的变量。其定义在“注”里列出。 |
$DirectoryRecord 是在系统知识库中声明的记录类型。$DirectoryRecord 的声明是:
$DirectoryRecord IS RECORD filename : STRING; fullname : STRING; filesize : INTEGER; modificationdate : DATE; modificationtime : TIME; isDirectory : BOOLEAN; readOnly : BOOLEAN; flags : INTEGER; END;
下面是对 $DirectoryRecord 的字段说明:
名称 | 说明 |
fileName | 带扩展名的文件名。 |
fullName | 全路径文件名。 |
filesize | 以字节为单位的文件大小。 |
modificationDate | 上次修改文件的日期。 |
modificationTime | 上次修改文件的时间。 |
isDirectory | 指示这是一个文件还是一个子目录。 |
readOnly | 指示文件是否可写。 |
flags | 文件属性。 |
标记字段返回由操作系统设置的标记,而且与平台有关。关于标志的含义,请参见操作系统文档。
KNOWLEDGEBASE DirList; ROUTINES PROCEDURE TestDirectory(VAL pattern: LIST OF STRING);
PRIVATE ROUTINES PROCEDURE TestDirectory(VAL pattern: LIST OF STRING) IS
VARIABLES whdl: WINDOW; dirList: LIST OF $DIRECTORYRECORD;
ACTIONS WinCreateScrollWindow($Desktop,whdl, $NullHandler,0,0,60,0, pattern[1], $SystemMonospaced,10, $WinBorder + $WinTitle + $WinResize + $WinMinMax + $WinTaskList + $WinAutoSize + $WinHScroll + $WinVScroll + $WinSysMenu + $WinAutoPos);
FGetDirectory(pattern[1],dirList); ListSort(dirList); FOR dirList DO WinWrite(whdl,dirList[$CURRENT].fileName); WinGoToXY(whdl,20,WinY(whdl)); WinWrite(whdl,dirList[$CURRENT].fileSize); WinGoToXY(whdl,30,WinY(whdl)); WinWrite(whdl,dirList[$CURRENT].modificationDate); WinGoToXY(whdl,40,WinY(whdl)); WinWrite(whdl,dirList[$CURRENT].modificationTime); WinGoToXY(whdl,50,WinY(whdl)); IF dirList[$CURRENT].isDirectory THEN WinWrite(whdl,'Directory '); END; IF dirList[$CURRENT].readOnly THEN WinWrite(whdl,'Read only'); END; WinWriteLN(whdl); END; WinWait(whdl); END (* Test Directory *);
返回码 | 说明 |
大于或等于零 | 由 FGetDirectory 返回的一个非负值,是在该目录中的条目数(文件数)。 |
-1 | 目录请求失败。在模式中指定的驱动器可能不存在或可能是不可读的。 |
-2 | 未知值。 |
打开文件。
FUNCTION FOpen (REF fHdl: File, VAL name: String [,$READ|$CREATE|$APPEND] ): Integer;
自变量名称 | 说明 |
fHdl | 改变该此参数来引用打开的文件。如果 FOpen 操作失败,将把此参数设置为 $Unknown。 |
name | 正在打开的文件的绝对或相对路径。 |
$READ $CREATE $APPEND |
模式指定。缺省值是 $READ。 |
FOpen 函数以给定模式打开具有给定名称的文本文件,并使它同给定的 fHdl 值关联。如果没有给定模式自变量,则缺省设置是 $READ。
提示:如果指定的文件已经打开,则 FOpen 将失败。这种情况下的返回值是 -1。
TSD 脚本不支持对文本文件的随机访问,如果在操作中不以适当的模式关闭和重新打开文件,就无法对同一个文件进行读和写。
FUNCTION MakeLogEntry (VAL entry: STRING): INTEGER IS CONSTANTS logFileName IS 'LOGFILE.TXT'; expirationLimit IS 30;
VARIABLES logFile: FILE; files: $DirectoryList;
ACTIONS IF FExists(logFileName) THEN FGetDirectory(logFileName, files); IF DateDif($Today, files[1].modificationDate) > expirationLimit THEN FErase(logFileName); END; END; IF FOpen(logFile, logFileName, $Append) < 0 THEN $Result := -1; ELSIF FWrite(logFile, $Today & ' ' & $Now & ': ' & entry) < 0 THEN $Result := -2; ELSIF FClose(logFile) > 0 THEN EXIT 1; END; FClose(logFile); END;
返回码 | 说明 |
1 | 成功完成。 |
-1 | 操作系统级的操作失败。如果指定文件已经存在,将返回这个值。 |
-2 | 未知文件名。 |
从打开的文件读取简单值,并将其分配给被引用的变量。
FUNCTION FRead (VAL fHdl: FILE [, REF var: ANY SIMPLE TYPE...] ) : INTEGER;
注意:字符串包含直到行尾的所有输入。在字符串自变量后面插入输入自变量将引起 FRead 失败。
自变量名称 | 说明 |
fHdl | 由以前对 FOpen 的调用设置的文件句柄。只能用 $READ 模式调用 FOpen。 |
var | 零或更多的可赋值表达式(可以合法地出现在赋值操作左边的表达式)。 |
FRead 从给定文件读取简单值(例如,BOOLEAN、INTEGER、REAL、STRING、TIME 和 DATE),并将它们从其自变量列表分配给关联变量,直到给定自变量的所有值都已被读取为止。
下表列出 FRead 用来读取值的格式:
格式 | 说明 |
BOOLEAN | 为 TRUE 或 FALSE。 |
INTEGER | 说明为十进制整数的一列十进制数字(0-9)。后面带有一个或多个十六进制数字(0-9、A-F 或 a-f)的'0x' 或 '0X' 序列说明是十六进制整数。两种格式都可以有选择地在前面加上 '+' 或 '-' 号。 |
REAL | 前面可能带有 '+' 或 '-' 号的十进制数字(0-9)序列。该序列后面可以带有小数点和一位或多位小数,可以带有指数部分。指数部分包含一个 'E' 或 'e',之后是一个可选符号和一到三个十进制数字。 |
STRING | 行尾之前的任何字符。FRead 不能阅读行尾之后的内容。 |
TIME | hh:mm:ss 格式的序列,此处的 hh、mm 和 ss 是一个或两个十进制数字。 |
DATE | mm/dd/yy 格式的序列,此处的 mm、dd 和
yy 是一个或两个十进制数字。如果发生下列任何事情,FRead 函数将终止:
|
读取终止
如果读取操作终止,它不再处理以后的任何输入。将返回一个错误代码。这种错误状态不会改变还没有读取值的任何自变量。已成功地读取值的自变量将被更新。
如果由于遇到了行尾而导致对 FRead 的调用终止,以后对 FRead 的所有调用都会失败,读不到任何值,直到调用 FReadLn 函数前进到下一行。
空白定界符
在任何可能的地方,都应当用一个或多个空白字符(空格和制表符)来定界输入文件中的值。不过,在有些情况下,值是不需要任何分隔字符的。
例如,REAL 和 BOOLEAN 值不需要插入空白符,这是因为 BOOLEAN 值的开始或结束字符不能在实数值的任何一端合法地显示,反之亦然。
PROCEDURE PlayTune (VAL fileName: STRING) IS VARIABLES toneFile: FILE; delay, frequency, duration: INTEGER;
ACTIONS IF FOpen(toneFile, fileName) 0 THEN EXIT; END;
WHILE FRead(toneFile, delay, frequency, duration) 0 DO SysDelay(delay); SysTone(frequency, duration); END; FClose(toneFile); END;
返回码 | 说明 |
1 | 成功完成 |
-1 | 操作失败(转换失败或行过早结束) |
-2 | 未知文件 |
-4 | 文件没有打开 |
-5 | 到了文件末尾 |
-6 | 无效的句柄。 |
从一个打开的文件中读取一行输入,并将这些起组成作用的简单值分配给被引用的变量。
FUNCTION FReadLn (VAL fHdl: FILE [, REF var: ANY SIMPLE TYPE... ] ): INTEGER;
注意:字符串包含直到行尾的所有输入。因此,在字符串自变量后面提供输入自变量将引起 FReadLn 的失败。
自变量名称 | 说明 |
fHdl | 由以前对 FOpen 的调用设置的文件句柄。只能用 $READ 模式调用 FOpen。 |
var | 零或更多可赋值的表达式。可赋值表达式出现在赋值操作左边。 |
FReadLn 函数从文件读取简单值(例如,BOOLEAN、INTEGER、REAL、STRING、TIME 和 DATE),并将它们分配给它的自变量列表中的关联变量。输入行上的任何剩余字符,包括指示行结束的字符,都将被丢弃。
下表列出 FReadLn 用来读取值的格式:
格式 | 说明 |
BOOLEAN | 为 TRUE 或 FALSE。 |
INTEGER | 说明为十进制整数的一列十进制数字(0-9)。后面带有一个或多个十六进制数字(0-9、A-F 或 a-f)的'0x' 或 '0X' 序列说明是十六进制整数。两种格式都可以有选择地在前面加上 '+' 或 '-' 号。 |
REAL | 前面可能带有 '+' 或 '-' 号的十进制数字(0-9)序列。该序列后面可以带有小数点和一位或多位小数,可以带有指数部分。指数部分包含一个 'E' 或 'e',之后是一个可选符号和一到三个十进制数字。 |
STRING | 行尾之前的任何字符。FRead 不能阅读行尾之后的内容。 |
TIME | hh:mm:ss 格式的序列,此处的 hh、mm 和 ss 是一个或两个十进制数字。 |
DATE | mm/dd/yy 格式的序列,此处的 mm、dd 和
yy 是一个或两个十进制数字。如果发生下列任何事情,FRead 函数将终止:
|
终止
如果在为所有给定的自变量读取值之前到达了行尾,或所读取的值不能转换成相关参数的适当类型,则读取操作终止,不再处理任何输入(包括行结束指示符)。
注:返回一个出错代码。这种错误状态不会改变还没有读取值的任何自变量。
已成功地读取值的自变量将被更新。
空白定界符
在任何可能的地方,都应当用一个或多个空白字符(空格和制表符)来定界输入文件中的值。不过,在有些情况下,值是不需要任何分隔字符的。
例如,REAL 和 BOOLEAN 值不需要插入空白符,这是因为 BOOLEAN 值的开始或结束字符不能在实数值的任何一端合法地显示,反之亦然。
VARIABLES lineNumber{ 0 }: INTEGER; scriptFile, logFile: FILE; msgTime, actualTime: TIME; index, msgId: INTEGER; data: STRING;
ACTIONS IF FOpen(scriptFile, 'SCRIPT.TXT') < 0 THEN EXIT FAILCODE; END; IF FOpen(logFile, 'SCRIPT.LOG', $CREATE) < 0 THEN FClose(scriptFile); EXIT FAILCODE; END; WHILE NOT FEnd(scriptFile) DO lineNumber := lineNumber + 1; IF FReadLn(scriptFile, msgTime, index, msgId, data) <1 THEN FWriteLn(logFile, 'Invalid entry on line #' & lineNumber); ELSE SysDelay(TimeDif(msgTime, $Now) * 1000); actualTime := $Now; SendMsg(g_WindowArray[index], msgId, data); FWriteLn(logFile, actualTime & ': Sent ' & msgId & ' ' & $Quote & data & $Quote & ' to window #' & index); END; END; EXIT SUCCESSCODE; END;
返回码 | 说明 |
1 | 成功完成 |
-1 | 操作失败(转换失败或行过早结束) |
-2 | 未知文件 |
-4 | 文件没有打开 |
-5 | 到了文件末尾 |
-6 | 无效的句柄。 |
将文件读入字符串列表。
FUNCTION FReadText (VAL fHdl: FILE, REF lst: LIST OF STRING):INTEGER;
自变量名称 | 说明 |
fHdl | 在该参数中返回文件句柄 |
lst | 一个列表变量(字符串),文件内容将替换它的内容 |
FReadText 将该文件的内容读入字符串列表,每个列表元素一行。如果在打开文件后、调用 FReadText 之前读取值,则将读取剩余的输入。
注:在成功完成的情况下,FReadText 返回读取成功的行数。
KNOWLEDGEBASE Scroll; CONSTANTS MENU_OPEN IS 101; MENU_EXIT IS 102; MENU_LIST IS {'~File','~Open','E~xit',''}: LIST OF STRING;
TYPES EditorData IS RECORD statusLine: STRING; lines: LIST OF STRING; END;
ROUTINES PROCEDURE FileView;
PRIVATE ROUTINES EVENT EditorEvent(REF editorData: EditorData) IS ROUTINES PROCEDURE ProcessMainMenu(VALUE selection: INTEGER) IS VARIABLES fileName: STRING; editFile: FILE; result: INTEGER; ACTIONS WHEN selection IS MENU_OPEN THEN WinFileDialog($Handle,fileName,'*.KB',5,5, 'Select file to edit',0); IF FOpen(editFile,fileName,$Read) > 0 THEN FReadText(editFile,editorData.lines); FClose(editFile); editorData.statusLine := ' File: ' & fileName; WinClear( $Handle ); WinWriteLN($Handle,editorData.lines); PostMessage($Handle,$MsgPaintStatus); ELSWHEN MENU_EXIT THEN SendMessage($Handle,$MsgClose); END; END; END (* Process Main Menu *); ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar( $Handle, menuList ); editorData.statusLine := 'File:'; ELSWHEN $MsgMenu THEN ProcessMainMenu($MenuSelection); ELSWHEN $MsgPaintStatus THEN (* Status Bar *) WinClear( $Handle ); WinWrite($Handle,editorData.statusLine); END; END (* Editor Event *); PROCEDURE FileView IS VARIABLES whdl: WINDOW; ACTIONS WinCreateScrollWindow($Desktop,whdl,EditorEvent,0,0,0,0, 'KML File viewer', $SystemMonospaced,10, BitOr($WinBorder,$WinTitle, $WinResize, $WinSysMenu, $WinMenu,$WinStatus, $WinAutoPos,$WinAutoSize, $WinVScroll,$WinHScroll, $WinTaskList)); WinWait(whdl); END (* File View *);
返回码 | 说明 |
大于零 | 成功。返回读取的字节数。 |
-1 | 未知自变量。 |
-2 | 操作失败。 |
-4 | 文件没有打开。 |
-6 | 无效的句柄。 |
设置与给定文件关联的操作系统级文件属性。
FUNCTION FSetAttributes (VAL filename: STRING, VAL attributes: INTEGER ): INTEGER
自变量名称 | 说明 |
filename | 文件的完整路径 |
attributes | 该参数是要为给定文件设置的属性列表。可在属性变量中一起排序的属性是:
|
下面说明 FSetAttributes 属性标志。
属性 | 在 Windows & OS/2中的含义 | UNIX |
$FILENOPRIVS | 文件是只读的 | 文件不可读、写或执行 |
$FILEREADABLE | 文件不是只读的 | 文件是可读的 |
$FILEWRITEABLE | 无 | 文件是可写的 |
$FILEEXECUTABLE | 无 | 文件是可执行的 |
$FILEHIDDEN | 文件是隐含的 | 无 |
PROCEDURE MakeFileReadOnly IS
VARIABLES attributes : INTEGER; retval : INTEGER;
ACTIONS -- Get the current attributes retval := FGetAttributes('c:\sai\ea\mylog.txt', attributes); IF ( retval <> 1 ) THEN -- Handle the error' END; -- Turn on read-only attribute and apply retval := FSetAttributes('c:\sai\ea\mylog.txt', BitOr($FileReadOnly, attributes) ); END;
返回码 | 说明 |
1 | 成功完成 |
-1 | 操作失败 |
-2 | 自变量未知 |
FGetAttributes
将格式化数据写入文件。
FUNCTION FWrite (VAL fHdl: FILE, VAL data: [LIST OF] STRING) : INTEGER;
注意:在输出操作完成时,FWrite 未写新行(行结束)字符。
自变量名称 | 说明 |
fHdl | 由以前对 FOpen 的调用设置的文件变量,该调用采用的是 $Create 或 $Append 写模式标志。 |
data | 将写入指定文件的字符串表达式(或字符串列表)。 |
FWrite 函数将简单值写入给定文件,而且不加分隔符和结束符。可以通过使用字符串格式化和连接运算符( : 和 & )来达到输出文本的格式化。
FUNCTION MakeLogEntry (VAL entry: STRING): INTEGER IS CONSTANTS logFileName IS 'LOGFILE.TXT'; expirationLimit IS 30; VARIABLES logFile: FILE; files: $DirectoryList; ACTIONS IF FExists(logFileName) THEN FGetDirectory(logFileName, files); IF DateDif($Today, files[1].modificationDate) > expirationLimit THEN FErase(logFileName); END; END; IF FOpen(logFile, logFileName, $Append) < 0 THEN $Result := -1; ELSIF FWrite(logFile, $Today & ' ' & $Now & ': ' & entry) < 0 THEN $Result := -2; ELSIF FClose(logFile) > 0 THEN EXIT 1; END; FClose(logFile); END;
返回码 | 说明 |
>=0 | 0 - 已将空字符串作为自变量提供给函数,仅将托架返回写入了该文件。 n - 正数 >0,代表写入文件的行数 |
-1 | 未知自变量 |
-2 | 操作失败 |
-4 | 文件没有打开 |
-6 | 无效的句柄。 |
将一行格式化数据写入文件。
FUNCTION FWriteLn (VAL fHdl: FILE, VAL data: [LIST OF] STRING): INTEGER;
自变量名称 | 说明 |
fHdl | 由以前对 FOpen 的调用设置的文件变量,该调用采用的是 $Create 或 $Append 文件模式。 |
data | 字符串表达式或字符串列表,它们被写出到指定文件的当前文件位置。 |
跟 FWrite 一样,FWriteLn 函数将简单值写入文本文件。FWriteLn 跟 FWrite 的不同之处是,它在写出其自变量值(等于 $NewLine)之后,输出一个行结束字符。
FUNCTION MakeLogEntry (VAL entry: STRING): INTEGER IS CONSTANTS logFileName IS 'LOGFILE.TXT'; expirationLimit IS 30; VARIABLES logFile: FILE; files: $DirectoryList; ACTIONS IF FExists(logFileName) THEN FGetDirectory(logFileName, files); IF DateDif($Today, files[1].modificationDate) > expirationLimit THEN FErase(logFileName); END; END; IF FOpen(logFile, logFileName, $Append) < 0 THEN $Result := -1; ELSIF FWriteLn(logFile, $Today & ' ' & $Now & ': ' & entry) < 0 THEN $Result := -2; ELSIF FClose(logFile) > 0 THEN EXIT 1; END; FClose(logFile); END;
返回码 | 说明 |
>=0 | 0 - 已将空字符串作为自变量提供给函数,仅将托架返回写入了该文件 n - 正数 >0,代表写入文件的行数 |
-1 | 未知自变量。 |
-2 | 操作失败。 |
-4 | 文件没有打开。 |
-6 | 无效的句柄。 |
该函数允许用户加载和显示帮助文件,例如,WinHelp、IPF 帮助(用于 OS/2)或用于所有平台的 HTML 文件。HelpOpen 调用请求的帮助文件并显示指定的节的名称、帮助的帮助或目录部分。
要得到 HTML 帮助,必须指定环境变量 “WebBrowser”。如果不设置这个变量,Windows 将使用缺省浏览器,而 UNIX 和 OS/2 则使用 Netscape Navigator。如果指定了一个相对 URL,该 URL 将通过以本机方式预挂起 SAI_ROOT 环境变量,或在启用应用程序以便使用 Web 时预挂起小程序代码库而成为绝对 URL。
FUNCTION HelpOpen( VAL whdl: WINDOW, VAL filename: String, [VAL section: STRING]): INTEGER;
自变量名称 | 说明 |
whdl | 此变量是父窗口的窗口句柄。 |
filename | 要打开的帮助文件的文件名称。此变量包含的信息可以是下列格式之一:
|
section | 要显示的帮助文件主题。这个变量可以是节的名称或下列两种字符串常量之一:
|
HelpOpen 函数启动帮助文件系统,并使用给定的文件名和节来向指定的节打开帮助文件。如果该函数的这一操作不成功,则返回相应的错误代码。
KNOWLEDGEBASE HLPEXPL; CONSTANTS HLP IS 'C:\TEST.HLP'; VARIABLES ret: Integer; ROUTINES PROCEDURE TestHelp; PRIVATE ROUTINES PROCEDURE TestHelp IS VARIABLES ACTIONS ret := HelpOpen( $Desktop, HLP, $OSHelpOnHelp); If ret < 1 THEN WinMessageBox($Desktop, 'Help File Read Error', BitOr($MBOK , $MBIconInformation), 'Unknown error reading data from the help file.'); END; -- Test Help -- END OF HLPEXPL.KB
返回码 | 说明 |
1 | 成功完成。 |
-1 | 未知自变量。 |
-2 | 操作系统级的操作失败。 |
-3 | 内存不足。 |
-4 | 操作系统级的操作失败。如果节参数含有未知值,则返回此值。 |
-5 | 帮助文件系统初始化失败。 |
-6 | 帮助文件系统窗口关联失败。 |
-7 | 帮助文件系统对象创建失败。 |
-8 | 帮助文件系统不能显示该文件。 |
该函数从初始化文件读取数据。它允许用户在平台本地的初始化文件里存储和检索信息。
FUNCTION IniRead(REF rVal: [ STRING | INTEGER | BOOLEAN ], VAL filename: STRING, VAL section: STRING, VAL item: STRING, default: [STRING| INTEGER | BOOLEAN], [VAL filetype: STRING] ): INTEGER;
自变量名称 | 说明 |
rVal | 此变量可以是 STRING、INTEGER 或 BOOLEAN。它接收从 .ini 文件读取的数据。 |
filename | 要读取的 .ini 文件的文件名。此变量包含的信息可以是下列格式之一:
|
section | .ini 文件的节,将从这里读取信息。 |
item | .ini 文件的节中的项目,将从这里读取信息。 |
default | 此变量可以是 STRING、INTEGER 或 BOOLEAN。如果不能找到要读取的项目,它所包含的数据就是 rVal 的缺省数据。 |
IniRead 函数使用给定的项目、节和文件名来从初始化节中读取项目。如果该项目不存在,将把缺省值放入 rVal。
KNOWLEDGEBASE EXPL; CONSTANTS INI IS 'C:\TEST.INI';
TYPES IniRecord IS Record Filename:String; FileSection:String; FileItem:String; ItemDefault:String; ItemRVal:String; ItemSData:String; ListSection: List of String; END;
VARIABLES Settings: IniRecord; ret: Integer;
ROUTINES PROCEDURE Read_From_Ini; PROCEDURE TestIni;
PRIVATE ROUTINES PROCEDURE Scan_From_Ini IS VARIABLES fh: FILE; ACTIONS ret := IniRead(Settings.ItemRVal, Settings.Filename, Settings.FileSection, Settings.FileItem, Settings.ItemDefault); if ret < 1 THEN WinMessageBox($Desktop, 'Ini File Read Error', $MBOK + MBIconInformation, 'Unknown error reading data from the file.'); END; END; -- Read from file PROCEDURE TestIni IS
ACTIONS Settings.Filename := INI; Settings.FileSection := 'section'; Settings.FileItem := 'item'; Settings.ItemDefault := 'default'; Settings.ItemSData := 'data'; Scan_From_Ini; WinMessageBox($Desktop, 'Status', $MBOK + MBIconInformation, 'Procedure was successful if no file error messages were reported.'); END; END
返回码 | 说明 |
1 | 成功完成 |
-1 | 未知自变量 |
-2 | 操作系统级的操作失败 |
-5 | 未找到文件 |
该函数从初始化文件特定的节里获得一个项目列表。
FUNCTION IniScan(REF rVal: List of String, VAL filename: String, Val section: String, [Val filetype: String] ): Integer;
自变量名称 | 说明 |
rVal | 此变量是“字符串列表”类型。它接收从 .ini 文件读取的数据列表。 |
filename | 要读取的 .ini 文件的文件名。此变量包含的信息可以是下列格式之一:
|
section | .ini 文件的节,将从这里读取信息。 |
IniScan 函数使用给定的节和文件的名称来从初始化节中读取一个项目列表。如果项目不存在,将返回相应的错误代码。
KNOWLEDGEBASE EXPL;
CONSTANTS INI IS 'C:\TEST.INI';
TYPES IniRecord IS Record Filename:String; FileSection:String; FileItem:String; ItemDefault:String; ItemRVal:String; ItemSData:String; ListSection: List of String; END;
VARIABLES Settings: IniRecord; ret: Integer;
ROUTINES PROCEDURE Scan_From_Ini; PROCEDURE TestIni;
PRIVATE
ROUTINES PROCEDURE Scan_From_Ini IS
VARIABLES fh: FILE; ACTIONS ret := IniScan(Settings.ListSection, Settings.Filename, Settings.FileSection); if ret < 1 THEN WinMessageBox($Desktop, 'Ini File Read Error', $MBOK + MBIconInformation, 'Unknown error reading data from the file.'); END; END; -- Scan from file
PROCEDURE TestIni IS VARIABLES
ACTIONS Settings.Filename := INI; Settings.FileSection := 'section'; Settings.FileItem := 'item'; Settings.ItemDefault := 'default'; Settings.ItemSData := 'data'; Scan_From_Ini;
WinMessageBox($Desktop, 'Status', $MBOK + MBIconInformation, 'Procedure was successful if no file error messages were reported.');
END;
返回码 | 说明 |
1 | 成功完成 |
-1 | 未知自变量 |
-2 | 操作系统级的操作失败 |
-4 | 没有创建。操作系统不能创建请求的对象。一个可能的原因是父级窗口句柄引用了已不存在的窗口。 |
该函数向初始化文件写入数据。
FUNCTION IniWrite(Val filename: String, Val section: String, Val item: String, Val data:[String | Integer | Boolean ], ): Integer;
自变量名称 | 说明 |
filename | 向其写入数据的 .ini 文件的文件名。此变量包含的信息可以是下列格式之一:
|
section | 要向其写入信息的 .ini 文件的节。 |
item | .ini 文件节中的项目,将向其写入信息。 |
data | 此变量可以是 STRING、INTEGER 或 BOOLEAN。它含有为指定节中的项目而写的数据。 |
IniWrite 函数使用给定的项目、节和文件的名称来向初始化节中写入项目和数据。如果该项目存在,它在该文件中的值将被覆盖。
KNOWLEDGEBASE EXPL;
CONSTANTS INI IS 'C:\TEST.INI';
TYPES IniRecord IS Record Filename:String; FileSection:String; FileItem:String; ItemDefault:String; ItemRVal:String; ItemSData:String; ListSection: List of String; END;
VARIABLES Settings: IniRecord; ret: Integer;
ROUTINES PROCEDURE Write_To_Ini; PROCEDURE TestIni;
PRIVATE ROUTINES
PROCEDURE Write_To_Ini IS VARIABLES fh: FILE; ACTIONS ret := IniWrite(Settings.Filename, Settings.FileItem, Settings.ItemSData); if ret < 1 THEN WinMessageBox($Desktop, 'Ini File Read Error', $MBOK + MBIconInformation, 'Unknown error reading data from the file.'); END; END; -- Write to file
PROCEDURE TestIni IS
VARIABLES
ACTIONS Settings.Filename := INI; Settings.FileSection := 'section'; Settings.FileItem := 'item'; Settings.ItemDefault := 'default'; Settings.ItemSData := 'data';
Write_To_Ini;
WinMessageBox($Desktop, 'Status', $MBOK + MBIconInformation, 'Procedure was successful if no file error messages were reported.');
END; -- END OF EXPL.KB
返回码 | 说明 |
1 | 成功完成 |
-1 | 未知自变量 |
-2 | 操作系统级的操作失败 |
Tivoli 服务台 6.0 开发工具包脚本语言参考
返回主页