この規格ページの目次
72
X 3003-1993
(4.4) 3番目に,符号,ドル記号及び空白からなる先行文字列が表10.1のとおり生成される。
表10.1 浮動文字列の効果
書式項目中の浮動文字列(先頭の文字は,複数個あってもよい。)
に対応して生成される長さ02の先行文字列を示す。
指定した浮動文字列 生成される先行文字列
先頭 末尾 非負値 負値
− $ “$” “−$”
$ − “$” “$−”
− なし “” “−”
+ $ “+$” “−$”
$ + “$+” “$−”
+ なし “+” “−”
$ なし “$” “$−”
なし なし “” 例外状態
参考 ANSI X3.113では,例外状態のところが“−”となっている
が,誤りであるので,TIBによって訂正した。
(4.5) 最後に,数値の表現の長さが書式項目の長さと等しくなるように,左側に空白が補われる。これは,
出力欄の中で数値表現を右寄せする効果をもつ。
(5) 書式付き文字列出力 文字列値は,どの種類の書式項目を用いて出力することもできる。文字列は,
その長さが書式項目の長さと等しくなるように,空白を補われる。これらの空白は,書式項目が大号
で始まる場合は(右寄せのために)左側に付加され,小号で始まる場合は(左寄せのために)右側に
付加され,それ以外の場合は(中央に置くために)左右に同じだけ付加される。最後の場合に,必要
な空白の個数が奇数ならば,余分の空白は右側に付加される。
(6) 書式付き出力の終了
(6.1) 出力する値の個数が書式文字列の中の書式項目の個数より多ければ,書式文字列の末端に到達する
たびに,行末が生成され,残りの式に対してその書式文字列が再び用いられる。
(6.2) すべての値が出力された後,次の即値文字列があればそれが出力される。その即値文字列の文字の
出力は,書式文字列中に書式項目が残っていれば,用いられなかった最初の書式項目の直前で終了
する。
(6.3) 書式印字式並びがセミコロンで終わっていない場合には,すべての文字の生成が終わった後で最後
に行末が生成される。書式印字式並びがセミコロンで終わっている場合には,そのような行末は生
成されない。
(7) 行幅の効果 現在の行幅は,出力に影響を及ぼさない。特に,書式付き出力においては,行幅を越え
たからといって行末が生成されることはない。
(8) mage行 プログラムの実行がimage行に到達すると,何もしないで次の行に進む。
(9) 入出力の途中で入出力以外の例外状態が起こったとき,その部分的な入出力動作の効果及びその入出
力装置の状態は,処理系定義とする。
参考 ANSI X3.113にはこの(9)項がないが,TIBによって補った。
10.4.5 例外状態 例外状態は,次による。
(1) 書式付き印字指定の中で正しくない書式文字列が指定されている。(8201,続行不能。)
(2) 書式付き印字指定が書式印字式並びを含んでいるのに,書式文字列の中に書式項目がない。(8202,続
行不能。)
――――― [JIS X 3003 pdf 76] ―――――
73
X 3003-1993
(3) 文字列式又は数値式によって生成された出力文字列が,それに対応する書式項目より長い。(8203,続
行可能。その出力欄を星印で埋め,次の行に書式なし出力の表現で値を報告し,その次の行の,例外
状態にならなかったときに続行するのと同じ文字位置から印字を続行する。)
(4) 数値出力の指数部が,書式文字列中の山記号で確保した幅を越える。(8204,続行可能。その出力欄を
星印で埋め,次の行に書式なし出力の表現で値を報告し,その次の行の,例外状態にならなかったと
きに続行するのと同じ文字位置から印字を続行する。)
参考 ANSI X3.113の文章は不十分であるので,TIBによって訂正した。
10.4.6 注意 注意は,次による。
(1) 処理系は書式文字列を実行時に評価してもよいので,その中の誤りは,(たとえそれがimage行の中
にあり,実行前に判明していても,)例外状態として扱ってもよい。
(2) 小数点なし指数部あり形式又は小数点あり指数部あり形式で数値を印字するときに,処理系は英小文
字eを使用することにしてもよい。
参考 ANSI X3.113では,“小数点あり”のほうだけを記述してあるが,誤りであるので,TIBによっ
て訂正した。
(3) 浮動文字列を指定した書式項目においては,整数書式項目又は小数書式項目を用いて生成される数値
の整数部は,書式項目中の数字位置の個数より多くの数字を含むことができる。
(4) 負の数値には,常に負号が付く。すべての数字位置は,数字又は先行の空白列,ゼロ列若しくは星印
列で埋められるので,負の数値に対応する書式項目は,負号の分の場所を浮動文字列で確保しておか
なければならない。特に,浮動文字列を含まない書式項目又は浮動文字列が1文字のドル記号だけか
らなる書式項目の出力欄に負の数値を出力しようとすると,例外状態8203になる。
(5) 即値文字列及び即値文字は,構文規則10.4.2(7)及び(8)に規定してある。処理系は,即値文字列用の文
字の組を拡張して,10.4.5(1)に規定する例外状態8102を起こさずに利用できることにしてもよい。
参考 ANSI X3.113にはこの(5)項がないが,TIBによって補った。
10.5 配列入出力
10.5.1 概要 配列全体に入力又は配列全体を出力する文を定める。これらの文は,単一の値を扱う入出力
文の機能を拡充したものである(10.110.4参照)。
10.5.2 構文 構文は,次による。
(1) at-read文⊃MAT READ{if-missing句 コロン}? 再定義配列並び
(2) 再定義配列並び=再定義配列{コンマ 再定義配列}*
(3) 再定義配列=配列名 再定義上下限指定部?
(4) at-input文⊃MAT INPUT 入力修飾?{再定義配列並び|不定長ベクトル}
(5) 不定長ベクトル=配列名 左括弧 疑問符 右括弧
(6) at-line-input文⊃MAT LINE INPUT 入力修飾? 再定義文字列配列並び
(7) 再定義文字列配列並び=再定義文字列配列{コンマ 再定義文字列配列}*
(8) 再定義文字列配列=文字列配列名 再定義上下限指定部?
(9) at-print文⊃MAT PRINT{印字配列名並び|USING 書式引用 コロン 書式印字配列名並び}
(10) 印字配列名並び=配列名{印字区切り 配列名}* 印字区切り?
(11) 書式印字配列名並び=配列名{コンマ 配列名}* セミコロン?
(12) 再定義配列におけるその配列と再定義上下限指定部とは,同じ次元数でなければならない。
(13) 不定長ベクトルの配列は,1次元でなければならない。
――――― [JIS X 3003 pdf 77] ―――――
74
X 3003-1993
10.5.3 例 構文の例を次に示す。
MAT READ A (1)
MAT READ A(M,N), B (1)
MAT INPUT A$(3,4) (4)
MAT INPUT X(・) (4)
MAT INPUT PROMPT ”Enter data:”:X(・) (4)
MAT LINE INPUT A$ (8)
MAT PRINT A;B, C; (9)
10.5.4 意味 意味は,次による。
(1) at-read文
(1.1) at-read文 (array-read-statement) を実行すると,その文を含むプログラム単位のdata文によって生
成されたデータ列 (data sequence) にある値が,順番に再定義配列並び中の配列に代入される。
(1.2) 各配列のすべての要素が,行方向の順番(最後の添字が最も早く変わる順番)で,データ列の中の
データ要素にある値を代入される。代入される値は,データ列の指示子 (pointer) によって指示され
るデータ要素から順番に得られる。指示子は,それらのデータ要素の次を指す。
(1.3) データ列にある各データ要素の型は,それが代入される配列要素の型に一致していなければならな
い(10.1参照)。
(1.4) 再定義上下限指定部 (redim) を書くと,値がその再定義配列に代入される前に動的に上下限の再定
義 (redimensioning) が行われる。上下限の再定義は,配列宣言での上下限の規則に従って行われる。
再定義上下限指定の指標の値が,配列の新しい上下限になる。配列の上下限の再定義を行っている
時に例外状態になると,もとの上下限が残る。
(1.5) 再定義配列 (redim-array) 中の再定義上下限指定部は,再定義配列並び中の先行する(すなわち左側
の)配列が値を代入されてから,評価される。
(1.6) データ要素の個数が不足している場合の扱いは,if-missing句のあるときもないときも,10.1による。
(1.7) 数値データを評価した結果が下位けたあふれになると,その値は,ゼロで置き換えられる。
(2) at-input文
(2.1) at-input文 (array-imput-statement) を実行すると,プログラムの実行は,(2)及び(3)に定める正しい
入力応答 (input-reply) がなされるまで待たされる。mat-input文は,入力応答にある値を順番に,
再定義配列並びにある配列に代入する。値は,各配列のすべての要素に対して行方向に代入される。
(2.2) 対話方式の場合,プログラムの利用者は,データを入力する必要のあることを,入力要求
(input-prompt) によって知らされる。この入力要求は,input文の入力要求と同じものとする。
(2.3) 入力修飾の効果は,10.2による。
(2.4) 入力応答にあるそれぞれのデータ要素の型は,代入される配列要素の型に一致していなければなら
ない。
(2.5) 再定義上下限指定部を書くと,mat-read文に対して(1.4)で規定したとおり,値がその再定義配列に
代入される前に動的に上下限の再定義が行われる。
(2.6) 再定義配列中の再定義上下限指定部は,再定義配列並び中の先行する(すなわち左側の)配列が値
を代入されてから,評価される。
(2.7) 入力データが代入されてから配列の上下限が再定義され,続いて入力に関する例外状態の回復手続
きによってその配列に入力データを再入力することになったときの効果は,処理系定義とする。
――――― [JIS X 3003 pdf 78] ―――――
75
X 3003-1993
(2.8) 配列入力の要求に対する応答において,データを単一の入力応答で供給する必要はない。配列並び
に対するデータ要素の個数が不足し,かつ入力応答の末尾がコンマであれば,入力要求が再び表示
され,更にデータ要素を供給するように入力応答が要求される。
(2.9) 数値データを評価した結果が下位けたあふれになると,その値は,ゼロで置き換えられる。
(3) 不定長ベクトルの入力
(3.1) at-input文に不定長ベクトル (variable-length-vector) があれば,全入力応答(すなわち,コンマで
終わらない入力応答までの入力応答の列)中にあるだけの個数のデータ要素が入力として,そのベ
クトルに供給される。データの代入は,そのベクトルの現在の下限値のところがら始まる。代入後
にベクトルは,最後のデータ要素を受け取った要素のもつ添字に等しい添字を上限値として設定し
て,動的に再定義される。不定長ベクトルに代入されるデータ値の個数は,配列宣言の中で指定さ
れたときのそのベクトルに対するもとの寸法を超えてはならない。
(3.2) 入力応答にある各データ要素の型は,配列の型に一致していなければならない。
(4) at-line-input文
(4.1) at-line-input文 (array-line-input-statement) を実行すると,文字列配列並び中の文字列配列の一つの
要素ごとに一つの行入力応答が,入力応答の要求と同じ方法で要求される。幾つかの行入力応答の
全体の内容(それらの行末は除く。)が,文字列配列並び中の文字列配列の要素に対して,行方向に
代入される。要求される行入力応答の個数は,値を要求する要素の個数に等しい。
(4.2) 対話方式の場合,プログラムの利用者は,データを入力する必要のあることを,入力要求によって
知らされる。
(4.3) 入力修飾の効果は,10.2による。
(4.4) 再定義上下限指定部を書くと,mat-read文に対して(1.4)で規定したとおり,値がその再定義配列に
代入される前に動的に上下限の再定義が行われる。
(4.5) 再定義配列中の再定義上下限指定部は,再定義配列並び中の先行する(すなわち左側の)配列が値
を代入されてから,評価される。
(5) at-print文
(5.1) at-print文 (array-primt-statement) を実行すると,配列印字並び中にあるすべての配列の全要素の
値が印字される。
(5.2) 現在の出力行が空でないときにmat-print文を実行すると,まず始めに行末が生成される。
(5.3) 印字配列名並びのあるmat-print文において,一つの2次元配列の印字によって生成され外部の装
置に転送される文字の列は,次による。すなわち,その配列の要素が行方向の順番に,一つのprint
文の印字項目並びになっているとする(行別の昇順)。そして,各要素は,もとのmat-print文のそ
の配列名に続く印字区切りによって(又は印字区切りがないときにはコンマによって)区切られて
並んでいるとする。そのように想定して文字の列が生成される。ただし,配列の一つの行が印字さ
れる都度,行末(そのような行末がまだ生成されていないならば)が生成される。
3次元配列は,一連の2次元配列が,1番目の添字の値ごとに一つずつ並んだものであるかのよう
に印字され,添字の各値の間で追加の行末が生成される。
1次元配列は,行ベクトルとして扱われ,1×n配列であるかのように印字される。
更に,一つの印字配列名並び中の後続する配列との間にも,行末が生成される。
(5.4) 書式印字配列名並びのあるmat-print文において,生成され外部の装置に転送される文字の列は,
次による。すなわち,全配列の全要素が配列ごとに行方向の順番に並んで,一つのprint文の書式
――――― [JIS X 3003 pdf 79] ―――――
76
X 3003-1993
印字式並びになっているとする。更に,mat-print文に指定したのと同じ書式指定が指定されている
とする。そのように想定して文字の列が生成される。追加の行末は,生成されない。
書式指定を用いるprint文の場合と同様に,書式印字配列名並びがセミコロンで終わっていない
場合には,そのmat-print文の他のすべての出力が終わった後で最後に行末が生成される。書式印
字配列名並びがセミコロンで終わっている場合には,そのような行末は生成されない。
(6) 入出力の途中で入出力以外の例外状態が起こったとき,その部分的な入出力動作の効果及びその入出
力装置の状態は,処理系定義とする。
参考 ANSI X3.113にはこの(6)項がないが,TIBによって補った。
10.5.5 例外状態 例外状態は,次による。
(1) at-read文の再定義配列並びの要求するデータ要素の個数が,データ列の残りにあるデータ要素の個
数より多く,かつif-missing句が指定されていない。(8001,続行不能。)
(2) データ列中の数値定数でないデータ要素を数値配列の要素に代入しようとする。(8101,続行不能。)
(3) at-read文の実行中に,データの代入が文字列あふれを起こす。(1053,続行不能。)
(4) データ要素並び中の数値データの評価があふれを起こす。(1006,続行不能。)
(5) 配列入力の要求に対する応答として与えられた行が,構文的に正しい入力応答でない。(8102,続行可
能。新しい入力応答を要求する。)
(6) 数値配列に対する入力として与えられたデータ要素が,数値定数でない。(8103,続行可能。現在の入
力応答の再送を要求する。)
(7) 入力応答中のデータ要素の個数が不足しており,かつ最後がコンマで終わっていない。(8002,続行可
能。現在の入力応答の再送を要求する。)
(8) 入力応答中のデータ要素の個数が多すぎる。又は,要求されている個数のデータ要素があるにもかか
わらず,入力応答がコンマで終わっている。(8003,続行可能。現在の入力応答の再送を要求する。)
(9) 入力応答中の数値データの評価があふれを起こす。(1007,続行可能。現在の入力応答の再送を要求す
る。)
(10) at-input文又はmat-line-input文の実行中,文字列データの代入が文字列あふれを起こす。(1054,
続行可能。現在の入力応答又は行入力応答の再送を要求する。)
(11)上下限の再定義後の配列で必要な要素の総数が,もとの配列宣言で確保された要素数を超える。(5001,
続行不能。)
(12) 再定義上下限指定の1番目の指標の値が,2番目の指標の値より大きい。(6005,続行不能。)
(13)再定義上下限指定に指標が一つだけ書いてあって,その値が有効な暗黙の下限の値未満である。(6005,
続行不能。)
(14) 入力修飾にあるtimeout句によって指定された秒数以内に,正しい入力応答又は行入力応答が与えら
れない。(8401,続行不能。)
(15) 数値時間式として使用された数値式の値がゼロより小さい。(8402,続行不能。)
(16) at-print文の中で正しくない書式文字列が指定されている。(8401,続行不能。)
(17) at-print文が書式印字配列名並びを含んでいるのに,書式文字列の中に書式項目がない。(8402,続
行不能。)
10.5.6 注意 注意は,次による。
(1) 処理系は,入力応答又は行入力応答を出力(すなわちエコー表示)しなくてもよい。
(2) この規格は,誤った入力応答を修正する機能を処理系に対して要求しないが,処理系は,そのような
――――― [JIS X 3003 pdf 80] ―――――
次のページ PDF 81
JIS X 3003:1993の引用国際規格 ISO 一覧
- ISO/IEC 10279:1991(IDT)
JIS X 3003:1993の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語
JIS X 3003:1993の関連規格と引用規格一覧
- 規格番号
- 規格名称
- JISX0201:1997
- 7ビット及び8ビットの情報交換用符号化文字集合
- JISX0301:2002
- 情報交換のためのデータ要素及び交換形式―日付及び時刻の表記