READコマンドは、READの引数として指定されたグローバルまたはローカル変数へ、現在のデバイスからの入力を転送します。利便性のために、READもまた、制限された出力を現デバイスに実行する引数を受け入れます。
READコマンドのフォーマットは:
R[EAD][:tvexpr] (glvn|*glvn|glvn#intexpr)[:numexpr]|strlit|fcc[,...]
オプションでコマンド直後に続く真理値の式は、GT.Mがコマンドを実行するかどうかをコントロールする後置コマンドです。
添字ありまたは添字なしのグローバルまたはローカル変数名は、入力を格納するために入る変数を指定します; 変数はREADの前に存在する必要はありません; もし変数がREADの前に存在する場合、READはその古い値を置き換えます。
アスタリスク(*)を変数名の直前に置くと、READは、入力の1文字を受け取り、変数にその文字のASCIIコードを置きます。
シャープ記号(#)と非ゼロの整数式が変数名の直後に続く時、整数式は、読み取り入力として受け入れられる文字の最大数を決定します; GT.Mが整数式で指定された文字数を読み込む時、または、入力ストリームでターミネータを読み込む時、そのどちらが先に発生すると、その読み込みは終了します。
オプションの数値式は、コマンドが終了すべき入力を待つために、多くは数秒の時間を指定します。タイムアウトが指定されていて、タイムアウトが完了する前に、もし入力が終了されている場合、$TESTは1(true)にセットされ、そうでない場合、$TESTは0(false)にセットされます。READがタイムアウトすると、ターゲット変数はタイムアウトする前に受け取った文字列の値をとります。
プロンプトを発行する簡潔な手段を提供するには、GT.Mは、あたかもWRITEの引数であるかのように、現デバイスへREADの引数に、文字列リテラルと制御文字の書式 (!,?intexpr,#) を送信します。
間接指定演算子と1つ以上のREADの引数リストに評価される原子式(expression atom)は、READのための正当な引数を構成します。
UTF-8モードで、READコマンドは、入力デバイスの文字エンコーディングとしてOPENデバイスで指定された文字セットの値を使用しています。もし文字セットが "M"または"UTF-8"に指定されている場合、データは変換なしで読み込まれます。もし文字セットが"UTF-16"、"UTF-16LE"、"UTF-16BE"の場合、データは指定されたエンコーディングで読み込み、UTF-8に変換されます。もしREADコマンドが、不正な文字または選択された表現以外の文字を検出した場合、それは実行時エラーが発生します。READコマンドは、固定されていないデバイスではすべてのUnicodeの行ターミネータを認識します。
READ, デバイス, 入力, 出力, 制御文字のフォーマットの詳細については、 第9章:“入力/出力処理 ” を参照してください。