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

102
X 3003-1993
(15) 不定長ベクトルの配列は,1次元でなければならない。
11.4.3 例 構文の例を次に示す。
INPUT #3:A,B,C,A$ (1)
MAT INPUT #W, BEGIN, IF MISSING THEN EXIT DO:A,B$ (2)
LINE INPUT #Q, NEXT:A$, B$, C$ (3)
MAT LINE INPUT #4, IF MISSING THEN 1234:A$, B$(N), C$(8) (4)
READ #3, SAME, WITH 333:W$, SKIP REST (7)
MAT READ #N, RECORD P+2, IF MISSING THEN 111, WITH 222:V, W(Q) (8)
11.4.4 意味 意味は,次による。ここで,(1)は,すべてのデータ入力文に対する一般的な規則を定める。
(2)(13)は,個々の文の構文形式に特有の規則を文の形式ごとに定める。
(1) データ入力処理
(1.1) 最初に,経路式によって,データを入力する経路 (channel) が定められ,意図した操作にファイル
属性が適合するか否かが調べられる。データ入力文においては,入出力方向属性が入力専用又は入
出力両用でなければならない。経路が活性状態にあり,ファイル属性がデータ入力文に適合するな
らば,次の段階に進む。そうでなければ,ファイル指示子及びすべてのプログラム変数は変更され
ず,例外状態になる。
(1.2) 段階2の処理では,記録設定 (record-setter) に基づいて(記録設定がない場合にも),11.2.4(2)の規
定どおりにファイル指示子 (file pointer) の位置付けが行われ,11.2.4(3)の規定どおりにデータ存在
状態 (data-found) が設定される。データ存在状態が偽である場合,if-missing句を指定してあるとき
はデータ存否動作が実行され,指定してないときは例外状態になる。いずれのときにも,指示子の
位置は変更されたままとする。
(1.3) データ存在状態が真である場合には,段階3に進み,指示子によって指されたファイル要素から実
際のデータ入力が行われる。データは,一つ以上のファイル要素から各作用対象(変数又は配列)
に,左から右に順番に転送され,そのファイルの一連のデータ要素,値又は欄が,一連の変数又は
配列に代入される。
このとき,添字,部分文字列指定又は再定義上下限指定部があれば,それらは,先行する(すな
わち左側の)作用対象にデータが代入されてから評価され,続いてそれらを含む作用対象にデータ
が代入される。部分文字列指定のある文字列変数への文字列値の代入は,6.5で規定した文字列代入
の通常の意味に従って行われる。
データ転送中に例外状態になると,正当な代入が行われた変数及び配列要素は新しい値をもつが,
後続のすべての変数及び配列要素はもとの値のままとする。データ入力操作が完了すると,指示子
は,次のファイル要素,すなわちファイルの次の記録,記録領域又は値を指すように進められる。
(1.4) 1回のデータ入力操作は,通常,一つのファイル要素にだけ影響を及ぼす。ただし,次の三つの場
合には,複数個のファイル要素が処理されることがある。
(a) ine-input文及びmat-line-input文
(b) 流れ編成ファイルに対するread操作
(c) 末尾に(データの継続を示す)コンマのある記録をもつ表示形式ファイルに対するinput操作又は
read操作
(1.5) kip-rest指定は,流れ編成以外のファイルに対してだけ指定できる。指定すると,最後のデータ要
素,値又は欄を得た記録の残りの部分は無視される。枠を指定した場合には,残りの欄指定子も無

――――― [JIS X 3003 pdf 106] ―――――

                                                                                            103
