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

                                                                                             17
X 3008-1994 (ISO/IEC 7185: 1990)
type
natural = 0..maxint ;
count = integer ;
range = integer ;
colour = (red, yellow, green, blue) ;
sex = (male, female) ;
year = 1900..1999 ;
shape = (triangle, rectangle, circle) ;
punchedcard = array [1..80] of char ;
charsequence = file of char ;
polar = record
r : real ;
theta : real
end ;
indextype = 1..limit ;
vector = array [indextype] of real ;
person = ↑persondetails ;
persondetails = record
name, firstname : charsequence ;
age : integer ;
married : Boolean ;
father, child, sibling : person ;
case s : sex of
male :
(enlisted, bearded : Boolean) ;
female :
(mother, programmer : Boolean)
end;
FileOfInteger = file of integer ;
参考 上の例で,count, range及びintegerは,同じ型を表す。yearが表す型及びnaturalが表す型は,
range, count及びintegerが表す型と適合してはいるが,別の型である。

6.5 変数の宣言及び表し方

       変数宣言 変数は,そこへ値を与えることのできる実体とする(6.8.2.2参照)。変数宣言の.識別子
6.5.1
... .
並びの中の各識別子は,それぞれ違った変数を表す。これらの変数は,変数宣言の型表記が表す型をもつ。
変数宣言 = 識別子並び : 型表記 .
. . . ...
ブロックの変数宣言部の変数宣言の識別子並びの中の識別子の出現は,その識別子の変数名としての定
義位置となる。この定義位置の領域は,そのブロックとする。構造型をもつ変数の構造は,その構造型の
構造とする。変数アクセスの使用を,それが表す変数へのその時点におけるアクセスという。変数アクセ
スは,純変数,成分変数,被指示変数又はバッファ変数のいずれであるかによって,それぞれ宣言された
変数,変数の成分,指示値が指示する(6.4.4参照)変数又はバッファ変数を表す。

――――― [JIS X 3008 pdf 21] ―――――

18
X 3008-1994 (ISO/IEC 7185: 1990)
変数アクセス = 純変数 | 成分変数 | 被指示変数 | バッファ変数 .
例 変数宣言部の例
var
x, y, z, max : real ;
i, j : integer ;
k : 0..9 ;
p, q, r : Boolean ;
operator : (plus, minus, times) ;
a : array [0..63] of real ;
c : colour ;
f : file of char ;
hue1, hue2 : set of colour ;
p1, p2 : person ;
m, m1, m2 : array [1..10, 1..10] of real ;
coord : polar ;
pooltape : array [1..4] of FileOfInteger ;
date : record
month : 1..12 ;
year : integer
end ;
参考 以下の例で用いる変数は,上の例のとおり宣言してあるものとする。

6.5.2 純変数

        純変数 = 変数名 .
変数名 = 識別子 .

6.5.3 成分変数

6.5.3.1 一般規則

 変数の成分は,変数とする。成分変数は,変数の成分を表す。変数の成分へのアクセ
スは,同時にその変数へのアクセスとする。変数の成分が参照中のとき,その変数も参照中とする。変数
の成分の値(もしあれば)は,その変数の値(もしあれば)の同じ成分とする。
成分変数 = 添字付き変数 | フィールド表記 .

6.5.3.2 添字付き変数

 添字付き変数は,配列型の変数の成分を表す。
添字付き変数 = 配列変数 [ 添字式 [{ , 添字式}] ] .
配列変数 = 変数アクセス .
添字式 = 式 .
.....
配列変数は,配列型の変数を表す変数アクセスでなければならない。添字式を一つだけ直接に含む添字
付き変数の場合,その添字式の値は,配列型の添字型に対して代入可能でなければならない。添字付き変
数は,配列変数がもつ型の写像によって,添字式の値と対応する成分を表す(6.4.3.2参照)。
例1. a [12]
a [i+j]
m [k]
配列変数がまた添字付き変数である場合,省略形が許容されていなければならない。省略形は,完全形

――――― [JIS X 3008 pdf 22] ―――――

                                                                                             19
