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

                                                                                             27
X 3008-1994 (ISO/IEC 7185: 1990)
. ...

6.6.3.7.2 値整合配列

 値整合配列仕様の識別子並びの中の識別子を,値整合配列という。実引数は,式
でなければならない。ブロックの駆動の前に,式の値がプログラム中の他の場所に現れない補助の変数に
与えられる。この変数の型は,式の型と同じとする。この変数は,ブロックの駆動の前にアクセスされる。
アクセスされた変数は,そのブロックの駆動の間,参照中とする。対応する仮引数及び結合した変数名は,
.
駆動の間,この変数を表す。値整合配列の固定成分型は,ファイル型の成分型とすることができる型でな
ければならない。
..
値整合配列に対する実引数が整合配列引数を含む場合,その整合配列引数に対して次の(a)(b)の条件の
うちのいずれかが成立しなければならない。
.. ..
(a) 整合配列引数が実引数の含む関数呼出しに含まれる。
.. ..
(b) 整合配列引数が実引数の含む添字付き変数に含まれる。この場合,その添字付き変数の型は,整合配
列引数の固定成分型でなければならない。
参考 これによって,式及び補助の変数の型が確定していることが保証される。したがって,手続き
の駆動の変数用記憶域の大きさは,変化しない。
. ...

6.6.3.7.3 変数整合配列

 変数整合配列仕様の識別子並びの中の識別子を,変数整合配列という。実引数
は,変数アクセスでなければならない。実引数は,ブロックの駆動の前にアクセスされる。アクセスされ
た変数は,そのブロックの駆動の間,参照中とする。対応する仮引数及び結合した変数名は,駆動の間,
この変数を表す。
実引数は,詰めありの型をもつ変数の成分を表してはならない。

6.6.3.8 整合性

    参考1. 6.6.3.8の扱いについては,5.1(a), 5.1(b), 5.1(c), 5.2(a)及び5.2(b)を参照のこと。
..... .....
添字型を一つだけ直接に含む配列型及び添字型仕様を一つだけ直接に含む整合配列形式があるとき,こ
.....
の添字型と添字型仕様は,対応しているという。添字型仕様を一つだけ直接に含む整合配列形式が二つあ
るとき,この二つの添字型仕様は,対応しているという。T1を一つだけ添字型をもつ配列型とする。整合
..... .
配列形式が一つだけ添字型仕様を直接に含むとき,この添字型仕様の順序型名が表す型をT2とする。T1,
T2に対して次の(a)(d)の条件すべてが成立するときに,T1は,その整合配列形式に整合するという。
(a) 1の添字型がT2と適合する。
(b) 1の添字型の最小値及び最大値がT2の定める閉区間内にある。
..... ..
(c) 1の成分型が,整合配列形式が直接に含む型名が表す型と同じ型を表すか,又は整合配列形式が直接
...
に含む整合配列形式に整合する。
(d) 1が詰めなしで,かつ整合配列形式が詰めなし整合配列形式であるか,又はT1が詰めありで,かつ
整合配列形式が詰めあり整合配列形式である。
参考2. 整合配列形式の省略形と完全形とは,等価とする(6.6.3.7参照)。配列型の省略形と完全形と
は,等価とする(6.4.3.2参照)。
整合性の規則を適用する箇所では,T1の添字型の最小値又は最大値がT2の定める閉区間内になければ,
誤りとする。

6.6.4 標準手続き・標準関数

 標準の手続き名・関数名及びこれらに対応する標準手続き・標準関数は,
6.6.5, 6.6.6及び6.9に規定する。
参考 標準手続き及び標準関数は,手続き又は関数の一般規則には必ずしも従わない。

6.6.5 標準手続き

6.6.5.1 一般規則

 標準手続きは,ファイル操作手続き,動的割当て手続き及び変換手続きとする。

――――― [JIS X 3008 pdf 31] ―――――

28
X 3008-1994 (ISO/IEC 7185: 1990)

6.6.5.2 ファイル操作手続き

 rewrite又はresetを,input又はoutputの表すプログラム引数に適用する場
