Index
MACRO for Tera Term

Mar 10, 1998

T. Teranishi

Copyright (C) 1994-1998 T. Teranishi

All Rights Reserved.

MACRO (TTMACRO.EXE) は Tera Term 用マクロ実行プログラムです。マクロ言語 "Tera Term Language (TTL)" によって、 Tera Term を制御し、オートダイアル、オートログインなどの機能を実現することができます。

使い方

マクロ実行法

コマンドライン

"TTL" ファイルを MACRO に関連付ける方法

マクロ言語 "Tera Term Language (TTL)"

TTL コマンドリファレンス

補足説明


マクロ実行法

TTMACRO.EXE は TERATERM.EXE があるディレクトリに置かれていなければなりません。

マクロファイルを実行するには、2通りの方法があります。

1) Tera Term からマクロを実行する。

Tera Term の [Control] Macro コマンドを実行してください。すると、MACRO が起動し、マクロファイル (*.TTL) を選択するダイアログボックスが現れるので、実行したいマクロファイルを選択してください。

2) MACRO を直接起動し、マクロを実行する。 (Tera Term はマクロから起動。)

TTMACRO.EXE を起動するときのコマンドラインでマクロファイル名を指定することができます。例えばマクロファイル "DIALUP.TTL" を実行したい場合、コマンドラインは、

TTMACRO DIALUP.TTL

と指定してください。マクロファイル名の拡張子 ".TTL" は省略可能です。マクロファイル名を省略すると、MACRO 起動後にマクロファイルを選択するダイアログボックスが現れます。よく使用するマクロは、アイコン(ショートカット)を作成しておくと便利です。

方法 2) で、MACRO を起動した場合、マクロコマンド connect によって、Tera Term を起動することができます。

マクロ実行中は、「MACRO - <マクロファイル名>」というアイコンまたはダイアログボックスがあらわれます。ダイアログボックスの「Pause」/「Start」/「End]ボタンを押すとマクロを停止/再開/終了することができます。


コマンドライン

TTMACRO.EXE [/I] [/V] [<macro file> [<second param>] [<third param>]]

ここで:

/I	起動時に MACRO をアイコン化
/V	起動時に MACRO を隠す
<macro file>	マクロファイル名
<second param>	システム変数 param2 に格納される文字列
<third param>	システム変数 param3 に格納される文字列

システム変数 param2, param3 については "変数" 参照。


"TTL" ファイルを MACRO に関連付ける方法

拡張子 ".TTL" を持つマクロファイルを MACRO に関連付けるには、以下のようにしてください。

1) ファイルマネージャの [ファイル]-[アプリケーションとの関連付け]を実行する。

2) 以下のように書く項目を設定し、「OK」ボタンを押す。

拡張子: TTL

実行されるアプリケーションプログラム:

C:\TERATERM\TTMACRO.EXE %1

(Tera Term が C:\TERATERM にインストールされている場合)


マクロ言語 "Tera Term Language (TTL)"

TTL は BASIC に似た単純なインタープリタ型の言語です。はやく覚えるには、配布パッケージに含まれるマクロファイルのサンプルを参考にし、「TTL コマンドリファレンス」を読んで下さい。

データ型

定数の形式

名前の形式

変数

式と演算子

行の形式


データ型

TTL が扱えるデータの型は2種類。

整数

TTMACRO.EXE for Windows 3.1 の場合、符号付き 16 bit、-32768から32767まで。

TTPMACRO.EXE for Windows 95/NT の場合、符号付き 32 bit、-2147483648から2147483647まで。

文字列

NUL 文字を除くすべての文字を含むことができる。最大長は255文字。


定数の形式

1) 整数型定数

10進数または "$" で始まる16進数で表現する。

例:

123

-11

$3a

$10F

負の整数定数についての注意

2) 文字列型定数

文字列型定数を表現する方法は2つ。

a) 値となる文字列の両端を ' か " で囲む(両端とも同じ文字で)。文字列値を構成する文字は表示可能で囲み文字と異なる文字ならば何でもよい。

例:

'Hello, world!'

"I can't do that."

"漢字も可能"

b) 1文字を ASCII (または JIS ローマ字、Shift-JIS) コード(10進数または$で始まる16進数)で表現し、先頭に "#" をつける。ASCII コード 0 の文字 (NUL) は文字列定数に含めることができない。

例:

#65	文字 "A"
#$41	文字 "A"
#13	CR 文字

ASCII コード表

a) と b) は組み合わせることが可能。

例:

'cat readme.txt'#13#10

abc'#$0d#$0a'def'#$0d#$0a'ghi'


名前の形式

1) 変数の名前

1文字目は、アルファベット (A-Z, a-z) か "_"、2文字目以降はアルファベットか "_" か数字 (0-9)。アルファベットの大文字と小文字は区別されない。最大長は32文字。

例:

send

VARIABLE1

_flag

2) ラベルの名前

アルファベット (A-Z, a-z) か "_" か数字 (0-9) で構成される。最大長は32文字。

例:

label1

100

3) 予約語

以下に示す名前は、コマンドや演算子、システム変数として使われる。ユーザーが定義する変数やラベルの名前として使うことはできない。

コマンド:

bplusrecv, bplussend, changedir... (コマンドリストを参照)

演算子:

and, not, or, xor

システム変数:

inputstr, param2, param3, result, timeout


変数

1) ユーザー変数

ユーザーにより定義される。型および値は初めて値が代入されたときに決まる。いったん型が決まると違う型の値を代入することはできない。

2) システム変数

あらかじめ型と値が定義され、特定のコマンドと共に使用される。

名前	型	初期値	システム変数を使用するコマンド
inputstr	文字列	""	recvln, waitln, waitrecv, passwordbox, inputbox
param2	文字列	*1	*1
param3	文字列	*1	*1
result	整数	0	bplussend, bplusrecv, kmtfinish, kmtget, kmtrecv, kmtsend, quickvanrecv, quickvansend, recvln, wait, waitevent, waitln, waitrecv, xmodemrecv, xmodemsend, zmodemrecv, zmodemsend, str2int, strcompare, strlen, strscan, filereadln, filesearch, filestrseek, yesnobox
timeout	整数	0	recvln, wait, waitevent, waitln, waitrecv
*1 MACRO 起動時のコマンドラインパラメータの2, 3番目がシステム変数 param2, param3 の初期値となる。1番目の文字列はマクロファイル名。"コマンドライン" 参照。


式と演算子

式は、定数、変数、演算子、カッコで表現する。定数と変数は整数型のみ。結果も整数型。関係演算子を用いた式の結果の値は、真のとき 1、偽のとき 0となる。

演算子の優先順位による分類は以下のとおり

種類	優先順位	演算子
単項演算子	1 (最高)	not
乗除演算子	2	* / %
加減演算子	3	+ - or xor
関係演算子	4 (最低)	= <> < > <= >=

注: A % B の値は A / B の余り。

例:

1 + 1
4 - 2 * 3	この式の値は-2
15 % 10	この式の値は5
3 * (A + 2)	A は整数型の変数
A and not B
A <= B	A, B は整数型の変数。結果の値は真のとき1、偽のとき0


行の形式

行の形式は以下の4つに分類できる。どの行も ";" 文字で始まるコメントを含むことができる。コメントは MACRO の実行に影響を与えない。

