exec

【Tera Term マクロ言語】コマンドリファレンス

exec 機能

[その他のコマンド]

アプリケーションを起動します。

コマンドライン

exec <command line> [<show> [<wait> [<current directory>]]]

機能説明

コマンドライン文字列 <command line> に従い、アプリケーションを起動します。
<command line>
コマンドプロンプトで実行するのと同様のコマンドラインを指定します。

64bit Windows 上でマクロを実行している場合、WOW64 に対応したアプリケーションを起動すると思わぬ動作をすることがあります。

ttpmacro.exe は 32bit なので、32bit のアプリケーションが起動します。
アプリケーションによっては 64bit OS 上で 32bit のプロセスが起動されると、64bit のプロセスを起動し直すことがあります。
このため <wait> を指定しても、マクロが起動した 32bit のアプリケーションはすぐに終了してしまうため、意図せず次のマクロコマンドに進んでしまうことがあります。

この現象を回避するには、以下の使用例にあるとおり sysnative エイリアスを用いて、ネイティブのシステムディレクトリのアプリケーションを起動してください。

なお、起動したアプリケーションを起動の戻り値の扱いは、次のとおりです。
バージョン戻り値の扱い
OSS 化以降~4.62戻り値を扱わない
4.63~4.102<wait> に 1 が指定された時のみ、アプリケーションの終了コードを返す
4.103以降<wait> の指定内容または省略によって <result> に値を返す
[<show>]
<show> パラメータには以下の文字列を指定することができます。
文字列指定内容
hideウインドウを隠します。
minimizeウインドウを最小化します。
maximizeウインドウを最大化します。
show指定しない場合と同じ動作(デフォルト)の挙動をします。
[<wait>]
<wait> パラメータに 1 を指定すると、起動したアプリケーションが終了するまで待ちます。
バージョン 4.63 以降 4.102 まで
オプション <wait> が 1 の場合に、アプリケーションの終了コードが <result> へ格納されます。
オプション <wait> が 0 または省略された場合、アプリケーションを起動するのみで <result> は変更しません。
バージョン 4.103 以降
オプション <wait> が省略されたか、指定された値によって、システム変数 <result> へ格納する値が変わります。
<wait>の指定値<result>の数値<result>の意味
0*1-1アプリケーションの起動に失敗した。
0アプリケーションの起動に成功した。
1-1アプリケーションの起動に失敗した。
-1以外アプリケーションの終了コード
[<current directory>]
<current directory> パラメータは、起動するアプリケーションのカレントディレクトリを指定することができます。(バージョン 4.78以降)

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<command line>文字列コマンドラインを指定します。
<show>文字列アプリケーションのウィンドウ状態を指定します。
<wait>整数起動アプリケーションの終了を待機するか指定します。
<current directory>文字列カレントディレクトリを指定します。

続きを読む

crc32file

【Tera Term マクロ言語】コマンドリファレンス

crc32file 機能

[その他のコマンド]

CRC-32 を計算します。

コマンドライン

crc32file <intvar> <file name>

機能説明

引数の文字列から CRC (Cyclic Redundancy Checking) を計算します。
多項式(右回り)は以下のとおりです。

100000100110000010001110110110111
(x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^{8}+x^{7}+x^{5}+x^{4}+x^{2}+x^{1}+x^{0})

計算結果は <intvar> に数値として格納されます。
crc32file でファイルが開けなかった場合は、システム変数 <result> に -1 が格納されます。

CRC アルゴリズムの実装(C言語)を以下に示します。
このアルゴリズムは、Ethernet の FCS (Frame Check Sequence) に適用されています。
#define CRCPOLY2 0xEDB88320UL  /* 左右逆転 */

static unsigned long crc2(int n, unsigned char c[])
{
	int i, j;
	unsigned long r;

	r = 0xFFFFFFFFUL;
	for (i = 0; i < n; i++) {
		r ^= c[i];
		for (j = 0; j < CHAR_BIT; j++)
			if (r & 1) r = (r >> 1) ^ CRCPOLY2;
			else       r >>= 1;
	}
	return r ^ 0xFFFFFFFFUL;
}

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<intvar>文字列計算結果を格納する変数を指定します。
<file name>整数対象ファイルを指定します。