合を除いて,rewrite, put, reset及びgetの各ファイル操作手続きをファイル変数fに適用したときの効果は,
f,その成分f. L, f. R及びf. M並びに結合したバッファ変数f↑に関する前提表明及び帰結表明によって規
定する。これらの表明の中で,f0は,操作前のfの状態又は値とし,fは,操作後の状態又は値とする。f0
↑及びf↑についても同様とする。
操作の直前に前提表明が成立していなければ,誤りとする。等式の形の表明の中で使われている変数が
不定であれば,誤りとする。帰結表明は,ファイル,その成分又は結合したバッファ変数のいずれかに対
する次のアクセスまでに成立する。ファイル変数に結び付けられた外部実体があれば,帰結表明を満たす
ように操作がその上に加えられる。この操作がどんなものであるか,またそれがいつ実際に行われるかは,
処理系定義とする。
参考 端末に対する入出力に対応するため,手続きget(及び他の入力手続き)はできるだけ遅めに,
手続きput(及び他の出力手続き)はできるだけ早めに実行するのがよい。この技法を“遅延入
出力”と呼ぶ。
rewrite (f)
前提表明: 真
帰結表明: (f. L=f. R=S() ) かつ
(f. M=Generation) かつ
(f↑は全面的不定である)
put (f)
前提表明: (f0. M=Generation) かつ
(f0. Lは不定でない) かつ
(f0. R=S ()) かつ
(f0↑は不定でない)
帰結表明: (f. M=Generation) かつ
(f. L= (f0. LS(f0↑))) かつ
(f. R=S ( )) かつ
(f↑は全面的不定である)
reset(f)
前提表明: 成分f0. L及びf0. Rは不定でない
帰結表明: (f. L=S() )かつ
(f. R= (f0. Lf0. RX)) かつ
(f. M=Inspection) かつ
(f. R=S( )であればf↑は全面的不定である,そうでなければf↑=f. R. first)
ここで,fが標準の型名textの表す型をもち,かつf0. Lf0. Rが空列でなく,(f0. L
f0. R) .lastが行末成分でない場合,Xは行末成分だけから成る列とする。それ以外の場
合,X=S( )とする。
get (f)
前提表明: (f0. M=Inspection) かつ
(f0. Lもf0. Rも不定でない) かつ

――――― [JIS X 3008 pdf 32] ―――――

                                                                                             29
X 3008-1994 (ISO/IEC 7185: 1990)
(f0. R≠S ())
帰結表明: (f. M=Inspection) かつ
(f. L= (f0. LS (f0. R. first))) かつ
(f. R=f0. R. rest) かつ
(f. R=S( )であればf↑は全面的不定である,そうでなければf↑=f. R. first)
ファイル変数fの型がtextの表す型でない場合,標準手続きread及びwriteを次のとおり定義する。
read
fをファイル変数,v1, . . . , vnを変数アクセス (n≧2) とするとき,手続き呼出し文read (f, v1, . . . , vn)
は,ファイル変数をアクセスし,その文のそれ以降の実行中,ファイル変数を参照中にする。read (f,
v1, . . . , vn) の実行は,
begin read (ff, v1) ; read (ff, v2, . . . , vn) nd
と等価とする。ここで,ffは参照中のファイル変数を表す。
fをファイル変数,vを変数アクセスとするとき,手続き呼出し文read (f, v) は,ファイル変数を
アクセスし,その文のそれ以降の実行中,ファイル変数を参照中にする。read (f, v) の実行は,
begin v : = ff↑; get (ff) nd
と等価とする。ここで,ffは参照中のファイル変数を表す。
参考 ここでの変数アクセスは,変数引数ではない。したがって,バッファ変数の値が代入可能
なものでさえあれば,詰めあり構造の成分であってもよい。
write
fをファイル変数,e1, . . . , enを式 (n≧2) とするとき,手続き呼出し文write (f, e1, . . . , en) は,ファイ
ル変数をアクセスし,その文のそれ以降の実行中,ファイル変数を参照中にする。wnte (f, e1 , . . . , en) の
実行は,
begin write (ff, e1) ; write (ff, e2, . . . , en) nd
と等価とする。ここで,ffは参照中のファイル変数を表す。
fをファイル変数,eを式とするとき,手続き呼出し文write (f, e) は,ファイル変数をアクセスし,そ
の文のそれ以降の実行中,ファイル変数を参照中にする。write (f, e) の実行は,
begin ff↑: = e; put (ff) nd
と等価とする。ここで,ffは参照中のファイル変数を表す。
参考1. 標準手続きread, write, readln, writeln及びpageをテキストファイルに適用した場合については,
6.9に規定する。
2. read及びwriteの定義は,get及びputを用いている。したがって,帰結表明に関して処理系
定義と規定する事項は,read及びwriteに対しても適用する。
3. read及びwriteの定義の帰結として,ファイル変数以外の引数は,左から順に評価される。

6.6.5.3 動的割当て手続き

  new (p)
新しい変数を作成し,この変数を指示する新しい指示値を作成する。この指示値を変数アクセス
pの表す変数に与える。新しい変数は,全面的不定とする。指示値の型は,pのもつポインタ型とす
る。作成される変数の型は,pのもつポインタ型の.被指示型とする。
new (P, c1, . . . , cn)
新しい変数を作成し,この変数を指示する新しい指示値を作成する。この指示値を変数アクセス

――――― [JIS X 3008 pdf 33] ―――――