1) 空白行

文字がない行や空白文字 (space または tab)やコメントだけの行。MACROの実行に影響をあたえない。

例:

; Tera Term Language

2) コマンド行

1つのコマンド名と0個以上のパラメータ。

形式:

<コマンド> <パラメータ> ...

例:

connect'myhost'

wait 'OK' 'ERROR'

if result=2 goto error

sendln 'cat'

pause  A*10

end

3) 代入行

変数に値を代入する。

形式:

<変数> = <定数、変数、式>

例:

A = 33	数値の代入
B = C	C はすでに値が代入されてなければならない。
VAL = I*(I+1)
A=B=C	B=C の結果 (真:1、偽:0) が A に代入される。
Error=0<J
Username='MYNAME'	文字列の代入

4) ラベル行

":" とその直後に続くラベル名からなる。

形式:

:<label name>

例:

:dial

:300


TTL コマンドリファレンス

コマンドの分類

通信コマンド

bplusrecv	changed

bplussend	changed

changedir

clearscreen	new

closett

connect	changed

disconnect

enablekeyb	new

flushrecv

gettitle

kmtfinish	new

kmtget	new

kmtrecv	changed

kmtsend	changed

loadkeymap

logclose

logopen

logpause

logstart

logwrite

quickvanrecv	changed

quickvansend	changed

recvln

restoresetup

send

sendbreak

sendfile

sendkcode	new

sendln

setecho

setsync

settitle

showtt	changed

testlink	new

unlink

wait

waitevent

waitln

waitrecv

xmodemrecv	changed

xmodemsend	changed

zmodemrecv	changed

zmodemsend	changed

制御コマンド

call

end

execcmnd

exit

for, next

goto

if, then, elseif, else, endif

include

pause

return

while, endwhile

文字列操作コマンド

code2str	new

int2str

str2code	new

str2int

strcompare

strconcat

strcopy

strlen

strscan

ファイル操作コマンド

fileclose

fileconcat

filecopy

filecreate

filedelete

filemarkptr	new

fileopen

filereadln

filerename

filesearch

fileseek

fileseekback	new

filestrseek

filestrseek2	new

filewrite

filewriteln

findfirst, findnext, findclose	new

getdir	new

makepath	new

setdir	new

パスワードコマンド

delpassword

getpassword

passwordbox

その他のコマンド

beep

closesbox

exec

getdate

getenv

gettime

inputbox

messagebox

setdate

setdlgpos

setenv	removed

setexitcode	new

settime

show

statusbox

yesnobox


bplusrecv
bplusrecv	changed

形式:

bplusrecv

B-Plus プロトコルでファイルを受信する。

受信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。


bplussend
bplussend	changed

形式:

bplussend <filename>

ファイル <filename> を B-Plus プロトコルで送信する。

送信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

例:

bplussend 'readme.txt'


changedir

形式:

changedir <path>

Tera Term の現在のディレクトリを変更する。

注意: setdir コマンドは MACRO の現在のディレクトリを変更する。通信コマンド(kmtsend 等)で指定されるファイル名は Tera Term の現在のディレクトリを基準にする。その他のコマンド(fileopen 等)で指定されるファイル名は MACRO の現在のディレクトリを基準にする。

例:

changedir 'c:\'


clearscreen
clearscreen	new

形式:

clearscreen	<int>

<int> が0の場合、 Tera Term の VT ウインドウの画面を消去する。

<int> が1の場合、 Tera Term の VT ウインドウのスクロールバッファーの内容と画面を消去する。

<int> が2の場合、 Tera Term の TEK ウインドウの画面を消去する。

例:

clearscreen 0


closett

形式:

closett

Tera Term を終了させ、 MACRO は非リンク状態に入る。非リンク状態では、connect コマンドによって新しい Tera Term ウィンドウを開き、 MACRO をそれにリンクさせることができる。

参照:

"connect"

"disconnect"

"testlink"

"unlink"

例:

closett

connect 'host'


connect
connect	changed

形式:

connect <command line parameters>

MACRO が Tera Term とリンクされていない場合、Tera Term を起動してMACRO とリンクする。<command line parameters> は、Tera Term を起動する時のコマンドラインパラメータ。

MACRO が Tera Term とすでにリンクされていて、Tera Term がホストに接続されていない場合、Tera Term をコマンドライン <command line parameters> で指定されるホストに接続させる。

Tera Term のコマンドラインパラメータについては、Tera Term ヘルプを参照。

MACRO が Tera Term とすでにリンクされていて、Tera Term がホストにすでに接続されている場合、このコマンドは無視される。

このコマンドの結果、リンクと接続の状態に応じて以下のうちの一つの値がシステム変数 result に格納される。

値	状態
0	Tera Term とリンクされていない。
1	ホストへの接続はされていないが、Tera Term へのリンクはされている。
2	リンクおよび接続両方ともされている。

"connect" コマンドを実行する前にリンクと接続の状態を調べるには、"testlink" コマンドを使うことができる。

Tera Term と MACRO のリンクしていない状態では、"connect" と "testlink" 以外の通信コマンドは実行できない。

参照:

"closett"

"disconnect"

"testlink"

"unlink"

例:

connect ''	パラメータなしで Tera Term を起動
connect '/C=2'	パラメータ "/C=2"をつけて Tera Term を起動
connect 'foohost.foo.foo.jp'
CommandLine = '111.111.11.11'
connect CommandLine


disconnect

形式:

disconnect

Tera Term とホストの間の通信を終了させる。

もしこのコマンドによって Tera Term が終了しなければ、Tera Term と MACRO の間のリンクは保持される。

参照:

"closett"

"connect"

"testlink"

"unlink"


enablekeyb
enablekeyb	new

形式:

enablekeyb <flag>

Tera Term のキーボード入力を許可/禁止する。<flag> の値が1の場合は許可、0の場合は禁止。

例:

enablekeyb 0


flushrecv

形式:

flushrecv

MACRO の受信バッファーの内容を消す。

ホストから受信した文字は MACRO に転送され、MACRO の受信バッファーに保存される。受信文字を処理するコマンド("wait" コマンド等)はそれらの文字をバッファーから読み出す。バッファーの中の文字は受信文字を処理するコマンドがそれらを読みだすか、バッファーがあふれるか、flushrecv コマンドがバッファーの内容を消すまで保持される。

バッファーの中に古い文字がたまっているために受信文字を処理するコマンドの結果が予期しないものになることがあり、flushrecv コマンドによってそれを防ぐことができる。


gettitle

形式:

gettitle <strvar>

Tera Term のウィンドウタイトルを文字列変数 <strvar> に格納する。

例:

gettitle titletext


kmtfinish
kmtfinish	new

形式:

kmtfinish

Kermit Finish コマンドを実行する。

Finish コマンドが終了するまで次のコマンドは実行されない。

Finish コマンドが正しく実行された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。


kmtget
kmtget	new

形式:

kmtget <filename>

ファイル <filename> を Kermit Get コマンドを使用してホストから受信する。 ホストは server 状態でなければならない。 受信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

例:

kmtget '*.*'


kmtrecv
kmtrecv	changed

形式:

kmtrecv

Kermit プロトコルでファイルを受信する。

