JIS X 3008:1994 プログラム言語Pascal | ページ 10

42
X 3008-1994 (ISO/IEC 7185: 1990)
と等価とする。
例 with date do
if month= 12 then
begin month : = 1; year : = year + 1
end
else month : = month + 1
このwith文は,変数dateに対して
if date. month = 12 then
begin date. month : = 1; date. year : = date. year + 1
end
else date. month : = date. month+ 1
と同じ効果をもつ。

6.9 入出力

6.9.1 手続きread

 readをテキストファイルに適用する場合の引数並びの構文規則は,次のとおりとす
る。
read引数並び = ( [ ファイル変数 , ]
変数アクセス [{ , 変数アクセス }] ) .
ファイル変数を省略した場合,この手続きは,標準のテキストファイルinputに適用する。この場合,
.. ..
プログラムは,つづりinputの識別子を含むプログラム引数並びを含まなければならない。
6.9.1では,テキストファイルに適用した場合の手続きreadを規定する。その対象となるテキストファイ
ルをfと書く。read (f, v) をテキストファイルfに適用した場合の効果は,6.6.5.2の記法に従って,前提表
明及び帰結表明を用いて定義する。read (f, v) の前提表明は,get (f) の前提表明とする。tを文字型をもつ
成分の列,r, s及びuをそれぞれtextが表す型の構造によって定義される列型の値として,rstu = w
f0. R. restとする。ただし,u=S( )であればt=S( ),そうでなければu. first=end-of-lineとする。更に,w=f0
↑又はw=f0. R. firstとする。このwの選択は,処理系依存とする。このとき,read (f, v) の帰結表明は次
のとおりとする。
(f. M=f0. M) かつ
(f. Lf. R=f0. Lf0. R) かつ
(f. R=tu) かつ
(f. R=S( )であればf↑は全面的不定である,そうでなければf↑=f. R. first)
参考1. ここでの変数アクセスは,変数引数ではない。したがって,バッファ変数の値が代入可能な
ものでさえあれば,詰めあり構造の成分であってもよい。
(a) ≧1のとき,read (f, v1, . . . , vn) は,テキストファイルをアクセスし,その文のそれ以降の実行中,そ
のテキストファイルを参照中にする。v1, . . . , vnのそれぞれは,実数型,文字列型又は文字型若しくは
整数型と適合する型をもつ変数アクセスでなければならない。n≧2のとき,read (f, v1, . . . , vn) の実行
は,
begin read (ff, v1) ; read (ff, v2, . . . , vn) nd
と等価とする。ここで,ffは参照中のテキストファイルを表す。
(b) が文字型(又はその部分範囲)の変数アクセスの場合,read (f, v) の実行は,
begin v : = ff↑; get (ff) nd

――――― [JIS X 3008 pdf 46] ―――――

                                                                                             43
X 3008-1994 (ISO/IEC 7185: 1990)
と等価とする。ここで,ffは参照中のテキストファイルを表す。
参考2. get及びread (f, v) の帰結表明を満たすためには,r=S ( ), length (s) =1とする必要がある。
(c) が整数型(又はその部分範囲)の変数アクセスの場合,read (f, v) は,次の四つの要求を満足する。
sのどの成分も行末成分に等しくない。rの成分(もしあれば)は,すべて文字型の値空白又は行末成
分に等しい。 (stu) .firstは,文字型の値空白とも行末成分とも等しくない。sが空列であるか,又
はsが6.1.5の構文規則に定める符号付き整数の形式であり,かつsS (t. first) が符号付き整数の形式
でない。sが空列であれば,誤りとする。この符号付き整数の値は,vのもつ型に対して代入可能でな
ければならない。この値をvに与える。
参考3. 列rは,読み飛ばすべき空白及び行末成分の列を表す。列sは,読取りの対象となる符号付
き整数を表す。
(d) が実数型の変数アクセスの場合,read (f, v) は,次の四つの要求を満足する。sのどの成分も行末成
分に等しくない。rの成分(もしあれば)は,すべて文字型の値空白又は行末成分に等しい。 (st
u) .firstは,文字型の値空白とも行末成分とも等しくない。sが空列であるか,又はsが6.1.5の構文規
則に定める符号付き数の形式であり,かつsS (t. first) が符号付き数の形式でない。sが空列であれ
ば,誤りとする。この符号付き数の値をvに与える。
参考4. 列rは,読み飛ばすべき空白及び行末成分の列を表す。列sは,読取りの対象となる数を表
す。

6.9.2 手続きreadln

 readlnの引数並びの構文規則は,次のとおりとする。
readln引数並び = [ ( ( ファイル変数 | 変数アクセス )
[{ , 変数アクセス }] ) ] .
手続きreadlnは,テキストファイルにだけ適用できる。ファイル変数を省略した場合,又はreadln引数
並び全体を省略した場合,この手続きは,標準のテキストファイルinputに適用する。この場合,プログ
.. ..
ラムは,つづりinputの識別子を含むプログラム引数並びを含まなければならない。
readln (f, v1, . . . , vn) は,テキストファイルをアクセスし,その文のそれ以降の実行中,そのテキストフ
ァイルを参照中にする。この文の実行は,
begin read (ff, v1, . . . , vn) ; readln (ff) nd
と等価とする。ここで,ffは参照中のテキストファイルを表す。
readln(f)は,テキストファイルをアクセスし,その文のそれ以降の実行中,そのテキストファイルを参照
中にする。この文の実行は,
begin while not eoln(ff) do get(ff); get(ff) end
と等価とする。ここで,ffは参照中のテキストファイルを表す。
参考1. readlnは,テキストファイルの現在位置を現在行の行末成分の直後に移す。そこがファイル
の終わりでなければ,次の行の先頭が現在位置となる。
2. readlnの定義は,getを用いている。したがって,getの帰結表明に関して処理系定義と規定
する事項は,readlnに対しても適用する(6.6.5.2参照)。

6.9.3 手続きwrite

 writeをテキストファイルに適用する場合の引数並びの構文規則は,次のとおりとす
る。
write引数並び = ( [ ファイル変数 , ] write引数 [{ , write引数}] ) .
write引数 = 式 [ : 式 [ : 式 ] ] .
ファイル変数を省略した場合,この手続きは,標準のテキストファイルoutputに適用する。この場合,

――――― [JIS X 3008 pdf 47] ―――――

44
X 3008-1994 (ISO/IEC 7185: 1990)
.. ..
プログラムは,つづりoutputの識別子を含むプログラム引数並びを含まなければならない。writeをテキス
トファイルfに適用したとき,fが不定であるか,又はf. M=Inspection(6.4.3.5参照)であれば,誤りとす
る。
n≧1のとき,write (f, p1, . . . , pn) は,テキストファイルをアクセスし,その文のそれ以降の実行中,そ
のテキストファイルを参照中にする。n≧2のとき,write (f, p1, . . . , pn) の実行は,
begin write (ff, p1) ; write (ff, p2, . . . , pn) nd
と等価とする。ここで,ffは参照中のテキストファイルを表す。
fがテキストファイルを表し,pがwrite引数であるとき,write (f, p) は,0個以上の文字の列をテキスト
ファイルfに書き出す。この列のそれぞれの文字cについて,
begin ff↑: = c; put (ff) nd
と等価な操作をテキストファイルfに適用する。ここで,ffは参照中のテキストファイルを表す。書き出
す文字の列は,write引数pの最初の式の値の表現とする。この表現の詳細は,6.9.3.16.9.3.6に規定する。
参考 writeの定義は,putを用いている。したがって,putの帰結表明に関して処理系定義と規定する
事項は,writeに対しても適用する(6.6.5.2参照)。

6.9.3.1 write引数

 write引数pは,次のいずれかの形とする。
e : TotalWidth : FracDigits
e : TotalWidth
e
式eは,ファイルfに書き出す値を表す。その型は,整数型,実数型,文字型,論理型又は文字列型の
いずれかでなければならない。TotalWidth及びFracDigitsは,整数型の式でなければならない。TotalWidth
及びFracDigitsの値を欄長引数という。欄長引数が1未満であれば,誤りとする。
write (f, e) は,write (f, e: TotalWidth) と等価とする。ここで,TotalWidthは,eの型ごとに規定する基準
値とする。整数型,実数型及び論理型に対する基準値は,処理系定義とする。
write (f, e: TotalWidth: FracDigits) の形式の場合,eの型は,実数型でなければならない(6.9.3.4.2参照)。

6.9.3.2 文字型

 eの型が文字型のとき,TotalWidthの基準値は,1とする。ファイルfに書き出す表現は,
次のとおりとする。
(TotalWidth−1)個の空白,
eの文字値。

6.9.3.3 整数型

 eの型が整数型のときは,eの値の10進表現をファイルfに書き出す。関数IntegerSize
を,次のとおり定義する。
function IntegerSize (x : integer) : integer;
[{ 次の条件を満たすけた数zを返す。10の (z−1) 乗≦abs (x) <10のz乗}]
正整数IntDigitsを,次のとおり定義する。
if e=0
then IntDigits : = 1
else IntDigits : = IntegerSize (e) ;
このとき,書き出す表現は,次のとおりとする。
(a) otalWidth≧IntDigits+1の場合
(TotalWidth−IntDigits-1)個の空白,
e<0のとき符号−, e≧0のとき空白,

――――― [JIS X 3008 pdf 48] ―――――

                                                                                             45
X 3008-1994 (ISO/IEC 7185: 1990)
IntDigitsけたのabs (e) の10進表現。
(b) otalWidth<IntDigits+1の場合
e<0のとき符号−,
IntDigitsけたのabs (e) の10進表現。

6.9.3.4 実数型

 eの型が実数型のときは,指定された有効けた数にeの値を丸め,その10進表現をファ
イルfに書き出す。

6.9.3.4.1 浮動小数点表現

 write(f, e: TotalWidth)は,eの値の浮動小数点表現を書き出す。関数TenPower,
RealSize及びTruncateを,次のとおり定義する。
function TenPower (Int : integer) : real;
[{ 10.0のInt乗を返す。}]
function RealSize (y : real) : integer;
[{ 次の条件を満たす値zを返す。TenPower (z-1) ≦abs (y) <TenPower (z)}]
function Truncate (y : real; DecPlaces : integer) : real;
[{ yの値の小数点以下DecPlacesけたより下を切り捨てた結果を返す。}]
ExpDigitsは,指数部のけた数を示す処理系定義の値とする。
正整数ActWidthを,次のとおり定義する。
if TotalWidth >= ExpDigits + 6
then ActWidth : = TotalWidth
else ActWidth : = ExpDigits + 6;
また,非負の数eWritten,正整数DecPlaces及び整数ExpValueを,次のとおり定義する。
DecPlaces : = ActWidth - ExpDigits - 5;
if e=0.0
then begin eWritten : = 0.0; ExpValue : = 0 end
else
begin
eWritten : = abs (e) ;
ExpValue : = RealSize (eWritten) - 1;
eWritten : = eWritten /TenPower (ExpValue) ;
eWritten : = eWritten + 0.5 * TenPower (-DecPlaces) ;
if eWritten >= 10.0
then
begin
eWritten : = eWritten /10.0;
ExpValue : = ExpValue + 1
end;
eWritten : = Truncate (eWritten, DecPlaces)
end;
このとき,eの値の浮動小数点表現は,次のとおりとする。
符号(e<0.0かつeWritten>0.0のとき −,それ以外のとき空白),
eWrittenの10進表現の第1けた目の数字,

――――― [JIS X 3008 pdf 49] ―――――

46
X 3008-1994 (ISO/IEC 7185: 1990)
文字.,
eWrittenの10進表現の第2けた目以降のDecPlaces個の数字,
処理系定義の指数部表現文字(e又は E),
ExpValueの符号(ExpValue<0のとき −,それ以外のとき +),
ExpValueのExpDigitsけたの10進表現(必要ならば先頭に文字0が並ぶ。)。

6.9.3.4.2 固定小数点表現

 write (f, e: TotalWidth: FracDigits) は,eの値の固定小数点表現を書き出す。関
数TenPower, RealSize及びTruncateを,6.9.3.4.1と同様に定義する。
非負の数eWrittenを,次のとおり定義する。
if e=0.0
then eWritten : = 0.0
else
begin
eWritten : = abs (e) ;
eWritten : = eWritten + 0.5 * TenPower (- FracDigits) ;
eWritten : = Truncate (eWritten, FracDigits)
end;
正整数IntDigitsを,次のとおり定義する。
if RealSize (eWritten) < 1
then IntDigits : = 1
else IntDigits : = RealSize (eWritten) ;
正整数MinNumCharsを,次のとおり定義する。
MinNumChars : = IntDigits + FracDigits + 1;
if (e < 0.0) nd (eWritten > 0.0)
then MinNumChars : = MinNumChars + 1; [{ −が必要}]
このとき,eの値の固定小数点表現は,次のとおりとする。
TotalWidth≧MinNumCharsのとき, (Tota1Width-MinNumChars) 個の空白,
e<0.0かつeWritten>0.0のとき文字−,
eWrittenの値の10進表現の,最初のIntDigits個の数字,
文字.,
eWrittenの値の10進表現の,次のFracDigits個の数字。
参考 少なくともMinNumChars個の文字が書き出される。TotalWidthがこの値より小さいとき,先頭
に空白が書き出されることはない。

6.9.3.5

  論理型 eの型が論理型のときは,eの値に応じて値true又は値falseの表現をファイルfに書き
出す。これは,文字列True又はFalseを欄長引数TotalWidthを使って書き出す(6.9.3.6参照)ことと等価
とする。このとき,各英字を大文字とするか小文字とするかは,処理系定義とする。

6.9.3.6 文字列型

 eの型がn個の成分をもつ文字列型のときは,TotalWidthの基準値は,nとする。書き
出す表現は,次のとおりとする。
TotalWidth>nのときは,
(TotalWidth-n)個の空白,
eの値の最初の文字から九番目の文字まで順に並べたもの。

――――― [JIS X 3008 pdf 50] ―――――

次のページ PDF 51

JIS X 3008:1994の引用国際規格 ISO 一覧

  • ISO/IEC 7185:1990(IDT)

JIS X 3008:1994の国際規格 ICS 分類一覧