30
X 3008-1994 (ISO/IEC 7185: 1990)
pの表す変数に与える。新しい変数は,全面的不定とする。指示値の型は,pのもつポインタ型とす
る。作成される変数の型は,pのもつポインタ型の.被指示型とする。この型は,レコード型でなけ
ればならない。更に,選択定数c1, . . . , cnに対応する可変要素を入れ子状にもっていなければならな
い。選択定数は,可変部の入れ子の深さが深くなる順序に並べなければならない。c1,...,cnに対応
しない可変要素は,cnによって指定されるものより入れ子の深いところになければならない。
可変要素が指定された可変部について,新しい変数のその可変部のそれ以外の可変要素が有効に
なれば,誤りとする。
dispose (q)
式qのもつポインタ型からqの表す指示値を消去する。指示値がnew (p, c1, . . . , cn) の形式を使っ
て作成されたものであれば,誤りとする。
dispose (q, k1,...,km)
式qのもつポインタ型からqの表す指示値を消去する。選択定数k1, . . . , kmは,可変部の入れ子
の深さが深くなる順序に並べなければならない。変数がnew (p, c1, . . . , cn) の形式を使って作成され
たものでないか,又はnがmに等しくなければ,誤りとする。qの指示値で指示される変数の有効
な可変要素が選択定数k1, . . . , kmが表す値に対応する可変要素と違えば,誤りとする。
参考 指示値をポインタ型から消去することによって,それが指示する被指示変数は,アクセ
スできなくなる(6.5.4参照)。その指示値を与えられた変数又は関数は,不定となる
(6.6.3.2及び6.8.2.2参照)。
qが不定であるか又はnil値を表すならば,誤りとする。
. . . .
因子の,代入文の又は実引数の,変数アクセスの被指示変数がnewの第2の形式を使って作成された変
数を表すならば,誤りとする。

6.6.5.4 変換手続き

 文pack (a, i, z) 及び文unpack (z, a, i) に関して,次のとおり定める。a及びzは,変
数アクセスでなければならない。aの型は詰めなしの配列型,zの型は詰めありの配列型でなければならな
い。aの型の成分型とzの型の成分型は,同じでなければならない。式iの値は,aの型の添字型に対して
代入可能でなければならない。
j及びkは,プログラム中の他の場所に現れない補助の変数とする。j及びkの型は,それぞれz及びa
の型の添字型とする。u及びvは,それぞれzの型の添字型の最小値及び最大値とする。文pack (a, i, z) 及
びunpack (z, a, i) は,a及びzが表す変数をその文の実行中,参照中にする。これらの参照中の変数をそれ
ぞれaa及びzzとする。このとき,文pack (a, i, z) は,
begin
k : = i;
for j : = u to v do
begin
zz [j] : = aa [k] ;
if j <> v then k : = succ (k)
end
end
と等価とする。
また,文unpack (z, a, i) は,
begin

――――― [JIS X 3008 pdf 34] ―――――

                                                                                             31
X 3008-1994 (ISO/IEC 7185: 1990)
k : = i;
for j : = u to v do
begin
aa [k] : = zz [j] ;
if j <> v then k : = succ (k)
end
end
と等価とする。
参考 変数を参照中とすることができない場合,jに与えられる一つ以上の値がaの型の添字型に対し
て代入可能でない場合,又は評価された配列成分が不定である場合は誤りである。

6.6.6 標準関数

6.6.6.1 一般規則

 標準関数は,算術関数,変換関数,順序関数及び論理関数とする。

6.6.6.2 算術関数

 次の算術関数に対して,式xの型は,実数型又は整数型でなければならない。関数abs
及びsqrの場合,結果の型は,引数xの型と同じとする。その他の算術関数の結果の型は,実数型とする。
結果の値は,表2に示すとおりとする。
表2 算術関数の結果
関数 結果
abs (x) xの絶対値。
sqr (x) xの平方。その値が存在しなければ,誤りとする。
sin (x) xの正弦。xの単位はラジアンとする。
cos (x) xの余弦。xの単位はラジアンとする。
exp (x) 自然対数の底のx乗。
ln (x) xの自然対数。xが0より大きくなければ,誤りとする。
sqrt (x) xの非負の平方根。xが負であれば,誤りとする。
arctan (x) xの逆正接の主値。結果の単位はラジアンとする。

6.6.6.3 変換関数

trunc (x)
式xの型は,実数型でなければならない。結果の型は,整数型とする。trunc (x) の値は,xが正又は0
であれば,0≦x-trunc (x) <1を,そうでなければ,-1<x-trunc (x) ≦0を満たす。この条件を満たす値が存在
しなければ,誤りとする。
例 trunc (3.5) [{3となる}]
trunc (-3.5) [{-3となる}]
round (x)
式xの型は,実数型でなければならない。結果の型は,整数型とする。round (x) は,xが正又は0であ
れば,trunc (x+0.5) と等価とする。そうでなければ,trunc (x-0.5) と等価とする。この条件を満たす値が存
在しなければ,誤りとする。
例 round (3.5) [{4となる}]
round (-3.5) [{-4となる}]

6.6.6.4 順序関数

ord (x)
式xの型は,順序型でなければならない。結果の型は,整数型とする。結果は,式xの値の順序数(6.4.2.2

――――― [JIS X 3008 pdf 35] ―――――

次のページ PDF 36

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

  • ISO/IEC 7185:1990(IDT)

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