Tivoli 服务台 6.0 开发工具包接口设计器指南
在当前光标位置清除字段,然后输入给定的字符串,如果给出了最大长度,则按此长度截断。
conn: EMUCONNECTION str : STRING EXPRESSION length: INTEGER EXPRESSION
参数 | 说明 |
conn | 必须用 EMUConnect 将连接初始化。 |
str | 要放置在当前字段中的字符串。 |
length | (可选)。字段的最大长度,可能需要截断输入的字符串,以满足此长度要求。 |
INTEGER
在当前光标位置输入字符串。光标的最终位置位于此字符串的最后一个字符之后,就仿佛用户在键盘上输入此字符串一样。此操作与执行下列任务等价:用 $EMUClear 调用 EMUPressKey,然后调用 EMUTypeIn。
VARIABLES rc :INTEGER; conn:EMUCONNECTION; str :STRING; ACTIONS rc := EMUConnect(conn, 'A'); -- conn is associated with session A now IF (rc < 1) THEN -- error handling ELSE str := 'HELLO WORLD!'; rc := EMUClrTypeIn(conn,str); IF (rc < 1 ) THEN -- error handling END; EMUDisConnect(conn); -- frees resources for conn. END; END;
使 EHLLAPI 连接初始化,激活 sessName 所指定的终端会话。
conn: EMUCONNECTION sessName: STRING EXPRESSION
参数 | 说明 |
conn | 用各种终端属性将此句柄初始化。除非要覆盖此句柄以前的初始化结果,否则在应用程序中不要多次将此句柄传送给 EMUConnect。 |
sessName | 通信管理器终端会话短名称(对于 3270 终端会话,一般为“A”、“B”和“C”)。在调用 EMUConnect 之前,必须在通信管理器中启动此终端会话。 |
INTEGER
必须在将连接句柄传送给另一个 EHLLAPI 命令之前执行此命令。
VARIABLES rc :INTEGER; conn:EMUCONNECTION; str :STRING; ACTIONS rc := EMUConnect(conn, 'A'); -- conn is associated with session A now IF (rc < 1) THEN -- error handling ELSE str := 'HELLO WORLD!'; rc := EMUClrTypeIn(conn,str); IF (rc < 1 ) THEN -- error handling END; EMUDisconnect(conn); -- frees resources for conn. END; END;
取消激活已连接的仿真会话,释放为连接句柄分配的资源。
conn: EMUCONNECTION
参数 | 说明 |
conn | 要释放的连接句柄。 |
INTEGER
执行此命令后,连接句柄为 $Unknown。必须调用函数 EMUConnect,以将此连接句柄重新初始化。
VARIABLES rc :INTEGER; conn:EMUCONNECTION; str :STRING; ACTIONS rc := EMUConnect(conn, 'A'); -- conn is associated with session A now IF (rc < 1) THEN -- error handling ELSE str := 'HELLO WORLD!'; rc := EMUClrTypeIn(conn,str); IF (rc < 1 ) THEN -- error handling END; EMUDisconnect(conn); -- frees resources for conn. END; END;
从终端屏幕的给定位置,按给定长度读取字符串。
conn: EMUCONNECTION row : INTEGER EXPRESSION col : INTEGER EXPRESSION length: INTEGER EXPRESSION inStr : STRING PARAMETER
参数 | 说明 |
conn | 指定 TSD 脚本解释器应使用哪个会话来获得字符串的连接句柄。 |
row | 终端屏幕的行。此数值通常在 1 和 24 之间。第 1 行在屏幕的顶部。 |
col | 要从中获得字符的列。有效列通常在 1 到 80 之间。文本屏幕上的第 1 列在最左边。 |
length | 要从屏幕复制的字符个数。 |
inStr | 要复制数据的字符串。 |
INTEGER
在此命令中,主机光标位置不起作用。此命令不移动光标。即使会话为“忙”(OIA 中显示输入禁止器),TSD 脚本解释器也可执行此命令。
VARIABLES rc :INTEGER; str :STRING; conn:EMUCONNECTION; ACTIONS rc := EMUConnect(conn,'A'); IF (rc < 1) THEN -- error handling ELSE rc := EMUFillBuffer(conn,1,1,20,str); IF (rc < 1 ) THEN -- error handling ELSE WinMessageBox($DESKTOP,'FillBuff',$MBOK, 'Row 1, Col 1 '& 'first 20 chars is:'& str); END; EMUDisconnect(conn); END; END;
从当前光标位置开始,将文本文件读到主机屏幕。在每个文本文件行的结尾,按指定的键代码。
conn: EMUCONNECTION filename: STRING EXPRESSION keycode: INTEGER EXPRESSION
参数 | 说明 |
conn | 指定一个连接的会话,作为输入文件的目标。 |
filename | 要读到主机屏幕的文本文件的名称。 |
keycode | EHLLAPI 中的一个有效键代码。 |
将每个文件行读到屏幕上后,按此键。
INTEGER
VARIABLES rc :INTEGER;
ACTIONS rc := EMUConnect(conn, 'A'); IF (rc < 1) THEN -- error handling ELSE rc := EMUInFile(conn,'EXAMPLE.TXT', $EMUTab); IF (rc < 1 ) THEN -- error handling END; EMUDisconnect(conn); END; END;
假定 EXAMPLE.TXT 包含:
这是一个说明。说明的另一行。最后是说明的第三行。
如果屏幕显示与下列内容相似的内容:
BLGRRR==================================== In===>______________________________________________ 12/12/93
第一个:__________________ 最后一个:______________________ 说明:_________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________
========================================
假定光标在说明的开头位置。
执行实例代码后,您将看到:
BLGRRR==================================== In===>______________________________________________ 12/12/93
第一个:__________________ 最后一个:_____________________ 说明:这是一个说明。说明的另一行。最后是说明的第三行。______________________________________________________ ______________________________________________________
========================================
下载由给定映射所指定的屏幕数据。
conn: EMUCONNECTION mapName : STRING EXPRESSION downloadBuff: ANY
参数 | 说明 |
conn | 指定应从哪个会话下载数据。 |
mapName | 下载进程中要使用的映射文件的名称。 |
downloadBuff | (至少)包含已在映射文件中命名的字段的记录结构。从映射中指定的位置读取数据,并将数据放入与映射文件中给定的字段名称同名的记录字段。 |
INTEGER
注
EMUMapDownload 代替了使用许多 EMUFillBuffer 命令的做法,因为这些映射提供了一种将数据类型快速转换为 TSD 脚本类型的方法。例如,如果使用 EMUFillBuffer 从屏幕获得数据,则所有数据是一个 TSD 脚本字符串。接着必须以一次一个字段的方法来转换数据。
对于 TIME、DATE、INTEGER 和 REAL 类型,EMUMapDownload 在将值放入记录字段之前,消除数据字段中的前导空格和结尾空格。对于 STRING 类型,则复制此数据,就像从主机屏幕将数据复制到记录字段一样(与 EMUFillBuffer 相似)。
TYPES SomeRec IS RECORD Name:STRING; Age :INTEGER; END;
VARIABLES rc :INTEGER; rec :SomeRec; conn:EMUCONNECTION; ACTIONS rc := EMUConnect(conn, 'A'); IF (rc < 1) THEN -- error handling ELSE rc := EMUMapDownload(conn,'EX1.MAP',rec); IF (rc < 1 ) THEN -- error handling ELSE -- do something with data in rec now. END; EMUDisconnect(conn); END; END;
假定 EX1.MAP 包含:
*FIELDS NAME 5 12 10 SYSFORMAT DEFAULT_FORMAT AGE 6 6 3 SYSFORMAT DEFAULT_FORMAT
假定主机屏幕与下列实例相似:
========================================
FULL NAME: Jon Rigsby AGE: 18
========================================
在满足此例中的条件下,在执行 EMUMapDownload 之后,将给 rec 变量赋予名称 Jon Rigsby 和年龄 18。
上载由给定映射文件所指定的全屏幕数据。
conn: EMUCONNECTION mapName : STRING EXPRESSION uploadBuff: ANY
参数 | 说明 |
conn | 指定应将数据上载到哪个会话。 |
mapName | 指定映射文件的名称,此文件在上载期间确定数据的放置和转换。 |
uploadBuff | 包含要上载到屏幕的数据的变量。此变量 的类型可能是简单的 TSD 脚本类型(TIME、DATE、INTEGER、STRING) 或用户定义的记录类型。 |
INTEGER
如果在上载期间值是 $Unknown,则跳过此字段。
TYPES SomeRec IS RECORD first:STRING; last :STRING; age :INTEGER; bday :DATE; END;
VARIABLES rc :INTEGER; conn:EMUCONNECTION; rec :SomeRec; ACTIONS rc := EMUConnect(conn, 'A'); IF (rc < 1) THEN -- error handling ELSE rec.first := 'John'; rec.last := 'Doe'; rec.age := 30; rec.bday := {8/6/1963}:DATE; rc := EMUMapUpload(conn, 'EX1.MAP', rec); IF (rc < 1 ) THEN -- error handling END; EMUDisconnect(conn); END; END;
假定 EX1.MAP 包含:
*FIELDS FIRST 3 14 10 SYSFORMAT DEFAULT_FORMAT LAST 4 12 20 SYSFORMAT DEFAULT_FORMAT AGE 5 6 3 SYSFORMAT DEFAULT_FORMAT BDAY 6 13 10 SYSFORMAT DEFAULT_FORMAT
假定主机屏幕与下列实例相似:
========================================
FIRST NAME: __________ LAST NAME: ____________________ AGE: ___ BIRTH DATE: __________
========================================
在成功地执行 EMUMapUpload 之后,主机屏幕与下列所示内容相似:
========================================
FIRST NAME: John LAST NAME: Doe AGE: 30 BIRTH DATE: 08/06/1963
========================================
将主机光标移到给定的行和列。
conn: EMUCONNECTION row : INTEGER EXPRESSION col : INTEGER EXPRESSION
参数 | 说明 |
conn | 标识要在其中移动光标的终端会话。 |
row | 光标应移到的主机屏幕的行。第 1 行在屏幕的顶部。 |
col | 光标应移到的主机屏幕的列。第 1 列在主机屏幕的最左边。 |
INTEGER
当主机显示“禁止输入”时,不能移动光标。超过范围的行或列返回错误代码。
VARIABLES rc :INTEGER; conn:EMUCONNECTION; ACTIONS rc := EMUConnect(conn, 'A'); IF (rc < 1) THEN -- error handling ELSE rc := EMUMoveCursorTo(conn, 10, 10); IF (rc < 1 ) THEN -- error handling ELSE EMUClrTypeIn(conn, 'THIS STARTS AT POSITION 10,10'); END; EMUDisconnect(conn); END; END;
将主机屏幕的矩形部分(由给定坐标定义)转储到已命名的文件。
conn: EMUCONNECTION filename: STRING EXPRESSION topRow : INTEGER EXPRESSION leftCol : INTEGER EXPRESSION botRow : INTEGER EXPRESSION rightCol: INTEGER EXPRESSION
参数 | 说明 |
conn | 指定要从中捕捉文本部分的终端会话。 |
filename | 文本应转储到的文件名。如果此文件已存在,则用新数据替换以前的数据。如果此文件不存在,则创建它。 |
topRow | 某个主机行,指文本的矩形部分的首行。 |
leftCol | 终端列号码,指要写入文件的文本左侧的最后一列。 |
botRow | 某个主机行,指文本的矩形部分的末行。 |
rightCol | 某个主机列,指文本的矩形部分的最右一列。 |
INTEGER
如果执行此命令时文件不存在,则创建此文件。如果此文件已存在,则将新数据附加到此文件的尾部。
VARIABLES rc :INTEGER; conn:EMUCONNECTION; msg :STRING; ACTIONS rc := EMUConnect(conn, 'A'); IF (rc < 1) THEN -- error handling ELSE rc := EMUFillBuffer(conn, 3, 1, 5, msg); IF (rc < 1 ) THEN -- error handling ELSE IF (msg = 'ERROR') THEN -- capture the screen to a file EMUOutFile(conn, 'ERRFILE.TXT',1,1,24,80); END; END; EMUDisconnect(conn); END; END;
按键代码所指定的控制键。键代码可以是 TSD 脚本系统定义的整数中的一个($EMUClearKey、$EMUEnter)。
conn: EMUCONNECTION keycode: INTEGER EXPRESSION
参数 | 说明 |
conn | 标识应发送按键的终端会话。 |
keycode | 要按的键。 |
INTEGER
当主机显示“禁止输入”时,不能按键。
VARIABLES rc :INTEGER; conn:EMUCONNECTION;
ACTIONS rc := EMUConnect(conn, 'A'); IF (rc < 1) THEN -- error handling ELSE rc := EMUPressKey(conn, $EMUPF3); IF (rc < 1 ) THEN -- error handling ELSE EMUClrTypeIn(conn, 'JON_R'); EMUPressKey(conn, $EMUTab); EMUClrTypeIn(conn, 'mypasswd'); rc := EMUPressKey(conn, $EMUEnter); IF (rc < 1 ) THEN -- error handling, login failed. END; END; END; END;
获得当前主机光标位置。
conn: EMUCONNECTION row : INTEGER PARAMETER col : INTEGER PARAMETER
参数 | 说明 |
conn | 指定要从中获得光标位置的终端会话。 |
row | 执行此命令时光标所在的行。 |
col | 主机光标所在的列。 |
INTEGER
VARIABLES rc :INTEGER; conn:EMUCONNECTION; r,c:INTEGER; ACTIONS ... EMUPressKey(conn,$EMUEndKey); EMUQueryCursor(conn,r,c); IF (c > 59) THEN EMUPressKey(conn, $EMUTab); END; EMUTypeIn(conn,'Is this on new field?');
END;
以文本行和列的形式返回屏幕的大小。
conn: EMUCONNECTION row : INTEGER PARAMETER col : INTEGER PARAMETER
参数 | 说明 |
conn | 指定要获得大小的终端会话。 |
row | 此参数获得主机屏幕的高度。 |
col | 主机屏幕中包含的列数。 |
INTEGER
VARIABLES rc :INTEGER; conn:EMUCONNECTION; r,c:INTEGER; ACTIONS ... -- at this point in the code, you decide -- that you need to capture the entire host screen to a file. EMUQuerySession(conn, r, c); EMUOutFile(conn,'ERRFILE.TXT',1,1,r,c); END;
为指定的字符串扫描终端会话。如果找到此字符串,则以“行,列”格式返回此字符串的起始位置。
conn: EMUCONNECTION row : INTEGER PARAMETER col : INTEGER PARAMETER
参数 | 说明 |
conn | 要扫描的终端会话 |
row | 如果找到此字符串,则此参数包含此字符串所在的首行 |
col | 找到的字符串所在的首列 |
INTEGER
将空白或 $Unknown 字符串传送到 EMUScanForString 的函数无效。扫描也是区分大小写的。
VARIABLES rc :INTEGER; conn:EMUCONNECTION; r,c:INTEGER;
ACTIONS ... rc := EMUScanForString(conn,'JON RIGSBY',r,c); IF (rc < 1) THEN IF (rc = -24) THEN WinMessageBox($DESKTOP,'Not Found',$MBOK, 'Did not find '& 'JON RIGSBY'); ELSE -- some other error has occurred END; ELSE WinMessageBox($DESKTOP,'Found',$MBOK,'Found '& 'JON RIGSBY at row '& r &' column '& c); END;
END;
为跟在此调用之后的任意“等待”命令设置超时。
conn: EMUCONNECTION timelimit: INTEGER EXPRESSION
参数 | 说明 |
conn | 要设置超时限制的终端会话。 |
timelimit | 在取消任意 EMUWait 命令之前,此命令等待的最长时间(以毫秒计)。 |
INTEGER
缺省时间限制是 500 毫秒。用 EMUSetWatchTimeLimit 设置的时间限制用于跟在其后的此连接的所有 EMUWait 命令。设置此时间限制为零有效。在这种情况下,EMUWait 函数立即返回“返回代码”,指示是否满足条件。
VARIABLES rc :INTEGER; conn:EMUCONNECTOIN; ACTIONS .. rc := EMUSetWatchTimeLimit(conn,1000); -- 1 second IF (rc < 1) THEN -- error handling ELSE rc := EMUWaitForNoX(conn); END; END;
在当前光标位置输入给定的字符串。
conn: EMUCONNECTION str : STRING EXPRESSION length: INTEGER EXPRESSION
参数 | 说明 |
conn | 应在其中输入字符串的终端会话。 |
str | 要在当前光标位置输入的字符串。 |
length | 指定输入字符串的最大长度(可选)。如果字符串超出了允许的长度,则截断它。 |
INTEGER
如果输入字符串为空白,则返回代码为 5008。没有字符输入到主机屏幕。
VARIABLES rc :INTEGER; conn:EMUCONNECTION;
ACTIONS ... EMUMoveCursorTo(conn, 10,10); EMUTypeIn(conn,'JON RIGSBY',20); EMUPressKey(conn,$EMUTab); EMUTypeIn(conn,'18'); EMUPressKey(conn,$EMUTab); EMUTypeIn(conn,'1901 Niagara Drive',30); rc := EMUPressKey(conn,$EMUEnter); IF (rc < 1) THEN -- error handling END; END;
暂停应用程序,直到在指定位置出现主机光标,或直到看守时间限制过期。
conn: EMUCONNECTION row : INTEGER EXPRESSION col : INTEGER EXPRESSION
参数 | 说明 |
conn | 指定要在其上等待的终端会话。 |
row | 希望光标出现的行位置。 |
col | 希望光标出现的列位置。 |
INTEGER
VARIABLES rc :INTEGER; conn:EMUCONNECTION; ACTIONS ... EMUPressKey(conn, $EMUPF3); rc := EMUWaitForCursorAt(conn, 1, 5); IF (rc < 1) THEN IF ((rc = 1010) or (rc = 1011)) THEN -- wait gave up ELSE -- error END; ELSE -- continue with normal processing END; END;
暂停执行,直到在指定位置不再出现主机光标,或直到看守时间限制过期。
conn: EMUCONNECTION row : INTEGER EXPRESSION col : INTEGER EXPRESSION
参数 | 说明 |
conn | 要在其上等待的终端连接。 |
row | 光标应在此处消失的行。 |
col | 光标应在此处消失的列。 |
INTEGER
VARIABLES rc :INTEGER; conn:EMUCONNECTION; ACTIONS ... EMUPressKey(conn, $EMUPF3); rc := EMUWaitForCursorNotAt(conn, 10,10); IF (rc < 1) THEN IF (rc = 1010) THEN -- wait gave up ELSE -- other error END; ELSE -- continue with normal processing END; END;
暂停执行,直到主机“输入禁止”指示器从 OIA 中消失。如果给出了稳定时间,则 TSD 脚本解释器确保在返回前此指示器在总稳定时间段内保持消失状态。
conn: EMUCONNECTION settleTime: INTEGER EXPRESSION
参数 | 说明 |
conn | 要等待的终端连接。 |
settleTime | (可选)。TSD 脚本解释器在 X 消失之后等待的时间,以确保 X 指示器已“稳定”。 |
INTEGER
VARIABLES rc :INTEGER; conn:EMUCONNECTION; ACTIONS ... -- fill in the data on the screen EMUMoveCursorTo(conn, 10, 10); EMUClrTypeIn(conn, 'JON RIGSBY'); EMUPressKey(conn, $EMUTab); EMUClrTypeIn(conn, '1901 Niagara Drive'); EMUPressKey(conn, $EMUTab); EMUClrTypeIn(conn, 'Ontario, Canada'); -- press enter to accept the data EMUPressKey(conn, $EMUEnter); rc := EMUWaitForNoX(conn); IF (rc < 1) THEN IF ((rc = 1011) OR (rc = 1012)) THEN -- wait gave up ELSE -- some other error END; ELSE -- continue normal processing END; END;
暂停执行,直到给定的搜索字符串出现(其第一个字符出现在给定的行和列),或直到看守时间限制过期。
conn: EMUCONNECTION str : STRING EXPRESSION row : INTEGER EXPRESSION col : INTEGER EXPRESSION
参数 | 说明 |
conn | 要在其上等待的终端连接。 |
str | 要等待的字符串。 |
row | 出现字符串的主机行。 |
col | 出现字符串的列。 |
INTEGER
如果搜索字符串是空白或 $Unknown,则立即返回错误返回代码。
VARIABLES rc :INTEGER; conn:EMUCONNECTION; ACTIONS ... EMUPressKey(conn, $EMUPF3); rc := EMUWaitForStringAt(conn,'ENTER YOUR LOGIN NAME:', 3, 5);
IF (rc < 1) THEN IF (rc = 1010) THEN -- wait gave up ELSE -- other general error END; ELSE -- continue normal processing END;
END;
暂停执行,直到给定的字符串从指定的主机位置消失或直到看守时间限制过期。
conn: EMUCONNECTION str : STRING EXPRESSION row : INTEGER EXPRESSION col : INTEGER EXPRESSION
参数 | 说明 |
conn | 要在其上等待的终端连接。 |
str | 从主机屏幕消失的字符串。 |
row | 字符串应在此处消失的行。 |
col | 字符串的第一个字符应在此处消失的列。 |
INTEGER
如果搜索字符串是空白或 $Unknown,则出现错误返回代码。
VARIABLES rc :INTEGER; conn:EMUCONNECTION; ACTIONS ... EMUMoveCursorTo(conn, 10, 10); EMUClrTypeIn(conn,'JONATHAN K. RIGSBY'); EMUPressKey(conn, $EMUEnter); rc := EMUWaitForStringNotAt(conn, 'JONATHAN K. RIGSBY', 10, 10); IF (rc < 1) THEN IF (rc = 1010) THEN -- wait gave up ELSE -- other general error END; ELSE -- continue normal processing END; END;
Tivoli 服务台 6.0 开发工具包旧 API 指南