受信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。


kmtsend
kmtsend	changed

形式:

kmtsend <filename>

ファイル <filename> を Kermit プロトコルで送信する。

送信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

例:

kmtsend 'readme.txt'


loadkeymap

形式:

loadkeymap <filename>

キーボード設定ファイル <filename> を Tera Term に読み込ませる。

例:

loadkeymap 'keyboard.cnf'


logclose

形式:

logclose

Tera Term のログを終了する。


logopen

形式:

logopen <filename> <binary flag> <append flag>

Tera Term のログを開始する。ファイル <filename> に受信した文字が書き込まれる。ログを開始したあとも次のコマンドは実行される。

<binary flag> の値が0のとき、受信した漢字、改行文字は変換されてファイルに書き込まれ、エスケープシーケンスは書き込まれない。<binary flag> の値が0以外のとき、受信した文字をすべてそのままファイルに書き込む。

<append flag> の値が0以外で、ファイル <filename> がすでに存在する場合、そのファイルに追加して書き込む。

<append flag> の値が0で、ファイル <filename> がすでに存在する場合、そのファイルは上書きされる。

例:

logopen 'myhost.log' 0 0


logpause

形式:

logpause

Tera Term のログを一時中断する。中断してる間に受信された文字はログファイルに書き込まれない。


logstart

形式:

logstart

中断していた Tera Term のログを再開する。


logwrite

形式:

logwrite <string>

文字列 <string> を Tera Term のログファイルに追加して書き込む。

このコマンドは Tera Term がログを取っている時だけ有効。ログを一時中断している時でも書き込むことができる。

例:

logwrite 'LOG FILE'#13#10


quickvanrecv
quickvanrecv	changed

形式:

quickvanrecv

Quick-VAN プロトコルでファイルを受信する。

受信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。


quickvansend
quickvansend	changed

形式:

quickvansend <filename>

ファイル <filename> を Quick-VAN プロトコルで送信する。

送信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

例:

quickvansend 'readme.txt'


recvln

形式:

recvln

ホストから一行分の文字を受信し、システム変数 inputstr に格納する。

このコマンドは一行受信するか、Tera Term とホストの通信が終了するか、タイムアウトが起きるまで待つ。システム変数 timeout が0より大きい場合、<timeout> 秒の時間がすぎるとタイムアウトが起こる。 timeout の値が0以下の場合は、タイムアウトはない。

もし、一行分の文字が受信された場合、システム変数 result に1が格納される。そうでない場合 result に0が格納される。

例:

fileopen file 'log.txt' 0	ログファイルを開く
setsync 1	同期モードに入る
result=1
while result=1
recvln	一行受信
filewriteln file inputstr	それをログファイルに書く
endwhile
setsync 0	非同期モードに入る

同期モードについては "setsync" を参照。


restoresetup

形式:

restoresetup <filename>

Tera Term 設定ファイル <filename> を Tera Term に読み込ませる。

例:

restoresetup 'teraterm.ini'


send

形式:

send <data1> <data2> ....

<data> が文字列型の場合、文字列をホストへ送信させる。

<data> が整数型の場合は、その値の下位バイト(0-255)を ASCII コードとみなし、その文字を送信させる。

例:

send 'ABC'
send  65 66 67	"ABC" を送信させる。("A" の ASCII コードは65)
myname='Tera Term'
send 'My name is ' myname '.'


sendbreak

形式:

sendbreak

ブレーク信号をホストへ送出する。


sendfile

形式:

sendfile <filename> <binary flag>

ファイルを送信する。送信が終わるまで次のコマンドは実行されない。

<binary flag> の値が0以外のとき、ファイルの内容をそのまま送信する。

<binary flag> の値が0のとき、ファイルの中に含まれる漢字、改行文字を変換して送信する。TAB ($09), LF ($0A), CR ($0D) 以外の制御文字は送信されない。

例:

sendfile 'data.dat' 1


sendkcode
sendkcode	new

形式:

senkcode <key code> <repeat count>

あるキーまたはキーの組み合わせを押すことに対して割り当てられた機能を Tera Term に実行させる。そのキーまたはキーの組み合わせは KEYCODE.EXE によって定義されるキーコード <key code> で指定される。その機能は <repeat count> 回繰り返して実行される。

通常、その機能とは文字または文字列をホストへ送出するということ。その機能は Tera Term のキーボード設定ファイルによって定義することができる。KEYCODEJ.TXT 参照。

例:

sendkcode 336 3	Tera Term に↓キーが3回押された場合と同じ動作をさせる。↓キーのキーコードは IBM PC キーボードの場合336。


sendln

形式:

sendln <data1> <data2> ....

文字列とそれに続く改行文字をホストへ送信させる。

<data> の形式は、 "send" コマンドと同じ。

例:

sendln	改行文字だけ送信
sendln 'abc'
Password='mypassword'
sendln Password


setecho

形式:

setecho <echo flag>

Tera Term のローカルエコー (local echo) の状態を変える。

もし <echo flag> が0以外ならローカルエコーは on になる。

もし <echo flag> が0ならローカルエコーは off になる。

例:

setecho 1	ローカルエコー on


setsync

形式:

setsync <sync flag>

<sync flag> が0以外ならば同期通信モードに入る。

<sync flag> が0ならば非同期通信モードに入る。

Tera Term はホストから受信した文字を MACRO へ転送する。

MACRO はそれらの文字をバッファーに保存し、受信文字を処理するコマンド("wait" コマンド等)がバッファーから文字を取り出す。

MACRO は初期状態として非同期モードにいる。このモードでは、受信文字を処理するコマンドが長い間実行されない場合、または受信速度が早すぎる場合はバッファーがあふれる可能性がある。

同期モードでは、バッファーは決してあふれない。バッファーがいっぱいになった場合、Tera Term はホストからの文字受信と MACRO への文字転送を停止する。バッファーに再び空きができると Tera Term は文字受信と転送を再開する。

必要な時に限り同期モードに入り、必要でなくなったら非同期モードに戻るようにした方が良い。

複数行にわたる受信した文字を、一文字も失うことなく処理する、というような信頼性が要求されるマクロ処理の場合、同期モードに入る必要がある。しかし、同期モードでは Tera Term の文字受信速度が遅くなり、また受信文字を処理するコマンドが長い間実行されない場合は、Tera Term の文字受信が停止したままになってしまう。一方、単純なマクロ処理(例えば自動ログイン)ならば非同期モードでもほとんど問題なく動作する。この場合、バッファーサイズは十分大きく(4096バイト)、受信したすべての文字はバッファーがあふれる前にコマンドによって処理される。

バッファのクリアについては "flushrecv" 参照。

例:

setsync 1	同期モードに入る
setsync 0	非同期モードに入る


settitle

形式:

settitle <title>

Tera Term のウィンドウタイトルを <title> に変更する。

例:

settitle 'Tera Term'


showtt
showtt	changed

形式:

showtt <show flag>

<show flag> が-1の場合、 Tera Term の VT ウインドウを隠す。

<show flag> が0の場合、 Tera Term  の VT ウインドウを最小化する。

<show flag> が1の場合、 Tera Term の VT ウインドウを元の大きさに戻す。

<show flag> が2の場合、 Tera Term の TEK ウインドウを隠す。

<show flag> が3の場合、 Tera Term の TEK ウインドウを最小化する。

<show flag> が4の場合、 Tera Term の TEK ウインドウを開く、または元の大きさに戻す。

<show flag> が5の場合、 Tera Term の TEK ウインドウを閉じる。

例:

showtt 0	Tera Term を最小化
showtt 1	Tera Term を元の大きさに戻す
showtt -1	Tera Term を隠す.


testlink
testlink	new

形式:

testlink

現在のリンクおよび接続の状態を報告する。

リンクと接続の状態に応じて以下のうちの一つの値がシステム変数 result に格納される。

値	状態
0	Tera Term とリンクされていない。
1	ホストへの接続はされていないが、Tera Term へのリンクはされている。
2	リンクおよび接続両方ともされている。

参照:

"closett"

"connect"

"disconnect"

"unlink"

例:

testlink
if result=0 connect 'host'	もし MACRO が Tera Term にリンクされていなければ connect コマンドを実行


unlink

形式:

unlink

現在の Tera Term ウインドウと MACRO の間のリンクを断つ。

このコマンド以降、MACRO は非リンク状態になり、その Tera Term ウインドウを制御できなくなる。

非リンク状態では、connect コマンドによって新しい Tera Term ウィンドウを開き、MACRO をそれにリンクさせることができる。

参照:

"closett"

"connect"

"disconnect"

"testlink"

例:

connect 'host1'	Tera Term ウインドウを開き、それにリンクする
unlink	リンクを断つ
connect 'host2'	別の Tera Term ウィンドウを開き、それにリンクする


wait

形式:

wait <string1> <string2> ...

文字列 <string1>, <string2>, ...  のうち一つがホストから送られてくるか、タイムアウトが発生するまで MACRO を停止させる。文字列は最大10個まで指定できる。

システム変数 timeout が0より大きい場合、<timeout> 秒の時間がすぎるとタイムアウトが発生する。 timeout の値が0以下の場合は、タイムアウトは発生しない。

このコマンドの実行結果はシステム変数 result に格納される。

変数 result の値の意味は、

値	意味
0	タイムアウト。どの文字列も来なかった。
1	<string1> を受信した。
2	<string2> を受信した。
.	.
.	.

例:

timeout = 30	タイムアウトを30秒に設定。
Wait 'OK' 'ERROR'	文字列 "OK" か "ERROR" を待つ。
if result=0 goto timeout	タイムアウトなら、:timeout へジャンプ。
If result=1 goto ok	"OK" が来たなら、:ok へジャンプ
If result=2 goto error	"ERROR" が来たなら、:error へジャンプ
wait #10'>' 'complete.'#13	行先頭の ">" か、行末の "complete." を待つ。(ASCII コード10, 13は LF, CR)


waitevent

形式:

waitevent <events>

<events> で指定されるイベントが発生するまで MACRO を停止させる。

<events> は以下のイベント識別子の組み合わせ。

イベント	イベント識別子
timeout	1
unlink	2
disconnection	4
connection	8

システム変数 timeout が0より大きい場合、<timeout> 秒の時間がすぎるとtimeout (タイムアウト)イベントが発生する。 timeout の値が0以下の場合は、タイムアウトは発生しない。

unlink イベントは Tera Term が閉じられたときに発生する。

disconnection (または connection) イベントは、Tera Term とホストの間の通信が閉じられた(開かれた)時に発生する。

waitevent コマンドは実際に発生したイベントの識別子をシステム変数 result に格納する。

例:

waitevent 4	disconnection イベントを待つ
waitevent 2 or 8	unlink または connection イベントを待つ
if result=2 goto label1	unlink イベント発生
if result=8 goto label2	connection イベント発生


waitln

形式:

waitln <string1> <string2> ...

文字列 <string1>, <string2>, ...  のうち一つを含む行をホストから受信するか、タイムアウトが発生するまで MACRO を停止させる。文字列は最大10個まで指定できる。

システム変数 timeout が0より大きい場合、<timeout> 秒の時間がすぎるとタイムアウトが発生する。 timeout の値が0以下の場合は、タイムアウトは発生しない。

このコマンドは受信した行をシステム変数 inputstr に格納し、以下の値をシステム変数 result に格納する。

変数 result の値の意味は、

値	意味
0	タイムアウト。
1	<string1> を含む行を受信した。
2	<string2> を含む行を受信した。
.	.
.	.


waitrecv

形式:

waitrecv <sub-string> <len> <pos>

ある条件を満たす1つの文字列がホストから送られてくるか、タイムアウトが発生するまで、 MACRO を停止させる。

その条件とは、文字列の長さが <len> 文字で、 文字列がその <pos> 文字目から始まる副文字列 <sub-string> を含んでいるということ。

例えば、<sub-string> が "def"、<len> が9、<pos> が4のとき、文字列 "abcdefghi" は条件を満たす。

もし条件を満たす文字列が送られてきたら、システム変数 inputstr に保存される。

システム変数 timeout が0より大きい場合、その値の秒数の時間がすぎるとタイムアウトが起きる。 timeout の値が0以下の場合は、タイムアウトはない。

このコマンドの実行結果はシステム変数 result に格納される。

変数 result の値の意味は、

値	意味
-1	<pos> 文字目から始まる <sub-string> を含む文字列が来て、inputstr に保存された。しかし文字列の長さは、タイムアウトのために <len> 文字より短い。
0	タイムアウト。条件を満たす文字列は送られてこなかった。
1	条件をみたす文字列が来て、 inputstr に保存された。


xmodemrecv
xmodemrecv	changed

形式:

xmodemrecv <filename> <binary flag> <option>

XMODEM プロトコルでファイル <filename> を受信する。

受信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

ファイルがバイナリファイルの場合は、<binary flag> は0以外でなければならない。

テキストファイルの場合は、<binary flag> は0でなければならない。

<option> によって、XMODEM のオプションを指定する。

<option>	XMODEM option
1	Checksum
2	CRC
3	1K
それ以外	Checksum

例:

xmodemrecv 'readme.txt' 0 2	XMODEM receive, text file, CRC


xmodemsend
xmodemsend	changed

形式:

xmodemsend <filename> <option>

XMODEM プロトコルでファイル <filename> を送信する。

送信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

<option> によって、XMODEM のオプションを指定する。

<option>	XMODEM option
1	Checksum
2	CRC
3	1K
それ以外	Checksum

例:

xmodemsend 'readme.txt' 1	XMODEM send, checksum


zmodemrecv
zmodemrecv	changed

形式:

zmodemrecv

ZMODEM プロトコルでファイルを受信する。

受信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。


zmodemsend
zmodemsend	changed

形式:

zmodemsend <filename> <binary flag>

ファイル <filename> を ZMODEM プロトコルで送信する。

送信が終わるまで次のコマンドは実行されない。

ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

ファイルがバイナリファイルの場合は、<binary flag> は0以外でなければならない。

テキストファイルの場合は、<binary flag> は0でなければならない。

例:

zmodem 'readme.txt' 0


call

形式:

call <label>

<label> 行から始まるサブルーチンをコールする。

例:

messagebox "I'm in main." "test"
call sub	":sub" へ飛ぶ。
messagebox "Now I'm in main" "test"
end
:sub	サブルーチンの始まり。
messagebox "Now I'm in sub" "test"
return	メインルーチンへもどる。


end

形式:

end

TTL の実行を終了する。MACRO も終了する。


execcmnd

形式:

execcmnd <statement>

文字列 <statement> が表現する TTL コマンド を実行する。

例:

execcmnd "send 'abc'"	コマンド "send 'abc'" を実行。
execcmnd "a=1"


exit

形式:

exit

インクルードファイルから抜け、メインファイルへ戻る。

例:

"include" を参照。


for, next

形式:

for <intvar> <first> <last>

  ...

  ...

next

"for" と "next" の間のコマンドを、整数変数 <intvar> の値が <last> と等しく

なるまで、繰りかえす。

<intvar> の初期値は <first> 。もし <last> が <fast> より大きい場合、<intvar> は "next" 行に来るたびに 1 足される。もし <last> が <fast> より小さい場合、<intvar> は "next" 行にくるたびに 1 引かれる。

例:

for i 1 10	10回繰り返す。
sendln 'abc'
next
for i 5 1	5回繰り返す。
sendln 'abc'
next


goto

形式:

goto <label>

 <label> 行の次の行へジャンプする。

例:

goto label	':label' の次の行へジャンプ。
...
...
...
:label	ラベル行
send 'abc'


if, then, elseif, else, endif

1) 形式:

if <int> <statement>

もし <int> が0以外ならば、コマンド <statement> を実行する。

例:

if A>1 goto label	もし A>1 ならば、':label' へ飛ぶ。
if result A=0	もし result<>0 ならば、A に0を代入。

2) 形式:

if <int 1> then

...

(<int 1> が真(0以外)の場合に実行されるコマンド)

...

[elseif <int 2> then]

...

(<int 1> が偽(0)で、<int 2>が真の場合に実行されるコマンド)

...

[elseif <int N> then]

  ...

(<int 1>, <int 2>,.., <int N-1> がすべて偽で、<int N> が真の場合に実行されるコマンド)

...

[else]

...

(上の条件すべてが偽の場合に実行されるコマンド)

...

endif

'then' は 'if' と 'elseif' 行の最後になければならない。

'elseif' と 'else' はなくてもよい。

'endif' は必ず必要。

例:

if a=1 then

  b = 1

  c = 2

  d = 3

endif

if i<0 then

  i=0

else

  i=i+1

endif

if i=1 then

  c = '1'

elseif i=2 then

  c = '2'

elseif i=3 then

  c = '3'

else

  c = '?'

endif


include

形式:

include <include file name>

インクルードファイルに移る。

例:

----- メインファイル "main.ttl" ------

i=10
:loop
include 'sub.ttl'	インクルードファイルへ移る。
if i>=0 goto loop
end
----- メインファイル終わり -----------

----- インクルードファイル "sub.ttl" ----

if i<0 then
messagebox 'error!' 'sub'
exit	メインファイルへ戻る。
endif
i = i - 1	メインファイルへ戻る。
----- インクルードファイル終わり --------


pause

形式:

pause <time>

TTL の実行を <time> 秒だけ休止する。

例:

pause 10	10秒休止
pause Time


return

形式:

return

サブルーチンを抜け、メインルーチンへ戻る。

例:

"call" 参照。


while
while, endwhile

形式:

while <int>

  ...

  ...

  ...

endwhile

'while' と 'endwhile' の間のコマンドを、 <int> が0以外である限り、繰り返す。

例:

i = 10
while i>0
i = i - 1	10回繰り返す。
endwhile


code2str
code2str	new

形式:

code2str <strvar> <ASCII code>

整数値 <ASCII code> が 1～255 の場合、ASCII コード <ASCII code> に対応する文字を文字列変数 <strvar> に格納する。

このコマンドは <ASCII code> で表される ASCII コード列を文字列に変換し、それを <strvar> に格納する。<ASCII code> の0でない最上位バイトが ASCII コード列の1バイト目とみなされる。<ASCII code> が0の場合、<strvar> には長さ0の文字列 ("") が格納される。文字列の最大長は TTMACRO.EXE の場合2、TTPMACRO.EXE の場合4。

例:

code2str str $41	文字 "A" が変数"str" に格納される。"A" の　ASCII コードは$41。
code2str str $4142	文字列 "AB" が変数 "str" に格納される。$41 は "A" の、$42は "B" のASCII コード。


int2str

形式:

int2str <strvar> <integer value>

整数値 <integer value> を10進表現の文字列に変換して文字列型変数 <strvar> に代入する。

例:

int2str valstr 123	valstrに '123' を代入


str2code
str2code	new

形式:

str2code <intvar> <string>

文字列 <string> が1文字の場合、その文字の ASCII コードを整数変数 <intvar> に格納する。

<string> の長さが2以上の場合、<string> をその ASCII コード列に変換し、それを <intvar> に格納する。 <intvar> は最大 n 個の ASCII コードを格納できる(TTMACRO.EXE の場合 n=2、TTPMACRO.EXE の場合 n=4)。もし <string> の長さが n 文字より長い場合、ASCII コード列の最後の n バイトが <intvar> に格納される。

例:

str2code val 'A'	val=65 ("A" のASCII コード)
str2code val 'AB'	val=65*256+66


str2int

形式:

str2int <intvar> <string>

10進数表現の文字列 <string> を整数値に変換し、整数変数 <intvar> に代入する。正常に変換できた場合は1、できなかった場合は0がシステム変数 result に

代入される。

例:

str2int val '123'	val=123, result=1
str2int val '123abc'	result=0


strcompare

形式:

strcompare <string1> <string2>

2つの文字列 <string1>, <string2> を比較し、結果をシステム変数 result に代入する。

文字列の文字コード表現を符号なし整数(最初の文字が最上位バイト)とみなし、2つの文字列に対応する整数値の大小関係を求め、それに応じて以下のようにresult の値が決定される。

大小関係	result の値
<string1> < <string2>	-1
<string1> = <string2>	0
<string1> > <string2>	1

例:

strcompare 'abc' 'def'	result = -1
strcompare command 'next'
if result=0 goto label
strcompare command 'end'
if result=0 end


strconcat

形式:

strconcat <strvar> <string>

文字列変数 <strvar> の文字列値の最後に 文字列 <string> を継ぎ足す。

例:

filename = 'c:\teraterm\'

strconcat filename 'test.txt'


strcopy

形式:

strcopy <string> <pos> <len> <strvar>

文字列 <string> の <pos> 文字目から <len> 文字分を文字列変数 <strvar> にコピーする。

例:

strcopy 'tera term' 6 4 substr	substr='term'


strlen

形式:

strlen <string>

文字列 <string> の長さをシステム変数 result に格納する。

例:

strlen 'abc'	result の値は3


strscan

形式:

strscan <string> <substring>

文字列 <string> の中に 副文字列 <substring> が含まれているかどうか調べる。

もし、 <substring> が見つかった場合、その位置がシステム変数 result に格納される。<substring> が複数含まれている場合、最初のものの位置が格納される。

もし、<substring> が見つからなかった場合、 result に0が格納される。

例:

strscan 'tera term' 'term'	result の値は6


fileclose

形式:

fileclose <file handle>