続きを読む

crc32

【Tera Term マクロ言語】コマンドリファレンス

crc32 機能

[その他のコマンド]

CRC-32 を計算します。

コマンドライン

crc32 <intvar> <string>

機能説明

引数の文字列から CRC (Cyclic Redundancy Checking) を計算します。
多項式(右回り)は以下のとおりです。

100000100110000010001110110110111
(x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11}+x^{10}+x^{8}+x^{7}+x^{5}+x^{4}+x^{2}+x^{1}+x^{0})

計算結果は <intvar> に数値として格納されます。

CRC アルゴリズムの実装(C言語)を以下に示します。
このアルゴリズムは、Ethernet の FCS (Frame Check Sequence) に適用されています。
#define CRCPOLY2 0xEDB88320UL  /* 左右逆転 */

static unsigned long crc2(int n, unsigned char c[])
{
	int i, j;
	unsigned long r;

	r = 0xFFFFFFFFUL;
	for (i = 0; i < n; i++) {
		r ^= c[i];
		for (j = 0; j < CHAR_BIT; j++)
			if (r & 1) r = (r >> 1) ^ CRCPOLY2;
			else       r >>= 1;
	}
	return r ^ 0xFFFFFFFFUL;
}

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<intvar>文字列計算結果を格納する変数を指定します。
<string>整数対象文字列を指定します。

続きを読む

crc16file

【Tera Term マクロ言語】コマンドリファレンス

crc16file 機能

[その他のコマンド]

CRC-16-IBM を計算します。

コマンドライン

crc16 <intvar> <file name>

機能説明

引数のファイルから CRC (Cyclic Redundancy Checking) を計算します。
多項式(右回り)は以下のとおりです。

0xA001 (x^{16}+x^{15}+x^{2}+x0)

計算結果は <intvar> に数値として格納されます。
crc16file でファイルが開けなかった場合は、システム変数 <result> に -1 が格納されます。

CRC アルゴリズムの実装(C言語)を以下に示します。
static unsigned int crc16(int n, unsigned char c[])
{
#define CRC16POLY2  0x8408U  /* 左右逆転 */

	int i, j;
	unsigned long r;

	r = 0xFFFFU;
	for (i = 0; i < n; i++) {
		r ^= c[i];
		for (j = 0; j < CHAR_BIT; j++)
			if (r & 1) r = (r >> 1) ^ CRC16POLY2;
			else       r >>= 1;
	}
	return r ^ 0xFFFFU;
}

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<intvar>文字列計算結果を格納する変数を指定します。
<file name>整数対象ファイルを指定します。

続きを読む

crc16

【Tera Term マクロ言語】コマンドリファレンス

crc16 機能

[その他のコマンド]

CRC-16-IBM を計算します。

コマンドライン

crc16 <intvar> <string>

機能説明

引数の文字列から CRC (Cyclic Redundancy Checking) を計算します。
多項式(右回り)は以下のとおりです。

0xA001 (x^{16}+x^{15}+x^{2}+x0)

計算結果は <intvar> に数値として格納されます。

CRC アルゴリズムの実装(C言語)を以下に示します。
static unsigned int crc16(int n, unsigned char c[])
{
#define CRC16POLY2  0x8408U  /* 左右逆転 */

	int i, j;
	unsigned long r;

	r = 0xFFFFU;
	for (i = 0; i < n; i++) {
		r ^= c[i];
		for (j = 0; j < CHAR_BIT; j++)
			if (r & 1) r = (r >> 1) ^ CRC16POLY2;
			else       r >>= 1;
	}
	return r ^ 0xFFFFU;
}

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<intvar>文字列計算結果を格納する変数を指定します。
<string>整数対象文字列を指定します。

続きを読む