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

                                                                                             67
X 3003-1993
目並び (print-list) 中の印字項目 (print-item) と印字区切り (print-separator) を順番に評価して生成さ
れる。
(2) rint文の副作用 印字項目並び中の式である関数を呼び出し,その関数がもとのprint文と同じ装置
に対するprint文を実行するとき,その実行の効果は処理系定義とする。
(3) 数値の印字 印字項目並び中の数値式を評価すると,正又はゼロならば1文字の空白,負ならば1文
字の負号の直後に,その数値の絶対値の10進表現,その直後に1文字の空白をおいた文字の列になる。
数値の10進表現の形式は,数値定数の規定(5.1参照)に従い,次のとおりとする。
(3.1) 処理系は,有効数字部の幅 (significance width) と指数部の整数の幅 (exrad width) を定める。幅d
は,出力する数値の表現のうち,有効数字部 (significand) の10進けた数を制御する。幅eは,指
数部 (exrad) の整数のけた数を制御する。dの値は6以上,eの値は2以上とする (d≧6, e≧2)。
(3.2) けた以下の整数として正確に表現できる数値は,小数点なし指数部なし形式で出力される。
(3.3) 他のすべての数値は,小数点あり指数部なし形式か,小数点あり指数部あり形式で出力される。指
数部あり形式による場合と比べて,精度を落とさずにdけた以下の指数部なし形式で表現できる数
値は,指数部なし形式で出力される。
例えば,d=6のとき,10−6は,.000001と出力され,10−7は,1.E−7と出力される。
(3.4) 小数点あり指数部なし形式による数値は,dけた以内の10進数字と,小数点1文字で出力される。
処理系は,小数部の後続するゼロ列を,省略して出力してもよい。
絶対値が1未満の数値の場合,小数点の左側に数字は生成されない。この形式は,符号,小数点
及び後続の1文字の空白を含めて,最大d+3文字の幅を必要とする。
(3.5) 小数点あり指数部あり形式による数値は,次の形で出力される。
有効数字部 E 符号 符号なし整数
ここで,有効数字部の値xは,1≦x<10の範囲とし,ちょうどdけたの精度で表現される。指数
部の符号なし整数は,1eけたとする。処理系は,有効数字部中の小数部の後続するゼロ列及び指
数部の先行するゼロ列を,省略して出力してもよい。小数点は,有効数字部の一部分として必ず生
成される。この形式は,二つの符号,小数点,英字E及び後続する1文字の空白を含めて,最大d
+e+5文字の幅を必要とする。
(4) 文字列の印字 文字列式を評価すると,対応する文字の列になる。
(5) 印字区切りと位置指定
(5.1) 印字区切りセミコロンを評価すると,空文字列すなわち長さ0文字の文字の列になる。
(5.2) 位置指定TAB及び印字区切りコンマの評価の結果は,現在又は先行のprint文によって生成された
文字の列に依存する。現在行 (current line) とは,実行の開始以後又は最後に生成された行末以後に
生成された文字の列(空でありうる。)とする。
(5.3) 現在行の印字位置 (columnar position) とは,その行へ次に生成される文字が位置付けられる文字位
置とする。印字位置は,左から右に,1から順に番号付けられる。表4.1(標準文字集合,163ペー
ジ)の位置2/0から7/14までにある文字が1文字生成されるたびに,印字位置の番号は1増える。
行末を生成すると,印字位置は1に戻る。印字位置に対するその他の文字の効果は,処理系定義と
する。
(5.4) 行幅 (margin) とは,印字可能な最大の印字位置とする。margin句のあるset文を実行するまでの行
幅は,処理系定義とする。処理系定義のこの行幅は,省略時想定の印字欄幅 (zone width) 以上でな
ければならない。行幅としてMAXNUMを指定すると,印字位置は,任意に大きくてもよい。

――――― [JIS X 3003 pdf 71] ―――――

