'dos_console.sbp 'このファイルには、コンソール アプリケーション用のサポート プログラムが記載されます。 #ifndef _INC_DOS_CONSOLE #define _INC_DOS_CONSOLE #include Dim _System_hConsoleOut As HANDLE, _System_hConsoleIn As HANDLE _System_hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE) _System_hConsoleIn = GetStdHandle(STD_INPUT_HANDLE) '---------- command.sbp内で定義済み ---------- 'Dim _System_InputDataPtr[_System_MAX_PARMSNUM] As VoidPtr 'Dim _System_InputDataType[_System_MAX_PARMSNUM] As DWord '--------------------------------------------- Sub INPUT_FromPrompt(ShowStr As String) Dim i As Long, i2 As Long, i3 As Long Dim buf As String Dim InputStr[1023] As Byte Dim dwAccessBytes As DWord *InputReStart PRINT_ToPrompt(ShowStr) '入力 ReadConsole(_System_hConsoleIn, InputStr, Len(InputStr), dwAccessBytes, 0) If InputStr[dwAccessBytes-2] = &h0d And InputStr[dwAccessBytes-1] = &h0a Then InputStr[dwAccessBytes-2] = 0 End If 'データを変数に格納 i=0 i2=0 buf.ReSize(lstrlen(InputStr) + 1, 0) Dim comma As Char comma = &h2c 'Asc(",") While 1 i3=0 While 1 If InputStr[i2]=comma Then buf[i3]=0 Exit While End If buf[i3]=InputStr[i2] If InputStr[i2]=0 Then Exit While i2++ i3++ Wend _System_Input_SetArgument(_System_InputDataPtr[i], _System_InputDataType[i], buf, i3) i++ If _System_InputDataPtr[i]=0 And InputStr[i2]=comma Then PRINT_ToPrompt("入力データの個数が多すぎます"+Chr$(10)) Goto *InputReStart ElseIf InputStr[i2]=0 Then If _System_InputDataPtr[i]<>0 Then PRINT_ToPrompt("入力データの個数が足りません"+Chr$(10)) Goto *InputReStart Else Exit While End If End If i2++ Wend End Sub Macro LOCATE(x As Long, y As Long) SetConsoleCursorPosition(_System_hConsoleOut, MAKELONG(x, y)) End Macro Sub PRINT_ToPrompt(buf As String) Dim dwAccessBytes As DWord WriteConsole(_System_hConsoleOut, buf.Chars, buf.Length, dwAccessBytes, 0) End Sub Sub PRINTUSING_ToPrompt(UsingStr As String) PRINT_ToPrompt(_System_GetUsingFormat(UsingStr)) End Sub #endif '_INC_DOS_CONSOLE