X 3003-1993
視される。skip-rest指定があっても,記録中には,並びの中の変数又は配列を満たすのに十分な個
数のデータがなければならない。
(1.6) この段階3の処理の間に,さまざまな例外状態になることがある。各例外状態は,特定のファイル
要素に関連している。どの場合にも,指示子は例外状態に関連したファイル要素の直後の要素を指
すように進められる。これらの例外状態に関連するファイル要素を,表11.7に要約する。
表11.7 例外状態に関連するファイル要素
例外状態 関連するファイル要素
recsize句の指定より長いファイル要素 そのファイル要素
データを得ようとしたファイル要素
不正な再定義上下限指定部,不正な添字,不正な
部分文字列指定,大きすぎる再定義上下限指定
データを得ようとしたファイル要素
不適切な枠。すなわち,型の不一致,配列の最初
の要素以外に対する欄数不定の指定“?”,欄指定
子の個数の不足
そのデータを含むファイル要素
不適切なデータ。すなわち,型の不一致,不正な
構文,あふれ
ファイル要素中のデータの個数の不足 データの個数の不足したファイル要素
ファイル中のデータの個数の不足 ファイルの終り(すなわち,関連するファイル要
素はない。)
ファイル要素中のデータの個数の余分 余分なデータをもつファイル要素
(2) nput文
(2.1) rompt句,timeout句及びelapsed句の効果は,10.2による。これらの入力制御項目は,対話方式
の端末装置にだけ有効とする。その他の装置及び狭義ファイル (true file) に対するこれらの句の効
果は,処理系定義とする。
(2.2) nput文 (input-statement) によるデータ転送は,10.2による。ただし,記録が入力応答のように,記
録末が行末のように取り扱われる。各データ要素(10.1参照)は,変数名並び中の変数に順番に代
入される。input操作は,(read操作と違い,)表示形式として開いたファイルにだけ有効とする。
その他の記録形式の場合には,例外状態になる。
(2.3) nput文は,記録中の空白でない最後の文字がコンマである場合には,複数個の記録を処理すること
ができる。そのような末尾にコンマのある記録に続いて,すべての変数に値が代入される前にファ
イルの終りに達した場合には,残りの変数はもとの値のままで,ファイル指示子はファイルの終り
を指し,例外状態になる。
(2.4) ある装置に対してinput操作を実行して段階3の例外状態になる場合に,処理系は,11.で狭義ファ
イルに対して規定する回復手続きを用いてもよいし,同じ例外状態が10.で規定されていれば,代わ
りにその回復手続きを用いてもよい。これによって,処理系は,対話方式の二つ以上の装置からの
入力において,続行可能な回復手続きを採用することができる。
(3) at-input文
(3.1) at-input文 (array-input-statement) の効果は,その配列の配列要素を行方向の順番(最後の添字が
最も早く変わる順番)で明示的に指定したinput文と同じとする。ただし,追加の機能として,上
下限の再定義をも許す。再定義上下限指定部は,経路式のないmat-input文に対して10.5で規定し
たとおりに,配列の寸法を変える。
例1. DIM A(3)とOPTION BASE1が有効である場合には,次の二つの文は等価である。
(a) AT INPUT #N:A

――――― [JIS X 3003 pdf 107] ―――――

104
X 3003-1993
(b) NPUT #N:A(1), A(2), A(3)
例2. 次の二つの文も等価である。
(a) AT INPUT #N:A$(2,2), C(2)
(b) NPUT #N:A$(1,1), A$(1,2), A$(2,1), A$(2,2), C(1), C(2)
例3. 次の文の場合には,最初のデータ要素が配列Bの実際の寸法を決定するので,そのデータ要素
によって効果が変わる。
MAT INPUT #N:A(1), B(A(1))
それでも,このmat-input文は,配列Bの代わりに必要な個数の配列要素を指定したinput
文と全く同じ効果をもつ。
(3.2) 上下限が再定義される時に,配列のいずれかの次元の寸法が1より小さくなる場合には,その配列
及び後続のすべての配列はもとの値のままで,例外状態になる。
(4) 不定長ベクトル 不定長ベクトル (variable-length-vector) のデータ転送及びそれに伴う配列の上下限
の再定義は,10.5による。
(5) ine-input文 line-input文 (line-imput-statement) の効果は,10.2による。ただし,記録が行入力応答
のように,記録末が行末のように取り扱われる。一連の記録の内容が先行及び後続の空白列をも含め
て,一連の文字列変数の値として代入される。記録は,空文字列であってもよい。その場合にもそれ
は,通常のやり方で代入される。すべての変数に値が代入される前にファイルの終りに達した場合に
は,残りの変数はもとの値のままで,ファイル指示子はファイルの終りを指し,例外状態になる。
(6) at-line-input文 mat-line-input文 (array-line-input-statement) の効果は,mat-input文の場合と同様に,
その配列の配列要素を明示的に指定したline-input文と同じとする[(3)参照]。ここでも,配列の寸法
は,それより前の配列に代入される値によって変わりうる。
例 MAT LINE INPUT #N:A$(1), B$(VAL(A$(1)))
最初の記録が文字列“12”である場合には,後続の12個の記録が配列B$に読み込まれる。
上下限が再定義される時に,配列のいずれかの次元の寸法が1より小さくなる場合には,その配列
及び後続のすべての配列はもとの値のままで,例外状態になる。
(7) ゼロ番の経路とinput操作 ゼロ番の経路からの入力は,狭義ファイルでない装置からの入力の規定
に従う。例外状態に対して,10.と11.とで異なった回復手続きが規定されている場合には,10.の手続
きを適用する。
(8) ead文 read文 (read-statement) 及びmat-read文 (array-read-statement) は,どの記録形式のファイル
からのデータ入力にも用いることができる。一連のデータ要素,値又は欄が並び中の一連の作用対象
(変数又は配列)に代入される。read文は,順編成又は流れ編成のファイルでは複数個のファイル要
素を参照することができるが,相対編成又は索引編成のファイルではただ一つのファイル要素しか参
照できない。
(9) ファイル編成とread操作
(9.1) 流れ編成以外のファイルでは,変数は記録中の一連のデータ要素,値又は欄から値を受け取る。そ
の記録(末尾にコンマのある表示形式記録の場合は複数個の記録)の中には,[(1.5)のskip-rest指
定がある場合を除いて,]変数名並びをちょうど満たすだけの個数のデータがなければならない。
(9.2) 流れ編成ファイルでは,各変数は指示子で指されたファイル要素から始めて,ファイルを構成する
列から直接に値を受け取るので,ファイル要素の境界は意味をもたない。すべての変数に値が代入
される前にファイルの終りに達した場合には,残りの変数はもとの値のままで,ファイル指示子は

