この規格ページの目次
- 6.1.9 字句の代替表現
- 6.2 ブロック・有効範囲・駆動
- 6.2.1 ブロック
- 6.2.2 有効範囲
- 6.2.2.1
- 6.2.2.2
- 6.2.2.3
- 6.2.2.4
- 6.2.2.5
- 6.2.2.6
- 6.2.2.7
- 6.2.2.8
- 6.2.2.9
- 6.2.3 駆動
- 6.2.3.1
- 6.2.3.2
- 6.2.3.3
- 6.2.3.4
- 6.2.3.5
- 6.3 定数定義
- 6.4 型定義
- 6.4.1 一般規則
- 6.4.2 単純型
- 6.4.2.1 一般規則
- 6.4.2.2 標準の単純型
- 6.4.2.3 列挙型
- 6.4.2.4 部分範囲型
- 6.4.3 構造型
- 6.4.3.1 一般規則
- JIS X 3008:1994の引用国際規格 ISO 一覧
- JIS X 3008:1994の国際規格 ICS 分類一覧
7
X 3008-1994 (ISO/IEC 7185: 1990)
規格を読みやすくするためのものであって,これらの文字が含まれる注釈を受け入れることを
処理系に要求するものではない。
参考1. 注釈は,[{ で始まって*) で終わってもよいし,(*で始まって}]で終わってもよい。
2. 列 (*) は注釈本体の一部とはなりえない。一方,列[{ )はなりえる。
注釈,空白(文字列中を除く。)及び改行を字句分離符という。0個以上の字句分離符を,相続く字句の
間,プログラムの最初の字句の前,又はプログラムの最後の字句の後に置いてもよい。相続く字句のそれ
ぞれが,識別子,予約語,ラベル又は符号なし数である場合,その間には少なくとも1個の字句分離符を
置かなければならない。一つの字句の中に字句分離符があってはならない。
6.1.9 字句の代替表現
6.1.16.1.8に示す字句及び字句分離符の表現(文字の列(*及び*)は除く。)を,
これらの字句及び字句分離符の基準表現とする。
基準表現を扱うことのできない処理系でもPascalが使えるようにするために,代替表現を設ける。必要
な文字が文字集合に含まれている場合,処理系は,基準表現も代替表現もともに処理しなければならない。
それぞれの字句又は字句分離符を表現の違いで区別して扱ってはならない。基準表現が扱えるかどうか,
代替表現のうち@が扱えるかどうかは,処理系定義とする。
字句の代替表現は,次のとおりとする。
基準表現 代替表現
↑ @
[ (.
] .)
参考1. 文字↑は,ISO 646の国別表現によっては文字^と同等とみなされている。この規格では,見
やすさを考慮して,文字↑を用いる。
参考 文字↑は,JIS X 0201の文字^に対応する。
注釈両端の[{ 及び}]は,基準表現とする。(* 及び *)は,代替表現とする(6.1.8参照)。
参考2. 1.2(f)も参照のこと。
6.2 ブロック・有効範囲・駆動
.. ..... ..
6.2.1 ブロック
ラベルを含むラベル宣言部を直接に含むブロックは,中にそのラベルがある文をちょう
..... . ...
ど一つだけ直接に含まなければならない。ブロックのラベル宣言部の中のラベルの出現は,そのラベルの
定義位置となる。この定義位置の領域は,そのブロックとする。そのラベルのそれぞれの引用(6.2.2.8参
照)は,ラベルとする。ブロックの駆動の内部では,そのラベルのすべての引用は,その駆動のアルゴリ
ズムの中のその文に対応するプログラム内位置を表す (6.2.3.2(b)参照)。
ブロック = ラベル宣言部 定数定義部 型定義部 変数宣言部 手続き関数宣言部 実行部 .
ラベル宣言部 = [ label ラベル [{ , ラベル}] ; ] .
定数定義部 = [ const 定数定義 ; [{ 定数定義 ;}] ] .
型定義部 = [ type 型定義 ; [{ 型定義 ;}] ] .
変数宣言部 = [ var 変数宣言 ; [{ 変数宣言 ;}] ] .
手続き関数宣言部 = [{ ( 手続き宣言 | 関数宣言 ) ;}] .
実行部は,そのブロックが駆動されたときに実行されるアルゴリズムの動作を指定する。
実行部 = 複合文 .
6.2.2 有効範囲
..
6.2.2.1
プログラムブロックに含まれるすべての識別子及びラベルには,定義位置がなければならない。
――――― [JIS X 3008 pdf 11] ―――――
8
X 3008-1994 (ISO/IEC 7185: 1990)
6.2.2.2
定義位置は,領域(プログラムの文面の一部)及び有効範囲(その領域の一部又は全部)をもつ。
6.2.2.3
各定義位置の領域は,別に規定する(6.2.1, 6.2.2.10, 6.3, 6.4.1, 6.4.2.3, 6.4.3.3, 6.5.1, 6.5.3.3, 6.6.1,
6.6.2, 6.6.3.1, 6.8.3.10及び6.10参照)。
6.2.2.4
定義位置の有効範囲は,その定義位置の領域全体(それに囲まれるすべての領域を含む。)とす
る。ただし,その例外を6.2.2.5及び6.2.2.6に規定する。
6.2.2.5
領域Aに対する定義位置をもつ識別子又はラベルがあり,Aに囲まれる領域Bに対するそれと同
じつづりの識別子又はラベルの定義位置がある場合,領域B(Bに囲まれるすべての領域を含む。)は,領
域Aに対するその定義位置の有効範囲から除外する。
.
6.2.2.6
フィールド表記のフィールド指定部に相当する領域は,それを囲む有効範囲から除外する。
6.2.2.7
ある領域に対する定義位置をもつ識別子又はラベルがあるとき,それと同じつづりの識別子又は
ラベルの,同じ領域に対する別の定義位置があってはならない。
6.2.2.8
識別子又はラベルの定義位置の有効範囲の中の,それと同じつづりの識別子又はラベルのそれぞ
れの出現を,その定義位置をもつ識別子又はラベルの引用という。ただし,定義位置での出現(定義とし
ての出現という。)は除く。有効範囲の外側での出現は,引用ではない。
参考 識別子又はラベルの定義位置の有効範囲の中では,その有効範囲を囲む領域に対する定義位置
をもつそれと区別できない識別子又はラベルの引用は,ありえない。
..
6.2.2.9
識別子又はラベルのプログラムブロックに含まれるすべての引用は,その識別子又はラベルの定
.
義位置より前にあってはならない。ただし,書下しポインタ型の被指示型の型名としての引用のうち,そ
..
の書下しポインタ型がその型名の定義位置を含む型定義部に含まれるものを除く。
6.2.2.1
0 標準の値,標準の型,標準の手続き又は標準の関数を表す標準の識別子には,プログラムを囲む領域に対する定義位置があるものとして扱う(6.1.3, 6.3, 6.4.1及び6.6.4.1参照)。参考 標準の識別子のうち,input及びoutputは,変数を表すものだから対象外となる。
6.2.2.1
1 識別子又はラベルは,どの引用においても,それが定義位置で表すものを表す。 参考1. 構文の定義において,識別子の引用は,“···名”の形(例えば,“型名”)で記述する。一方,定義位置に対しては,“識別子”を用いる。
2. この形は,その引用が表す実体の性質を提示する。例えば,変数名は変数を表す。
6.2.3 駆動
.
6.2.3.1
手続き名又は関数名が,あるブロックの手続き関数宣言部にそのブロックを領域とする定義位置
をもつとき,その手続き名又は関数名はそのブロックに局所的であるという。
6.2.3.2
ブロックの駆動は,次のものを包含する。
(a) そのブロックの.実行部に対するアルゴリズム。そのアルゴリズムが完了したとき,駆動も終了する
(6.8.2.4参照)。
...
(b) そのブロックの.ラベル宣言部の中の
各ラベルの定義位置に対して,対応するプログラム内位置(6.2.1
参照)。
(c) そのブロックを領域とする定義位置をもつ各変数名に対して,その変数名に結合した型をもつ変数。
(d) そのブロックに局所的な各手続き名に対して,その手続き名に結合した手続きブロック及びその手続
きブロックの仮引数をもつ手続き。
(e) そのブロックに局所的な各関数名に対して,その関数名に結合した関数ブロック,その関数名に結合
した結果の型及びその関数ブロックの仮引数をもつ関数。
(f) そのブロックが関数ブロックであるときは,その関数ブロックに結合した結果の型をもつ結果。
――――― [JIS X 3008 pdf 12] ―――――
9
X 3008-1994 (ISO/IEC 7185: 1990)
参考 各駆動の包含する,アルゴリズム,プログラム内位置,変数,手続き及び関数は,他の駆動の
包含するものと異なる。
.
6.2.3.3
手続き又は関数の駆動とは,その手続きの手続きブロック又はその関数の関数ブロックのブロッ
クの駆動のことをいう。手続き又は関数の駆動は,次の駆動の内部にあるという。
(a) その手続き又は関数を包含する駆動。
(b) (a)の駆動を内部とするすべての駆動。
参考 ブロックBの駆動は,Bを含むブロックの駆動の内部だけにありうる。したがって,Bの駆動
が,Bの別の駆動の内部にあることはない。
ブロックの駆動の内部にあっては,ラベル,変数名又はそのブロックに局所的な手続き名若しくは関数
名の引用は,その駆動での対応するプログラム内位置,変数,手続き又は関数をそれぞれ表す。ただし,
...
関数名が表す関数の駆動の内部において,代入文の中のその関数名は,その駆動の結果を表す。
6.2.3.4
駆動の包含するアルゴリズムに含まれる手続き呼出し文又は関数呼出しで,ブロックの駆動を指
定するものを,そのブロックの駆動の駆動位置という。
6.2.3.5
駆動が包含するすべての変数(プログラム引数並びに含まれるものを除く。)及び駆動の結果は,
その駆動が開始された時点で全面的不定とする。アルゴリズム,プログラム内位置,変数,手続き及び関
数は(もしあれば),その駆動が終了するまで存在する。
6.3 定数定義
定数定義は,値を表す識別子を導入する。
定数定義 = 識別子 = 定数 .
定数 = [ 符号 ] ( 符号なし数 | 定数名 )
| 文字列 .
定数名 = 識別子 .
. . ...
ブロックの定数定義部の定数定義の中の識別子の出現は,その識別子の定義位置となる。この定義位置
. .
の領域は,そのブロックとする。定数定義の定数は,その定数定義の識別子の引用を含んではならない。
.
その識別子のそれぞれの引用は,定数名とする。それぞれの引用は,定数定義の定数が表す値を表す。符
.. ...
号を含む定数の中の定数名は,実数型又は整数型の値を表さなければならない。標準の定数名は,6.4.2.2
及び6.7.2.2に規定する。
6.4 型定義
6.4.1 一般規則
型定義は,型を表す識別子を導入する。型は,すべての値及び変数がもつ属性とする。
かきくだ
書下し型のそれぞれの出現は,他のどの書下し型の出現とも異なる型を表す。
型定義 = 識別子 = 型表記 .
型表記 = 型名 | 書下し型 .
書下し型 = 書下し順序型 | 書下し構造型 | 書下しポインタ型 .
. . ...
ブロックの型定義部の型定義の中の識別子の出現は,その識別子の定義位置となる。この定義位置の領
.
域は,そのブロックとする。その識別子のそれぞれの引用は,型名とする。それぞれの引用は,型定義の
. .
型表記が表す型を表す。型定義の型表記は,その型定義の識別子の引用を含んではならない。ただし,書
.
下しポインタ型の被指示型の型名としての引用を除く。
型は,単純型,構造型及びポインタ型とする。標準の型名及びそれに対応する標準の型は,6.4.2.2及び
6.4.3.5に規定する。
単純型名 = 型名 .
構造型名 = 型名 .
――――― [JIS X 3008 pdf 13] ―――――
10
X 3008-1994 (ISO/IEC 7185: 1990)
ポインタ型名 = 型名 .
型名 = 識別子 .
型名は,それの表す型に応じて,単純型名,構造型名又はポインタ型名という。
6.4.2 単純型
6.4.2.1 一般規則
単純型は,値の順序集合を定める。順序型の値は,整数の順序数をもつ。順序型の二
つの値の順序関係は,それらの順序数の順序関係と同じとする。順序型名は,順序型を表す型名でなけれ
ばならない。実数型名は,実数型を表す型名でなければならない。
単純型 = 順序型 | 実数型名 .
順序型 = 書下し順序型 | 順序型名 .
書下し順序型 = 列挙型 | 部分範囲型 .
順序型名 = 型名 .
実数型名 = 型名 .
6.4.2.2 標準の単純型
標準の単純型は,次のとおりとする。
(a) 整数型 標準の型名integerは,整数型を表す。整数型は,順序型とする。その値の集合は,整数の部
分集合とする(6.7.2.2参照)。整数型の値は,6.1.5に規定する符号付き整数で表す。整数型の値の順
序数は,その値そのものとする。
(b) 実数型 標準の型名realは,実数型を表す。実数型は,単純型とする。その値の集合は,実数の処理
系定義の部分集合とする。実数型の値は,6.1.5に規定する符号付き実数で表す。
(c) 論理型 標準の型名Booleanは,論理型を表す。論理型は,順序型とする。その値の集合は,標準の
定数名false及びtrueが表す真理値の列挙とする。ここで,falseはtrueに先行する。false及びtrueが
表す真理値の順序数は,それぞれ整数値0及び1とする。
(d) 文字型 標準の型名charは,文字型を表す。文字型は,順序型とする。その値の集合は,処理系定義
の文字の集合の列挙とする。その中には図形表現のないものがあってもよい。文字値の順序数は,文
字値を0から始まる連続した非負整数値に移す処理系定義の写像によって定まる整数型の値とする。
この写像に関して,次の(1)(3)の条件が成立する。
(1) 数字の09を表現する文字値は,数の順に順序づけられ,連続している。
(2) 大文字のAZを表現する文字値(使用できるとき)は,アルファベット順に順序づけられるが,
連続しているとは限らない。
(3) 小文字のazを表現する文字値(使用できるとき)は,アルファベット順に順序づけられるが,連
続しているとは限らない。
参考 標準の単純型に適用できる演算子は,6.7.2に規定する。
6.4.2.3 列挙型
列挙型 = ( 識別子並び ) .
識別子並び = 識別子 [{ , 識別子}] .
. ...
列挙型の識別子並びの中の識別子の出現は,その識別子の定義位置となる。この定義位置の領域は,そ
.....
の列挙型を直接に含むブロックとする。その識別子のそれぞれの引用は,定数名とする。ブロックの駆動
の内部では,その識別子の引用は,すべてその列挙型が表す型をもち,その型の値のうちで,その識別子
...
並びの中のその識別子の前に並んだ識別子の個数に等しい順序数をもつ値を表す。
参考 列挙型の定数は,その定義を与えた列に従って順序付けられる。その順序数は,0から順番に
与えられる。
――――― [JIS X 3008 pdf 14] ―――――
11
X 3008-1994 (ISO/IEC 7185: 1990)
例 (red, yellow, green, blue, tartan)
(club, diamond, heart, spade)
(married, divorced, widowed, single)
(scanning, found, notpresent)
(Busy, InterruptEnable, ParityError, OutOfPaper, LineBreak)
.
6.4.2.4 部分範囲型
部分範囲型は,部分範囲の最小値及び最大値を指定する。部分範囲型の最初の定数
.2番目の定数は最大値を示す。最小値は,最大値よりも小さいか,又は等
は最小値を示し,部分範囲型の
しくなければならない。二つの定数の型は,同じ順序型でなければならない。この順序型を,部分範囲型
の親の型という。
部分範囲型 = 定数 .. 定数 .
例 1..100
-10..+10
red..green
0..9
6.4.3 構造型
.
6.4.3.1 一般規則
書下し構造型は,その書下し構造型の詰めなし構造型に応じて,配列型,レコード型,
集合型及びファイル型に分類する。構造の値の成分は,値とする。
構造型 = 書下し構造型 | 構造型名 .
書下し構造型 = [ packed ] 詰めなし構造型 .
詰めなし構造型 = 配列型 | レコード型 | 集合型 | ファイル型 .
.....
書下し構造型が字句packedを直接に含む場合,その型を詰めありという。構造型に対する詰めありの指
定は,たとえその型の変数に対する演算又はその成分へのアクセスが記憶量又は実行時間の上で非能率に
なるとしても,値のデータ記憶域を節約するよう処理系に指示する。
構造型に対する詰めありの指定は,その構造型のデータ記憶域での表現だけに影響する。すなわち,成
分の型も構造型である場合,その成分のデータ記憶域が節約されるのは,その成分の型自身に詰めありの
指定があるときに限る。
参考 6.4.3.2, 6.4.5, 6.6.3.3, 6.6.3.8, 6.6.5.4及び6.7.1に示す場合には,型が詰めありか否かによってそ
の型をもつ実体の扱いに違いが生じる。
6.4.3.2 添じ字がた型の示す値から個々の成分への写像としての構造をもつ。それぞれの成
配列型 配列型は,そえ
分は,配列型の成分型の型表記が表す型をもつ。
配列型 = array [ 添字型 [{ , 添字型}] ] of 成分型 .
添字型 = 順序型 .
成分型 = 型表記 .
例1. array [1..100] of rea1
array [Boolean] of colour
二つ以上の添字型の列を指定する配列型は,次の配列型の省略形とする。
・ もとの指定の最初の添字型を添字型とする。
・ もとの指定の2番目以降の添字型の列をもち,もとの指定と同じ成分型をもつ配列型を成分型と
する。この配列型は,もとの指定が詰めありのとき,かつそのときに限り,詰めありとする。
省略形と完全形とは,等価とする。
――――― [JIS X 3008 pdf 15] ―――――
次のページ PDF 16
JIS X 3008:1994の引用国際規格 ISO 一覧
- ISO/IEC 7185:1990(IDT)
JIS X 3008:1994の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語