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

                                                                                             97
X 3003-1993
(3.1) at-print文 (array-print-statement) によるデータ転送は,10.5による。ただし,生成される一連の文
字の列が現在行ではなく表示形式ファイルの1記録を構成し,そこで行末ではなく記録末が生成さ
れる。
(3.2) at-print文では,10.5の規定どおり,部分記録が,印字配列名並びを指定したときは生成されず,
末尾にセミコロンのある書式印字配列名並びを指定したときは生成される。mat-print文は常に新た
な行を開始するので,部分記録を完成するために用いることはできない。実効行幅の制御は,(2)及
び(4)による。
(4) 行幅の設定
(4.1) 行幅 (margin) は,開いている表示形式ファイルの一つごとに定められ,一つの記録が含むことので
きる文字の最大個数とする。行幅は,print文及びmat-print文において,記録末を生成する位置を
定める。ファイルを開いた時点では,実効行幅は,recsize句に書いたlength句の指標の値,又はlength
句を省略したときは処理系定義の値とする。この処理系定義の値は,印字欄幅の省略時想定値以上
とする。
(4.2) argin句のあるset文は,活性状態にある経路の行幅を,指定した指標の値に変更する。margin句
の影響を受けるファイル中に部分記録が存在する場合には,次にその部分記録にデータを追加する
時に新しい行幅が採用される。行幅としてMAXNUMを設定すると,記録は任意の長さにできる。
ファイルを閉じると,margin句の効果はなくなる。
(4.3) 可能な行幅の最大値は,処理系定義とする。
(5) 印字欄幅の設定
(5.1) 印字欄幅 (zone width) は,開いている表示形式ファイルの一つごとに定められ,print操作の効果を
10.3で規定したとおりに制御する。ファイルを開いた時点では,印字欄幅は処理系定義の省略時想
定値に設定される。その値は,d+e+6以上とする[10.3.4(3)参照]。
(5.2) onewidth句のあるset文は,活性状態にある経路の印字欄幅を,指定した指標の値に変更する。右
端以外の印字欄の幅は,すべて同じとする。端数があるとき,右端の印字欄が短くなる。zonewidth
句の影響を受けるファイル中に部分記録が存在する場合には,次にその部分記録にデータを追加す
る時に新しい印字欄幅が採用される。set文のzonewidth句の指標の値は,1以上でなければならな
い。ファイルを閉じると,zonewidth句の効果はなくなる。
(5.3) 可能な印字欄幅の最大値は,処理系定義とする。
(6) 表示形式記録とprint操作 表示形式記録は,文字の列とし,10.に規定したとおりprint操作によっ
て生成される。数値の精度は,処理系定義の有効数字部の幅又は書式項目(10.4.2参照)の長さ,及
び有効なarithmetic選択子によってだけ制限を受ける。
(7) ゼロ番の経路とprint操作 ゼロ番の経路に対するprint操作は,記録設定及び消去の能力をもたない
装置の定義に従って処理される。出力データの出力先は,経路指定を省略した場合と同じとする。例
外状態に対して,10.と11.とで異なった回復手続きが規定されている場合には,10.の手続きを適用す
る。margin句又はzonewidth句のあるset文にゼロ番の経路を指定したときの効果は,経路指定を省
略したときと同じとする。
(8) rite操作 write文 (write-statement) 及びmat-write文 (array-write-statement) は,どの記録形式の記
録をも生成する。式の値は,その順序に従って,値,欄又は文字の列に配置され,ファイルに書き出
される。部分記録が生成されることはない。
(9) ファイル編成とwrite操作

――――― [JIS X 3003 pdf 101] ―――――