――――― [JIS X 3003 pdf 108] ―――――

                                                                                            105
X 3003-1993
ファイルの終りを指し,例外状態になる。
(10) 表示形式記録とデータ入力文
(10.1) 表示形式 (display) ファイル中の記録は,文字の列とする。ファイルからの文字列データの入力は,
10.2による。print操作によって生成された記録から入力したデータは,生成時と同じ値になるとは
限らない。例えば,単純文字列としての入力では,先行及び後続の空白列は保存されない。数値デ
ータの精度は,数値定数を数値変数に代入するときの通常の意味と一貫した扱いとする。すなわち,
有効数字は,arithmetic選択子でNATIVEを指定した場合は少なくとも6けたとし,DECIMALを
指定した場合は少なくとも10けたとする。DECIMALを指定した場合,処理系定義のけた数以下の
有効数字の数値定数は,厳密に正確な値が代入される。
(10.2) 表示形式記録に対してread操作を実行すると,同じ変数名並び又は再定義配列並びでinput操作を
実行したときと全く同じやり方で値を代入する。ただし,read操作は記録向きであり,input操作
のすべての機能を含んでいるわけではない。
(11) 内部形式記録とread操作
(11.1) 内部形式 (internal) 記録及び流れ編成ファイルは,値の列とする。この値には,数値型と文字列型
の2種類の型がある。
内部形式のファイル要素においては,値は必ずそれと同じ型の変数に入力しなければならない。
そうしなければ,例外状態になる。すなわち,内部形式ファイル要素の内容は,それ自身で型をも
っている。
(11.2) 値の列とそれらの型は,ファイル要素を生成又は変更した記録操作によって定められる。値の入力
は,その値を生成した式又は配列要素をlet文によってその入力変数に代入するのと同じ効果をも
つ。文字列値の長さと内容は,保持される。数値は,有効なarithmetic選択子で指定された精度の
通常の制限に従って保持される。
(12) 固有形式記録とread操作
(12.1) 枠 (template) は,記録中の欄 (field) の位置,幅及び型を記述する。固有形式 (native) 記録から読
み込むときには,必ず枠を使用しなければならない。枠は,他の記録形式に使用してはならない。
一つのデータ入力文は,文中の枠引用 (template-identifier) によって一つの枠を引用する。
(12.2) 枠引用は,template文 (template-statement) 又は文字列式を指定する。文字列式の場合,その値は,
構文的に正しい枠要素並びでなければならない。この文字列式を評価してから,入力を開始し,再
定義上下限指定,部分文字列指定及び添字を評価する。同じtemplate文を二つ以上の文で引用して
もよい。
(12.3) 固有形式記録からデータを入力するときには,変数名並び中の一つの変数ごとに,枠中の一つの欄
指定子 (field-specifier) が関連付けられる。次いでその欄指定子を用いて,記録中の一つの欄からデ
ータが入力される。この関連付けは,変数名並び中の一つの変数名に枠要素並び中の次に使用可能
な一つの欄指定子を用いて,左から右に順番に行われる。
(12.4) 変数は,先行する(すなわち左側の)変数に値が代入された後,その変数に対する添字,部分文字
列指定及び再定義上下限指定部が評価されてから,欄指定子に関連付けられる。変数の型(数値又
は文字列)が欄指定子の型と一致しない場合は,例外状態になる。欄指定子の個数は,変数の個数
より少なくてはならない。変数に対して余分な欄指定子は,無視される。記録中の次の欄の内容が
欄指定子によって解釈され,その結果の値が変数に代入される。
(12.5) データを入力するときに,記録中のすべての欄の欄指定子は,生成時の欄指定子と適合していなけ

