[Ttssh2-commit] [4624] 配列の実装。

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2011年 9月 13日 (火) 16:53:32 JST


Revision: 4624
          http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=4624
Author:   doda
Date:     2011-09-13 16:53:31 +0900 (Tue, 13 Sep 2011)

Log Message:
-----------
配列の実装。
現在のところ、一時元のみ。

Modified Paths:
--------------
    trunk/teraterm/ttpmacro/ttl.c
    trunk/teraterm/ttpmacro/ttmbuff.c
    trunk/teraterm/ttpmacro/ttmparse.c
    trunk/teraterm/ttpmacro/ttmparse.h


-------------- next part --------------
Modified: trunk/teraterm/ttpmacro/ttl.c
===================================================================
--- trunk/teraterm/ttpmacro/ttl.c	2011-09-13 07:00:56 UTC (rev 4623)
+++ trunk/teraterm/ttpmacro/ttl.c	2011-09-13 07:53:31 UTC (rev 4624)
@@ -319,11 +319,11 @@
 WORD TTLCall()
 {
 	TName LabName;
-	WORD Err, VarType, VarId;
+	WORD Err, VarType;
+	TVarId VarId;
 
-	if (GetLabelName(LabName) && (GetFirstChar()==0))
-	{
-		if (CheckVar(LabName,&VarType,&VarId) && (VarType==TypLabel))
+	if (GetLabelName(LabName) && (GetFirstChar()==0)) {
+		if (CheckVar(LabName, &VarType, &VarId) && (VarType==TypLabel))
 			Err = CallToLabel(VarId);
 		else
 			Err = ErrLabelReq;
@@ -337,7 +337,8 @@
 // add 'clipb2var' (2006.9.17 maya)
 WORD TTLClipb2Var()
 {
-	WORD VarId, Err;
+	WORD Err;
+	TVarId VarId;
 	HANDLE hText;
 	PTSTR clipbText;
 	char buf[MaxStrLen];
@@ -347,7 +348,7 @@
 	static int cbbuffsize, cblen;
 
 	Err = 0;
-	GetStrVar(&VarId,&Err);
+	GetStrVar(&VarId, &Err);
 	if (Err!=0) return Err;
 
 	// get 2nd arg(optional) if given
@@ -376,7 +377,7 @@
 					strncpy_s(buf,sizeof(buf),clipbText,_TRUNCATE);
 					GlobalUnlock(hText);
 					CloseClipboard();
-					SetStrVal(VarId,buf);
+					SetStrVal(VarId, buf);
 					SetResult(3);
 					return Err;
 				}
@@ -398,7 +399,7 @@
 		else {
 			SetResult(1);
 		}
-		SetStrVal(VarId,buf);
+		SetStrVal(VarId, buf);
 	}
 	else {
 		SetResult(0);
@@ -462,13 +463,14 @@
 
 WORD TTLCode2Str()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	int Num, Len, c, i;
 	BYTE d;
 	TStrVal Str;
 
 	Err = 0;
-	GetStrVar(&VarId,&Err);
+	GetStrVar(&VarId, &Err);
 
 	GetIntVal(&Num,&Err);
 	if ((Err==0) && (GetFirstChar()!=0))
@@ -487,7 +489,7 @@
 		}
 	}
 	Str[i] = 0;
-	SetStrVal(VarId,Str);
+	SetStrVal(VarId, Str);
 	return Err;
 }
 
@@ -601,17 +603,18 @@
 WORD TTLCrc32()
 {
 	TStrVal Str;
-	WORD Err, CRC;
+	WORD Err;
+	TVarId VarId;
 
 	Err = 0;
-	GetIntVar(&CRC, &Err);
+	GetIntVar(&VarId, &Err);
 	GetStrVal(Str,&Err);
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 	if (Str[0]==0) return Err;
 
-	SetIntVal(CRC, crc2(strlen(Str), Str));
+	SetIntVal(VarId, crc2(strlen(Str), Str));
 
 	return Err;
 }