X 3008-1994 (ISO/IEC 7185: 1990)
の“] [”をコンマで置き換えた形とする。省略形と完全形とは,等価とする。
...
添字付き変数の中の,添字式の評価及び配列変数のアクセスの順序は,処理系依存とする。
例2. m [k] [l]
m [k, l]
参考 この二つの例は,同じ成分変数を表す。

6.5.3.3 フィールド表記

 フィールド表記は,次のいずれかの変数を表す。
・ フィールド表記の.レコード変数が表す変数の成分で,フィールド表記の.フィールド指定部の.フィ
ールド名に結合したもの(6.4.3.3参照)。
・ フィールド表記の.フィールド表記名(6.8.3.10参照)が表す変数。
レコード変数は,レコード型の変数を表す変数アクセスでなければならない。
...
フィールド表記の中のレコード変数の出現は,そのレコード変数のもつレコード型の成分に結合したす
.
べてのフィールド名の定義位置となる。この定義位置の領域は,そのフィールド表記のフィールド指定部
とする。
フィールド表記 = レコード変数 . フィールド指定部
| フィールド表記名 .
レコード変数 = 変数アクセス .
フィールド指定部 = フィールド名 .
例 p2↑.mother
coord. theta
可変部の選択子がフィールドでない場合,その可変部の可変要素の成分へのアクセスは,その可変要素
に結合した選択子型の値(6.4.3.3参照)を選択子に与える。可変要素の成分が参照中又はアクセス中のと
きに,その可変要素が有効でなくなれば,誤りとする。
可変要素が有効でなくなったとき,そのすべての成分は,全面的不定とする。
参考 可変部の選択子が不定であれば,可変部のどの可変要素も有効ではない。
.

6.5.4 被指示変数

 被指示変数は,被指示変数のポインタ変数の値が指示する変数(もしあれば)を表す
(6.4.4及び6.6.5.3参照)。
被指示変数 = ポインタ変数 ↑ .
ポインタ変数 = 変数アクセス .
標準手続きnew(6.6.5.3参照)によって作成した変数は,プログラムブロックの駆動が終了するか,又
はその変数を指示する指示値が消去される(標準手続きdispose, 6.6.5.3参照)まで,アクセスできる。
参考 変数がアクセスできるかどうかは,その指示値を与えられたポインタ変数が存在するかどうか
にも依存する。
.
ポインタ変数は,ポインタ型の変数を表す変数アクセスでなければならない。被指示変数のポインタ変
数が不定であるか又はnil値を表すならば,誤りとする。被指示変数が参照中であるとき,その被指示変
数を指示する値をそのポインタ型の値の集合から消去(6.6.5.3参照)すれば,誤りとする。
例 p1↑
p1↑.father↑
p1↑.sibling↑.father↑

――――― [JIS X 3008 pdf 23] ―――――

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

6.5.5 バッファ変数

 ファイル変数は,ファイル型の変数を表す変数アクセスでなければならない。バッ
.
ファ変数は,バッファ変数のファイル変数が表す変数に結合した変数を表す。テキストファイルに結合し
.
たバッファ変数の型は,文字型とする。それ以外のバッファ変数の型は,バッファ変数のファイル変数の
もつファイル型の成分型とする。
バッファ変数 = ファイル変数 ↑ .
ファイル変数 = 変数アクセス .
例 input↑
pooltape [2] ↑
バッファ変数f↑が参照中であるとき,ファイル変数fの値を変更すれば,誤りとする。バッファ変数へ
のアクセスは,結合したファイル変数へのアクセスともする。バッファ変数が参照中のとき,結合したフ
ァイル変数も参照中とする。

6.6 手続き宣言・関数宣言

6.6.1 手続き宣言

        手続き宣言 = 手続き頭部 ; 指令
| 手続き標示 ; 手続きブロック
| 手続き頭部 ; 手続きブロック .
手続き頭部 = procedure 識別子 [ 仮引数並び ] .
手続き標示 = procedure 手続き名 .
手続き名 = 識別子 .
手続きブロック = ブロック .
. ...
手続き宣言の手続き頭部の中に仮引数並びがあれば,それに応じて,その手続き頭部の識別子に結合し
引すう
た手続きブロック(もしあれば)のかり仮ひき
数が定まる。
. ...
手続き宣言の手続き頭部の中の識別子の出現は,その識別子の手続き名としての定義位置となる。この
.....
定義位置の領域は,その手続き宣言を直接に含むブロックとする。
...
..指令forwardがある手続き宣言の.手続き頭部の中に
その中に ,手続き名としての定義位置をもつ識別子
. ...
には,手続き宣言の手続き標示の中の手続き名としての引用がちょうど1回だけなければならない。しか
..... .....
も,その手続き頭部を直接に含む手続き関数宣言部が,その手続き標示を直接に含まなければならない。
. . ...
手続き宣言の手続きブロック(もしあれば)は,その手続き宣言の手続き頭部の中の識別子又はその手
. ...
続き宣言の手続き標示の中の手続き名のいずれかと結合する。
一つの手続き名に結合する手続きブロックは,1個以下でなければならない。
例1. 手続き関数宣言部の例
参考 この例は,水準0ではない。
procedure AddVectors (var A, B, C : array [low..high : natural] of real) ;
var
i : natural ;
begin
for i : = low to high do A [i] : = B [i] + C [i]
end [{ AddVectors}] ;
例2. 手続き関数宣言部の例
procedure readinteger (var f : text; var x : integer) ;

――――― [JIS X 3008 pdf 24] ―――――

                                                                                             21
X 3008-1994 (ISO/IEC 7185: 1990)
var
i : natural ;
begin
while f↑ = do get (f) ;
[{ バッファ変数の値は,空白以外の最初の文字である。}]
i:=0;
while f↑ in [0..9] do begin
i : = (10 * i) + (ord(f↑) - ord (0) ) ;
get (f)
end;
[{ バッファ変数の値は,数字以外の文字である。}]
x:=i
[{ もちろん,数字がなければ,xは0である。}]
end ;
procedure bisect (function f(x : real) : real ;
a, b : real ;
var result : real) ;
[{ この手続きは,二分法によって区間(a, b)の中のf (x) の零点を求め,最後の引数にその
近似値を返す。この手続きが呼ばれたとき,a, bの値は,不変条件Pを満たすと仮定する。
P = (f (a) < 0) nd (f (b) = 0)}]
const
eps = 1e-10 ;
var
midpoint : real ;
begin
[{ 呼出し時の仮定から不変条件Pが成立する。}]
midpoint : = a ;
while abs (a - b) > eps * abs (a) o begin
midpoint : = (a+b) /2 ;
if f (midpoint) < 0 then a : = midpoint
else b : = midpoint
[{ これによって不変条件Pが再び成立する。
midpointの値がa, bのどちらとも違えば,区間 (a, b) は縮小する。}]
end ;
[{ ループ脱出条件とPによって,十分小さな区間に零点が含まれている
ことが保証される。零点としてmidpointを返す。}]
result : = midpoint
end ;
procedure PrepareForAppending (var f : FileOfInteger) ;
[{ この手続きは,resetが適用できる任意の状態のファイルを,その最後にデー

――――― [JIS X 3008 pdf 25] ―――――

次のページ PDF 26

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

  • ISO/IEC 7185:1990(IDT)

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