――――― [JIS X 3003 pdf 109] ―――――

106
X 3003-1993
ればならない。適合していないときの結果は,処理系定義とする。適合している (compatible) とは,
生成時と入力時の欄指定子が双方とも,同じ文字列欄幅をもつ文字列型であるか,同じEの数値欄
幅をもつ数値型であるか又は同じ整数幅と小数幅をもつ数値型であることとする。整数幅又は小数
幅を省略すると,それぞれゼロとみなされる。
(12.6) 欄指定子がその記録に適合すると,欄幅に従って値が入力される。
文字列型の場合,その記録中に生成されたときの内容の値が,文字列欄幅に等しい長さで代入さ
れる。これは,欄の右側に埋められた空白を含む。
数値型の場合,数値欄幅とarithmetic選択子によってだけ制限された精度で値が代入される。
arithmetic選択子でDECIMALを指定したときは,Eの数値欄幅を用いて記録された数値,及び小
数点指定を用いて記録された,処理系定義のけた数以下の有効数字をもつ数値は,厳密に正確な値
が保持される。それ以外のときは,arithmetic選択子の指定に従って数値が丸められ,変数に代入
される。
(12.7) 固有形式記録の欄に対する値の記録と欄数の効果は,11.3.4による。ただし,skip指定が,出力に
おいてはゼロ又は空白の欄を生成するのに対し,入力においては単に欄を読み飛ばすということだ
けが異なる。11.3.4に規定したとおり,そのような欄指定子は,変数に関連付けられない。
(13) at-read文
(13.1) 一般にmat-read文 (array-read-statement) の効果は,その配列の配列要素を明示的に指定したread
文と同じとする。
(13.2) nput操作の場合と同様に,再定義上下限指定が後に評価されることがあるので,固有形式記録の読
込みには,欄数不定 (variable-field-count) を用いることができる。
欄数固定の場合には,read文と同様に,欄指定子の個数及び型がその配列要素のものと一致しな
ければならない。
一方,ある配列の最初の要素に欄指定子を関連付ける時に,前の枠要素がちょうど完了したとこ
ろであって(又は,この配列が並び中の最初のものであって),かつ次の枠要素が欄数不定であれば,
その欄指定子がその配列のすべての要素に使用される。その配列が満たされた後,次の配列があれ
ば,それは次の枠要素を使用する。これは,欄数不定であってもなくてもよい。一つの配列の入力
に,欄数不定と欄数固定を併用してはならない。どちらか一方だけを指定する。
(14) 入出力の途中で入出力以外の例外状態が起こったとき,その部分的な入出力動作の効果及びその入出
力装置の状態は,処理系定義とする。
参考 ANSI X3.113にはこの(14)項がないが,TIBによって補った。
11.4.5 例外状態 データ入力文に関する例外状態は,それが検出される処理段階に従って分類する。段階
1の例外状態では,ファイル指示子及び変数は変更されない。段階2の例外状態では,変数は変更されな
い。段階3の例外状態では,その時点で幾つかの変数がファイルから値を受け取っていることがありうる。
段階1の例外状態
(1) データ入力文が,不活性状態にある経路を参照している。(7004,続行不能。)
(2) nput文,mat-input文,line-input文又はmat-line-input文が,内部形式又は固有形式として開いたフ
ァイルを参照している。(7318,続行不能。)
(3) 記録設定を正しく処理できない。(11.2.5に規定する例外状態7002及び72027207による。)
(4) データ入力文が,出力専用として開いたファイルを参照している。(7303,続行不能。)
(5) 枠引用の文字列式が,構文的に正しい枠要素並びでない。(8251,続行不能。)

――――― [JIS X 3003 pdf 110] ―――――

次のページ PDF 111

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

  • ISO/IEC 10279:1991(IDT)

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

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