98
X 3003-1993
(9.1) 流れ編成 (stream) ファイルに対しては,一つの文で複数個のファイル要素を生成できる。具体的に
は,一つの式又は一つの配列要素を評価するたびに一つのファイル要素が生成される。内部的な評
価の間に例外状態になると,既に生成されている値はファイル中に残り,ファイル指示子はファイ
ルの終りを指し,残りの値は無視される。
(9.2) 流れ編成でなく,表示形式でないファイルに対しては,式又は配列によって生成された一つ以上の
値又は欄が一つの記録を形成する。したがって,文の実行の完了前に例外状態になると,記録はフ
ァイルに書き出されず,ファイル指示子は段階2で設定された位置にとどまる。
(9.3) 索引編成 (keyed) の記録は,キーによって識別されるので,新しい記録の生成時に,明示的にキー
を指定する必要がある。すなわち,索引編成ファイルに書出しを実行するときには,記録設定に等
値探索 (exact-search) を指定しなければならない。データ存在状態が偽ならば,等値探索の文字列
式に等しい値のキーの位置に新しい記録が挿入される。
(10) 表示形式記録とwrite操作
(10.1) 表示形式 (display) 記録に対してwrite操作を実行すると,同じ式並び又は配列名並びでprint操作
を実行したときと全く同じ記録の列及び文字の列を生成する。ただし,write操作は記録向きである
ので,行向きであるprint操作のすべての機能を含んでいるわけではない。
(10.2) 表示形式ファイルに対しては,行幅を越える出力の場合に,一つの文が複数個のファイル要素を生
成することがある。一つのファイル要素の生成途中で続行不能な例外状態になると,その文によっ
て既に生成されているファイル要素はファイル中に残り,ファイル指示子はファイルの終りを指し,
残りの式は無視される。
(11) 内部形式記録とwrite操作
(11.1) 内部形式 (internal) 記録及び流れ編成ファイルは,値の列とする。この値には,数値型と文字列型
の2種類の型がある。
(11.2) 値の列とそれらの型は,値を生成するときの式又は配列要素によって定められる。ファイルに記録
された値を後で読み込むことは,その値を生成した式又は配列要素をlet文によってその入力変数
に代入するのと同じ効果をもつ。文字列値の長さと内容は,保持される。数値は,有効なarithmetic
選択子で指定された精度の通常の制限に従って保持される。
(12) 固有形式記録とwrite操作
(12.1) 枠 (template) は,記録中の欄 (field) の位置,幅及び型を記述する。固有形式 (native) ファイルに
書き出すときには,必ず枠を使用しなければならない。枠は,他の記録形式に使用してはならない。
一つのデータ生成文は,文中の枠引用 (template-identifier) によって一つの枠を引用する。
(12.2) 枠引用は,template文 (template-statement) 又は文字列式を指定する。文字列式の場合,その値は,
構文的に正しい枠要素並びでなければならない。write文及びmat-write文においては,枠引用の文
字列式を評価してから出力される式並び又は配列名並びを評価する。同じtemplate文を二つ以上の
文で引用してもよい。
(12.3) 固有形式記録にデータを生成するときには,式並び中の一つの式ごとに,枠中の一つの欄指定子
(field-specifier) が関連付けられる。次いでその欄指定子を用いて,その式の値が記録中の一つの欄
に変換される。この関連付けは,式並び中の一つの式に枠要素並び中の次に使用可能な一つの欄指
定子を用いて,左から右に順番に行われる。
(12.4) 式の型(数値又は文字列)が欄指定子の型と一致しない場合は,例外状態になる。式の個数は,欄
指定子の個数より多くてはならない。最後の式の後の余分な欄指定子は,無視される。欄の内容は,

――――― [JIS X 3003 pdf 102] ―――――

                                                                                             99
