	TTPMACRO for Tera Term
	T. Teranishi

	Copyright (C) 1994-1997 T. Teranishi
	All Rights Reserved.

-------------------------------------------------------------------------------
目次

1. 概要

2. 使用法

  2.1 マクロ実行法
  2.2 コマンドライン
  2.3 "TTL" ファイルを TTPMACRO.EXE に関連付ける方法

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

  3.1 データ型
  3.2 定数の形式
  3.3 名前の形式
  3.4 変数
  3.5 式と演算子
  3.6 行の形式

4. TTL コマンドリファレンス

  4.1 通信コマンド  
  4.2 制御コマンド
  4.3 文字列操作コマンド
  4.4 ファイル操作コマンド
  4.5 パスワードコマンド
  4.6 その他のコマンド

5. 補足説明
  エラーメッセージ
  改行文字について	

-------------------------------------------------------------------------------
1. 概要

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

-------------------------------------------------------------------------------
2. 使用法

...............................................................................
2.1 マクロ実行法

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

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

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

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

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

TTPMACRO を起動するときのコマンドライン(ショートカットのリンク先)で
マクロファイル名を指定することができます。例えばマクロファイル "DIALUP.TTL"
を実行したい場合、コマンドライン(ショートカットのリンク先)は、

	TTPMACRO DIALUP.TTL

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

方法 2) で、TTPMACRO を起動した場合、マクロコマンド connect によって、
Tera Term を起動することができます。 Connect コマンドの説明は 4.1.5 を読んで
ください。

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

...............................................................................
2.2 TTPMACRO.EXE のコマンドライン

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

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

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

...............................................................................
2.3 "TTL" ファイルを TTPMACRO.EXE に関連付ける方法

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

a) Windows 95 とWindows NT 4.0 の場合
  a-1) エクスプローラの [表示]-[オプション] を実行する。

  a-2) 「ファイル タイプ」タブを選ぶ。

  a-3) 「追加」ボタンを押し、以下のように各項目を設定する。
	タイプの説明:	Tera Term macro files
	関連付けられた拡張子:	TTL

　a-4) 「アクション」の「追加」ボタンを押し、各項目を以下のように
		設定する。
	アクション:	実行
	アクションを実行するアプリケーション:
			"C:\Program Files\TTERMPRO\TTPMACRO.EXE" "%1"
			(Tera Term Pro が C:\Program Files\TTERMPRO に
			 インストールされている場合)

  a-5) 開かれているダイアログボックスの「OK」ボタンをすべて押す。

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

  b-2)	以下のように書く項目を設定し、「OK」ボタンを押す。
  	拡張子: TTL
  	実行されるアプリケーションプログラム:
  		"C:\TTERMPRO\TTPMACRO.EXE" "%1"
  		(Tera Term Pro が C:\TTERMPRO\TTERMPRO に
  		 インストールされている場合)

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

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

...............................................................................
3.1 データ型

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

	整数
		符号付き 32 bit, -2147483648から2147483647まで。

	文字列
		NUL 文字を除くすべての文字を含むことができる。
		最大長は255文字。
...............................................................................
3.2 定数の形式

1) 整数型定数

	10進数で表現する。

	例:
		123
		-11

2) 文字列型定数

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

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

	例:
		'Hello, world!'
		"I can't do that."
		"漢字も可能"

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

	例:
		#65		文字 "A"
		#13		CR 文字

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

	例:
		'cat readme.txt'#13#10		普通の文字列+改行
		abc'#13#10'def'#13#10'ghi'

...............................................................................
3.3 名前の形式

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... (4. のコマンドリストを参照)

演算子:
	and, not, or, xor

システム変数:
	inputstr, param2, param3, result, timeout

...............................................................................
3.4 変数

1) ユーザー変数

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

2) システム変数

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

名前		型	初期値	システム変数を使用するコマンド
-----------------------------------------------------------------
inputstr	文字列	""	recvln, waitln, waitrecv,
				passwordbox, inputbox
param2		文字列	*1	*1
param3		文字列	*1	*1
result		整数	0	recvln, wait, waitevent, waitln,
				waitrecv, str2int, strcompare, strlen,
				strscan, filereadln, filesearch,
				filestrseek, yesnobox
timeout		整数	0	recvln, wait, waitevent, waitln, waitrecv

	*1 TTPMACRO 起動時のコマンドラインパラメータの2, 3番目が
	   システム変数 param2, param3 の初期値となる。1番目の文字列は
	   マクロファイル名。"2.2 コマンドライン" 参照。

...............................................................................
3.5 式と演算子

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

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

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

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