ファイルハンドル <file handle> で指定されるファイルをクローズする。

このコマンド実行後、<file handle> は無効となる。

例:

fileclose fhandle


fileconcat

形式:

fileconcat <file1> <file2>

ファイル <file2> の内容をファイル <file1> の最後に追加する。<file1> と <file2> は違うファイルでなければならない。

例:

fileconcat 'test.dat' test2.dat'


filecopy

形式:

filecopy <file1> <file2>

ファイル <file1> をコピーし、ファイル <file2> を作成する。

<file2> がすでに存在する場合は上書きされる。

<file1> と <file2> は違う名前でなければならない。

例:

filecopy 'test.dat' 'test2.dat'


filecreate

形式:

filecreate <file handle> <filename>

ファイル <filename> を新しく作成しオープンする。

ファイルポインタはファイルの先頭にセットされる。すでに同じ名前のファイルが存在する場合、ファイルサイズは0にされる。もしファイルが正しく作成され、オープンされた場合、ファイルハンドルが整数変数 <file handle> に格納される。それ以外の場合、<file handle> に-1が格納される。

例:

filecreate fhandle 'data.dat'


filedelete

形式:

filedelete <filename>

ファイル <filename> を削除する。

例:

filedelete 'temp.log'


filemarkptr
filemarkptr	new

形式:

filemarkptr <file handle>

<file handle> で指定されるオープンされているファイルの現在のファイルポインタを保存する。保存されたファイルポインタは "fileseekback" によって呼び戻すことができる。

例:

filemarkptr fhandle

"filestrseek2" の例を参照


fileopen

形式:

fileopen <file handle> <filename> <append flag>

ファイル <filename> をファイルをオープンする。

ファイルが存在しない場合は、新たに作成されてからオープンされる。

もしファイルが正しくオープンされた場合、ファイルハンドルが整数変数 <file handle> に格納される。それ以外の場合、<file handle> に-1が格納される。

<append flag> が0の場合、ファイルポインタの位置はファイルの始めにセットされる。

<append flag> が0以外の場合、ファイルポインタはファイルの最後にセットされる。

例:

fileopen fhandle 'data.dat' 0

fileopen fhandle 'data.dat' 1


filereadln

形式:

filereadln <file handle> <strvar>

ファイルハンドル <file handle> で指定されるファイルから一行読む。

読み込まれた行は、文字列変数 <strvar> に格納される。

ファイルポインタは次の行の始めへ移動する。もし、行を読んでいる間にファイルポインタがファイルの最後に達した場合、システム変数 result に1が格納される。それ以外の場合、result に0が格納される。

例:

fileopen fhandle 'test.txt' 0	ファイルオープン
:loop
filereadln fhandle line	一行読み込み
if result goto fclose
messagebox line 'test.txt'	読み込んだ行を表示
goto loop	ファイル最後まで繰り返す
:fclose
fileclose fhandle	ファイルクローズ


filerename

形式:

filerename <file1> <file2>

ファイル <file1> を <file2> という名前に変更する。

<file1> と <file2> は違う名前でなければならない。

例:

filerename 'test.dat' test2.dat'


filesearch

形式:

filesearch <filename>

ファイル <filename> が存在するかどうか調べる。

存在する場合は、システム変数 result に1が返る。

存在しない場合は、result に0が返る。

例:

filesearch 'readme.txt'

if result=0 messagebox 'File not found.' 'error'


fileseek

形式:

fileseek <file handle> <offset> <origin>

ファイルハンドル <file handle> で指定されるファイルのファイルポインタを移動する。

移動後のファイルポインタは、

<origin> が0のとき、ファイルの最初から <offset> バイト

<origin> が1のとき、現在の位置から <offset> バイト

<origin> が2のとき、ファイルの最後から <offset> バイト

となる。

例:

fileseek fhandle 0 0	ファイルの最初へ移動
fileseek fhandle 10 1	現在の位置から10バイト先へ移動
fileseek fhandle 0 2	ファイルの最後へ移動
fileseek fhandle 0-10 2	ファイルの最後から10バイト前の位置へ移動


fileseekback
fileseekback	new

形式:

fileseekback <file handle>

ファイルハンドル <file handle> で指定されるオープンされているファイルのファイルポインタを"filemarkptr" コマンドによって保存された位置に移動させる。

例:

fileseekback fhandle

"filestrseek2" の例を参照


filestrseek
filestrseek	new

形式:

filestrseek <file handle> <string>

ファイルハンドル <file handle> で指定されるファイルから、文字列 <string> を検索する。検索は現在のファイルポインタの位置から開始する。

検索は前方(ファイルの終わりの方)に向かって行われる、後方に向かっての検索には "filestrseek2" コマンドを使用する。

<string> が見つかった場合、ファイルポインタは <string> の次の文字の位置になり、システム変数 result に1が格納される。

<string> が見つからなかった場合、ファイルポインタは移動せず、システム変数 result に0が格納される。

例:

fileopen fhandle 'teraterm.log' 0
filestrseek fhandle 'abc'	ファイル "teraterm.log" から文字列 "abc" を検索し、
if result=0 goto not_found
filereadln fhandle str	"abc" の次の文字からその行の終わりまでを読み込む
:not_found
fileclose fhandle


filestrseek2
filestrseek2	new

形式:

filestrseek2 <file handle> <string>

ファイルハンドル <file handle> で指定されるファイルから、文字列 <string> を検索する。検索は現在のファイルポインタの位置から開始する。

検索は後方(ファイルの始めの方)に向かって行われる、前方に向かっての検索には "filestrseek" コマンドを使用する。

<string> が見つかった場合、ファイルポインタは <string> の直前の文字の位置になり、システム変数 result に1が格納される。

<string> が見つからなかった場合、ファイルポインタは移動せず、システム変数 result に0が格納される。

このコマンドを実行する前にすでにファイルポインタが0の場合、result に0が格納される。

例:

fileopen fhandle 'teraterm.log' 1	ファイル "teraterm.log" をオープン、ファイルポインタはファイルの最後
:next
filestrseek2 fhandle 'abc'	文字列 "abc" を後方検索
if result=0 goto not_found
filemarkptr fhandle	ポインタを保存
filereadln fhandle str	"abc" の直前の文字からその行の終わりまでを読み込む
fileseekback fhanlde	ポインタを戻す
goto next	次を検索
:not_found
fileclose fhandle


filewrite

形式:

filewrite <file handle> <string>

ファイルハンドル <file handle> で指定されるファイルへ、文字列 <string> を書き込む。

例:

filewrite fhandle '---------cut here---------'#13#10


filewriteln

形式:

filewriteln <file handle> <string>

ファイルハンドル <file handle> で指定されるファイルへ、文字列 <string> と改行文字 (CR+LF) を書き込む。

例:

filewriteln fhandle '---------cut here---------'


findfirst, findnext, findclose
findfirst	new

形式:

findfirst <dir handle> <file name> <strvar>

findfirst コマンドはファイル名 <file name> にあう最初のファイルを探す。ファイルが見つかった場合、ディレクトリハンドルが <dir handle> に、最初のファイル名が <strvar> に格納され、システム変数 <result> に 1 が格納される。それ以外の場合、<dir handle>, <strvar>, "result" にそれぞれ -1, "", 0 が格納される。

findfirst コマンドが最初のファイルを見つけた場合、ディレクトリハンドルを指定して findnext コマンドを使用し、<file name> にあう次のファイルを探すことができる。ディレクトリハンドルは findclose コマンドによって解放されなければならない。

findnext	new

形式:

findnext <dir handle> <strvar>

findnext コマンドは findfirst コマンドで指定されたファイル名にあう次のファイルを探す。整数値 <dir handle> は findfirst コマンドで得られたディレクトリハンドルでなければならない。もし次のファイルが見つかった場合、<strvar> にファイル名が、"result" に 1 が格納される。 それ以外の場合は、<strvar> と "result" にそれぞれ "" と 0 が格納される。

findclose	new

形式:

findclose <dir handle>

findclose コマンドは findfirst コマンドによって得られたディレクトリハンドル <dir handle> を解放する。このコマンドは findfirst コマンドがファイルを見つけた場合、実行されなければならない。

例:

findfirst dh '*.txt' filename

while result

  messagebox filename '*.txt'

  findnext dh filename

endwhile

findclose dh


getdir
getdir	new

形式:

getdir <strvar>

(Tera Term ではなく) MACRO の現在のディレクトリを文字列変数 <strvar> に格納する。

参照:

"setdir"

例:

getdir dir


makepath
makepath	new

形式:

makepath <strvar> <dir> <name>

ディレクトリ名 <dir> とファイル名 <name> からフルパス名を作成し、文字列変数 <strvar> に格納する。もし必要なら <dir> と <name> の間に "\" を挿入する。

例:

makepath path 'c:\teraterm' 'test.txt'	path = "c:\teraterm\test.txt"


setdir
setdir	new

形式:

setdir <dir>

MACRO の現在のディレクトリを <dir> に変更する。

注意: changedir コマンドは Tera Term の現在のディレクトリを変更する。通信コマンド(kmtsend 等)で指定されるファイル名は Tera Term の現在のディレクトリを基準にする。その他のコマンド(fileopen 等)で指定されるファイル名は MACRO の現在のディレクトリを基準にする。

例:

setdir 'c:\'


delpassword

形式:

delpassword <filename> <password name>

パスワードファイル <filename> の中にある <password name> で指定されたパスワードを削除する。もし <password name> が空の文字列ならば、パスワードファイルの中にあるすべてのパスワードが削除される。

パスワードファイルについては "getpassword" 参照。

例:

delpassword 'password.dat' 'mypassword'


getpassword

形式:

getpassword <filename> <password name> <strvar>

パスワードファイル <filename> から <password name> で指定されるパスワードを読みだす。そのパスワードは暗号化されているので、それを解読してから文字列変数 <strvar> に保存する。

もし指定されたファイルが存在しなければ、新しくファイルを作成する。

もし指定されたパスワードがファイルの中になければ、パスワードダイアログボックスが現れ、入力されたパスワードは文字列変数 <strvar> に保存される。同時に、その新しいパスワードは暗号化されパスワード識別子 <password name> と共にファイルに書き込まれる。

一つのパスワードファイルに複数のパスワードを保存することができる。

各パスワードはパスワード識別子によって識別される。

例:

getpassword 'password.dat' 'mypassword' password

connect 'myhost'

wait 'login:'

sendln 'myname'

wait 'password:'

sendln password


passwordbox

形式:

passwordbox <message> <title>

パスワードを入力するためのダイアログボックスを開く。

文字列 <message> はダイアログボックスに表示されるメッセージ、文字列 <title> はダイアログボックスのタイトル。入力されるパスワードはそのまま表示されず、かわりに、"****" のように表示される。入力されたパスワードはシステム変数 inputstr に代入される。

例:

passwordbox 'Enter password' 'Login'


beep

形式:

beep

ビープ音を鳴らす。


closesbox

形式:

closesbox

statusbox コマンドによって開かれたステータスダイアログボックスを閉じる。

例:

"statusbox" 参照。


exec

形式:

exec <command line>

コマンドライン文字列 <command line> に従い、アプリケーションを起動する。

例:

exec 'notepad readme.txt'	「メモ帳」を起動


getdate

形式:

getdate <strvar>

現在の日付を文字列変数 <strvar> に格納する。形式は "YYYY-MM-DD"。

例:

getdate datestr


getenv

形式:

getenv <envname> <strvar>

環境変数 <envname> の値を文字列変数 <strvar> に格納する。

例:

getenv 'TEMP' env


gettime

形式:

gettime <strvar>

現在の時刻を文字列変数 <strvar> に格納する。 形式は"HH:MM:SS"。

例:

gettime timestr


inputbox

形式:

inputbox <message> <title>

文字列を入力するためのダイアログボックスを開く。文字列 <message> はダイアログボックスに表示されるメッセージ、文字列 <title> はダイアログボックスのタイトル。入力された文字列はシステム変数 inputstr に代入される。

例:

inputbox 'Password:' 'Login'

sendln inputstr


messagebox

形式:

messagebox <message> <title>

ダイアログボックスを開き、ユーザーにメッセージを知らせる。文字列 <message> はダイアログボックスに表示されるメッセージ、文字列 <title> はダイアログボックスのタイトル。

例:

messagebox ErrorMessage 'Error'


setdate

形式:

setdate <date>

システムの日付を変更 <date> に変更する。<date> の形式は "YYYY-MM-DD"。

例:

setdate '1997-08-01'


setdlgpos

形式:

setdlgpos <x> <y>

"inputbox", "messagebox", "passwordbox", "statusbox" コマンドで表示されるダイアログボックスの初期位置を変更する。また、ステータスダイアログボックスが表示されている場合、setdlgpos コマンドはそのダイアログボックスを移動させる。

<x> と <y> は画面の座標 (x,y) を表わす。原点 (0,0) は画面の左上の隅の位置。

例:

setdlgpos 0 0
messagebox 'Message' 'Title'	左上の隅にダイアログボックス
setdlgpos 0 200	ステータスダイアログボックスを開く
statusbox 'Message' 'Title'
for i 0 200
setdlgpos i 200	ステータスダイアログボックスを移動
next


setexitcode
setexitcode	new

形式:

setexitcode <exit code>

MACRO の終了コードを <exit code> にする。

Windows 3.1 の場合: MACRO はバッチファイルから起動できないので、終了コードを利用する方法はない。このコマンドは単に32-bit 版 MACRO との互換性のために用意されている。

Windows 95 の場合: MACRO がバッチファイルからコマンドライン "start /w ttpmacro <ttl filename>" (オプション /w が必要)によって実行された場合、終了コードを DOS コマンド "if errorlevel n" で調べることができる。

Windows NT の場合: MACRO がバッチファイルからコマンドライン "ttpmacro <ttl filename>" によって実行された場合、終了コードを DOS コマンド "if errorlevel n" で調べることができる。

例:

----- バッチファイル "test.bat" (Win 95 の場合) ------

start /w ttpmacro test.ttl	"start /w" コマンドで MACRO を実行
if errorlevel 1 echo Error!	もし終了コードが1以上ならメッセージを表示
----- "test.bat" の終わり ---------

----- バッチファイル "test.bat" (Win NT の場合) ------