X 3003-1993
式の値と欄指定子の幅の指定によって定められる。
(12.5) 文字列値の場合に,文字列欄幅 (string-field-size) とは,その欄の文字数とする。文字列値は,その
欄の中で左寄せされる。文字列長が欄幅より長い場合は,例外状態になる。短い場合は,欄の右側
に空白が埋められる。
(12.6) 数値欄は,数値として符号と絶対値の両方を保持する。符号は常に欄中に保持されるが,数値欄幅
(numeric-field-size) は,数値の絶対値の幅だけを明示的に指定する。数値欄幅Eに対しては,有効
なarithmetic選択子に関する処理系定義のけた数の有効数字が保持される。小数点指定
(fixed-point-size) に対しては,整数幅 (integer-size) が小数点以上のけた数を定め,小数幅
(fraction-size) が小数点以下のけた数を定める。整数幅又は小数幅を省略すると,それぞれゼロとみ
なされる。数値は,これらの幅に従って記録される。欄で使用可能なけた位置の右端を越えて有効
数字がある場合には,その値は丸められて記録される。欄は,この結果,値ゼロをもつこともあり
うる。欄で使用可能なけた位置の左端を越えて有効数字がある場合には,例外状態になる。
(12.7) 枠中の欄数固定 (fixed-field-count) は,単独又は一連の欄指定子の飛越し又は反復を示す。欄数固定
の符号なし整数は反復の回数を示し,skip指定は飛越しする欄を生成することを示す。欄数は,そ
の枠要素中の対象(欄指定子又は括弧でくくられた枠要素並び)に適用する。
欄数に符号なし整数を書くと,その欄数によって制御される対象をその回数だけ明示的に書いた
のと同じ効果をもつ。
欄数にskip指定を書くと,それによって制御される欄指定子が,式並び又は配列名並びの値と関
連付けられないことを示す。記録を生成するとき,記録中のその欄は,その欄指定子の通常の幅と
型に従って,数値ならゼロの値,文字列なら空白の値になる。ある欄指定子が(入れ子になった)
複数個のskip指定によって制御されているときは,その効果は一つのときと同じとする。
例 次の式並び及び枠要素並びを考える。
(a) ,B,C及びNUMERIC*4,NUMERIC*5,NUMERIC*6
(b) ,E及びNUMERIC*4,SKIP NUMEIRIC*5,NUMERIC*6
このとき,AとD,CとEは,それぞれ同じ欄位置を占める。2番目の記録の2番目の欄は,1
番目の記録のBによって占められた欄と幅が同じで,値はゼロである。
(12.8) (12.7)の規定によって等価となる枠要素並びの対を例示する。
例1.
(a) TRING*4, STRING*4, STRING*4
(b) 3 OF STRING*4
例2.
(a) TRING*5, STRING*4, NUMERIC*2, NUMERIC*2, NUMERIC*2, STRING*4,
NUMERIC*2, NUMERIC*2, NUMERIC*2
(b) TRING*5, 2 OF (STRING*4, 3 OF NUMERIC*2)
例3.
(a) KIP NUMERIC*3, SKIP NUMERIC*3, NUMERIC*4, SKIP STRING*5,
SKIP STRING*6
(b) KIP 2 OF NUMERIC*3, NUMERIC*4, SKIP (STRING*5,
SKIP STRING*6)
ここで,例3の(b)のSTRING * 6の直前のskip指定は,冗長である。

――――― [JIS X 3003 pdf 103] ―――――

100
X 3003-1993
(12.9) 欄数不定 (variable-field-count) は,配列に関連してだけ用いることができる[(13)参照]。
(12.10) プログラムの実行がtemplate文の行に到達すると,何もしないで次の行に進む。
(13) at-write文
(13.1) 内部形式記録及び固有形式記録に対するmat-write文 (array-write-statement) の効果は,その配列の
配列要素を行方向の順番(最後の添字が最も早く変わる順番)で明示的に指定したwrite文と同じ
とする。
例 DIM A(3),B(2, 2)とOPTION BASE 1が有効である場合には,次の二つの文は等価である。
(a) AT WRITE #3:A, B
(b) RITE #3:A(1),A(2),A(3),B(1,1),B(1,2),B(2,1),B(2,2)
(13.2) 固有形式記録の書出しには,配列名並び中の配列は欄数不定を用いることができる。欄数固定の場
合には,write文と同様に,欄指定子の個数及び型がその配列要素のものと一致しなければならない。
一方,ある配列の最初の要素に欄指定子を関連付ける時に,前の枠要素がちょうど完了したところ
であって(又は,この配列が並び中の最初のものであって),かつ次の枠要素が欄数不定であれば,
その欄指定子がその配列のすべての要素に使用される。その配列が評価された後,次の配列があれ
ば,それは次の枠要素を使用する。これは,欄数不定であってもなくてもよい。一つの配列の出力
に,欄数不定と欄数固定を併用してはならない。どちらか一方だけを指定する。
(14) 一般に,入出力の途中で入出力以外の例外状態が起こったとき,その部分的な入出力動作の効果及び
その入出力装置の状態は,処理系定義とする。この規定は,10.及び11.の入出力全般に適用する。
参考 ANSI X3.113にはこの(14)項がないが,TIBによって補った。
11.3.5 例外状態 set文に関する例外状態は,(1)(5)による。データ生成文に関する(6)(20)の例外状態
は,それが検出される処理段階に従って分類する。段階1の例外状態では,ファイル及びファイル指示子
は変更されない。段階2の例外状態では,ファイルは変更されない。段階3の例外状態では,その時点で
幾つかのファイル要素が生成されていることがありうる。
(1) et文のmargin句の指標の値が,そのファイルの現在の印字欄幅の値より小さい。(4006,続行不能。)
(2) et文のzonewidth句の指標の値が,1より小さい又はそのファイルの現在の行幅の値より大きい。
(4007,続行不能。)
(3) argin句又はzonewidth句のあるset文が,不活性状態にある経路を指定している。(7004,続行不能。)
(4) argin句又はzonewidth句のあるset文が,表示形式として開いたのでないファイルを指定している。
(7312,続行不能。)
(5) argin句又はzonewidth句のあるset文が,入力専用として開いたファイルを指定している。(7313,
続行不能。)
段階1の例外状態
(6) データ生成文が,不活性状態にある経路を参照している。(7004,続行不能。)
(7) rint文又はmat-print文が,内部形式又は固有形式として開いたファイルを参照している。(7317,
続行不能。)
(8) 記録設定を正しく処理できない。(11.2.5に規定する例外状態7002及び72027207による。)
(9) データ生成文が,入力専用として開いたファイルを参照している。(7302,続行不能。)
(10) rite文又はmat-write文が索引編成ファイルを参照しているが,記録設定の中に等値探索を指定して
いない。(7314,続行不能。)
(11) 枠引用の文字列式が構文的に正しい枠要素並びでない。(8251,続行不能。)

