Index: trunk/Include/basic/dos_console.sbp
===================================================================
--- trunk/Include/basic/dos_console.sbp	(revision 411)
+++ trunk/Include/basic/dos_console.sbp	(revision 432)
@@ -9,4 +9,7 @@
 Dim _System_hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)
 Dim _System_hConsoleIn = GetStdHandle(STD_INPUT_HANDLE)
+System.Console.SetIn(
+	New System.IO.StreamReader(
+		New System.IO.FileStream(_System_hConsoleIn, System.IO.FileAccess.Read, False)))
 
 '---------- command.sbp内で定義済み ----------
@@ -15,28 +18,23 @@
 '---------------------------------------------
 Sub INPUT_FromPrompt(ShowStr As String)
-	Dim InputBuf[1023] As TCHAR
-	Dim dwAccessBytes As DWord
-
-*InputReStart
-
+*InputReStart '多重Continueがあるので、これはループ構文に直せない。
 	PRINT_ToPrompt(ShowStr)
 
 	'入力
-	ReadConsole(_System_hConsoleIn, InputBuf, Len(InputBuf), dwAccessBytes, 0)
-	If InputBuf[dwAccessBytes-2] = &h0d And InputBuf[dwAccessBytes-1] = &h0a Then
-		InputBuf[dwAccessBytes-2] = 0
-		dwAccessBytes -= 2
+	Dim input = System.Console.ReadLine()
+	If ActiveBasic.IsNothing(input) Then
+		Exit Sub
 	End If
 
-	If dwAccessBytes = 0 Then Goto *InputReStart
+	If input.Length = 0 Then Goto *InputReStart
 
 	'データを変数に格納
 	Const comma = &h2c As StrChar 'Asc(",")
-	Dim broken = ActiveBasic.Strings.Detail.Split(New String(InputBuf, dwAccessBytes As Long), comma)
+	Dim broken = ActiveBasic.Strings.Detail.Split(input, comma)
 	Dim i As Long
 	For i = 0 To ELM(broken.Count)
 		If _System_InputDataPtr[i] = 0 Then
 			PRINT_ToPrompt(Ex"入力データの個数が多すぎます\r\n")
-			Goto *InputReStart
+			 Goto *InputReStart
 		End If
 		_System_Input_SetArgument(_System_InputDataPtr[i], _System_InputDataType[i], broken[i])
@@ -45,5 +43,5 @@
 	If _System_InputDataPtr[i]<>0 Then
 		PRINT_ToPrompt(Ex"入力データの個数が足りません\r\n")
-		Goto *InputReStart
+		 Goto *InputReStart
 	End If
 End Sub
@@ -54,4 +52,8 @@
 
 Sub PRINT_ToPrompt(buf As String)
+	If String.IsNullOrEmpty(buf) Then
+		Exit Sub
+	End If
+
 	Dim dwAccessBytes As DWord
 #ifdef __STRING_UNICODE_WINDOWS_ANSI