@@ -624,13 +627,14 @@
 {
 	TStrVal Str;
 	int result = 0;
-	WORD Err, CRC;
+	WORD Err;
+	TVarId VarId;
 	HANDLE fh = INVALID_HANDLE_VALUE, hMap = NULL;
 	LPBYTE lpBuf = NULL;
 	DWORD fsize;
 
 	Err = 0;
-	GetIntVar(&CRC, &Err);
+	GetIntVar(&VarId, &Err);
 	GetStrVal(Str,&Err);
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
@@ -659,7 +663,7 @@
 
 	fsize = GetFileSize(fh,NULL);
 
-	SetIntVal(CRC, crc2(fsize, lpBuf));
+	SetIntVal(VarId, crc2(fsize, lpBuf));
 
 error:
 	if (lpBuf != NULL) {
@@ -700,6 +704,33 @@
 	return Err;
 }
 
+WORD TTLDim(WORD type)
+{
+	WORD Err, WordId, VarType;
+	TName Name;
+	TVarId VarId;
+	int size;
+
+	Err = 0;
+
+	if (! GetIdentifier(Name)) return ErrSyntax;
+	if (CheckReservedWord(Name, &WordId)) return ErrSyntax;
+	if (CheckVar(Name, &VarType, &VarId)) return ErrSyntax;
+
+	GetIntVal(&size, &Err);
+	if (Err!=0) return Err;
+
+	if (type == RsvIntDim) {
+		if (!NewIntAryVar(Name, size))
+			Err = ErrTooManyVar;
+	}
+	else {
+		if (!NewStrAryVar(Name, size))
+			Err = ErrTooManyVar;
+	}
+	return Err;
+}
+
 WORD TTLDisconnect()
 {
 	WORD Err;
@@ -976,11 +1007,12 @@
 
 WORD TTLExpandEnv()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	TStrVal deststr, srcptr;
 
 	Err = 0;
-	GetStrVar(&VarId,&Err);
+	GetStrVar(&VarId, &Err);
 	if (Err!=0) return Err;
 
 	if (CheckParameterGiven()) { // expandenv strvar strval
@@ -1114,13 +1146,14 @@
 
 WORD TTLFileCreate()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	int FH;
 	TStrVal FName;
 
 	Err = 0;
-	GetIntVar(&VarId,&Err);
-	GetStrVal(FName,&Err);
+	GetIntVar(&VarId, &Err);
+	GetStrVal(FName, &Err);
 	if ((Err==0) &&
 	    ((strlen(FName)==0) || (GetFirstChar()!=0)))
 		Err = ErrSyntax;
@@ -1130,7 +1163,7 @@
 	}
 
 	if (!GetAbsPath(FName,sizeof(FName))) {
-		SetIntVal(VarId,-1);
+		SetIntVal(VarId, -1);
 		SetResult(-1);
 		return Err;
 	}
@@ -1142,7 +1175,7 @@
 	  else {
 		SetResult(0);
 	}
-	SetIntVal(VarId,FH);
+	SetIntVal(VarId, FH);
 	return Err;
 }
 
@@ -1201,7 +1234,8 @@
 WORD TTLFilenameBox()
 {
 	TStrVal Str1;
-	WORD Err, ValType, VarId;
+	WORD Err, ValType;
+	TVarId VarId;
 	OPENFILENAME ofn;
 	char uimsg[MAX_UIMSG];
 	BOOL SaveFlag = FALSE;
@@ -1221,7 +1255,7 @@
 	if (Err!=0) return Err;
 
 	SetInputStr("");
-	if (CheckVar("inputstr",&ValType,&VarId) &&
+	if (CheckVar("inputstr", &ValType, &VarId) &&
 	    (ValType==TypString)) {
 		memset(&ofn, 0, sizeof(OPENFILENAME));
 		ofn.lStructSize     = sizeof(OPENFILENAME);
@@ -1246,44 +1280,46 @@
 
 WORD TTLFileOpen()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	int Append, FH;
 	TStrVal FName;
 
 	Err = 0;
-	GetIntVar(&VarId,&Err);
-	GetStrVal(FName,&Err);
-	GetIntVal(&Append,&Err);
+	GetIntVar(&VarId, &Err);
+	GetStrVal(FName, &Err);
+	GetIntVal(&Append, &Err);
 	if ((Err==0) &&
 	    ((strlen(FName)==0) || (GetFirstChar()!=0)))
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
 	if (!GetAbsPath(FName,sizeof(FName))) {
-		SetIntVal(VarId,-1);
+		SetIntVal(VarId, -1);
 		return Err;
 	}
 	FH = _lopen(FName,OF_READWRITE);
 	if (FH<0)
 		FH = _lcreat(FName,0);
 	if (FH<0) FH = -1;
-	SetIntVal(VarId,FH);
+	SetIntVal(VarId, FH);
 	if (FH<0) return Err;
-	if (Append!=0) _llseek(FH,0,2);  
+	if (Append!=0) _llseek(FH, 0, 2);  
 	return Err;
 }
 
 WORD TTLFileReadln()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	int FH, i, c;
 	TStrVal Str;
 	BOOL EndFile, EndLine;
 	BYTE b;
 
 	Err = 0;
-	GetIntVal(&FH,&Err);
-	GetStrVar(&VarId,&Err);
+	GetIntVal(&FH, &Err);
+	GetStrVar(&VarId, &Err);
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
@@ -1292,14 +1328,14 @@
 	EndLine = FALSE;
 	EndFile = TRUE;
 	do {
-		c = _lread(FH,&b,1);
+		c = _lread(FH, &b, 1);
 		if (c>0) EndFile = FALSE;
 		if (c==1) {
 			switch (b) {
 				case 0x0d:
-					c = _lread(FH,&b,1);
+					c = _lread(FH, &b, 1);
 					if ((c==1) && (b!=0x0a))
-						_llseek(FH,-1,1);
+						_llseek(FH, -1, 1);
 					EndLine = TRUE;
 					break;
 				case 0x0a: EndLine = TRUE; break;
@@ -1319,7 +1355,7 @@
 		SetResult(0);
 
 	Str[i] = 0;
-	SetStrVal(VarId,Str);
+	SetStrVal(VarId, Str);
 	return Err;
 }
 
@@ -1330,7 +1366,8 @@
 // (2006.11.1 yutaka)
 WORD TTLFileRead()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	int FH, i, c;
 	int ReadByte;   // “ǂݍž‚ÞƒoƒCƒg”
 	TStrVal Str;
@@ -1464,7 +1501,8 @@
 
 WORD TTLFileStat()
 {
-	WORD Err, SizeVarId, TimeVarId, DrvVarId;
+	WORD Err;
+	TVarId SizeVarId, TimeVarId, DrvVarId;
 	TStrVal FName, TimeStr, DrvStr;
 	struct _stat st;
 	int ret;
@@ -1717,7 +1755,8 @@
 
 WORD TTLFindFirst()
 {
-	WORD DH, Name, Err;
+	TVarId DH, Name;
+	WORD Err;
 	TStrVal Dir;
 	int i;
 	struct _finddata_t data;
@@ -1760,7 +1799,8 @@
 
 WORD TTLFindNext()
 {
-	WORD Name, Err;
+	TVarId Name;
+	WORD Err;
 	int DH;
 	struct _finddata_t data;
 
@@ -1875,7 +1915,8 @@
 
 WORD TTLFor()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	int ValStart, ValEnd, i;
 
 	Err = 0;
@@ -1912,7 +1953,8 @@
 
 WORD TTLGetDir()
 {
-	WORD VarId, Err;
+	WORD Err;
+	TVarId VarId;
 	TStrVal Str;
 
 	Err = 0;
@@ -1928,7 +1970,8 @@
 
 WORD TTLGetEnv()
 {
-	WORD VarId, Err;
+	WORD Err;
+	TVarId VarId;
 	TStrVal Str;
 	PCHAR Str2;
 
@@ -1966,7 +2009,8 @@
 
 WORD TTLGetHostname()
 {
-	WORD VarId, Err;
+	WORD Err;
+	TVarId VarId;
 	char Str[MaxStrLen];
 
 	Err = 0;
@@ -1987,7 +2031,8 @@
 {
 	TStrVal Str, Str2, Temp2;
 	char Temp[512];
-	WORD VarId, Err;
+	WORD Err;
+	TVarId VarId;
 	int result = 0;  /* failure */
 
 	Err = 0;
@@ -2028,7 +2073,8 @@
 
 WORD TTLGetTime(WORD mode)
 {
-	WORD VarId, Err;
+	WORD Err;
+	TVarId VarId;
 	TStrVal Str1, Str2;
 	time_t time1;
 	struct tm *ptm;
@@ -2082,7 +2128,8 @@
 
 WORD TTLGetTitle()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	char Str[TitleBuffSize*2];
 
 	Err = 0;
@@ -2101,7 +2148,8 @@
 
 WORD TTLGetTTDir()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	char Temp[MAX_PATH],HomeDir[MAX_PATH];
 
 	Err = 0;
@@ -2188,7 +2236,8 @@
 //
 WORD TTLGetVer()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	TStrVal Str1, Str2;
 	int a, b, c, d;
 	int compare = 0;
@@ -2241,7 +2290,8 @@
 WORD TTLGoto()
 {
 	TName LabName;
-	WORD Err, VarType, VarId;
+	WORD Err, VarType;
+	TVarId VarId;
 
 	if (GetLabelName(LabName) && (GetFirstChar()==0))
 	{
@@ -2349,7 +2399,8 @@
 WORD TTLInputBox(BOOL Paswd)
 {
 	TStrVal Str1, Str2, Str3;
-	WORD Err, ValType, VarId, P;
+	WORD Err, ValType, P;
+	TVarId VarId;
 	int sp = 0;
 
 	Err = 0;
@@ -2393,7 +2444,8 @@
 
 WORD TTLInt2Str()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	int Num;
 	TStrVal Str2;
 
@@ -2502,7 +2554,8 @@
 
 WORD TTLMakePath()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	TStrVal Dir, Name;
 
 	Err = 0;
@@ -2562,7 +2615,8 @@
 
 WORD TTLBasename()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	TStrVal Src, Name;
 
 	Err = 0;
@@ -2582,7 +2636,8 @@
 
 WORD TTLDirname()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	TStrVal Src, Dir;
 
 	Err = 0;
@@ -2717,7 +2772,8 @@
 WORD TTLRecvRandom()
 {
 	static int srand_init = 0;
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	int MaxNum, Num;
 	double d;
 
@@ -2749,7 +2805,8 @@
 WORD TTLRecvLn()
 {
 	TStrVal Str;
-	WORD ValType, VarId;
+	WORD ValType;
+	TVarId VarId;
 	int TimeOut;
 
 	if (GetFirstChar()!=0)
@@ -2796,7 +2853,8 @@
 #define ROTATE_DIR_RIGHT 1
 WORD BitRotate(int direction)
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	int x, n;
 
 	Err = 0;
@@ -3245,7 +3303,8 @@
 	TStrVal Fmt;
 	int Num;
 	TStrVal Str;
-	WORD Err = 0, TmpErr, VarId;
+	WORD Err = 0, TmpErr;
+	TVarId VarId;
 	char buf[MaxStrLen];
 	char *p, subFmt[MaxStrLen], buf2[MaxStrLen];
 
@@ -3265,7 +3324,7 @@
 	UChar* pattern, * str;
 
 	if (getvar) {
-		GetStrVar(&VarId,&Err);
+		GetStrVar(&VarId, &Err);
 		if (Err!=0) {
 			SetResult(4);
 			return Err;
@@ -3437,7 +3496,8 @@
 
 WORD TTLStr2Code()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	TStrVal Str;
 	int Len, c, i;
 	unsigned int Num;
@@ -3465,7 +3525,8 @@
 
 WORD TTLStr2Int()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	TStrVal Str;
 	int Num;
 
@@ -3536,7 +3597,8 @@
 
 WORD TTLStrConcat()
 {
-	WORD VarId, Err;
+	TVarId VarId;
+	WORD Err;
 	TStrVal Str;
 
 	Err = 0;
@@ -3552,7 +3614,8 @@
 
 WORD TTLStrCopy()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	int From, Len, SrcLen;
 	TStrVal Str;
 
@@ -3671,7 +3734,8 @@
 
 WORD TTLStrInsert()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	int Index;
 	TStrVal Str;
 	int srclen, addlen;
@@ -3737,7 +3801,8 @@
 
 WORD TTLStrRemove()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	int Index, Len;
 	int srclen;
 	char *srcptr;
@@ -3764,7 +3829,8 @@
 
 WORD TTLStrReplace()
 {
-	WORD Err, VarId, VarType;
+	WORD Err, VarType;
+	TVarId VarId;
 	TStrVal oldstr;
 	TStrVal newstr;
 	char *srcptr, *matchptr;
@@ -3845,7 +3911,8 @@
 
 WORD TTLStrSpecial()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	TStrVal srcstr;
 
 	Err = 0;
@@ -3873,7 +3940,8 @@
 WORD TTLStrTrim()
 {
 	TStrVal trimchars;
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	int srclen;
 	int i, start, end;
 	char *srcptr, *p;
@@ -4042,7 +4110,8 @@
 {
 #define MAXVARNUM 9
 	TStrVal delimchars, buf;
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	WORD VarType;
 	int maxvar;
 	int srclen;
@@ -4122,7 +4191,8 @@
 // added (2007.7.12 maya)
 WORD TTLToLower()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	TStrVal Str;
 	int i=0;
 
@@ -4151,7 +4221,8 @@
 // added (2007.7.12 maya)
 WORD TTLToUpper()
 {
-	WORD Err, VarId;
+	WORD Err;
+	TVarId VarId;
 	TStrVal Str;
 	int i=0;
 
@@ -4194,7 +4265,8 @@
 WORD TTLWait(BOOL Ln)
 {
 	TStrVal Str;
-	WORD Err, ValType, VarId;
+	WORD Err, ValType;
+	TVarId VarId;
 	int i, Val;
 	BOOL NoMore;
 	int TimeOut;
@@ -4299,7 +4371,8 @@
 
 WORD TTLWaitEvent()
 {
-	WORD Err, ValType, VarId;
+	WORD Err, ValType;
+	TVarId VarId;
 	int TimeOut;
 
 	Err = 0;
@@ -4331,7 +4404,8 @@
 
 WORD TTLWaitN()
 {
-	WORD Err, ValType, VarId;
+	WORD Err, ValType;
+	TVarId VarId;
 	int TimeOut, WaitBytes;
 
 	ClearWaitN();
@@ -4376,7 +4450,8 @@
 	TStrVal Str;
 	WORD Err;
 	int Pos, Len, TimeOut;
-	WORD VarType, VarId;
+	WORD VarType;
+	TVarId VarId;
 
 	Err = 0;
 	GetStrVal(Str,&Err);
@@ -4590,18 +4665,17 @@
 int ExecCmnd()
 {
 	WORD WId, Err;
-	BOOL StrConst, E;
+	BOOL StrConst, E, WithIndex;
 	TStrVal Str;
 	TName Cmnd;
-	WORD ValType, VarType, VarId;
-	int Val;
+	WORD ValType, VarType;
+	TVarId VarId;
+	int Val, Index;
 
 	Err = 0;
 
-	if (EndWhileFlag>0)
-	{
-		if (GetReservedWord(&WId))
-		{
+	if (EndWhileFlag>0) {
+		if (GetReservedWord(&WId)) {
 			switch (WId) {
 			case RsvWhile:
 			case RsvUntil:
@@ -4617,10 +4691,8 @@
 		return 0;
 	}
 
-	if (BreakFlag>0)
-	{
-		if (GetReservedWord(&WId))
-		{
+	if (BreakFlag>0) {
+		if (GetReservedWord(&WId)) {
 			switch (WId) {
 			case RsvIf:
 				if (CheckThen(&Err))
@@ -4650,8 +4722,7 @@
 		return Err;
 	}
 
-	if (EndIfFlag>0)
-	{
+	if (EndIfFlag>0) {
 		if (! GetReservedWord(&WId))
 			;
 		else if ((WId==RsvIf) && CheckThen(&Err))
@@ -4661,8 +4732,7 @@
 		return Err;
 	}
 
-	if (ElseFlag>0)
-	{
+	if (ElseFlag>0) {
 		if (! GetReservedWord(&WId))
 			;
 		else if ((WId==RsvIf) && CheckThen(&Err))
@@ -4837,6 +4907,9 @@
 			Err = TTLInputBox(FALSE); break;
 		case RsvInt2Str:
 			Err = TTLInt2Str(); break;
+		case RsvIntDim:
+		case RsvStrDim:
+			Err = TTLDim(WId); break;
 		case RsvKmtFinish:
 			Err = TTLCommCmd(CmdKmtFinish,IdTTLWaitCmndResult); break;
 		case RsvKmtGet:
@@ -5022,10 +5095,15 @@
 		default:
 			Err = ErrSyntax;
 		}
-	else if (GetIdentifier(Cmnd))
-	{
-		if (GetFirstChar()=='=')
-		{
+	else if (GetIdentifier(Cmnd)) {
+		if (GetIndex(&Index, &Err)) {
+			WithIndex = TRUE;
+		}
+		else {
+			WithIndex = FALSE;
+		}
+
+		if (!Err && GetFirstChar() == '=') {
 			StrConst = GetString(Str,&Err);
 			if (StrConst)
 				ValType = TypString;
@@ -5033,11 +5111,24 @@
 				if (! GetExpression(&ValType,&Val,&Err))
 					Err = ErrSyntax;
 
-			if (Err==0)
-			{
-				if (CheckVar(Cmnd,&VarType,&VarId))
-				{
-					if (VarType==ValType)
+			if (!Err) {
+				if (CheckVar(Cmnd,&VarType,&VarId)) {
+					if (WithIndex) {
+						switch (VarType) {
+						case TypIntArray:
+							VarId = GetIntVarFromArray(VarId, Index, &Err);
+							if (!Err) VarType = TypInteger;
+							break;
+						case TypStrArray:
+							VarId = GetStrVarFromArray(VarId, Index, &Err);
+							if (!Err) VarType = TypString;
+							break;
+						default:
+							Err = ErrSyntax;
+						}
+					}
+					if (Err) return Err;
+					if (VarType==ValType) {
 						switch (ValType) {
 						case TypInteger: SetIntVal(VarId,Val); break;
 						case TypString:
@@ -5047,10 +5138,14 @@
 							// StrVarPtr ‚Ì•Ô‚è’l‚ª TStrVal ‚̃|ƒCƒ“ƒ^‚Å‚ ‚邱‚Æ‚ðŠú‘Ò‚µ‚ăTƒCƒY‚ðŒÅ’è
 							// (2007.6.23 maya)
 								strncpy_s(StrVarPtr(VarId),MaxStrLen,StrVarPtr((WORD)Val),_TRUNCATE);
-							break;
+						break;
+						default:
+							Err = ErrSyntax;
 						}
-					else
+					}
+					else {
 						Err = ErrTypeMismatch;
+					}
 				}
 				else {
 					switch (ValType) {
@@ -5066,7 +5161,7 @@
 					}
 					if (! E) Err = ErrTooManyVar;
 				}
-				if ((Err==0) && (GetFirstChar()!=0))
+				if (!Err && (GetFirstChar()!=0))
 					Err = ErrSyntax;
 			}
 		}
@@ -5101,7 +5196,8 @@
 // (2005.10.7 yutaka)
 void SetMatchStr(PCHAR Str)
 {
-	WORD VarType, VarId;
+	WORD VarType;
+	TVarId VarId;
 
 	if (CheckVar("matchstr",&VarType,&VarId) &&
 	    (VarType==TypString))
@@ -5112,7 +5208,8 @@
 // (2005.10.15 yutaka)
 void SetGroupMatchStr(int no, PCHAR Str)
 {
-	WORD VarType, VarId;
+	WORD VarType;
+	TVarId VarId;
 	char buf[128];
 	char *p;
 
@@ -5130,7 +5227,8 @@
 
 void SetInputStr(PCHAR Str)
 {
-	WORD VarType, VarId;
+	WORD VarType;
+	TVarId VarId;
 
 	if (CheckVar("inputstr",&VarType,&VarId) &&
 	    (VarType==TypString))
@@ -5139,7 +5237,8 @@
 
 void SetResult(int ResultCode)
 {
-  WORD VarType, VarId;
+  WORD VarType;
+  TVarId VarId;
 
 	if (CheckVar("result",&VarType,&VarId) &&
 	    (VarType==TypInteger))

Modified: trunk/teraterm/ttpmacro/ttmbuff.c
===================================================================
--- trunk/teraterm/ttpmacro/ttmbuff.c	2011-09-13 07:00:56 UTC (rev 4623)
+++ trunk/teraterm/ttpmacro/ttmbuff.c	2011-09-13 07:53:31 UTC (rev 4624)
@@ -229,7 +229,8 @@
 	BYTE b;
 	TName LabName;
 	WORD Err;
-	WORD VarType, VarId;
+	WORD VarType;
+	TVarId VarId;
 	TStrVal tmp;
 
 	Buff[IBuff] = GlobalLock(BuffHandle[IBuff]);
@@ -244,7 +245,7 @@
 		b = GetFirstChar();
 		if (b==':') {
 			if (GetLabelName(LabName) && (GetFirstChar()==0)) {
-				if (CheckVar(LabName,&VarType,&VarId)) {
+				if (CheckVar(LabName, &VarType, &VarId)) {
 					Err = ErrLabelAlreadyDef;
 				}
 				else {

Modified: trunk/teraterm/ttpmacro/ttmparse.c
===================================================================
--- trunk/teraterm/ttpmacro/ttmparse.c	2011-09-13 07:00:56 UTC (rev 4623)
+++ trunk/teraterm/ttpmacro/ttmparse.c	2011-09-13 07:53:31 UTC (rev 4624)
@@ -20,28 +20,44 @@
 WORD LinePtr;
 WORD LineLen;
 
+typedef struct {
+    int size;
+    int *val;
+} TIntAry, *PIntAry;
+
+typedef struct {
+    int size;
+    PStrVal val;
+} TStrAry, *PStrAry;
+
 // •Ï”‚̌”‚ð128->256Aƒ‰ƒxƒ‹‚̌”‚ð256->512‚ÖŠg’£‚µ‚½B(2006.2.1 yutaka)
 // •Ï”‚̌”‚ðAInitTTL ‚ōì‚Á‚Ä‚¢‚éƒVƒXƒeƒ€•Ï”‚Ì•ª‚¾‚¯’ljÁ‚µ‚½B(2006.7.26 maya)
-#define MaxNumOfIntVar (LONG)(128*2+3)
-#define MaxNumOfStrVar (LONG)(128*2+19)
-#define MaxNumOfLabVar (LONG)256*2
+#define MaxNumOfIntVar (LONG)(256+3)
+#define MaxNumOfStrVar (LONG)(256+19)
+#define MaxNumOfLabVar (LONG)512
+#define MaxNumOfIntAryVar (LONG)256
+#define MaxNumOfStrAryVar (LONG)256
 
 #define IntVarIdOff (LONG)0
 #define StrVarIdOff (IntVarIdOff+MaxNumOfIntVar)
 #define LabVarIdOff (StrVarIdOff+MaxNumOfStrVar)
-#define MaxNumOfName (MaxNumOfIntVar+MaxNumOfStrVar+MaxNumOfLabVar)
+#define IntAryVarIdOff (LabVarIdOff+MaxNumOfLabVar)
+#define StrAryVarIdOff (IntAryVarIdOff+MaxNumOfIntAryVar)
+#define MaxNumOfName (MaxNumOfIntVar+MaxNumOfStrVar+MaxNumOfLabVar+MaxNumOfIntAryVar+MaxNumOfStrAryVar)
 #define NameBuffLen MaxNumOfName*MaxNameLen
 #define StrBuffLen MaxNumOfStrVar*MaxStrLen
 
 static int IntVal[MaxNumOfIntVar];
 static BINT LabVal[MaxNumOfLabVar];
 static BYTE LabLevel[MaxNumOfLabVar];
+static TIntAry IntAryVal[MaxNumOfIntAryVar];
+static TStrAry StrAryVal[MaxNumOfStrAryVar];
 
 static HANDLE HNameBuff;
 static PCHAR NameBuff;
 static HANDLE HStrBuff;
 static PCHAR StrBuff;
-static WORD IntVarCount, StrVarCount, LabVarCount;
+static WORD IntVarCount, StrVarCount, LabVarCount, IntAryVarCount, StrAryVarCount;
 
 BOOL InitVar()
 {
@@ -88,6 +104,8 @@
 		case ErrTypeMismatch: strncpy_s(Msg, sizeof(Msg),"Type mismatch.", _TRUNCATE); break;
 		case ErrVarNotInit: strncpy_s(Msg, sizeof(Msg),"Variable not initialized.", _TRUNCATE); break;
 		case ErrCloseComment: strncpy_s(Msg, sizeof(Msg),"\"*/\" expected.", _TRUNCATE); break;
+		case ErrOutOfRange: strncpy_s(Msg, sizeof(Msg), "Index out of range.", _TRUNCATE); break;
+		case ErrCloseBracket: strncpy_s(Msg, sizeof(Msg), "\"]\" expected.", _TRUNCATE); break;
 	}
 
 	i = OpenErrDlg(Msg,LineBuff);
@@ -216,6 +234,7 @@
 		else if (_stricmp(Str,"include")==0) *WordId = RsvInclude ;
 		else if (_stricmp(Str,"inputbox")==0) *WordId = RsvInputBox;
 		else if (_stricmp(Str,"int2str")==0) *WordId = RsvInt2Str;
+		else if (_stricmp(Str,"intdim")==0) *WordId = RsvIntDim;
 		break;
 	case 'k':
 		if (_stricmp(Str,"kmtfinish")==0) *WordId = RsvKmtFinish;
@@ -296,6 +315,7 @@
 		else if (_stricmp(Str,"strcompare")==0) *WordId = RsvStrCompare;
 		else if (_stricmp(Str,"strconcat")==0) *WordId = RsvStrConcat;
 		else if (_stricmp(Str,"strcopy")==0) *WordId = RsvStrCopy;
+		else if (_stricmp(Str,"strdim")==0) *WordId = RsvStrDim;
 		else if (_stricmp(Str,"strinsert")==0) *WordId = RsvStrInsert;
 		else if (_stricmp(Str,"strjoin")==0) *WordId = RsvStrJoin;
 		else if (_stricmp(Str,"strlen")==0) *WordId = RsvStrLen;
@@ -752,52 +772,58 @@
 	return TRUE;
 }
 
-BOOL CheckVar(PCHAR Name, LPWORD VarType, LPWORD VarId)
+BOOL CheckVar(PCHAR Name, LPWORD VarType, PVarId VarId)
 {
 	int i;
 	long P;
 
 	*VarType = TypUnknown;
 
-	i = 0;
-	while (i<IntVarCount)
-	{
-		P = (i+IntVarIdOff)*MaxNameLen;
-		if (_stricmp(&NameBuff[P],Name)==0)
-		{
+	for (i=0; i<IntVarCount; i++) {
+		P = (i + IntVarIdOff) * MaxNameLen;
+		if (_stricmp(&NameBuff[P], Name) == 0) {
 			*VarType = TypInteger;
-			*VarId = (WORD)i;
+			*VarId = (TVarId)i;
 			return TRUE;
 		}
-		i++;
 	}
 
-	i = 0;
-	while (i<StrVarCount)
-	{
-		P = (i+StrVarIdOff)*MaxNameLen;
-		if (_stricmp(&NameBuff[P],Name)==0)
-		{
+	for (i=0; i<StrVarCount; i++) {
+		P = (i + StrVarIdOff) * MaxNameLen;
+		if (_stricmp(&NameBuff[P], Name) == 0) {
 			*VarType = TypString;
 			*VarId = i;
 			return TRUE;
 		}
-		i++;
 	}
 
-	i = 0;
-	while (i<LabVarCount)
-	{
-		P = (i+LabVarIdOff)*MaxNameLen;
-		if (_stricmp(&NameBuff[P],Name)==0)
-		{
+	for (i=0; i<LabVarCount; i++) {
+		P = (i + LabVarIdOff) * MaxNameLen;
+		if (_stricmp(&NameBuff[P], Name) == 0) {
 			*VarType = TypLabel;
 			*VarId = i;
 			return TRUE;
 		}
-		i++;
 	}
 
+	for (i=0; i<IntAryVarCount; i++) {
+		P = (i + IntAryVarIdOff) * MaxNameLen;
+		if (_stricmp(&NameBuff[P], Name) == 0) {
+			*VarType = TypIntArray;
+			*VarId = i;
+			return TRUE;
+		}
+	}
+
+	for (i=0; i<StrAryVarCount; i++) {
+		P = (i + StrAryVarIdOff) * MaxNameLen;
+		if (_stricmp(&NameBuff[P], Name) == 0) {
+			*VarType = TypStrArray;
+			*VarId = i;
+			return TRUE;
+		}
+	}
+
 	return FALSE;
 }
 
@@ -826,6 +852,36 @@
 	return TRUE;
 }
 
+BOOL NewIntAryVar(PCHAR Name, int size)
+{
+	long P;
+	if (IntAryVarCount >= MaxNumOfIntAryVar) return FALSE;
+
+	if ((IntAryVal[IntAryVarCount].val = calloc(size, sizeof(int))) == NULL) return FALSE;
+	IntAryVal[IntAryVarCount].size = size;
+
+	P = (IntAryVarIdOff + IntAryVarCount) * MaxNameLen;
+	strncpy_s(&NameBuff[P], MaxNameLen, Name, _TRUNCATE);
+
+	IntAryVarCount++;
+	return TRUE;
+}
+
+BOOL NewStrAryVar(PCHAR Name, int size)
+{
+	long P;
+	if (StrAryVarCount >= MaxNumOfStrAryVar) return FALSE;
+
+	if ((StrAryVal[StrAryVarCount].val = calloc(size, sizeof(TStrVal))) == NULL) return FALSE;
+	StrAryVal[StrAryVarCount].size = size;
+
+	P = (StrAryVarIdOff + StrAryVarCount) * MaxNameLen;
+	strncpy_s(&NameBuff[P], MaxNameLen, Name, _TRUNCATE);
+
+	StrAryVarCount++;
+	return TRUE;
+}
+
 BOOL NewLabVar(PCHAR Name, BINT InitVal, WORD ILevel)
 {
 	long P;
@@ -863,16 +919,18 @@
 BOOL GetFactor(LPWORD ValType, int far *Val, LPWORD Err)
 {
 	TName Name;
-	WORD P, Id;
+	WORD P, WId;
+	TVarId VarId;
+	int Index;
 
 	P = LinePtr;
 	*Err = 0;
 	if (GetIdentifier(Name)) {
-		if (CheckReservedWord(Name,&Id)) {
+		if (CheckReservedWord(Name,&WId)) {
 			if (GetFactor(ValType, Val, Err)) {
 				if ((*Err==0) && (*ValType!=TypInteger))
 					*Err = ErrTypeMismatch;
-				switch (Id) {
+				switch (WId) {
 					case RsvBNot: *Val = ~(*Val); break;
 					case RsvLNot: *Val = !(*Val); break;
 					default: *Err = ErrSyntax;
@@ -882,10 +940,36 @@
 				*Err = ErrSyntax;
 			}
 		}
-		else if (CheckVar(Name, ValType, &Id)) {
+		else if (CheckVar(Name, ValType, &VarId)) {
 			switch (*ValType) {
-				case TypInteger: *Val = IntVal[Id]; break;
-				case TypString: *Val = Id; break;
+				case TypInteger: *Val = IntVal[VarId]; break;
+				case TypString: *Val = VarId; break;
+				case TypIntArray:
+					if (GetIndex(&Index, Err)) {
+						if (Index >= 0 && Index < IntAryVal[VarId].size) {
+							*Val = IntAryVal[VarId].val[Index];
+							*ValType = TypInteger;
+						}
+						else {
+							*Err = ErrOutOfRange;
+						}
+					}
+					else if (*Err == 0) {
+						*Val = VarId;
+					}
+					break;
+				case TypStrArray:
+					if (GetIndex(&Index, Err)) {
+						VarId = GetStrVarFromArray(VarId, Index, Err);
+						if (*Err == 0) {
+							*Val = VarId;
+							*ValType = TypString;
+						}
+					}
+					else if (*Err == 0) {
+						*Val = VarId;
+					}
+					break;
 			}
 		}
 		else
@@ -893,11 +977,11 @@
 	}
 	else if (GetNumber(Val))
 		*ValType = TypInteger;
-	else if (GetOperator(&Id)) {
+	else if (GetOperator(&WId)) {
 		if (GetFactor(ValType, Val, Err)) {
 			if ((*Err==0) && (*ValType != TypInteger))
 				*Err = ErrTypeMismatch;
-			switch (Id) {
+			switch (WId) {
 				case RsvPlus:                    break;
 				case RsvMinus:   *Val = -(*Val); break;
 				case RsvBNot:    *Val = ~(*Val); break;
@@ -1490,33 +1574,54 @@
 		*Err = ErrTypeMismatch;
 }
 
-void SetIntVal(WORD VarId, int Val)
+void SetIntVal(TVarId VarId, int Val)
 {
-	IntVal[VarId] = Val;
+	if (VarId >> 16) {
+		IntAryVal[(VarId>>16)-1].val[VarId & 0xffff] = Val;
+	}
+	else {
+		IntVal[VarId] = Val;
+	}
 }
 
-int CopyIntVal(WORD VarId)
+int CopyIntVal(TVarId VarId)
 {
-	return IntVal[VarId];
+	if (VarId >> 16) {
+		return IntAryVal[(VarId>>16)-1].val[VarId & 0xffff];
+	}
+	else {
+		return IntVal[VarId];
+	}
 }
 
-void GetIntVar(LPWORD VarId, LPWORD Err)
+void GetIntVar(PVarId VarId, LPWORD Err)
 {
 	TName Name;
 	WORD VarType;
+	int Index;
 
 	if (*Err!=0) return;
 
-	if (GetIdentifier(Name))
-	{
-		if (CheckVar(Name,&VarType,VarId))
-		{
-			if (VarType!=TypInteger)
+	if (GetIdentifier(Name)) {
+		if (CheckVar(Name, &VarType, VarId)) {
+			switch (VarType) {
+			case TypInteger:
+				break;
+			case TypIntArray:
+				if (GetIndex(&Index, Err)) {
+					*VarId = GetIntVarFromArray(*VarId, Index, Err);
+				}
+				else if (*Err == 0) {
+					*Err = ErrTypeMismatch;
+				}
+				break;
+			default:
 				*Err = ErrTypeMismatch;
+			}
 		}
 		else {
-			if (NewIntVar(Name,0))
-				CheckVar(Name,&VarType,VarId);
+			if (NewIntVar(Name, 0))
+				CheckVar(Name, &VarType, VarId);
 			else
 				*Err = ErrTooManyVar;
 		}
@@ -1538,18 +1643,17 @@
 	Str[0] = 0;
 	if (*Err!=0) return;
 
-	if (GetString(Str,Err))
+	if (GetString(Str, Err))
 		return;
-	else if (GetExpression(&VarType,&VarId,Err))
-	{
+	else if (GetExpression(&VarType, &VarId, Err)) {
 		if (*Err!=0) return;
 		switch (VarType) {
 			case TypString:
-				strncpy_s(Str,MaxStrLen,&StrBuff[VarId*MaxStrLen],_TRUNCATE);
+				strncpy_s(Str, MaxStrLen, StrVarPtr(VarId), _TRUNCATE);
 				break;
 			case TypInteger:
 				if (AutoConversion)
-					_snprintf_s(Str,MaxStrLen,_TRUNCATE,"%d",VarId);
+					_snprintf_s(Str, MaxStrLen, _TRUNCATE, "%d", VarId);
 				else
 					*Err = ErrTypeMismatch;
 				break;
@@ -1561,23 +1665,34 @@
 		*Err = ErrSyntax;
 }
 
-void GetStrVar(LPWORD VarId, LPWORD Err)
+void GetStrVar(PVarId VarId, LPWORD Err)
 {
 	TName Name;
 	WORD VarType;
+	int Index;
 
 	if (*Err!=0) return;
 
-	if (GetIdentifier(Name))
-	{
-		if (CheckVar(Name,&VarType,VarId))
-		{
-			if (VarType!=TypString)
+	if (GetIdentifier(Name)) {
+		if (CheckVar(Name, &VarType, VarId)) {
+			switch (VarType) {
+			case TypString:
+				break;
+			case TypStrArray:
+				if (GetIndex(&Index, Err)) {
+					*VarId = GetStrVarFromArray(*VarId, Index, Err);
+				}
+				else if (*Err == 0) {
+					*Err = ErrTypeMismatch;
+				}
+				break;
+			default:
 				*Err = ErrTypeMismatch;
+			}
 		}
 		else {
-			if (NewStrVar(Name,""))
-				CheckVar(Name,&VarType,VarId);
+			if (NewStrVar(Name, ""))
+				CheckVar(Name, &VarType, VarId);
 			else
 				*Err = ErrTooManyVar;
 		}
@@ -1586,16 +1701,21 @@
 		*Err = ErrSyntax;
 }
 
-void SetStrVal(WORD VarId, PCHAR Str)
+void SetStrVal(TVarId VarId, PCHAR Str)
 {
 	// StrBuf ‚̉^—pã MaxStrLen ‚ª³‚µ‚¢ƒTƒCƒY‚Ȃ̂ŃTƒCƒY‚ðŒÅ’è
 	// (2007.6.23 maya)
-	strncpy_s(&StrBuff[VarId*MaxStrLen],MaxStrLen,Str,_TRUNCATE);
+	strncpy_s(StrVarPtr(VarId), MaxStrLen, Str, _TRUNCATE);
 }
 
-PCHAR StrVarPtr(WORD VarId)
+PCHAR StrVarPtr(TVarId VarId)
 {
-	return (&StrBuff[VarId*MaxStrLen]);
+	if (VarId >> 16) {
+		return StrAryVal[(VarId>>16)-1].val[VarId & 0xffff];
+	}
+	else {
+		return &StrBuff[VarId*MaxStrLen];
+	}
 }
 
 // for ifdefined (2006.9.23 maya)
@@ -1609,3 +1729,44 @@
 
 	*Err = 0;
 }
+
+BOOL GetIndex(int *Index, LPWORD Err)
+{
+	WORD P;
+	int Idx;
+
+	*Err = 0;
+	P = LinePtr;
+	if (GetFirstChar() == '[') {
+		GetIntVal(&Idx, Err);
+		if (*Err == 0) {
+			if (GetFirstChar() == ']') {
+				*Index = Idx;
+				return TRUE;
+			}
+			*Err = ErrCloseBracket;
+		}
+	}
+	LinePtr = P;
+	return FALSE;
+}
+
+TVarId GetIntVarFromArray(TVarId VarId, int Index, LPWORD Err)
+{
+	if (Index < 0 || Index >= IntAryVal[VarId].size) {
+		*Err = ErrOutOfRange;
+		return -1;
+	}
+	*Err = 0;
+	return ((VarId+1) << 16) | Index;
+}
+
+TVarId GetStrVarFromArray(TVarId VarId, int Index, LPWORD Err)
+{
+	if (Index < 0 || Index >= StrAryVal[VarId].size) {
+		*Err = ErrOutOfRange;
+		return -1;
+	}
+	*Err = 0;
+	return ((VarId+1) << 16) | Index;
+}

Modified: trunk/teraterm/ttpmacro/ttmparse.h
===================================================================
--- trunk/teraterm/ttpmacro/ttmparse.h	2011-09-13 07:00:56 UTC (rev 4623)
+++ trunk/teraterm/ttpmacro/ttmparse.h	2011-09-13 07:53:31 UTC (rev 4624)
@@ -34,12 +34,16 @@
 #define ErrTypeMismatch     14
 #define ErrVarNotInit       15
 #define ErrCloseComment     16
+#define ErrOutOfRange       17
+#define ErrCloseBracket     18
 
 #define TypUnknown  0
 #define TypInteger  1
 #define TypLogical  2
 #define TypString   3
 #define TypLabel    4
+#define TypIntArray 5
+#define TypStrArray 6
 
 #define RsvBeep         1
 #define RsvBPlusRecv    2
@@ -190,6 +194,8 @@
 #define RsvSendlnBroadcast  147
 #define RsvWait4all     148
 #define RsvDispStr      149
+#define RsvIntDim       150
+#define RsvStrDim       151
 #define RsvSetDebug     175
 #define RsvYmodemRecv   176
 #define RsvYmodemSend   177
@@ -250,6 +256,9 @@
 typedef char TStrVal [MaxStrLen];
 typedef TStrVal far *PStrVal;
 
+typedef DWORD TVarId;
+typedef TVarId far *PVarId;
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -264,25 +273,31 @@
 BOOL CheckParameterGiven();
 BOOL GetIdentifier(PCHAR Name);
 BOOL GetReservedWord(LPWORD WordId);
+BOOL CheckReservedWord(PCHAR Str, LPWORD WordId);
 BOOL GetLabelName(PCHAR Name);
 BOOL GetString(PCHAR Str, LPWORD Err);
-BOOL CheckVar(PCHAR Name, LPWORD VarType, LPWORD VarId);
+BOOL CheckVar(PCHAR Name, LPWORD VarType, PVarId VarId);
 BOOL NewIntVar(PCHAR Name, int InitVal);
 BOOL NewStrVar(PCHAR Name, PCHAR InitVal);
 BOOL NewLabVar(PCHAR Name, BINT InitVal, WORD ILevel);
+BOOL NewIntAryVar(PCHAR Name, int size);
+BOOL NewStrAryVar(PCHAR Name, int size);
 void DelLabVar(WORD ILevel);
 void CopyLabel(WORD ILabel, BINT far *Ptr, LPWORD Level);
 BOOL GetExpression(LPWORD ValType, int far *Val, LPWORD Err);
 void GetIntVal(int far *Val, LPWORD Err);
-void SetIntVal(WORD VarId, int Val);
-int CopyIntVal(WORD VarId);
-void GetIntVar(LPWORD VarId, LPWORD Err);
+void SetIntVal(TVarId VarId, int Val);
+int CopyIntVal(TVarId VarId);
+void GetIntVar(PVarId VarId, LPWORD Err);
 void GetStrVal(PCHAR Str, LPWORD Err);
 void GetStrVal2(PCHAR Str, LPWORD Err, BOOL AutoConversion);
-void GetStrVar(LPWORD VarId, LPWORD Err);
-void SetStrVal(WORD VarId, PCHAR Str);
-PCHAR StrVarPtr(WORD VarId);
+void GetStrVar(PVarId VarId, LPWORD Err);
+void SetStrVal(TVarId VarId, PCHAR Str);
+PCHAR StrVarPtr(TVarId VarId);
 void GetVarType(LPWORD ValType, int far *Val, LPWORD Err);
+TVarId GetIntVarFromArray(TVarId VarId, int Index, LPWORD Err);
+TVarId GetStrVarFromArray(TVarId VarId, int Index, LPWORD Err);
+BOOL GetIndex(int *Index, LPWORD Err);
 
 extern WORD TTLStatus;
 extern char LineBuff[MaxLineLen];



Ttssh2-commit メーリングリストの案内
アーカイブの一覧に戻る