――――― [JIS X 3003 pdf 104] ―――――

                                                                                            101
X 3003-1993
(12) 枠引用を,表示形式又は内部形式として開いたファイルに対して使用する。(7315,続行不能。)
(13) 枠引用を指定してないwrite文又はmat-write文が,固有形式として開いたファイルを参照している。
(7316,続行不能。)
段階2の例外状態
(14) データ生成文に対して,データ存在状態が真であって,かつif-there句の指定がない。(7308,続行不
能。)
段階3の例外状態
(15) 表示形式でなく,recsize句で指定した値より長い記録を生成しようとする。(8301,続行不能。)
(16) 式又は配列要素の型が,関連する欄指定子の型(数値又は文字列)と一致しない。(8252,続行不能。)
(17) 欄数不定を指定した枠要素が配列の最初の要素に対応しない。(8253,続行不能。)
(18) 式及び配列要素に対して十分な個数の欄指定子が枠中にない。(8254,続行不能。)
(19) 数値が,枠中の欄で使用可能なけた位置の左端を越えて有効数字をもつ。(8255,続行不能。)
(20) 文字列値が,枠中の欄の幅より長い。(8256,続行不能。)
11.3.6 注意 注意は,次による。
(1) 処理系は,枠要素並びに対して,例えば,新しくデータの型を追加するような構文上の拡張をしても
よい。そのとき,構文的に正しくないことを示す例外状態は,拡張した枠要素並びの定義に従う。
(2) 欄数不定の指定は,プログラム中で大きさの変わりうる配列を書くときに特に有効である。欄数固定
を指定するには,事前に正確な大きさを知らなければならない。

11.4 ファイルからのデータ入力

11.4.1 概要 プログラムは,ファイル用のデータ入力文 (data retrieval statement) を用いて装置又は以前に
データ生成したファイルからデータを入力する。この機能は,10.の入力機能をファイル向きに拡充したも
のとする。更に,さまざまな記録形式向きの入力を行う新しい機能も定める。
11.4.2 構文 構文は,次による。ここで,(1)(10)は中核の生成規則,(11)は拡充ファイルの生成規則,
(12)(15)は両方の機能単位に適用する構文,“固”は固有形式拡充ファイルの生成規則とする。
中核の生成規則
(1) nput文⊃INPUT 経路式 入力制御 コロン 変数名並び{コンマ SKIP REST}?
(2) at-input文⊃MAT INPUT 経路式 入力制御 コロン{再定義配列並び|不定長ベクトル}
(3) ine-input文⊃LINE INPUT 経路式 入力制御 コロン 文字列変数名並び
(4) at-line-input文⊃MAT LINE INPUT 経路式 入力制御 コロン 再定義文字列配列並び
(5) 入力制御={コンマ 入力制御項目}*
(6) 入力制御項目=中核記録設定|if-missing句|prompt句|timeout句|elapsed句
(7) ead文⊃READ 経路式 読込み制御 コロン 変数名並び{コンマ SKIP REST}?
(8) at-read文⊃MAT READ 経路式 読込み制御 コロン 再定義配列並び
(9) 読込み制御={コンマ 読込み制御項目}*
(10) 読込み制御項目⊃記録設定|if-missing句
拡充ファイルの生成規則
固(11) 読込み制御項目⊃枠引用
(12) 枠引用の行番号は,同じプログラム単位中のtemplate文を参照するものでなければならない。
(13) 一つの入力制御項目は,一つの入力制御中では,たかだか1回だけ書くことができる。
(14) 一つの読込み制御項目は,一つの読込み制御中では,たかだか1回だけ書くことができる。

――――― [JIS X 3003 pdf 105] ―――――

次のページ PDF 106

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

  • ISO/IEC 10279:1991(IDT)

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

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