● ステートメントリファレンス

read 、data 、restore 、skip

BASIC プログラム内に数値データを置き、それを逐次読み込みます。


data ステートメント

BASIC プログラム内に数値データを置きます。data ステートメント自体は何も処理を行いません。
    data  数値 , 数値 , 数値 , …
数値をカンマで区切って記述します。数値の数は、read ステートメントで読み出される回数分以上必要ですが、restore ステートメントで読み込み位置を変更する場合は、この限りではありません。
データは複数行に渡って記述する事ができます。空白行や他のステートメント等で行が分かれても、繋がった一連のデータ列として扱われます。

数値データは計算式でも記述できます。計算式の場合は read ステートメントで読み出された時に計算されます。変数が使用されている場合は、read ステートメントが読み出す前に登録しておく必要があります。
データの末尾はカンマで終わっていてもエラーにはなりませんが、数値とは見なされません(空の式とは見なされない)。


read ステートメント

data ステートメント内に記述されている数値データを変数に読み込みます。
    read  変数 , 変数 , 変数 , …
read の後ろには、読み込んだデータを格納する変数を指定します。単一変数では、登録されていないものが指定された場合は、登録してから読み込みます。配列変数を指定する場合は、インデックスも指定する必要があります。

    data  1,  2,  3

    read a  :# 1 を読み込む
    read a  :# 2 を読み込む
    read a  :# 3 を読み込む

読み込めるデータが存在しないのに read ステートメントを実行するとエラーになります。また、未登録の配列変数を指定した場合もエラーになります。


restore ステートメント

read ステートメントが読み込む行位置を変更します。
    restore

    restore $ラベル名
ラベルが指定されている場合は、プログラムの先頭から該当するラベルを検索します。ラベルを発見したら、更にそのラベルからプログラムの終端に向かって最も近い data ステートメントを検索し、その位置を read ステートメントの読み込み位置に指定します。
ラベルが指定されていない場合は、プログラムの先頭から data ステートメントを検索します。

    data  1,  2,  3

    read a  :# 1 を読み込む
    read a  :# 2 を読み込む
    read a  :# 3 を読み込む

    restore :# 先頭に戻る

    read a  :# 1 を読み込む

ラベル名先頭の $ は省略する事ができます。$ だけしか記述しなかった場合は、ラベル名全体を省略したものと見なします。

$データ1
    data  1,  2,  3
$データ2
    data  4,  5,  6

    restore $データ2
    for i = 1 to 3
        read a   :# 4 〜 6 を読み込む
    next

    restore データ1
    for i = 1 to 3
        read a   :# 1 〜 3 を読み込む
    next

    restore $
    for i = 1 to 3
        read a   :# 1 〜 3 を読み込む
    next

skip ステートメント

read ステートメントが読み込む位置をデータ単位に変更します。
    skip

    skip  数値
skip の後ろには、移動するデータ数を計算式で指定します。