...............................................................................
3.6 行の形式

行の形式は以下の5つに分類できる。

1) 空白行

文字がない行や空白文字 (space または tab) だけの行は無視され、TTL の実行
結果に影響をあたえない。

2) コメント行

";" で始まる行。TTL の実行結果に影響を与えない。

	例:
		; Tera Term Language

3) コマンド行

1つのコマンド名と0個以上のパラメータ。(if コマンドは例外。4.2.7 参照)。

	形式:
		<コマンド> <パラメータ> ...
	例:
		connect'myhost'
		wait 'OK' 'ERROR'
		if result=2 goto error
		sendln 'cat'
		pause  A*10
		end

4) 代入行

変数に値を代入する。
 
	形式:
		<変数>  = <定数、変数、式>
	例:
	A = 33		数値の代入
	B = C		C はすでに値が代入されてなければならない。
	VAL = I*(I+1)
	A=B=C		B=C の結果 (真:1、偽:0) がAに代入される。
	Error=0<J
	UserName='MYNAME'	文字列の代入
  
5) ラベル行

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

	形式:
		:<label name>
	例:
		:dial
		:300

-------------------------------------------------------------------------------
4. TTL コマンドリファレンス

コマンドの分類

"** new **" はこのバージョンで新しく追加されたコマンド
"** changed **" はこのバージョンで変更されたコマンド

4.1 通信コマンド

	4.1.1 bplusrecv
	4.1.2 bplussend
	4.1.3 changedir
	4.1.4 closett		** changed **
	4.1.5 connect		** changed **
	4.1.6 disconnect	** new **
	4.1.7 flushrecv		** new **
	4.1.8 gettitle		** new **
	4.1.9 kmtrecv
	4.1.10 kmtsend
	4.1.11 loadkeymap	** new **
	4.1.12 logclose
	4.1.13 logopen
	4.1.14 logpause
	4.1.15 logstart
	4.1.16 logwrite
	4.1.17 quickvanrecv
	4.1.18 quickvansend
	4.1.19 recvln		** new **
	4.1.20 restoresetup	** new **
	4.1.21 send
	4.1.22 sendbreak	** new **
	4.1.23 sendfile
	4.1.24 sendln
	4.1.25 setecho		** new **
	4.1.26 setsync		** new **
	4.1.27 settitle		** new **
	4.1.28 showtt		** changed **
	4.1.29 unlink		** new **
	4.1.30 wait
	4.1.31 waitevent	** new **
	4.1.32 waitln		** new **
	4.1.33 waitrecv
	4.1.34 xmodemrecv
	4.1.35 xmodemsend
	4.1.36 zmodemrecv
	4.1.37 zmodemsend

4.2 制御コマンド

	4.2.1 call
	4.2.2 end
	4.2.3 execcmnd
	4.2.4 exit
	4.2.5 for, next
	4.2.6 goto
	4.2.7 if, then, elseif, else, endif
	4.2.8 include
	4.2.9 pause
	4.2.10 return
	4.2.11 while, endwhile

4.3 文字列操作コマンド

	4.3.1 str2int
	4.3.2 strcompare
	4.3.3 strconcat
	4.3.4 strcopy
	4.3.5 strlen
	4.3.6 strscan

4.4 ファイル操作コマンド

	4.4.1 fileclose
	4.4.2 fileconcat
	4.4.3 filecopy
	4.4.4 filecreate
	4.4.5 filedelete
	4.4.6 fileopen
	4.4.7 filereadln
	4.4.8 filerename
	4.4.9 filesearch
	4.4.10 fileseek
	4.4.11 filestrseek
	4.4.12 filewrite
	4.4.13 filewriteln

4.5 パスワードコマンド

	4.5.1 delpassword	** new **
	4.5.2 getpassword	** new **
	4.5.3 passwordbox

4.6 その他のコマンド

	4.6.1 beep
	4.6.2 closesbox		** new **
	4.6.3 exec
	4.6.4 getdate
	4.6.5 getenv		** new **
	4.6.6 gettime
	4.6.7 inputbox
	4.6.8 int2str
	4.6.9 messagebox
	4.6.10 setdate		** new **
	4.6.11 setdlgpos	** new **
	4.6.12 setenv		** new **
	4.6.13 settime		** new **
	4.6.14 show		** changed **
	4.6.15 statusbox	** new **
	4.6.16 yesnobox

...............................................................................
4.1 通信コマンド

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.1 bplusrecv

形式:
	bplusrecv

B-Plus プロトコルでファイルを受信する。
受信が終わるまで次のコマンドは実行されない。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.2 bplussend

