キーボードから、値の一覧を読みます。
構文:
Input [;] ["prompt" ,|; ] variable_list
パラメタ:
prompt
オプションの、画面に書く、直定数文字列。
セミコロン (;)を後に続けると、入力喚起のため "?" が表示されます。
コンマ (,)を後に続けると、この場合は、何も表示されません。
variable_list
コンマで切り離された変数のリストで、ユーザが入力した値を、そのまま読み込みます。
記述:
キーボード入力の最初から改行入力までの間の、一行の内容を読みます。
数値は、その文字列表現から、変数リストの対応する型に、変えられます。
キー入力している間、入力文字は画面に表示されます。
入力の並びに、複数の値があるとき、ユーザは、各値を切り離すために、文字列の後にはコンマを、数値の後にはコンマと空白を入力するように、指示しなければなりません。
前後の空白は、文字列の値から取り除かれます。
入力文字列の中にコンマを含めたい場合は、入力が分けられるのを防ぐために、引用符 (
"...") で全体を囲まなければなりません。
区切りを意識しないで、一行全体を文字列として入力したい場合は、
Line Input を使うとよいでしょう。
もし、
prompt を指定していれば、プロンプトは、画面の現在のカーソル位置に表示されます。そして、入力され文字は、プロンプトのすぐ右に続いて、画面に表示されます。
プロンプトを指定していないと、入力した文字は、現在のカーソル位置に表示されます。
Input の後の任意のセミコロン (
;) は、
Print 命令で、任意で付けられるセミコロンと同様です:
カーソルは、入力された文字が、画面にすべて表示されるまで、同じ行の上に留まっています。あるいは、カーソルは、次の行の始まりまで動きます。
変数リストに記載されているより多くの値が読み込まれると、過剰部分の値は無視されます。
逆に、入力された値が、変数リストより少ない場合(すなわち、すべての値を入力する前に、Enter キーを押した場合)は、残っている変数は、初期化されます。-- 数値変数はゼロ (0) に、文字列変数は空文字 ("") になります。
数値は、
Val や
ValLng と同様の手続きで、変換されます。できるだけ多くの数字が変換できるように、数値の形式に最適な関数が使われます。
Input は、編集能力に限界があります:
左右のカーソルキーを使って文字列を操作したり、文字を消去・挿入したりできます。
もっと良いたユーザー・インターフェイスが必要ならば、カスタム入力ルーチンを使う必要があります。
例:
例 #1
Dim user_name As String, user_age As Integer
Input "コンマ区切りで入力して下さい。 名前,年令 : ", user_name, user_age
Print "名前は " & user_name & " で、年齢は " & user_age & " 才です。"
Sleep
渡辺注:Input のところで日本語が文字化けしますが、Print は日本語表示されます。
Open Cons を使うと、入力行も文字化けせずに表示できます。
例 #2
Dim As Double a, b
Dim As String yn
Do
Input "数を入力してください: ", a
Input ; "もう一つ別の数を: ", b
Print , "ありがとうございます"
Sleep 500
Print
Print "入力した数の合計は "; a + b
Print
Do
Input "もう一度やりますか?( Y か N を入力して下さい。)"; yn
yn = LCase(yn)
Loop Until yn = "y" Or yn = "n"
Loop While LCase(yn) = "y"
QBからの違い:
-
ユーザが値として間違った数を入力するか、または、数値以外や、有効な数にならない文字列を入力したとき、QBASIC は、 "Redo from start"(始めからのやり直して)とメッセージを表示して、有効な入力を受け取るまで、それ以上続けません。
-
QB は、実行画面(コンソール)から数を入力するとき、空白を、値の区切りとして扱いません。
参照: