JIS X 3003:1993 電子計算機プログラム言語Full BASIC | ページ 14

62
X 3003-1993
(2) 変数名並び=変数名{コンマ 変数名}*
(3) f-missing句=IF MISSING THEN データ存否動作
(4) データ存否動作=exit-do文|exit-for文|行番号
(5) estore文=RESTORE 行番号?
(6) ata文=DATA データ要素並び
(7) データ要素並び=データ要素{コンマ データ要素}*
(8) データ要素=定数|単純文字列
(9) 単純文字列=単語文字|単語文字 単純文字* 単語文字
(10) データ存否動作のexit-for文は,for本体の中にだけ書くことができる。データ存否動作のexit-do文
は,do本体の中にだけ書くことができる。
(11) estore文の行番号は,data文を含む行を参照するものでなければならない。
10.1.3 例 構文の例を次に示す。
READ X,Y,Z (1)
READ IF MISSING THEN 1350:X(1), A$ (1)
RESTORE (5)
RESTORE 1000 (5)
DATA 3.14159,PI, 5E-30,”,” (6)
COMMAS CANNOT OCCUR IN UNQUOTED STRINGS (9)
10.1.4 意味 意味は,次による。
(1) 一つのプログラム単位中のdata文のデータ要素は,全体で一つのデータ列を構成する。一つのプログ
ラム単位の中にあるすべてのdata文に書いたすべてのデータ要素が,その書いた順番に,一つの列に
なる。
(2) プログラムの実行がdata文の行に到達すると,何もしないで次の行に進む。
(3) ead文を実行すると,そのread文を含むプログラム単位のデータ列にある値が,順番に変数並び中
の変数に代入される。データ列に対して,一つの指示子 (pointer) を想定し関係付ける。プログラム単
位の実行を開始すると,指示子は,データ列にある先頭のデータ要素を指す。read文を実行するたび
に,指示子の指すデータ要素の値が変数並び中の変数に代入され,指示子はそのデータ要素の次を指
す。
(4) データ列の終りを越えてデータ要素を読もうとしたとき,そのread文の中にif-missing句がなければ,
例外状態になる。if-missing句があれば,そのデータ存否動作 (io-recovery-action) を実行する。データ
存否動作がexit-do文又はexit-for文であれば,その文は通常と同じ効果をもつ(8.3参照)。データ存
否動作が行番号であれば,その行番号の行から実行を続ける。
(5) データ列にあるそれぞれのデータ要素の型は,代入される変数の型に一致していなければならない。
すなわち,数値変数に対するデータ要素は,数値定数でなければならず,文字列変数に対するデータ
要素は,文字列定数又は単純文字列でなければならない。数値定数の形になっている単純文字列は,
read文によって文字列変数にも数値変数にも代入できる。
(6) 数値データを評価した結果が下位けたあふれになると,その値は,ゼロで置き換えられる。
(7) 変数名並び中の添字及び部分文字列指定は,その変数名並び中の先行する(すなわち左側の)変数が
すべて値を代入されてから,評価される。
(8) 行番号を指定しないでrestore文を実行すると,そのrestore文を含むプログラム単位中のデータ列へ

――――― [JIS X 3003 pdf 66] ―――――

                                                                                             63
X 3003-1993
の指示子を,データ列の先頭に戻す。次に実行されるread文は,データ列の先頭からデータ要素を読
むことになる。restore文に行番号があれば,そのrestore文を含むプログラム単位中のデータ列への
指示子は,その行番号のdata文中の先頭のデータ要素を指す。そして,次に実行されるread文は,
指示されたdata文の先頭からデータ要素を読むことになる。
(9) 一般に,入出力の途中で入出力以外の例外状態が起こったとき,その部分的な入出力動作の効果及び
その入出力装置の状態は,処理系定義とする。この規定は,10.及び11.の入出力全般に適用する。
参考 ANSI X3.113にはこの(9)項がないが,TIBによって補った。
10.1.5 例外状態 例外状態は,次による。
(1) ead文の変数名並び中の変数がデータ要素を要求したが,データ列が尽きてしまって,かつif-missing
句が指定されていない。(8001,続行不能。)
参考 ANSI X3.113の文章は不十分であるので,TIBによって訂正した。
(2) 数値定数でないデータ要素を数値変数に代入しようとした。(8101,続行不能。)
(3) 数値データの評価があふれを起こす。(1006,続行不能。)
(4) 文字列変数に対するデータ要素の代入が文字列あふれを起こす。(1053,続行不能。)
10.1.6 注意 処理系は,下位けたあふれを例外状態(1506,続行可能。ゼロで置き換え,処理を続ける。)
としてもよい。この場合,下位けたあふれを例外処理区で処理することができる(12.1参照)。

10.2 入力

10.2.1 概要 input文 (input-statement) 又はline-input文 (line-input-statement) によって,データを入力す
る。
(1) nput文は,プログラムの外部の入力源 (source) から値を変数に代入することによって,実行中のプ
ログラムと利用者との対話を可能にする。一つの入力応答 (input-reply) の中に文字列データと数値デ
ータが混在していてもよい。それぞれのデータの項目は,コンマで区切る。
(2) 処理系定義の通常の入力要求 (input-prompt) を,指定によって別の入力要求に置き換えることができ
る。
(3) ine-input文は,空白やコンマを含む一つの入力応答の行全体を,文字列変数の値として代入する。
10.2.2 構文 構文は,次による。
(1) nput文⊃INPUT 入力修飾? 変数名並び
(2) 入力修飾=入力修飾項目{コンマ 入力修飾項目}* コロン
(3) 入力修飾項目=prompt句|timeout句|elapsed句
(4) rompt句=PROMPT 文字列式
(5) imeout句=TIMEOUT 数値時間式
(6) 数値時間式=数値式
(7) lapsed句=ELAPSED 数値変数名
(8) ine-input文⊃LINE INPUT 入力修飾? 文字列変数名並び
(9) 入力要求=[処理系定義]
(10) 入力応答=データ要素並び コンマ? 行末
(11) 行入力応答=プログラム文字* 行末
(12) rompt句,timeout句及びelapsed句は,一つの入力修飾の中に,それぞれたかだか1回だけ書くこ
とができる。これらは,どのような順序で書いてもよい。
10.2.3 例 構文の例を次に示す。

――――― [JIS X 3003 pdf 67] ―――――

64
X 3003-1993
INPUT X (1)
INPUT X, A$, Y(2) (1)
INPUT PROMPT ”What is your name・”:N$ (1)
INPUT TIMEOUT 3*N, ELAPSED T, PROMPT Pstring$:N$ (1)
LINE INPUT A$ (8)
LINE INPUT PROMPT ””:A$, B$ (8)
2, SMITH, −3 (10)
25, 0, −10.2 (10)
He said ”Don't”. (11)
10.2.4 意味 意味は,次による。
(1) nput文 input文を実行すると,プログラムの実行は,(4)に定める正しい入力応答がなされるまで待
たされる。input文は,入力応答にある値を順番に,変数名並び中の変数に代入する。
(2) 入力応答の取得 対話方式 (interactive mode) の場合,プログラムの利用者は,データを入力する必要
のあることを,入力要求 (input-prompt) によって知らされる。
一括方式 (batch mode) の場合,入力応答は,処理系定義の手段によって外部の入力源から与えられ
る。
(3) 入力修飾
(3.1) 入力修飾にprompt句を書くと,処理系定義の入力要求は出力されず,代わりにprompt句の文字列
式の値が出力される。ただし,入力応答がコンマで終わっている場合については,(4.6)による。
(3.2) 入力修飾にtimeout句を書くと,その数値時間式が評価され,秒数s(整数とは限らない。)が定め
られる。s秒以内に正しい入力応答又は行入力応答 (line-input-reply) が与えられなければ,例外状
態になる。
(3.3) 入力修飾にelapsed句を書くと,処理系が入力要求を出してから,そのinput文に対する最後の入力
応答の行末又はそのline-input文に対する最後の行入力応答の行末を受け取るまでに経過した秒数
(整数とは限らない。)の値が,elapsed句の数値変数に代入される。
(3.4) 処理系に時計機能 (clock) がないとき,timeout句は何も効果をもたない。elapsed句の結果は−1
とする。時計機能があるとき,elapsed句の結果は常に正とする。timeout句及びelapsed句の値の
範囲(最小値及び最大値)及び分解能は,処理系定義とする。
(4) 値の代入
(4.1) 入力応答中の一つの項目に対して,データ要素の型及び許容される値の範囲について正しいことが
確認されたところで,その都度対応する変数に値が代入される。
(4.2) 変数名並び又は文字列変数名並び中の添字及び部分文字列指定は,その変数名並び又は文字列変数
名並び中の先行する(すなわち左側の)変数がすべて値を代入されてから,評価される。
(4.3) 入力応答にあるそれぞれのデータ要素の型は,代入される変数の型に一致していなければならない。
すなわち,数値変数に対する入力は数値定数でなければならず,文字列変数に対する入力は文字列
定数又は単純文字列でなければならない。数値定数の形になっている単純文字列は,input文によっ
て文字列変数にも数値変数にも代入できる。
(4.4) 数値データを評価した結果が下位けたあふれになると,その値は,ゼロで置き換えられる。
(4.5) 入力要求に対する入力応答がコンマで終わっていないときには,それまでに与えられたすべての入
力応答中のデータ要素の個数が,値を要求している変数名の個数と等しくなければならない。

――――― [JIS X 3003 pdf 68] ―――――

                                                                                             65
X 3003-1993
(4.6) 入力応答の,行末の前の空白でない最後の文字がコンマであるときには,更にデータが与えられる
ことを意味する。この場合,入力応答中に含まれている個数だけの値が,変数名並び中の変数に代
入される。その後,入力要求(ただし,prompt句が指定されていてもその文字列式の値ではない。)
が再度出力され,続きの正しい入力応答が与えられるまで,プログラムの実行が待たされる。正し
い入力応答が与えられると,そこからデータの続きが得られる。
(5) ine-input文
(5.1) ine-input文を実行すると,文字列変数名並び中の各文字列変数名ごとに一つの行入力応答が,input
文の入力要求と同じやり方で要求される。
すなわち,1番目の行入力応答の値が文字列変数名並びの1番目の変数に代入される。文字列変
数名並びに更に変数名がある場合には,入力要求(ただし,prompt句が指定されていてもその文字
列式の値ではない。)が再度出力され,2番目の正しい行入力応答が与えられるまで,プログラムの
実行が待たされる。正しい行入力応答が与えられると,その値が文字列変数名並びの2番目の変数
に代入される。この過程が,文字列変数名並びのすべての変数に正しい行入力応答が与えられるま
で続く。
(5.2) 行入力応答中の文字は,前後の空白も含めて一続きの文字列とされ,対応する文字列変数の値にな
る。行入力応答の末尾の行末は,この文字列には含まれない。行入力応答中の引用符は,そのまま
の文字として扱われる。すなわち,連続する二つの引用符は,1文字ではなく,2文字として数える。
(6) 入出力の途中で入出力以外の例外状態が起こったとき,その部分的な入出力動作の効果及びその入出
力装置の状態は,処理系定義とする。
参考 ANSI X3.113にはこの(6)項がないが,TIBによって補った。
10.2.5 例外状態 例外状態は,次による。
(1) 入力要求に対する応答として与えられた行が,構文的に正しい入力応答でない。(8102,続行可能。新
たな入力応答を要求する。)
(2) 数値変数名に対する入力として与えられたデータ要素が,数値定数でない。(8103,続行可能。現在の
入力応答の再送を要求する。)
(3) 入力応答中のデータ要素の個数が不足しており,かつ最後がコンマで終わっていない。(8002,続行可
能。現在の入力応答の再送を要求する。)
(4) 入力応答中のデータ要素の個数が多すぎる。又は,要求されている個数のデータ要素があるにもかか
わらず,入力応答がコンマで終わっている。(8003,続行可能。現在の入力応答の再送を要求する。)
(5) 数値データの評価があふれを起こす。(1007,続行可能。現在の入力応答の再送を要求する。)
(6) 文字列変数に対する,データ要素又は行入力応答の代入が文字列あふれを起こす。(1054,続行可能。
現在の入力応答又は行入力応答の再送を要求する。)
(7) 数値時間式として使用された数値式の値がゼロより小さい。(8402,続行不能。)
(8) 入力修飾中のtimeout句で指定された秒数以内に,正しい入力応答又は行入力応答がなかった。(8401,
続行不能。)
10.2.6 注意 注意は,次による。
(1) この規格は,対話方式の利用者が入力応答を誤ったときに,それを再送できる機能を処理系に対して
要求する。一括方式では,これを続行不能の例外状態としてもよい。この規格は,誤った入力応答を
修正する機能を処理系に対して要求しないが,処理系は,そのような機能を用意してもよい。
(2) rompt句が指定されない場合の入力要求は,疑問符に1文字の空白を付けた2文字とすることを推奨

――――― [JIS X 3003 pdf 69] ―――――

66
X 3003-1993
する。
(3) 処理系は,入力応答又は行入力応答を出力(すなわちエコー表示)しなくてもよい。
(4) 処理系は,下位けたあふれを例外状態(1507,続行可能。ゼロで置き換えて処理を続行する。)として
もよい。この場合,下位けたあふれを例外処理区で処理することができる(12.1参照)。
(5) 入力データが単純文字列である場合には,その前後の空白列は無視される(4.1参照)。引用文字列で
ある場合には,引用符でくくられた内部の空白は,すべて意味をもつ(6.1参照)。
(6) 入力応答の単純文字列は,構文規則10.1.2(9)に規定してある。処理系は,入力応答の単純文字列用の
文字の組を拡張して,10.2.5(1)に規定する例外状態8102を起こさずに利用できることにしてもよい。
参考 ANSI X3.113にはこの(6)項がないが,TIBによって補った。

10.3 出力

10.3.1 概要 print文 (print-statement) は,一定の書式で作表出力を行う。margin句のあるset文
(set-statement) は,出力行 (output line) の幅を指定する。zonewidth句のあるset文は,印字行 (print line) 中
の印字欄 (print zone) の幅を指定する。ask文 (ask-statement) によって,出力行の幅又は印字欄の幅の現
在の値を問い合わせる。
機能を拡充したprint文は,10.4,10.5及び11.3で規定する。
10.3.2 構文 構文は,次による。
(1) rint文⊃PRINT 印字項目並び
(2) 印字項目並び={印字項目? 印字区切り}* 印字項目?
(3) 印字項目=式|位置指定
(4) 位置指定=TAB 左括弧 指標 右括弧
(5) 印字区切り=コンマ|セミコロン
(6) et文=SET 設定対象
(7) 設定対象⊃ [{MARGIN|ZONEWIDTH}] 指標
(8) sk文⊃ASK 出力質問項目並び
(9) 出力質問項目並び=出力質問項目{コンマ 出力質問項目}*
(10) 出力質問項目= [{MARGIN|ZONEWIDTH}] 数値変数名
(11) 一つの出力質問項目は,一つのask文の中では,たかだか1回だけ書くことができる。
10.3.3 例 構文の例を次に示す。
PRINT X (1)
PRINT X, Y (1)
PRINT X, Y, Z, (1)
PRINT ,,,X (1)
PRINT (1)
PRINT ”X EQUALS”, 10 (1)
PRINT X;(Y+Z)/2 (1)
PRINT TAB(10);A$;”IS DONE.” (1)
SET MARGIN 120 (6)
SET ZONEWIDTH 20 (6)
10.3.4 意味 意味は,次による。
(1) rint文 print文は,文字の列と行末を生成して,外部の装置に送り出す。この文字の列は,印字項

――――― [JIS X 3003 pdf 70] ―――――

次のページ PDF 71

JIS X 3003:1993の引用国際規格 ISO 一覧

  • ISO/IEC 10279:1991(IDT)

JIS X 3003:1993の国際規格 ICS 分類一覧

JIS X 3003:1993の関連規格と引用規格一覧