形式:
	bplussend <filename>

ファイル <filename> を B-Plus プロトコルで送信する。
送信が終わるまで次のコマンドは実行されない。

例:
	bplussend 'readme.txt'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.3 changedir

形式:
	changedir <path>

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

例:
	changedir 'c:\'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.4 closett		** changed **

形式:
	closett

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

参照:
	"4.1.5 connect"
	"4.1.6 disconnect"
	"4.1.29 unlink"

例:
	closett
	connect 'host'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.5 connect		** changed **

形式:
	connect <command line parameters>

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

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

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

Tera Term と TTPMACRO のリンクしていない状態では、他の通信コマンドは実行でき
ない。

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

参照:
	"4.1.4 closett"
	"4.1.6 disconnect"
	"4.1.29 unlink"

例:
	connect	''		パラメータなしで Tera Term を起動

	connect '/C=2'		パラメータ '/C=2'をつけて Tera Term を起動

	connect 'foohost.foo.foo.jp'

	CommandLine = '111.111.11.11'
	connect CommandLine

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.6 disconnect		** new **

形式:
	disconnect

Tera Term とホストの間の通信を終了させる。
もしこのコマンドによって Tera Term が終了しなければ、Tera Term と TTPMACRO
の間のリンクは保持される。

参照:
	"4.1.4 closett"
	"4.1.5 connect"
	"4.1.29 unlink"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.7 flushrecv		** new **

形式:
	flushrecv

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

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

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.8 gettitle		** new **

形式:
	gettitle <strvar>

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

例:
	gettitle titletext

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.9 kmtrecv

形式:
	kmtrecv

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.10 kmtsend

形式:
	kmtsend <filename>

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

例:
	kmtsend 'readme.txt'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.11 loadkeymap		** new **

形式:
	loadkeymap <filename>

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

例:
	loadkeymap 'keyboard.cnf'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.12 logclose

形式:
	logclose

Tera Term のログを終了する。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.13 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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.14 logpause

形式:
	logpause

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.15 logstart

形式:
	logstart

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.16 logwrite

形式:
	logwrite <string>

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

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

例:
	logwrite 'LOG FILE'#13#10

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.17 quickvanrecv

形式:
	quickvanrecv

Quick-VAN プロトコルでファイルを受信する。
受信が終わるまで次のコマンドは実行されない。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.18 quickvansend

形式:
	quickvansend <filename>

ファイル <filename> を Quick-VAN プロトコルで送信する。
送信が終わるまで次のコマンドは実行されない。

例:
	quickvansend 'readme.txt'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.19 recvln		** new **

形式:
	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				非同期モードに入る

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.20 restoresetup		** new **

形式:
	restoresetup <filename>

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

例:
	restoresetup 'teraterm.ini'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.21 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 '.'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.22 sendbreak		** new **

形式:
	sendbreak

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.23 sendfile

形式:
	sendfile <filename> <binary flag>

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

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

例:
	sendfile 'data.dat' 1

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.24 sendln

形式:
	sendln <data1> <data2> ....

文字列とそれに続く改行文字をホストへ送信させる。
<data> の形式は、 "send" コマンド (4.1.21) と同じ。

例:
	sendln			改行文字だけ送信

	sendln 'abc'

	Password='mypassword'
	sendln Password

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.25 setecho		** new **

形式:
	setecho <echo flag>

Tera Term のローカルエコー (local echo) の状態を変える。
もし <echo flag> が0以外ならローカルエコーは on になる。
もし <echo flag> が0ならローカルエコーは off になる。

例:
	setecho 1		ローカルエコー on

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.26 setsync		** new **

形式:
	setsync <sync flag>

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

Tera Term はホストから受信した文字を TTPMACRO へ転送する。
TTPMACRO はそれらの文字をバッファーに保存し、受信文字を処理するコマンド
(wait コマンド等)がバッファーから文字を取り出す。

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

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

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

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

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

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.27 settitle		** new **

形式:
	settitle <title>

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

例:
	settitle 'Tera Term'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.28 showtt		** changed **

形式:
	showtt <show flag>

<show flag> が0の場合、 Tera Term を最小化する。
<show flag> が0より大きい場合、 Tera Term を元の大きさに戻す。
<show flag> が0より小さい場合、 Tera Term を隠す。

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.29 unlink		** new **

形式:
	unlink

現在の Tera Term ウインドウと TTPMACRO の間のリンクを断つ。
このコマンド以降、TTPMACRO は非リンク状態になり、その Tera Term 
ウインドウを制御できなくなる。

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

参照:
	"4.1.4 closett"
	"4.1.5 connect"
	"4.1.6 disconnect"

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.30 wait