ttpmacro test.ttl	MACRO を実行、"start" コマンドは不必要
if errorlevel 1 echo Error!	もし終了コードが1以上ならメッセージを表示
----- "test.bat" の終わり ---------

----- マクロファイル "test.ttl" ----

setexitcode 1	終了コードを1にする。
----- "test.ttl" の終わり ----------


settime

形式:

settime <time>

システムの時刻を <time> に変更する。<time> の形式は "HH:MM:SS"。

例:

settime '01:05:00'


show

形式:

show <show flag>

<show flag> が0の場合、MACRO を最小化する。

<show flag> が0より大きい場合、MACRO を元の大きさに戻す。

<show flag> が0より小さい場合、MACRO を隠す。

例:

show 0	MACRO を最小化
show 1	MACRO を元の大きさに戻す
show -1	MACRO を隠す


statusbox

形式:

statusbox <message> <title>

ステータスダイアログボックスが表示されていない場合、それを表示する。

ダイアログボックスのメッセージを <message> に、タイトルを <title> に変える。

"setdlgpos" コマンドはステータスダイアログボックスの位置を変える。

"closesbox" コマンドはステータスダイアログボックスを閉じる。

例:

setdlgpos 200 200	表示位置を指定
statusbox 'Message' 'Title'	ダイアログボックスを表示
pause 3
setdlgpos 0 0	ダイアログボックスを移動
pause 3
closesbox	ダイアログボックスを閉じる


yesnobox

形式:

yesnobox <message> <title>

Dialog boxを開き。ユーザーに「はい」/「いいえ」を選択させる。

文字列 <message> はダイアログボックスに表示されるメッセージ、

文字列 <title> はダイアログボックスのタイトル。

「はい」ボタンが押された場合、システム変数 resultに1が格納される。

「いいえ」ボタンが押された場合、result に0が格納される。

例:

yesnobox 'もう一回やりますか?' 'Tera Term'

if result goto retry

end


補足説明

エラーメッセージ

改行文字について

負の整数定数についての注意

ASCII コード表


エラーメッセージ

エラーメッセージ	意味
Can't call sub.	サブルーチンを呼べない。サブルーチンは別のファイルにある。
Can't link macro.	MACRO と Tera Term の間のリンクに失敗。
Can't open file.	インクルードファイルが存在しないか、インクルードの階層が深すぎる。
")" expected.	カッコが閉じていない。
Link macro first.	MACRO と Tera Term の間のリンクが確立してないため、コマンドが実行できない。
Divide by zero.	0で割ろうとした。
Invalid control.	"else", "elseif", "endif" の誤った使用。
Label already defined.	ラベル名の多重使用。
Label required.	ラベルが見つからない。
Stack overflow.	サブルーチン、"for-next" ループ、"while-endwhile" の階層が深すぎる。
Syntax error.	コマンドの形式が間違っている。
Too many labels.	ラベルの数が多すぎる。(最大256個)
Too many variables.	変数の数が多すぎる。(整数型、文字列型それぞれ最大128個ずつ)
Type mismatch.	定数または変数の型が間違っている。
Variable not initialized.	初期化されてない変数を参照した


改行文字について

ホストから送られてくる改行文字 (CR または CR+LF) は Tera Term によって CR+LF に変換され MACRO に渡される。

Tera Term へ送る改行文字は CR+LF を用いる。

CR、LF の ASCII コードはそれぞれ13、10(10進数)。

例:

send 'abc'#13#10	"sendln 'abc'" と同じ。実際にホストへ送られる改行文字は Tera Term の設定により決まる。
wait #10'abc' 'def'#13	行頭の "abc"、行末の "def" を待つ。
logwrite 'abc'#13#10	ログファイルに改行文字を書き込む場合は必ずCR+LFにする。


負の整数定数についての注意

コマンドのパラメータに負の整数定数を使用する場合、以下のような問題が発生する場合がある。例えば、

for i -10 0

このコマンドは文法エラーを発生する。なぜなら、2番めのパラメータは "i" ではなくて、"i-10" とみなされるから。この問題を防ぐには以下のいずれかの方法をとる。

1) "-" の前に "0" をつける。

for i 0-10 0

2) 負の整数定数を変数に代入してから使用する。

A = -10

for i A 0


ASCII コード表

例えば、"A" の ASCII コードは10進数で65、16進数で$41。

Char	Code	Char	Code	Char	Code	Char	Code
NUL (^@)	0 $00	DLE (^P)	16 $10	SPACE	32 $20	0	48 $30
SOH (^A)	1 $01	DC1 (^Q)	17 $11	!	33 $21	1	49 $31
STX (^B)	2 $02	DC2 (^R)	18 $12	"	34 $22	2	50 $32
ETX (^C)	3 $03	DC3 (^S)	19 $13	#	35 $23	3	51 $33
EOT (^D)	4 $04	DC4 (^T)	20 $14	$	36 $24	4	52 $34
ENQ (^E)	5 $05	NAK (^U)	21 $15	%	37 $25	5	53 $35
ACK (^F)	6 $06	SYN (^V)	22 $16	&	38 $26	6	54 $36
BEL (^G)	7 $07	ETB (^W)	23 $17	'	39 $27	7	55 $37
BS (^H)	8 $08	CAN (^X)	24 $18	(	40 $28	8	56 $38
HT (^I)	9 $09	EM (^Y)	25 $19	)	41 $29	9	57 $39
LF (^J)	10 $0A	SUB (^Z)	26 $1A	*	42 $2A	:	58 $3A
VT (^K)	11 $0B	ESC (^[)	27 $1B	+	43 $2B	;	59 $3B
FF (^L)	12 $0C	FS (^\)	28 $1C	,	44 $2C	<	60 $3C
CR (^M)	13 $0D	GS (^])	29 $1D	-	45 $2D	=	61 $3D
SO (^N)	14 $0E	RS (^^)	30 $1E	.	46 $2E	>	62 $3E
SI (^O)	15 $0F	US (^_)	31 $1F	/	47 $2F	?	63 $3F
Char	Code	Char	Code	Char	Code	Char	Code
@	64 $40	P	80 $50	`	96 $60	p	112 $70
A	65 $41	Q	81 $51	a	97 $61	q	113 $71
B	66 $42	R	82 $52	b	98 $62	r	114 $72
C	67 $43	S	83 $53	c	99 $63	s	115 $73
D	68 $44	T	84 $54	d	100 $64	t	116 $74
E	69 $45	U	85 $55	e	101 $65	u	117 $75
F	70 $46	V	86 $56	f	102 $66	v	118 $76
G	71 $47	W	87 $57	g	103 $67	w	119 $77
H	72 $48	X	88 $58	h	104 $68	x	120 $78
I	73 $49	Y	89 $59	i	105 $69	y	121 $79
J	74 $4A	Z	90 $5A	j	106 $6A	z	122 $7A
K	75 $4B	[	91 $5B	k	107 $6B	{	123 $7B
L	76 $4C	\	92 $5C	l	108 $6C	|	124 $7C
M	77 $4D	]	93 $5D	m	109 $6D	}	125 $7D
N	78 $4E	^	94 $5E	n	110 $6E	~	126 $7E
O	79 $4F	_	95 $5F	o	111 $6F	DEL	127 $7F