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

文件处理

返回主页


$DirSeprStr

说明

返回一个包含公共字符的字符串,这些字符用于分隔全限定文件名中的目录名称。在 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


$NewLine

说明

返回一个包含控制字符的字符串,本地操作系统在文件中使用这些字符来指示行的结束。在 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;

$PathSeprStr

说明

返回一个字符串,它包含在含有多个目录名称的路径中,用来分开目录名称的字符。在 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


FClose

说明

关闭打开的文件。

语法

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


FEnd

说明

指示打开的文件是否在文件的末尾。

语法

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 给定文件当前不位于文件结束标记处(即输入尚未决定)。

另见


FErase

说明

删除文件。

语法

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


FExists

说明

对文件存在性的测试。

语法

FUNCTION FExists (VAL fileName: STRING): BOOLEAN;

自变量说明

自变量名称 说明
fileName 产生有效文件名的字符串表达式。

实例

If FExists (“C:\MYFILE.DAT”) THEN
 DoProcessFile;
ELSE
 DoCreateFile;
  END;

返回码

返回码 说明
TRUE 文件存在
FALSE 文件不存在

另见


FGetAttributes

说明

获得同给定文件相关联的本地文件系统属性。

语法

FUNCTION FGetAttributes (VAL filename: STRING,
 REF attributes: INTEGER ) : INTEGER

自变量说明

自变量名称 说明
filename 文件的完整路径
attributes 将更改该参数来列出给定文件的属性。属性变量中可以一起排序的属性是:
  • $FILENOPRIVS
  • $FILEREADABLE
  • $FILEWRITEABLE
  • $FILEEXECUTABLE
  • $FILEHIDDEN

注释

下面是对 FGetAttributes 属性标记的说明。

属性 Windows & OS/2 UNIX
$FILENOPRIVS 文件是只读的 文件不可读、写或执行
$FILEREADABLE 文件不是只读的 文件是可读的
$FILEWRITEABLE 文件是可写的
$FILEEXECUTABLE 文件是可执行的
$FILEHIDDEN 文件是隐含的

实例

请参见 FSetAttributes 的实例。

返回码

返回码 说明
1 成功完成
-1 操作失败
-2 自变量未知

另见

FSetAttributes


FGetDirectory

说明

建立目录列表。

语法

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

另见


FOpen

说明

打开文件。

语法

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 未知文件名。

另见


FRead

说明

从打开的文件读取简单值,并将其分配给被引用的变量。

语法

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 格式的序列,此处的 hhmmss 是一个或两个十进制数字。
DATE mm/dd/yy 格式的序列,此处的 mmddyy 是一个或两个十进制数字。如果发生下列任何事情,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 无效的句柄。

另见


FReadLn

说明

从一个打开的文件中读取一行输入,并将这些起组成作用的简单值分配给被引用的变量。

语法

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 格式的序列,此处的 hhmmss 是一个或两个十进制数字。
DATE mm/dd/yy 格式的序列,此处的 mmddyy 是一个或两个十进制数字。如果发生下列任何事情,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 无效的句柄。

另见


FReadText

说明

将文件读入字符串列表。

语法

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 无效的句柄。

FSetAttributes

说明

设置与给定文件关联的操作系统级文件属性。

语法

FUNCTION FSetAttributes (VAL filename: STRING,
 VAL attributes: INTEGER ): INTEGER

自变量说明

自变量名称 说明
filename 文件的完整路径
attributes 该参数是要为给定文件设置的属性列表。可在属性变量中一起排序的属性是:
  • $FILENOPRIVS
  • $FILEREADABLE
  • $FILEWRITEABLE
  • $FILEEXECUTABLE
  • $FILEHIDDEN

注释

下面说明 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


FWrite

说明

将格式化数据写入文件。

语法

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 无效的句柄。

另见


FWriteLn

说明

将一行格式化数据写入文件。

语法

FUNCTION FWriteLn (VAL fHdl: FILE, VAL data: [LIST OF] STRING): INTEGER;

自变量说明

自变量名称 说明
fHdl 由以前对 FOpen 的调用设置的文件变量,该调用采用的是 $Create$Append 文件模式。
data 字符串表达式或字符串列表,它们被写出到指定文件的当前文件位置。

FWrite 一样,FWriteLn 函数将简单值写入文本文件。FWriteLnFWrite 的不同之处是,它在写出其自变量值(等于 $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 无效的句柄。

另见


HelpOpen

说明

该函数允许用户加载和显示帮助文件,例如,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 要显示的帮助文件主题。这个变量可以是节的名称或下列两种字符串常量之一:
  • 字符串常量 $OSHelpOnHelp 指定要显示的关于帮助的缺省帮助。
  • 字符串常量 $OSHelpContents 指定要显示的帮助内容。

注释

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 帮助文件系统不能显示该文件。

IniRead

说明

该函数从初始化文件读取数据。它允许用户在平台本地的初始化文件里存储和检索信息。

语法

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 文件的文件名。此变量包含的信息可以是下列格式之一:
  • 具有该文件的完整路径的文件名。
  • 不带路径的文件名。将把平台系统目录用作文件地址。
  • 字符串常量 $OSIni$SAIni,它们分别是操作系统特定的 .ini 文件或 Softart.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 未找到文件

另见


IniScan

说明

该函数从初始化文件特定的节里获得一个项目列表。

语法

FUNCTION IniScan(REF rVal: List of String,
                 VAL filename: String,
                 Val section: String, [Val filetype:
                 String] ): Integer;

自变量说明

自变量名称 说明
rVal 此变量是“字符串列表”类型。它接收从 .ini 文件读取的数据列表。
filename 要读取的 .ini 文件的文件名。此变量包含的信息可以是下列格式之一:
  • 具有该文件的完整路径的文件名。
  • 不带路径的文件名。将把平台系统目录用作文件地址。
  • 字符串常量 $OSIni$SAIni,它们分别是操作系统特定的 .ini 文件或 Softart.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 没有创建。操作系统不能创建请求的对象。一个可能的原因是父级窗口句柄引用了已不存在的窗口。

另见


IniWrite

说明

该函数向初始化文件写入数据。

语法

FUNCTION IniWrite(Val filename: String,
                  Val section: String,
                  Val item: String,
                  Val data:[String | Integer | Boolean ],
                  ): Integer;

自变量说明

自变量名称 说明
filename 向其写入数据的 .ini 文件的文件名。此变量包含的信息可以是下列格式之一:
  • 具有该文件的完整路径的文件名。
  • 不带路径的文件名。将把平台系统目录用作文件地址。
  • 字符串常量 $OSIni$SAIni,它们分别是操作系统特定的 .ini 文件或 Softart.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 开发工具包脚本语言参考

返回主页

版权所有