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

                                                                                             37
X 3008-1994 (ISO/IEC 7185: 1990)
空文 = .
. .

6.8.2.2 代入文

 代入文は,代入文の変数アクセスが表す変数又は代入文の関数名が表す駆動結果に,代
入文の式の値を与える。値は,それぞれ変数又は駆動結果の型に対して代入可能でなければならない。駆
. ..
動結果に対する代入文は,その代入文の関数名に結合した関数ブロック(6.6.2参照)に含まれていなけれ
ばならない。
代入文 = ( 変数アクセス | 関数名 ) := 式 .
変数アクセスは,代入文の実行中,その変数を参照中にする。変数を参照中にする動作及び式の評価の
順序は,処理系依存とする。
変数又は駆動結果にその型の値が与えられていない状態のことを,不定という。構造型をもつ変数の場
合,その変数の全部の成分が全面的不定である状態のことを,全面的不定という。構造型をもたない変数
又は駆動結果の場合,全面的不定は,不定と同じ意味とする。
例x:=y+z
p : = (1 <= i) nd (i < 100)
i : = sqr(k)−(i * j)
hue1 : = [blue, succ(c) ]
p1↑.mother : = true
. .

6.8.2.3 手続き呼出し文

 手続き呼出し文は,手続き呼出し文の手続き名に結合した手続きブロックのブ
..
ロックの駆動を指定する。手続きが仮引数をもつならば,手続き呼出し文は,実引数並びを含まなければ
ならない。それぞれの実引数は,手続き宣言で定義された対応する仮引数に渡される。その対応は,実引
数の並び及び仮引数の並びの中の引数の位置による。実引数の個数は,仮引数の個数と同じでなければな
らない。実引数の型は,6.6.3に規定するとおり,仮引数の型と対応しなければならない。
実引数の評価,アクセス及び引数渡しの順序は,処理系依存とする。
.. .
read引数並びを含む手続き呼出し文の手続き名は,標準手続きreadを表さなければならない。readln引
.. .
数並びを含む手続き呼出し文の手続き名は,標準手続きreadlnを表さなければならない。write引数並びを
.. . ..
含む手続き呼出し文の手続き名は,標準手続きwriteを表さなければならない。writeln引数並びを含む手
.
続き呼出し文の手続き名は,標準手続きwritelnを表さなければならない。
手続き呼出し文 = 手続き名 ( [ 実引数並び ]
| read引数並び | readln引数並び
| write引数並び | writeln引数並び ) .
例 printheading
transpose (a, n, m)
bisect (fct, −1.0, +1.0, x)
AddVectors (m [1] ,m [2] ,m [k] )
参考 4番目の例は,水準0ではない。
goto文 goto文は,それ以降の処理をgoto文の.ラベルが表すプログラム内位置から続けることを
6.8.2.4
指定する。goto文の実行によって,次の(a)(b)のいずれかに該当するものを除いて,すべての駆動が終了
する。
(a) 指定されたプログラム内位置を包含する駆動
(b) (a)又は(b)によって終了しないと規定する駆動の駆動位置を包含する駆動
goto文 = goto ラベル .

――――― [JIS X 3008 pdf 41] ―――――

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

6.8.3 構造文

6.8.3.1 一般規則

        構造文 = 複合文 | 条件文 | 繰返し文 | with文 .
文並び = 文 [{ ; 文 }] .
.
文並びは,文並びの文を文面上の順序に従って(goto文の実行によって変更される場合を除く。)実行
することを指定する。
.

6.8.3.2 複合文

 複合文は,複合文の文並びの実行を指定する。
複合文 = begin 文並び end .
例 begin z : = x; x : = y; y : = z end

6.8.3.3 条件文

        条件文 = if文 | case文 .

6.8.3.4 if文

        if文 = if 論理式 then 文 [ else部 ] .
else部 = else 文 .
if文の.論理式が値trueを生じる場合,if文の.文を実行する。論理式が値falseを生じる場合,if文の.文は
実行せず,else部(もしあれば)の.文を実行する。
else部をもたないif文の直後に予約語elseが現れてはならない。
参考 したがって,else部は,それより前のthenでelseと対応のとれていないもののうち最も近くに
あるものと対応する。
例 if x < 1.5 then z : = x + y else z : = 1.5
if p1 <> nil then p1 : = p1↑.father
if j = 0 then
if i = 0 then writeln (indefinite)
else writeln (infinite)
else writeln ( i / j)
case文 case文の.選択肢の.選択定数並びの.選択定数の中に,同じ値を表すものが二つ以上あって
6.8.3.5
はならない。これらの選択定数の型は,順序型でなければならず,case文の.選択式の.式の型と同じでなけ
.....
ればならない。case文の実行の際,最初に選択式を評価する。次に,この値を表す選択定数を直接に含む
.
選択肢を選び,その選択肢の文を実行する。case文に入るとき,選択式の値がどの選択定数とも等しくな
ければ,誤りとする。
case文 = case 選択式 of 選択肢 [{ ; 選択肢}] [ ; ] end .
選択肢 = 選択定数並び : 文 .
選択式 = 式 .
参考 選択定数は,文のラベルではない。
例 case operator of
plus: x : = x + y;
minus: x : = x−y;
times: x : = x * y
end