68
X 3003-1993
(5.5) 印字の行は,一定の個数の印字欄 (print zone) に分割される。zonewidth句のあるset文を実行する
までの印字欄の幅と個数は,処理系定義とする。右端以外の印字欄の幅は,すべて同じとする。端
数があるとき,右端の印字欄が短くなる。省略時想定の印字欄幅は,d+e+6以上とする。印字欄
幅は,zonewidth句のあるset文を実行して変更できる。印字欄幅は,1以上現在の行幅以下の任意
の値に設定してよい。
(5.6) 位置指定 (tab-call) ABは,次の印字項目に対する印字位置を次のとおり設定する。
(a) 位置指定TABの式が評価され,その値が最も近い整数値nに丸められる。nが1よりも小さい場合
には,例外状態になる。nが行幅mよりも大きい場合には,mの整数倍をnから引いて,1≦n≦m
にする。すなわちnは,MOD (n−1, m)+1に等しくされる。
(b) 現在行の印字位置がn以下であるときには,必要ならば空白を生成して,印字位置をnにする。現
在行の印字位置がnを越えているときには,行末を生成して次の行に移り,n−1個の空白を生成し
て,印字位置をnにする。
(5.7) 印字区切りコンマの評価の結果は,印字位置に依存する。
(a) 次の(b)と(c)の場合を除いて,通常,1文字以上の空白を生成して,印字位置を現在行中の次の印字
欄の先頭にする。
(b) 印字位置が行の右端の印字欄中にあるときには,行末を生成する。
(c) 印字位置が行幅を越えているときにも,行末を生成する。
備考 書式なし出力の実行によって,印字位置が行幅を越えるのは,最後の印字項目を出力した結果
がちょうど行幅を満たしているときだけである。
(6) 行幅を超える出力行
(6.1) 現在行に既に文字が生成されていて(すなわち,印字位置≧2),かつ次の印字項目を評価すると行
幅を越えて(すなわち,印字位置≧行幅+2になって)しまう場合には,まず行末を生成してから,
その印字項目に対する文字の列を生成する。
(6.2) 一つの印字項目を評価出力している途中で,次の文字を生成すると行幅を越えてしまうことになっ
たときには,そこで行末を生成し,印字位置を1に戻してから,その文字を生成する。
(7) 印字項目並びの終り
(7.1) 印字項目並びの評価が完了した時,印字項目並びが印字区切りで終わっていない場合には,最後に
行末が生成される。印字項目並びが印字区切りで終わっている場合には,そのような行末は生成さ
れない。
(7.2) 完全に空の印字項目並びをもったprint文は,行末を生成して,現在行の出力を完了する。現在行
が文字を含んでいないときには,空白行ができる。
(8) 行幅の設定 margin句のあるset文を実行すると,その指標が評価され,この値が新たな行幅になる。
出力行が部分的に生成されていたとしても,行幅の変更は直ちに有効になる。margin句のあるset文
は,書式なし出力だけに影響を与える。
(9) 印字欄幅の設定 zonewidth句のあるset文を実行すると,その指標が評価され,この値が新たな印字
欄幅になる。出力行が部分的に生成されていたとしても,印字欄幅の変更は直ちに有効になる。
zonewidth句のあるset文は,書式なし出力だけに影響を与える。
(10) sk文 ask文を実行すると,出力質問項目並び中の変数に,margin句の場合には現在の行幅の値,
zonewidth句の場合には現在の印字欄幅の値が代入される。印字位置が任意に大きくてよい場合には,
margin句の数値変数に値MAXNUMが代入される。

――――― [JIS X 3003 pdf 72] ―――――

                                                                                             69
X 3003-1993
(11) 入出力の途中で入出力以外の例外状態が起こったとき,その部分的な入出力動作の効果及びその入出
力装置の状態は,処理系定義とする。
参考 ANSI X3.113にはこの(11)項がないが,TIBによって補った。
10.3.5 例外状態 例外状態は,次による。
(1) 位置指定TABの指標の値が1より小さい。(4005,続行可能。値を1として処理を続ける。)
(2) et文のmargin句の指標の値が,現在の印字欄幅の値より小さい。(4006,続行不能。)
(3) et文のzonewidth句の指標の値が,1より小さい又は現在の行幅の値より大きい。(4007,続行不能。)
10.3.6 注意 注意は,次による。
(1) 数値式を評価して生成される文字の列は,右端に1文字の空白を含む。この空白まで生成しようとす
ると,ちょうど行幅を越えることになる(すなわち,印字位置=行幅+2になる。)場合には,処理系
は,その空白の生成を省略し,その数値を現在行の右端の印字欄に出力してもよい。
(2) 小数点あり指数部あり形式 [10.3.4(3.5) ] で数値を印字するときに,処理系は英小文字eを使用するこ
とにしてもよい。
(3) 位置指定TABに続く印字区切りは,それが式に続く場合と同じ効果をもつ。

10.4 書式付き出力

10.4.1 概要 print文 (print-statement) は,書式 (image) を指定して出力の形式を制御することができる。
書式は,そのprint文中又は別のimage行中で指定する。
10.4.2 構文 構文は,次による。
(1) rint文⊃PRINT 書式付き印字指定
(2) 書式付き印字指定=USING 書式引用{コロン 書式印字式並び}?
(3) 書式引用=行番号|文字列式
(4) 書式印字式並び=式{コンマ 式}* セミコロン?
(5) mage行=行番号 IMAGE コロン 書式文字列 行末
(6) 書式文字列=即値文字列{書式項目 即値文字列}*
(7) 即値文字列=即値文字*
(8) 即値文字= 英字|数字|空白|感嘆符|アポストロフィ|左括弧|右括弧|斜線|コロン|
セミコロン|等号|疑問符|下線
(9) 書式項目=けた寄せ? 浮動文字列{整数書式項目|小数書式項目|指数書式項目}1けた寄せ
(10) けた寄せ=大号|小号
(11) 浮動文字列={正号*|負号*} ドル記号?|ドル記号*{正号|負号}?
(12) 整数書式項目=数字位置 数字位置*{コンマ 数字位置 数字位置*}*
(13) 数字位置=星印|番号記号|パーセント記号
(14) 小数書式項目=小数点 番号記号 番号記号*|整数書式項目 小数点 番号記号*
(15) 指数書式項目={整数書式項目|小数書式項目} 山記号 山記号 山記号 山記号*
(16) 書式引用の行番号は,そのプログラム単位中のimage行を参照しなければならない。
(17) mage行中のコロンに続く空白列は,書式文字列の一部とする。
(18) 一つの整数書式項目中のすべての数字位置は,同一の文字でなければならない。すなわち,すべて番
号記号とするか,すべてパーセント記号とするか,又はすべて星印とする。
10.4.3 例 構文の例を次に示す。

――――― [JIS X 3003 pdf 73] ―――――

70
X 3003-1993
(1) 10 LET sum=20
は,
20 PRINT USING”The answer is ###.#”:sum
The answer is 20.0 を生成する。
(2) 30 PRINT USING 40:342,42.021
は,
40 IMAGE:RATE OF LOSS #### EQUALS ####.## POUNDS
RATE OF LOSS 342 EQUALS 42.02 POUNDS を生成する。
(3) 10 LET A$=”<##### ####.#### ####.####^^^^” は,
20 PRINT USING A$:1,1, 1
1 1.0000 1000.0000E−03 を生成する。
(4) 60 PRINT USING 70:”ONE”,”TWO”,”THREE” は,
70 IMAGE:Z<####>#### ########Z
ZONE TWO THREE Z を生成する。
(5) 80 LET A$= ”Pay $**.## on ### %% 19%%” は,
90 PRINT USING A$:1, “May”, 2,83
Pay $*1.00 on May 02 1983 を生成する。
(6) 10 PRINT USING”<%%.##>---$##.## $$$+***”:3.1,−1234.567,2は,
003.10 -$1234.57 $+**2 を生成する。
(7) 10 PRINT USING”<$$$$.## $$$$.###^^^^^”:−.02, −.02 は,
$-.02 $-.200E-001 を生成する。
(8) 10 PRINT USING”$***,***.##”:1234.7777 は,
$**1,234.78 を生成する。
10.4.4 意味 意味は,次による。
(1) 書式文字列の選択 書式付き印字指定 (formatted-print-list) のあるprint文は,書式印字式並びを評価
して出力を生成する際に,書式文字列 (format-string) を識別し,書式文字列を用いて出力の制御を行
う。書式引用 (image) が行番号であるときには,書式文字列は,指定された行番号のimage行中に含
まれている。書式引用が文字列式であるときには,書式文字列はその文字列式の値とする。
(2) 書式文字列の解析
(2.1) 選択された書式文字列は,0文字以上の即値文字列 (literal-string) によって分離された幾つかの書式
項目 (format-item) に分解される。
書式項目は,書式文字列中の文字を左から右に走査して定められる。構文的に正しい書式項目の
最初の文字が探され,その文字から始まる最も長い書式項目が識別される。新しい書式項目の探索
は,前の書式項目が識別されるたびに,そのすぐ次の文字から始まる。書式項目に対する走査は,
このような方法で書式文字列の最後まで続けられる。

――――― [JIS X 3003 pdf 74] ―――――

                                                                                             71
X 3003-1993
(2.2) 一つの書式項目にはそれぞれ一つの出力欄 (output field) が対応する。出力欄の長さは,書式項目中
の文字[けた寄せ (justifier),浮動文字列 (floating-characters),数字位置 (digit-place),コンマ,小数
点,番号記号及び山記号を含む。]の個数に等しい。書式項目の一部でない文字は,即値文字でなけ
ればならない。
(2.3) mage行中に定義された書式文字列は,その行における空白でも行末でもない最後の文字で終わる。
(3) 即値文字列と出力欄 出力すべき値の列は,書式印字式並び (output-list) の中の各式を順番に評価し
て生成される。各値が生成される際に,まず,書式文字列の中の次の書式項目の前にある即値文字列
が,生成中の文字の列の中にそのまま複写される。次に,数値式の場合は(4)に,文字列式の場合は(5)
に従って,出力欄の長さに等しい個数の文字が書式項目によって定められ生成される。
(4) 書式付き数値出力 数値は丸められ,用いられている書式項目に対応したやり方で表現される。
(4.1) 書式項目の中にけた寄せがある場合,けた寄せば,その右隣の文字で置き換えられる。右隣の文字
が小数点である場合及びその書式項目がけた寄せだけからなる場合,けた寄せば,番号記号で置き
換えられる。
(4.2) 最初に,値の絶対値の表現が生成される。
(a) 整数書式項目 (i-format-item) の場合,値は最も近い整数に丸められ,小数点なし指数部なし形式で
表現される。
(b) 小数書式項目 (f-format-item) の場合,値は小数点あり指数部なし形式で表現され,書式項目の中の
小数点に続く番号記号の個数に応じて丸められるか右にゼロが補われる。
(c) 整数書式項目の場合も小数書式項目の場合も,意味上の小数点の左側では先行のゼロ列は生成され
ない。ただし,生成しないと出力欄に数字が一つもなくなってしまうときは,意味上の小数点の左
隣に1文字のゼロが生成される。その後,その整数中又は小数点の左側にまだ満たされていない数
字位置があれば,数字位置として,パーセント記号が用いられているときには先行のゼロ列が,星
印が用いられているときには先行の星印列が,番号記号が用いられているときには先行の空白列が
生成される。その結果,意味上の小数点の左側に生成される文字の個数は,書式項目中の数字位置
の個数と等しくなる。
(d) 指数書式項目 (e-format-item) の場合,値は,その指数書式項目中に小数書式項目を用いたか整数書
式項目を用いたかに応じて,小数点あり指数部あり形式又は小数点なし指数部あり形式で表現され
る。
ゼロでない値の有効数字部は,最も左の数字位置又は番号記号の位置にゼロ以外の数字が来るよ
うに,10のべき乗を乗じて調整される。それ以外の点では,有効数字部は,整数書式項目及び小数
書式項目の場合と同じ規則に従って生成される。
指数書式項目の中の山記号の個数は,指数部の文字数を定める。指数部の最初の文字は英字E,
次の文字は正号又は負号,残りは指数部の整数の絶対値の表現となる。指数部の整数の絶対値の表
現では,指数部の文字数が書式項目中の山記号の個数と等しくなるように,必要ならば先行のゼロ
列が生成される。指数がゼロであるとき,指数部の符号は正号とする。値がゼロであるとき,その
指数はゼロとする。
(4.3) 2番目に,書式項目の中にコンマがあれば,この数値表現のその位置にコンマが挿入される。挿入
点の左側に少なくとも1けたの数字が生成されていれば,このコンマがそのまま生成される。挿入
点の左側に数字が1けたも生成されていないときには,左隣の数字位置が星印であればコンマは星
印に置き換えられ,数字位置が番号記号であればコンマは空白に置き換えられる。

――――― [JIS X 3003 pdf 75] ―――――

次のページ PDF 76

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

  • ISO/IEC 10279:1991(IDT)

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

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