形式:
	wait <string1> <string2> ...

文字列 <string1>, <string2>, ...  のうち一つがホストから送られてくるか、
タイムアウトが発生するまで TTPMACRO を停止させる。文字列は最大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)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.31 waitevent		** new **

形式:
	waitevent <events>

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

<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 イベント発生

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.32 waitln		** new **

形式:
	waitln <string1> <string2> ...

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

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

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

変数 result の値の意味は、

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.33 waitrecv

形式:
	waitrecv <sub-string> <len> <pos>

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

その条件とは、文字列の長さが <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 に保存された。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.34 xmodemrecv

形式:
	xmodemrecv <filename> <binary flag> <option>

XMODEM プロトコルでファイル <filename> を受信する。
受信が終わるまで次のコマンドは実行されない。

ファイルがバイナリファイルの場合は、<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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.35 xmodemsend

形式:
	xmodemsend <filename> <option>

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

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

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

例:
	xmodemsend 'readme.txt' 1		XMODEM send, checksum

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.36 zmodemrecv

形式:
	zmodemrecv

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.1.37 zmodemsend

形式:
	zmodemsend <filename> <binary flag>

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

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

例:
	zmodem 'readme.txt' 0

...............................................................................
4.2 制御コマンド

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.1 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				メインルーチンへもどる。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.2 end

形式:
	end

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.3 execcmnd

形式:
	execcmnd <statement>

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

例:
	execcmnd "send 'abc'"		コマンド "send 'abc'" を実行。

	execcmnd "a=1"

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.4 exit

形式:
	exit

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

例:
	"4.2.8 include" を参照。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.5 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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.6 goto

形式:
	goto <label>

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

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.7 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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.8 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
	----- インクルードファイル終わり --------	メインファイルへ戻る。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.9 pause

形式:
	pause <time>

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

例:
	pause 10			10秒休止

	pause Time

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.10 return

形式:
	return

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

例:
	"4.2.1 call" 参照。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.2.11 while, endwhile

形式:
	while <int>
	  ...
	  ...
	  ...
	endwhile

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

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

...............................................................................
4.3 文字列操作コマンド

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.3.1 str2int

形式:
	str2int <intvar> <string>

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

例:
	str2int val '123'		val=123, result=1

	str2int val '123abc'		result=0

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.3.2 strcompare

形式:
	strcompare <string1> <string2>

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

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

  	大小関係	 resultの値
  --------------------------------- 
  <文字列1> < <文字列2>     -1
  <文字列1> = <文字列2>      0
  <文字列1> > <文字列2>      1

例:
	strcompare 'abc' 'def'	結果は result = -1

	strcompare command 'next'
	if result=0 goto label
	strcompare command 'end'
	if result=0 end

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.3.3 strconcat

形式:
	strconcat <strvar> <string>

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

例:
	filename = 'c:\teraterm\'
	strconcat filename 'test.txt'		filename='c:\teraterm\test.txt'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.3.4 strcopy

形式:
	strcopy <string> <pos> <len> <strvar>

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

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.3.5 strlen

形式:
	strlen <string>

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

例:
	strlen 'abc'		result の値は3

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.3.6 strscan

形式:
	strscan <string> <substring>

文字列 <string> の中に 副文字列 <substring> が含まれているかどうか調べる。
もし、 <substring> が見つかった場合、その位置がシステム変数 result に格納
される。<substring> が複数含まれている場合、最初のものの位置が格納される。
もし、<substring> が見つからなかった場合、 result に0が格納される。

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

...............................................................................
4.4 ファイル操作コマンド

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.1 fileclose

形式:
	fileclose <file handle>

ファイルハンドル <file handle> で指定されるファイルをクローズする。
このコマンド実行後、<file handle> は無効となる。

例:
	fileclose fhandle

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.2 fileconcat

形式:
	fileconcat <file1> <file2>

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

例:
	fileconcat 'test.dat' test2.dat'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.3 filecopy

形式:
	filecopy <file1> <file2>

ファイル <file1> をコピーし、ファイル <file2> を作成する。
<file2> がすでに存在する場合は上書きされる。
<file1> と <file2> は違う名前でなければならない。

例:
	filecopy 'test.dat' 'test2.dat'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.4 filecreate

形式:
	filecreate <file handle> <filename>

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

例:
	filecreate fhandle 'data.dat'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.5 filedelete

形式:
	filedelete <filename>

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

例:
	filedelete 'temp.log'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.6 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	ファイルポインタは最後

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.7 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			ファイルクローズ

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.8 filerename