6.8.3.6 繰返し文

 繰返し文は,文を繰り返して実行することを指定する。

――――― [JIS X 3008 pdf 42] ―――――

                                                                                             39
X 3008-1994 (ISO/IEC 7185: 1990)
繰返し文 = repeat文 | while文 | for文 .

6.8.3.7 repeat文

        repeat文 = repeat 文並び until 論理式 .
repeat文は,repeat文の.文並びの実行後にrepeat文の.論理式が値trueを生じるまで文並びを繰り返して
(goto文の実行によって変更される場合を除く。)実行することを指定する。論理式が文並びの実行後に
評価されるので,文並びは,少なくとも1回は実行される。
例 repeat
k : = i mod j;
i : = j;
j:=k
until j=0

6.8.3.8 while文

        while文 = while 論理式 do 文 .
while文
while b do body
は,
begin
if b then
repeat
body
until not (b)
end
と等価とする。
例 while i > 0 do
begin if odd (i) hen z : = z * x;
i : = i div 2;
x : = sqr (x)
end
while not eof (f) o
begin process (f↑) ; get (f)
end
for文 for文は,for文の.制御変数が表す変数に一連の値を与えながら,for文の.文を繰り返して
6.8.3.9
実行することを指定する。
for文 = for 制御変数 : = 初期値 ( to | downto ) 終値 do 文 .
制御変数 = 純変数 .
初期値 = 式 .
終値 = 式 .
. . . ..... .
制御変数の純変数の変数名の識別子は,そのfor文を直接に含むブロックの変数宣言部で宣言されたも
のでなければならない。制御変数の型は,順序型でなければならない。初期値及び終値の型は,この型と
適合しなければならない。for文の.文が1回でも実行されるならば,初期値及び終値の値は,制御変数の型

――――― [JIS X 3008 pdf 43] ―――――

40
X 3008-1994 (ISO/IEC 7185: 1990)
に対して代入可能でなければならない。for文の実行の後(goto文によって脱出した場合を除く。),制御変
..... .
数は,不定とする。for文及びそのfor文を直接に含むブロックの手続き関数宣言部は,for文の制御変数が
..
表す変数を変えうる文を含んではならない。
次の(a)(d)の条件のうちのいずれかが成立するときに,文Sは変数Vを変えうるという。
(a) が代入文であり,Sの.変数アクセスがVを表す。
..
(b) がVを表す実変数引数を含む。
(c) が標準手続きread又は標準手続きreadlnの駆動を指定する手続き呼出し文であり,Sの.read引数並
び又はreadln引数並びの.変数アクセスがVを表す。
(d) が等価なプログラムの断片によって規定される文であり,そのプログラムの断片がVを変えうる文
を含む。
これらの規定による制約を別にすれば,for文
for v : = e1 to e2 do body
は,
begin
temp1 : = e1 ;
temp2 : = e2 ;
if temp1 <= temp2 then
begin
v : = temp1 ;
body ;
while v <> temp2 do
begin
v : = succ (v) ;
body
end
end
end
と等価とする。
また,for文
for v : = e1 downto e2 do body
は,
begin
temp1 : = e1 ;
temp2 : = e2 ;
if temp1 >= temp2 then
begin
v : = temp1 ;
body;
while v <> temp2 do
begin

――――― [JIS X 3008 pdf 44] ―――――

                                                                                             41
X 3008-1994 (ISO/IEC 7185: 1990)
v : = pred (v) ;
body
end
end
end
と等価とする。
ここで,temp1及びtemp2は,プログラム中の他の場所に現れない補助の変数とする。temp1及びtemp2
の型は,変数vの型が部分範囲型でなければ,vの型とし,部分範囲型であれば,vの型の親の型とする。
例 for i : = 2 to 63 do
if a [i] > max then max : = a [i]
for i : = 1 to 10 do
for j : = 1 to 10 do
begin
x : = 0;
for k : = 1 to 10 do
x : = x + m1 [i, k] * m2 [k, j] ;
m [i, j] : = x
end
for i : = 1 to 10 do
for j : = 1 to i − 1 do
m [i] [j] : = 0.0
for c : = blue downto red do
q (c)

6.8.3.10 with文

        with文 = with レコード変数並び do 文 .
レコード変数並び = レコード変数 [{ , レコード変数}] .
フィールド表記名 = 識別子 .
...
with文は,with文の.文の実行を指定する。with文の.レコード変数並びの中に
一つだけレコード変数があ
る場合,そのレコード変数の出現は,そのレコード変数のもつレコード型の成分に結合したすべてのフィ
ールド名の,フィールド表記名としての定義位置となる。この定義位置の領域は,with文の.文とする。フ
ィールド表記名のそれぞれの引用は,そのレコード変数の,フィールド名に結合した成分を表す。レコー
ド変数は,with文の.文の実行の前にアクセスされる。アクセスされた変数は,with文の.文の実行の間,参
照中とする。
with文
with v1, v2, . . . , vn do s
は,
with v1 do
with v2 do
...
with vn do s

――――― [JIS X 3008 pdf 45] ―――――

次のページ PDF 46

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

  • ISO/IEC 7185:1990(IDT)

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