形式:
	filerename <file1> <file2>

ファイル <file1> を <file2> という名前に変更する。
<file1> と <file2> は違う名前でなければならない。

例:
	filerename 'test.dat' test2.dat'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.9 filesearch

形式:
	filesearch <filename>

ファイル <filename> が存在するかどうか調べる。
存在する場合は、システム変数 result に1が返る。
存在しない場合は、result に0が返る。

例:
	filesearch 'readme.txt'
	if result=0 messagebox 'File not found.' 'error'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.10 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		ファイルの最後へ移動

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.11 filestrseek

形式:
	filestrseek <file handle> <string>

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

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

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.12 filewrite

形式:
	filewrite <file handle> <string>

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

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.4.13 filewriteln

形式:
	filewriteln <file handle> <string>

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

例:
	filewriteln fhandle '---------cut here---------'

...............................................................................
4.5 パスワードコマンド

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.5.1 delpassword		** new **

形式:
	delpassword <filename> <password name>

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

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

例:
	delpassword 'password.dat' 'mypassword'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.5.2 getpassword		** new **

形式:
	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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.5.3 passwordbox

形式:
	passwordbox <message> <title>

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

例:
	passwordbox 'Enter password' 'Login'

...............................................................................
4.6 その他のコマンド

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.1 beep

形式:
	beep

ビープ音を鳴らす。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.2 closesbox		** new **

形式:
	closesbox

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

例:
	"4.6.15 statusbox" 参照。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.3 exec

形式:
	exec <command line>

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

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.4 getdate

形式:
	getdate <strvar>

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

例:
	getdate datestr

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.5 getenv		** new **

形式:
	getenv <envname> <strvar>

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

例:
	getenv 'TEMP' env

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.6 gettime

形式:
	gettime <strvar>

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

例:
	gettime timestr

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.7 inputbox

形式:
	inputbox <message> <title>

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

例:
	inputbox 'Password:' 'Login'
	sendln inputstr
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.8 int2str

形式:
	int2str <strvar> <integer value>

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

例:
	int2str valstr 123		valstrに '123' を代入
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.9 messagebox

形式:
	messagebox <message> <title>

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

例:
	messagebox ErrorMessage 'Error'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.10 setdate		** new **

形式:
	setdate <date>

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

例:
	setdate '1997-08-01'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.11 setdlgpos		** new **

形式:
	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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.12 setenv		** new **

形式:
	setenv <env name> <env value>

環境変数 <env name> に文字列値 <env value> を代入する。

例:
	setenv 'WORK' 'c:\work'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.13 settime		** new **

形式:
	settime <time>

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

例:
	settime '01:05:00'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.14 show		** changed **

形式:
	show <show flag>

<show flag> が0の場合、TTPMACRO を最小化する。
<show flag> が0より大きい場合、TTPMACRO を元の大きさに戻す。
<show flag> が0より小さい場合、TTPMACRO を隠す。

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.15 statusbox		** new **

形式:
	statusbox <message> <title>

ステータスダイアログボックスが表示されていない場合、それを表示する。
ダイアログボックスのメッセージを <message> に、タイトルを <title> に変える。

setdlgpos コマンド(4.6.11 参照)はステータスダイアログボックスの位置を変える。
closesbox コマンド(4.6.2 参照)はステータスダイアログボックスを閉じる。

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
4.6.16 yesnobox

形式:
	yesnobox <message> <title>

Dialog boxを開き。ユーザーに「はい」/「いいえ」を選択させる。
文字列 <message> はダイアログボックスに表示されるメッセージ、
文字列 <title> はダイアログボックスのタイトル。

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

例:
	yesnobox 'もう一回やりますか?' 'Tera Term'
	if result goto retry
	end

-------------------------------------------------------------------------------
 5. 補足説明

...............................................................................
エラーメッセージ

 エラーメッセージ			意味
 ---------------------------------------------------------------------------
 Can't call sub.		サブルーチンを呼べない。サブルーチンは
				別のファイルにある。

 Can't link macro.		TTPMACRO と Tera Term の間のリンクに失敗。

 Can't open file.		インクルードファイルが存在しないか、
				インクルードの階層が深すぎる。

 ")" expected.			カッコが閉じていない。

 Link macro first.		TTPMACRO と Tera Term の間のリンクが確立して
				ないため、コマンドが実行できない。

 Divide by zero.		0で割ろうとした。

 Invalid control.		"else", "elseif", "endif" の誤った使用。

 Label already defined.		ラベル名の多重使用。

 Label requiered.		ラベルが見つからない。

 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 に変換され TTPMACRO に渡される。

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にする。