サイトトップへこのカテゴリの一覧へ

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

(1) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

目次 

ページ 

1. 適用範囲 ························································································································ 5 

1.1 ····································································································································· 5 

1.2 ····································································································································· 5 

2. 引用規格 ························································································································ 5 

3. 用語の定義 ····················································································································· 5 

3.1 誤 ······························································································································· 5 

3.2 拡 ······························································································································· 6 

3.3 処理系定義 ··················································································································· 6 

3.4 処理系依 ······················································································································ 6 

3.5 処理系 ························································································································· 6 

4. 定義の方法 ····················································································································· 6 

5. 規格準拠性 ····················································································································· 7 

5.1 処理系 ························································································································· 7 

5.2 プログラム ··················································································································· 8 

6. 要求事項 ························································································································ 8 

6.1 字句要素 ······················································································································ 8 

6.1.1 一般規則 ···················································································································· 9 

6.1.2 特殊記号 ···················································································································· 9 

6.1.3 識別子 ······················································································································· 9 

6.1.4 指令 ·························································································································· 9 

6.1.5 数 ····························································································································· 9 

6.1.6 ラベル ······················································································································ 10 

6.1.7 文字列 ······················································································································ 10 

6.1.8 字句分離符 ················································································································ 10 

6.1.9 字句の代替表現 ·········································································································· 11 

6.2 ブロック・有効範囲・駆動······························································································ 11 

6.2.1 ブロック ··················································································································· 11 

6.2.2 有効範囲 ··················································································································· 11 

6.2.2.1 ································································································································ 11 

6.2.2.2 ································································································································ 12 

6.2.2.3 ································································································································ 12 

6.2.2.4 ································································································································ 12 

6.2.2.5 ································································································································ 12 

6.2.2.6 ································································································································ 12 

6.2.2.7 ································································································································ 12 

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

(2) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ページ 

6.2.2.8 ································································································································ 12 

6.2.2.9 ································································································································ 12 

6.2.2.10 ······························································································································ 12 

6.2.2.11 ······························································································································ 12 

6.2.3 駆動 ························································································································· 12 

6.2.3.1 ································································································································ 12 

6.2.3.2 ································································································································ 12 

6.2.3.3 ································································································································ 13 

6.2.3.4 ································································································································ 13 

6.2.3.5 ································································································································ 13 

6.3 定数定義 ····················································································································· 13 

6.4 型定義 ························································································································ 13 

6.4.1 一般規則 ··················································································································· 13 

6.4.2 単純型 ······················································································································ 14 

6.4.2.1 一般規則 ················································································································· 14 

6.4.2.2 標準の単純型 ··········································································································· 14 

6.4.2.3 列挙型 ···················································································································· 14 

6.4.2.4 部分範囲型 ·············································································································· 15 

6.4.3 構造型 ······················································································································ 15 

6.4.3.1 一般規則 ················································································································· 15 

6.4.3.2 配列型 ···················································································································· 15 

6.4.3.3 レコード型 ·············································································································· 16 

6.4.3.4 集合型 ···················································································································· 18 

6.4.3.5 ファイル型 ·············································································································· 18 

6.4.4 ポインタ型 ················································································································ 20 

6.4.5 型の適合性 ················································································································ 20 

6.4.6 代入可能性 ················································································································ 20 

6.4.7 型定義部の例 ············································································································· 20 

6.5 変数の宣言及び表し方···································································································· 21 

6.5.1 変数宣言 ··················································································································· 21 

6.5.2 純変数 ······················································································································ 22 

6.5.3 成分変数 ··················································································································· 22 

6.5.3.1 一般規則 ················································································································· 22 

6.5.3.2 添字付き変数 ··········································································································· 22 

6.5.3.3 フィールド表記 ········································································································ 23 

6.5.4 被指示変数 ················································································································ 23 

6.5.5 バッファ変数 ············································································································· 24 

6.6 手続き宣言・関数宣言···································································································· 24 

6.6.1 手続き宣言 ················································································································ 24 

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

(3) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ページ 

6.6.2 関数宣言 ··················································································································· 26 

6.6.3 引数 ························································································································· 28 

6.6.3.1 一般規則 ················································································································· 28 

6.6.3.2 値引数 ···················································································································· 29 

6.6.3.3 変数引数 ················································································································· 29 

6.6.3.4 手続き引数 ·············································································································· 29 

6.6.3.5 関数引数 ················································································································· 29 

6.6.3.6 引数並びの同形性 ····································································································· 29 

6.6.3.7 整合配列引数 ··········································································································· 30 

6.6.3.7.1 一般規則 ··············································································································· 30 

6.6.3.7.2 値整合配列 ············································································································ 31 

6.6.3.7.3 変数整合配列 ········································································································· 31 

6.6.3.8 整合性 ···················································································································· 31 

6.6.4 標準手続き・標準関数 ································································································· 31 

6.6.5 標準手続き ················································································································ 31 

6.6.5.1 一般規則 ················································································································· 31 

6.6.5.2 ファイル操作手続き ·································································································· 32 

6.6.5.3 動的割当て手続き ····································································································· 33 

6.6.5.4 変換手続き ·············································································································· 34 

6.6.6 標準関数 ··················································································································· 35 

6.6.6.1 一般規則 ················································································································· 35 

6.6.6.2 算術関数 ················································································································· 35 

6.6.6.3 変換関数 ················································································································· 35 

6.6.6.4 順序関数 ················································································································· 35 

6.6.6.5 論理関数 ················································································································· 36 

6.7 式 ······························································································································ 36 

6.7.1 一般規則 ··················································································································· 36 

6.7.2 演算子 ······················································································································ 38 

6.7.2.1 一般規則 ················································································································· 38 

6.7.2.2 算術演算子 ·············································································································· 38 

6.7.2.3 論理演算子 ·············································································································· 39 

6.7.2.4 集合演算子 ·············································································································· 39 

6.7.2.5 関係演算子 ·············································································································· 39 

6.7.3 関数呼出し ················································································································ 40 

6.8 文 ······························································································································ 40 

6.8.1 一般規則 ··················································································································· 40 

6.8.2 単純文 ······················································································································ 40 

6.8.2.1 一般規則 ················································································································· 40 

6.8.2.2 代入文 ···················································································································· 41 

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

(4) 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ページ 

6.8.2.3 手続き呼出し文 ········································································································ 41 

6.8.2.4 goto文 ···················································································································· 41 

6.8.3 構造文 ······················································································································ 41 

6.8.3.1 一般規則 ················································································································· 42 

6.8.3.2 複合文 ···················································································································· 42 

6.8.3.3 条件文 ···················································································································· 42 

6.8.3.4 if文 ······················································································································· 42 

6.8.3.5 case文 ···················································································································· 42 

6.8.3.6 繰返し文 ················································································································· 42 

6.8.3.7 repeat文 ·················································································································· 43 

6.8.3.8 while文 ·················································································································· 43 

6.8.3.9 for文 ······················································································································ 43 

6.8.3.10 with文 ·················································································································· 45 

6.9 入出力 ························································································································ 46 

6.9.1 手続きread ················································································································ 46 

6.9.2 手続きreadln ·············································································································· 47 

6.9.3 手続きwrite ··············································································································· 47 

6.9.3.1 write引数 ················································································································ 48 

6.9.3.2 文字型 ···················································································································· 48 

6.9.3.3 整数型 ···················································································································· 48 

6.9.3.4 実数型 ···················································································································· 49 

6.9.3.4.1 浮動小数点表現 ······································································································ 49 

6.9.3.4.2 固定小数点表現 ······································································································ 50 

6.9.3.5 ································································································································ 50 

6.9.3.6 文字列型 ················································································································· 50 

6.9.4 手続きwriteln ············································································································· 51 

6.9.5 手続きpage ················································································································ 51 

6.10 プログラム ················································································································· 51 

附属書A(参考) 構文規則 ································································································· 54 

附属書B(参考) 索引 ······································································································· 59 

附属書C(参考) 標準の識別子 ···························································································· 63 

附属書D(参考) 誤り ······································································································· 64 

附属書E(参考) 処理系定義の機能 ······················································································ 67 

附属書F(参考) 処理系依存の機能 ······················································································ 68 

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

日本工業規格          JIS 

X 3008-1994 

(ISO/IEC 7185: 1990) 

プログラム言語Pascal 

Programming Language Pascal 

日本工業規格としてのまえがき 

この規格は,1990年に発行されたISO/IEC 7185 (Information technology−Programming languages−Pascal)

を翻訳し,技術的内容及び規格票の様式を変更することなく作成した日本工業規格である。 

なお,この規格で点線の下線を施してある“参考”は,原国際規格にはない事項である。 

1. 適用範囲 

1.1 

この規格は,プログラム言語Pascalの処理系及び規格準拠プログラムに対する要求事項を規定する

ことによって,Pascalの構文規則及び意味規則を定める。処理系及びプログラムの,規格に対する準拠の

仕方に,それぞれ2水準を置く。 

1.2 

この規格は,次の事項を規定しない。 

(a) プログラム及びデータの大きさ又は複雑さについて,特定のデータ処理システム又は処理系が処理で

きる限界並びにそれらの限界を超えた場合の措置。 

(b) Pascalの処理系を実現するためのデータ処理システムの最低条件。 

(c) プログラムブロックを駆動する方法及びPascalプログラムを変換し実行する環境を制御するための指

令。 

(d) Pascalで書いたプログラムをデータ処理システムが実行できるように変換するための機構。 

(e) 誤り又は警告を報告する方法。 

(f) 人間が読むことを想定してプログラムを公表する際の印刷上の表現。 

2. 引用規格 この規格では,次に示す規格を引用することによって,この規格の要件の一部とする。そ

れぞれの規格には,この規格の発行時点での有効な版を明示してある。どの規格にも改正の可能性がある

から,この規格に従った合意を形成するに当たっては,それぞれの規格の最新版を調べて適用することが

望ましい。有効な国際規格がどれであるかは,ISO及びIECの参加団体が保持している。 

ISO 646 : 1983 Information processing−ISO 7-bit coded character set for information interchange 

参考 JIS X 0201-1976(情報交換用符号)がこの規格と整合している。 

3. 用語の定義 この規格で用いる主な用語の定義は,次のとおりとする。 

3.1 

誤り (error)  この規格の要求事項に対するプログラムの違反であって,処理系が必ずしも検出しな

くてよいもの。 

参考1. この規格に違反するかしないかが,読み込むデータに依存するプログラム,又は処理系定義

の機能をその処理系がどう定義しているかに依存するプログラムを作ることができる場合,

background image

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

その要求事項に対する違反を誤りと規定する。処理系は,これらの情報を使わなくても,そ

うした違反があると報告できることもある。しかし,違反となるかどうかが,実行してみる

か,実行をシミュレートしてみるか,又はそうした情報をもとにして検証手順を踏んでみる

かしなければ分からない場合が必ずある。要求事項に対する違反のうち,違反となるかどう

かがそうした情報を使わずに判定できるものは,誤りといわない。 

2. 処理系は,できる限り多くの誤りをできる限り完全に検出するように努めることが望ましい。

ただし,その検出が過大な負担となる場合は,この限りでない。 

3.2 

拡張 (extension)  この規格の6.に対する変更のうち,この規格に準拠するプログラム(5.2参照)

を排除することがないもの。ただし,幾つかの特定のつづりの識別子の使用を禁じてもよい(6.1.2及び6.1.3

参照)。 

3.3 

処理系定義 (implementation-defined)  処理系によって異なっているかもしれないが,個々の処理系

では定義されている。 

3.4 

処理系依存 (implementation-dependent)  処理系によって異なっているかもしれず,個々の処理系で

定義されているとも限らない。 

3.5 

処理系 (processor)  プログラムを入力として受け取り,その実行の準備を行い,それをデータとと

もに実行して結果をもたらすためのシステム又は機構。 

参考 処理系とは,インタプリタ又はコンパイラと実行時システムといったものだけではなく,その

背後にある計算機とオペレーティングシステム又はそれと同等の機構をも含めていう。例えば,

コンパイラ単独では処理系とはいわない。 

4. 定義の方法 この規格では,プログラム要素の構文を規定するのにBackus−Naur記法に基づいた記述

法を用いる。本来のBackus−Naur記法に幾つかの変更を加えて,記述をより便利にし,再帰的な生成の代

わりに繰返しによる生成ができるようにした。この記述法で使う記号の意味を表1に示す。プログラム要

素についてのそれ以上の規定は,文章又は等価なプログラムの断片によって示す。こうしたプログラムの

断片は,この規格の関連する要求事項に従った意味をもつ。そこでは,6.で標準の識別子として定義する

識別子は,それぞれ対応する標準の実体を表す。 

表1 構文の記述に使う記号 

記号 

意味 

定義する 

部分的に定義する 

又は 

・ 

定義の終わり 

[x] 

x又は空 

{x} 

xを0個以上並べたもの 

(x | y) 

x又はy(一つにまとめて扱うために用いる) 

ʻxyzʼ 

終端記号xyz 

超識別子 

非終端記号 

超識別子は,漢字,仮名及び英字の列とする。 

生成規則の中の終端記号又は非終端記号の列は,その各々が生成する最終的な文字列をその順に連結し

たものを表す。6.1では,この連結は,字句どおりのものとする。すなわち,他の文字をそれらの間に置い

てはならない。6.2以下での連結は,6.1の規則に従う。  

Pascalのプログラムを書くのに必要な文字は,6.1で定義する字句及び字句分離符を書くのに必要となる

background image

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

文字として間接的に定める。 

終端記号及び非終端記号についての関係を表すのに,“の”,“の中の”,“含む”又は“直接に含む”とい

ういい方をする場合,その意味は,次のとおりとする。 

・ yの.x――yを定義している生成規則の右辺に現れるx 

・ yの中の

...x――“yの.x”と同義 

・ xを含む

..y――1回又は何回かの生成を経て,xを生成するy 

・ xを直接に含む

.....y――xを含む

..yのうち,そのxを含む

..

他のyを含ま

..

ないもの 

これらの規約は,6.において構文上の要求事項,及び意味上の規定を与える際の構文上の条件を規定す

るのに用いる。 

この規格の中の参考は,規格の内容をより明らかにし,規格を適用する際の助けとするための記述とす

る。参考は,この規格の一部ではない。 

この規格の中の例は,参考と同等とする。 

5. 規格準拠性 この規格に対する準拠の仕方は,水準0及び水準1の2種類とする。水準0は,整合配

列引数を含まない。水準1は,整合配列引数を含む。 

5.1 

処理系 この規格に準拠する処理系とは,次の条件を満たすものをいう。 

(a) 水準0の準拠の場合,6.のうち6.6.3.6(e), 6.6.3.7及び6.6.3.8以外で規定する言語の全機能を,6.に定義

する意味をもって受け入れる。 

(b) 水準1の準拠の場合,6.に規定する言語の全機能を,6.に定義する意味をもって受け入れる。 

(c) 6.に規定する言語のどの機能を実現するにあたっても,プログラム中に6.の規定と違う書き方をする

よう求めたり,何かを追加して書くよう求めたりすることがない。 

(d) すべての処理系定義の機能に対して,その定義を与えた文書が用意してある。 

(e) この規格のすべての要求事項(それに対する違反を誤りと規定する場合を除く。)に対して,与えられ

たプログラムが違反しているかどうかを判定し,その結果をプログラムブロックの実行に先立って処

理系の利用者に報告することができる。違反があれば,プログラムブロックの実行を禁止しなければ

ならない。 

(f) 誤りと規定する違反のそれぞれに対して,次のいずれかの扱いをする。 

(1) 用意した文書に,誤りについては報告しないと明記し,用意した文書の中にそうした扱いをする個々

の場合を記した独立した節を設けておく。 

(2) プログラムの実行準備の段階で,誤りがある,又は実行時に誤りが起こるかもしれないと報告する。

そのような報告を出した場合にも,実行準備を継続することができる。その場合,プログラムブロ

ックの実行を禁止することもできる。 

(3) プログラムの実行中に,誤りが起こったと報告する。 

更に,プログラムの実行中に誤りを報告したときには,その実行を終了する。文の中で誤りが生じ

たとき,その文の実行は完了しない。 

参考1. したがって,処理をプログラムの実行直前で終えるか,実行途中まで継続するかは,利用者

が指定できる。 

(g) 6.に規定のない機能又はそこで禁止する機能を処理系が受け入れる場合には,それらの機能のすべて

を記した文書が用意してある。そうした拡張は,“extensions to Pascal as speciffied by ISO/IEC 7185”と

明記する。 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

参考 日本語による場合は,“JIS X 3008に対する拡張”と明記する。 

(h) こうした拡張のいかなる使用に対しても,誤りに対するのと同様に処置することができる。 

(i) 処理系依存の機能のいかなる使用に対しても,誤りに対するのと同様に処置することができる。 

参考2. 5.1で用いた“できる”という言葉は,報告及びその後の処置が利用者の指定によって切り替

えられる仕組みにしておいてもよいことを示す。 

処理系が,この規格に完全に又は部分的に準拠している,と表示する場合には,次の様式によらなけれ

ばならない。準拠の表示は,その処理系の使用時に出力するか,又は用意した文書に明記しておくかでな

ければならない。処理系がこの規格に完全に準拠している場合,準拠の表示は,次のとおりとする。 

“本処理系” complies with the requirements of level“番号”of ISO/IEC 7185.  

参考 

日本語による場合は,次のとおりとする。 

 “本処理系”は,JIS X 3008の水準“番号”に準拠している。 

処理系がこの規格の一部だけに準拠する場合,上の準拠の表示を行ってはならない。その場合の準拠の

表示は,次のとおりとする。 

“本処理系”complies with the requirements of level“番号”of ISO/IEC 7185, with the following 

exceptions:“この規格の要求事項のうち処理系が準拠していないものの完全な一覧表,又はそうし

た文書の参照” 

参考 

日本語による場合の書出しは,次のとおりとする。 

“本処理系”は,次の事項を除いてJIS X 3008の水準“番号”に準拠している。 

いずれの場合も,“本処理系”の部分は,その処理系を間違いなく識別できる名前で置き換え,“番号”

の部分は,該当の水準番号で置き換えなければならない。 

参考3. この規格に完全には準拠しない処理系は,準拠していない事項についての完全な明細をその

準拠の表示に書かなくてもよい。準拠していない事項を識別するのに十分な情報を網羅した

文書を参照しておくだけでよい。 

5.2 

プログラム この規格に準拠するプログラムとは,次の条件を満たすものをいう。 

(a) 水準0の準拠の場合,6.のうち6.6.3.6(e), 6.6.3.7及び6.6.3.8以外で規定する言語の機能だけを使って

いる。 

(b) 水準1の準拠の場合,6.に規定する言語の機能だけを使っている。 

(c) 処理系依存の機能についての特定の解釈に依存していない。 

参考1. この規格に準拠するプログラムは,処理系定義の特定の値又は機能に依存していてもよい。 

2. 規格準拠プログラム及び規格準拠処理系に対する規定は,規格準拠プログラムを規格準拠処

理系で処理した場合に,常に同じ結果が得られることを保証するものではない。結果は,同

じかもしれないし,異なるかもしれない。それはプログラムによる。このことを例示する簡

単なプログラムに次のものがある。 

program x (output) ; begin writeln (maxint) end.  

6. 要求事項 

6.1 

字句要素 

参考 6.1に示す構文規則は,文字から字句要素を構成する方法及びこれらの字句要素の分離の仕方を

与える。これらには,6.1以外で規定する構文に対する規則がそのまま当てはまるわけではない。 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.1.1 

一般規則 Pascalプログラムを構成する字句要素は,特殊記号,識別子,指令,符号なし数,ラベ

ル及び文字列とする。文字列(6.1.7参照)中を除いて,英字の表現の違い(大文字・小文字の別,字体の

違いなど)は,プログラムの意味に何ら影響を与えない。 

英字 

= ʻaʼ | ʻbʼ| ʻcʼ | ʻdʼ| ʻeʼ | ʻfʼ | ʻgʼ| ʻhʼ| ʻiʼ 

| ʻjʼ | ʻkʼ| ʻlʼ | ʻmʼ| ʻnʼ| ʻoʼ| ʻpʼ| ʻqʼ| ʻrʼ 

| ʻsʼ | ʻtʼ | ʻuʼ| ʻvʼ| ʻwʼ| ʻxʼ| ʻyʼ| ʻzʼ.  

数字 

= ʻ0ʼ| ʻ1ʼ| ʻ2ʼ| ʻ3ʼ| ʻ4ʼ  

  

  

  

| ʻ5ʼ| ʻ6ʼ| ʻ7ʼ| ʻ8ʼ| ʻ9ʼ.  

  

  

  

6.1.2 

特殊記号 特殊記号は,それぞれ特別な意味をもち,構文上の単位を区切る働きをもつ。 

特殊記号 

=ʻ+ʼ|ʻ-ʼ|ʻ*ʼ|ʻ/ʼ|ʻ=ʼ|ʻ<ʼ|ʻ>ʼ|ʻ[ʼ|ʻ]ʼ 

|ʻ.ʼ|ʻ,ʼ|ʻ:ʼ|ʻ;ʼ|ʻ↑ʼ|ʻ(ʼ|ʻ)ʼ 

|ʻ<>ʼ|ʻ<=ʼ|ʻ>=ʼ|ʻ: =ʼ|ʻ..ʼ|予約語 . 

予約語 

=ʻandʼ|ʻarrayʼ|ʻbeginʼ|ʻcaseʼ|ʻconstʼ|ʻdivʼ 

|ʻdoʼ|ʻdowntoʼ|ʻelseʼ|ʻendʼ|ʻfileʼ|ʻforʼ 

|ʻfunctionʼ|ʻgotoʼ|ʻifʼ|ʻinʼ|ʻlabelʼ|ʻmodʼ 

|ʻnilʼ|ʻnotʼ|ʻofʼ|ʻorʼ|ʻpackedʼ|ʻprocedureʼ 

|ʻprogramʼ|ʻrecordʼ|ʻrepeatʼ|ʻsetʼ|ʻthenʼ 

|ʻtoʼ|ʻtypeʼ|ʻuntilʼ|ʻvarʼ|ʻwhileʼ|ʻwithʼ 

6.1.3 

識別子 識別子は,どんな長さでもよい。識別子を構成している文字を,英字の大文字・小文字の

区別をせずに順に並べたものを,その識別子のつづりという。識別子は,どの予約語とも異なったつづり

でなければならない。標準の識別子と規定するものは,特別な働きをもつ(6.2.2.10及び6.10参照)。 

識別子 = 英字 { 英字 | 数字 } . 

例 X 

time 

readinteger 

WG4 

AlterHeatSetting 

InquireWorkstationTransformation 

InquireWorkstationIdentification 

6.1.4 

指令 指令は,手続き宣言又は関数宣言の中

..

でだけ用いる。指令は,標準の指令forwardだけとす

る(6.6.1及び6.6.2参照)。指令は,どの予約語とも異なったつづりでなければならない。 

指令 = 英字 { 英字 | 数字 } . 

参考 多くの処理系が,拡張として,指令externalを用意している。この指令は,手続き頭部又は関

数頭部に対応する手続きブロック又は関数ブロックが,プログラムブロックの外にあることを

示すのに用いる。通常,対応するブロックは,何らかの処理を加えられた上で,ライブラリ中

に置かれる。 

6.1.5 

数 符号なし整数は,整数型(6.4.2.2参照)の値を10進法で表す。符号なし実数は,実数型(6.4.2.2

参照)の値を10進法で表す。英字e及びそれに続く指数は,その前の部分の表す値に10の指数乗を乗ず

ることを意味する。符号なし整数が表す値は,閉区間 [0, maxint] 内になければならない(6.4.2.2及び6.7.2.2

参照)。 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

符号付き数 = 符号付き整数 | 符号付き実数 . 

符号付き実数 = [ 符号 ] 符号なし実数 . 

符号付き整数 = [ 符号 ] 符号なし整数 . 

符号なし数 = 符号なし整数 | 符号なし実数 . 

符号 = ʻ+ʼ | ʻ‐ʼ . 

符号なし実数 = 数字列 ʻ.ʼ 小数部 [ ʻeʼ 指数 ] 

       | 数字列 ʻeʼ 指数 . 

符号なし整数 = 数字列 . 

小数部 = 数字列 . 

指数 = [ 符号 ] 数字列 . 

数字列 = 数字 { 数字 } . 

例 1e10 

+100 

‐0.1 

5e-3 

87.35E+8 

6.1.6 

ラベル ラベルは,数字列とし,その数字列の表す整数値によって区別する。その値は,閉区間 [0, 

9999] 内になければならない。ラベルの.数字列が表す整数値を,そのラベルのつづりという。 

ラベル = 数字列 . 

6.1.7 

文字列 文字列要素を1個だけ含む

..

文字列は,文字型(6.4.2.2参照)の値を表す。2個以上の文字

列要素を含む

..

文字列は,その文字列が含む

..

文字列要素と同じ個数の成分をもつ文字列型(6.4.3.2参照)の

値を表す。同じ個数の成分をもつ文字列は,すべて同じ文字列型をもつ。 

文字列要素として許される表記の集合から文字型の値の部分集合への処理系定義の1対1対応がなけれ

ばならない。文字列の中の

...

文字列要素は,それと対応する文字型の値を表す。 

文字列 = ʻʼʼ 文字列要素 { 文字列要素 } ʻʼʼ . 

文字列要素 = アポストロフィ表記 | 文字列用文字 . 

アポストロフィ表記 = ʻʼʼʼ . 

文字列用文字 = 処理系定義の文字集合の文字の一つ . 

参考 アポストロフィ自身を,文字列用文字にはできない。文字列中でアポストロフィを表したい場

合には,アポストロフィ表記を用いる。 

例 ʼAʼ 

ʼ;ʼ 

ʼʼʼʼ 

ʼPascalʼ 

ʼTHIS IS A STRINGʼ 

6.1.8 

字句分離符 } も*) も含まない文字及び改行から成る列を注釈本体という。このとき,構文要素 

(ʻ{ ʼ | ʻ(*ʼ) 注釈本体  ( ʻ}ʼ | ʻ*) ʼ)  

は,その{ 又は(*が文字列中又は注釈本体中にある場合を除いて,注釈という。 

参考 以下の例示においては,注釈中の文字として漢字又は仮名を用いることがある。これは,この

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

規格を読みやすくするためのものであって,これらの文字が含まれる注釈を受け入れることを

処理系に要求するものではない。 

参考1. 注釈は,{ で始まって*) で終わってもよいし,(*で始まって }で終わってもよい。 

2. 列 (*) は注釈本体の一部とはなりえない。一方,列{ )はなりえる。 

注釈,空白(文字列中を除く。)及び改行を字句分離符という。0個以上の字句分離符を,相続く字句の

間,プログラムの最初の字句の前,又はプログラムの最後の字句の後に置いてもよい。相続く字句のそれ

ぞれが,識別子,予約語,ラベル又は符号なし数である場合,その間には少なくとも1個の字句分離符を

置かなければならない。一つの字句の中に字句分離符があってはならない。 

6.1.9 

字句の代替表現 6.1.1〜6.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 

プログラムブロックに含ま

..

れるすべての識別子及びラベルには,定義位置がなければならない。 

background image

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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.10 標準の値,標準の型,標準の手続き又は標準の関数を表す標準の識別子には,プログラムを囲む

領域に対する定義位置があるものとして扱う(6.1.3, 6.3, 6.4.1及び6.6.4.1参照)。 

参考 標準の識別子のうち,input及びoutputは,変数を表すものだから対象外となる。 

6.2.2.11 識別子又はラベルは,どの引用においても,それが定義位置で表すものを表す。 

参考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) そのブロックが関数ブロックであるときは,その関数ブロックに結合した結果の型をもつ結果。 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

参考 各駆動の包含する,アルゴリズム,プログラム内位置,変数,手続き及び関数は,他の駆動の

包含するものと異なる。 

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に規定する。 

単純型名 = 型名 . 

構造型名 = 型名 . 

10 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ポインタ型名 = 型名 . 

型名 = 識別子 . 

型名は,それの表す型に応じて,単純型名,構造型名又はポインタ型名という。 

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) 数字の0〜9を表現する文字値は,数の順に順序づけられ,連続している。 

(2) 大文字のA〜Zを表現する文字値(使用できるとき)は,アルファベット順に順序づけられるが,

連続しているとは限らない。 

(3) 小文字のa〜zを表現する文字値(使用できるとき)は,アルファベット順に順序づけられるが,連

続しているとは限らない。 

参考 標準の単純型に適用できる演算子は,6.7.2に規定する。 

6.4.2.3 

列挙型 

列挙型 = ʻ( ʼ 識別子並び ʻ )ʼ . 

識別子並び = 識別子 { ʻ,ʼ 識別子 } . 

列挙型の

識別子並びの中の

...

識別子の出現は,その識別子の定義位置となる。この定義位置の領域は,そ

の列挙型を直接に含む

.....

ブロックとする。その識別子のそれぞれの引用は,定数名とする。ブロックの駆動

の内部では,その識別子の引用は,すべてその列挙型が表す型をもち,その型の値のうちで,その識別子

並びの中の

...

その識別子の前に並んだ識別子の個数に等しい順序数をもつ値を表す。 

参考 列挙型の定数は,その定義を与えた列に従って順序付けられる。その順序数は,0から順番に

与えられる。 

11 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

例 (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番目以降の添字型の列をもち,もとの指定と同じ成分型をもつ配列型を成分型と

する。この配列型は,もとの指定が詰めありのとき,かつそのときに限り,詰めありとする。 

省略形と完全形とは,等価とする。 

background image

12 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

参考1. 次の二つの例は,それぞれ同じ配列型の異なる表現法を示す。 

例2. array [Boolean] of array [1..10] of array [size] of real 

array [Boolean] of array [1..10, size] of real 

array [Boolean, 1..10, size] of real 

array [Boolean, 1..10] of array [size] of real 

例3. packed array [1..10, 1..8] of Boolean 

packed array [1..10] of packed array [1..8] of Boolean 

添字型の値をi,配列型の構造によってiに対応する配列型の成分の値をVi,添字型の最小値をm,最

大値をnとし,更に添字型の値の個数 (ord(n) -ord (m) +1)をkとするとき,配列型の値は,次の形のk個の

値の組とする。 

(Vm, ...,Vn) 

参考2. したがって,すべての成分の値が定義されない限り,配列型の値は存在しない。成分型がc

個の値をもつならば,配列型の値の集合の濃度は,cのk乗となる。 

最小値が1で最大値が1より大きい部分範囲型を添字型が表し,成分型が文字型を表す詰めありの配列

型の表す型を,文字列型という。 

文字列と文字列型の値との対応は,文字列の

文字列要素を文面上の順にとったものと,文字列型の値の

成分を添字の上昇順にとったものを結び付けることによる。 

参考3. 文字列型は,その値をテキストファイルへ書き出すことができ(6.9.3.6参照),関係演算子を

使用できる(6.7.2.5参照)という点で,普通の配列型と違う。 

6.4.3.3 レコード型 レコード型の構造及び値は,そのレコード型の.フィールド並びの構造及び値とする。 

レコード型 = ʻrecordʼ フィールド並び ʻendʼ . 

フィールド並び = [ ( 固定部 [ ʻ;ʼ 可変部 ] | 可変部 ) [ ʻ;ʼ ] ] . 

固定部 = レコード要素 { ʻ;ʼ レコード要素 } . 

レコード要素 = 識別子並び ʻ:ʼ 型表記 . 

フィールド名 = 識別子 . 

可変部 = ʻcaseʼ 可変要素選択子 ʻofʼ 可変要素 { ʻ;ʼ 可変要素 } . 

可変要素選択子 = [ タグフィールド ʻ:ʼ ] タグ型 . 

タグフィールド = 識別子 . 

可変要素 = 選択定数並び ʻ:ʼ ʻ(ʼ フィールド並び ʻ)ʼ . 

タグ型 = 順序型名 . 

選択定数並び = 選択定数 { ʻ,ʼ 選択定数 } . 

選択定数 = 定数 . 

固定部も可変部も含ま

..

ないフィールド並びは,成分をもたず,値として空値ただ1種類をもつ。このフ

ィールド並びを空であるという。 

フィールド並びの

固定部の

レコード要素の識別子並びの中の

...

識別子の出現は,その識別子のフィールド

名としての定義位置となる。この定義位置の領域は,そのフィールド並びを直接に含む

.....

レコード型とする。

このとき,そのフィールド名は,レコード型の個々の成分(それは,同時にそのフィールド並びの成分で

もある。)と結合する。この成分をフィールドという。その成分は,レコード要素の

型表記が表す型をもつ。 

可変部を直接に含む

.....

フィールド並びは,この可変部に対応する一つの成分をもつ。この成分の値及び構

造は,その可変部によって定まる。 

background image

13 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

m個の成分をもつ空でないフィールド並びの値は,次の形のm個の値の組とする。 

(V1,V2,...,Vm) 

ここで,Viはそのフィールド並びのi番目の成分の値とする。 

参考1. i番目の成分の型がFi個の値をもつならば,フィールド並びの値の集合の濃度は, (F1×F2

×...×Fm) となる。 

タグ型は,タグ型の

順序型名が表す型とする。選択定数は,選択定数の

定数が表す値を表す。 

可変部の

可変要素の

選択定数並びの中の

...

各選択定数の型は,その可変部の

可変要素選択子の

タグ型の表

す型と適合しなければならない。タグ型を直接に含む

.....

可変部に直接に含ま

.....

れる選択定数が表す値は,すべ

て異なっていなければならない。更に,その値全体から成る集合は,そのタグ型の値の集合と等しくなけ

ればならない。可変要素の

選択定数並びの

各選択定数が表す値は,その可変要素に対応しているという。 

各可変部は,選択子型と呼ぶ型をもち,それと結合する。可変部の

可変要素選択子がタグフィールドを

含む

..

とき,又は可変部の

各可変要素の

選択定数並びがただ一つの選択定数を含む

..

とき,選択子型は,タグ

型の表す型とする。これらの場合,可変部の

各可変要素は,その可変要素の

選択定数並びの

選択定数が表

す選択子型の値と結合する。それ以外の場合,可変部の選択子型は,新しい順序型とする。この型は,可

変部の

各可変要素に対して値をちょうど一つずつもち,しかもそれ以外の値をもたない。各可変要素には,

その型の値が一つずつ結合する。 

各可変部は,選択子と呼ぶ成分をもつ。この成分の型は,その可変部の選択子型とする。可変部の

可変

要素選択子がタグフィールドを含む

..

とき,タグフィールドの中の

...

識別子の出現は,その識別子のフィール

ド名としての定義位置となる。この定義位置の領域は,その可変部を直接に含む

.....

レコード型とする。この

とき,そのフィールド名は,その可変部の選択子と結合する。選択子は,フィールド名と結合するとき,

かつそのときに限り,そのレコード型のフィールドという。 

可変部の

各可変要素は,可変部の個々の成分を表す。その成分は,その可変要素の

フィールド並びの値

及び構造をもつ。その成分は,同時に可変部の選択子型の,その可変要素に結合した値と結合する。可変

部の

可変要素及び成分は,それらに結合した値をその可変部の選択子がもっときに限り,有効であるとい

う。 

可変部の値は,次の形の対とする。 

(κ,Xk) 

ここで,kは可変部の選択子の値とし,Xkは可変部の有効な可変要素のフィールド並びの値とする。 

参考2. 選択子型の値がn個あり,i番目の値に結合した可変要素の.フィールド並びがTi個の値をも

つならば,可変部の値の集合の濃度は, (T1+T2+...+Tn) となる。可変部の値には,有効でな

い可変要素に対応する成分はない。 

3. レコード変数の可変部に含まれるフィールドの使い方に,6.5.3.3, 6.6.3.3及び6.6.5.3に示す制

限を置く。 

例 record 

 year : 0..2000 ; 

 month : 1..12 ; 

 day : 1..31 

end 

record 

background image

14 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

 name, firstname : string ; 

 age : 0..99 ; 

case married : Boolean of 

 true : (Spousesname : string) ; 

 false : ( )  

end 

record 

 x, y : real ; 

 area : real ; 

 case shape of 

triangle : 

(side : real; inclination, angle1, angle2 : angle) ; 

rectangle: 

(side1, side2 : real; skew : angle) ; 

circle : 

(diameter : real) ; 

end 

6.4.3.4 

集合型 集合型の値全体は,集合型の

基底型のべき集合としての構造をもつ。すなわち,集合型

のそれぞれの値は,基底型の値をげん

元とする集合とする。 

集合型 = ʻsetʼ ʻofʼ 基底型 . 

基底型 = 順序型 . 

参考1. 集合型の値に適用できる演算子は,6.7.2.4に規定する。 

例 set of char 

set of (club, diamond, heart, spade)  

参考2. 集合型の.基底型がb個の値をもつならば,その集合型の値の集合の濃度は,2のb乗となる。 

部分範囲型でない各順序型Tに対して,詰めなし正規T集合型と呼ぶ詰めなしの集合型及び詰めあり正

規T集合型と呼ぶ詰めありの集合型を設ける。SがTを親の型とする部分範囲型であれば,set of S型で定

まる値の集合は,詰めなし正規T集合型及び詰めあり正規T集合型で定まる値の集合(6.7.1参照)の部分

集合とする。 

6.4.3.5 

ファイル型 

ファイル型 = ʻfileʼ ʻofʼ 成分型 . 

参考1. ファイル型は,指定された成分型の値の列を,列中の現在位置及び検査中か生成中かを示す

モードとともに表現する。 

次の型を表す型表記は,ファイル型の

成分型としてはならない。 

・ ファイル型 

・ 成分の型表記の中に,ファイル型の成分型としてはならないものを含む構造型 

例 file of real 

file of vector 

ファイル型は,列型と呼ぶ型を暗黙に定める。この型は,次の(a)〜(e)の条件を満たす列と呼ぶ値だけを

15 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

もつ。 

参考2. 記法x〜yは,列xと列yの連結を表す。列の記法(例えば,S(c)),列の連結及び選択子の

記法 (〜,first, last, rest) 並びに列に関する等号 (=) は,Pascal言語の範囲外とする。これら

の記法は,ここでファイルの値を定義するのと,6.6.5.2及び6.6.6.5で標準のファイル操作を規

定するのに用いる。 

(a) S()は,列型Sの値とする。これを空列という。空列は,成分をもたない。 

(b) cを指定された成分型の値とし,xを列型Sの値とする。このとき,S(c)は,成分値cだけから成る型

Sの列とする。S(c)〜x及びx〜S(c)は,S()とは異なる型Sの列とする。 

(c) c, S及びxを(b)と同じとする。yは列S(c)〜xを表し,zは列x〜S(c)を表すとする。このとき,記法

y. firstはc(すなわちyの先頭の成分値)を表し,y. restはx(すなわちyから先頭の成分を除いて得

られる列)を表し,z. lastはc(すなわちzの最後の成分値)を表す。 

(d) x及びyをそれぞれ型Sの列とする。xもyも空列でない場合,x=yは, (x. first=y. first) 及び (x. rest=y. 

rest) の両方が真のとき,かつそのときに限り,真とする。x又はyが空列の場合,x=yは,xとyの

両方が空列のとき,かつそのときに限り,真とする。 

(e) x, y及びzを型Sの列とする。このとき,x〜 (y〜z) = (x〜y) 〜z, S()〜x=x及びx〜S()=xは,

真とする。 

また,ファイル型は,モード型と呼ぶ型も暗黙に定める。モード型は,Inspection(検査)及びGeneration

(生成)と呼ぶ二つの値だけをもつ。 

参考3. Inspection及びGenerationという値の表し方は,Pascal言語の範囲外とする。 

ファイル型は,三つの成分から成る構造をもつ。f. L及びf. Rと呼ぶ二つの成分の型は,暗黙の列型と

する。f. Mと呼ぶ第3の成分の型は,暗黙のモード型とする。 

ファイル型のそれぞれの値は,次の形の3個の値の組とする。 

(f. L, f. R, f. M) 

ここで,f. L及びf. Rは列型の値とし,f. Mはモード型の値とする。ただし,f. MがGenerationのとき,

f. Rは空列に限る。ファイル型の値fは,f. L〜f. Rが空列のとき,かつそのときに限り,空であるという。 

参考4. ファイル型の値の二つの成分f. L及びf. Rは,一つの列f. L〜f. R及びその列の中の現在位置

を表すと考えてよい。f. Rが空列でないとき,f. R. firstは,現在位置にある成分(現在成分)

と考えてよい。f. Rが空列のとき,現在位置はファイルの終わりにある。 

標準の構造型名textは,ファイル型を表す。textが表す型に対しては,通常の列型及びモード型のほか

に,行と呼ぶ値をもつ列型を定める。行は,列cs〜S (end-of-line) とする。ここで,csは文字型をもつ成

分の列とし,end-of-lineは特別な成分値とする。この値end-of-lineを行末成分と呼ぶ。列の成分以外の変

数に値end-of-lineを与えたときに成立すると6.で規定する表明は,文字型の値空白をその変数に与えたと

きの表明と同じとする。lを行とするとき,l. last以外のlの成分は,行末成分でない。文字型の値の集合

の処理系定義の部分集合を設け,これをテキストファイル禁止文字と呼ぶ。この部分集合に含まれる文字

をt. L又はt. Rの成分に与えたときの効果は,処理系依存とする。 

行の列lsは,空列であるか,又は列l〜ls'であるかのいずれかとする。ここで,lは行,ls'は行の列とす

る。 

textが表す型の値tは,次の(a)〜(b)の条件を満たす。 

(a) t. M=Inspectionであれば,t. L〜t. Rは行の列である。 

(b) t. M=Generationであれば,t. L〜t. Rはls〜csである。ここで,lsは行の列,csは文字型をもつ成分の

background image

16 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

列とする。 

参考5. (b)で,csは,生成されつつある部分行であると考えてもよい(特に,csが空列でないとき)。

部分行は,ファイルの検査の際には生じない。t. M=Generationのとき,t. Rは空列なので,

csがt.Rに対応しているわけではない。 

標準の型名textが表す型をもつ変数を,テキストファイルという。 

参考6. file of char型の変数に適用できるすべての標準手続き及び標準関数は,テキストファイルに

も適用できる。テキストファイルだけに適用できる標準手続き及び標準関数は,6.6.6.5及び

6.9に規定する。 

6.4.4 

ポインタ型 ポインタ型の値は,nil値又は指示値とする。各指示値は,書下しポインタ型の.被指

示型の表す型をもつ変数を指示する。プログラムの実行中に,変数及びその変数を指示する値の作成及び

消去が許容されていなければならないという意味で,指示値の集合は,動的であるという。指示値及びそ

れが指示する変数は,標準手続きnew(6.6.5.3参照)だけによって作成できる。 

参考1. nil値は,指示値ではないので,変数を指示しない。 

予約語nilは,すべてのポインタ型のnil値を表す。 

ポインタ型 = 書下しポインタ型 | ポインタ型名 . 

書下しポインタ型 = ʻ↑ʼ 被指示型 . 

被指示型 = 型名 . 

参考2. 予約語nilは,特定の型をもたない。代入可能性の規則又は演算子に関する適合性の規則を

満たす適当なポインタ型(もしあれば)をもつとみなす。 

6.4.5 

型の適合性 次の(a)〜(d)の条件のうちのいずれかが成立するときに,型T1とT2は,適合すると

いう。 

(a) T1とT2が同じ型である。 

(b) T1がT2の部分範囲であるか,T2がT1の部分範囲であるか,又はT1とT2の両方が同じ親の型の部

分範囲である。 

(c) T1とT2が基底型の適合する集合型であって,両方とも詰めありか,又は両方とも詰めなしである。 

(d) T1とT2が同じ個数の成分をもつ文字列型である。 

6.4.6 

代入可能性 次の(a)〜(e)の条件のうちのいずれかが成立するときに,型T2の値は,型T1に対し

て代入可能であるという。 

(a) T1とT2が同じ型で,その型をファイル型の.成分型とすることができる(6.4.3.5参照)。 

(b) T1が実数型で,T2が整数型である。 

(c) T1とT2が適合する順序型で,型T2の値が,型T1の定める閉区間内にある。 

(d) T1とT2が適合する集合型で,型T2の値のすべての元が,型T1の基底型の定める閉区間内にある。 

(e) T1とT2が適合する文字列型である。 

代入可能性の規則を適用する箇所では,次の(a)〜(b)の規定を適用する。 

(a) T1とT2が適合する順序型で,型T2の値が型T1の定める閉区間内になければ,誤りとする。 

(b) T1とT2が適合する集合型で,型T2の値のいずれかの元が型T1の基底型の定める閉区間内になけれ

ば,誤りとする。 

代入可能性の規則によって整数型の値が実数型に代入可能とならなければならない箇所では,整数から

実数への暗黙の型変換を行う。 

6.4.7 

型定義部の例 

background image

17 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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.5.1 

変数宣言 変数は,そこへ値を与えることのできる実体とする(6.8.2.2参照)。変数宣言の.識別子

並びの中の

...

各識別子は,それぞれ違った変数を表す。これらの変数は,変数宣言の

型表記が表す型をもつ。 

変数宣言 = 識別子並び ʻ:ʼ 型表記 . 

ブロックの

変数宣言部の

変数宣言の

識別子並びの中の

...

識別子の出現は,その識別子の変数名としての定

義位置となる。この定義位置の領域は,そのブロックとする。構造型をもつ変数の構造は,その構造型の

構造とする。変数アクセスの使用を,それが表す変数へのその時点におけるアクセスという。変数アクセ

スは,純変数,成分変数,被指示変数又はバッファ変数のいずれであるかによって,それぞれ宣言された

変数,変数の成分,指示値が指示する(6.4.4参照)変数又はバッファ変数を表す。 

18 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

変数アクセス = 純変数 | 成分変数 | 被指示変数 | バッファ変数 . 

例 変数宣言部の例 

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]  

配列変数がまた添字付き変数である場合,省略形が許容されていなければならない。省略形は,完全形

background image

19 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

の“] [”をコンマで置き換えた形とする。省略形と完全形とは,等価とする。 

添字付き変数の中の

...

,添字式の評価及び配列変数のアクセスの順序は,処理系依存とする。 

例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↑ 

20 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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) ; 

21 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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) and (f (b) = 0) } 

const 

eps = 1e-10 ; 

var 

midpoint : real ; 

begin 

{ 呼出し時の仮定から不変条件Pが成立する。 } 

midpoint : = a ; 

while abs (a - b) > eps * abs (a) do 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が適用できる任意の状態のファイルを,その最後にデー 

22 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

タが追加できるような状態に変える。これより簡単にするためには,ファイル 

の初期状態について何らかの仮定をすることが必要である。 } 

var 

LocalCopy : FileOfInteger ; 

procedure CopyFiles (var from, into : FileOfInteger) ; 

begin 

reset (from) ; rewrite (into) ; 

while not eof (from) do begin 

into↑: =from↑; 

put (into) ; get (from)  

end 

end { CopyFiles } ; 

begin { PrepareForAppending }  

CopyFiles (f, LocalCopy) ; 

CopyFiles (LocalCopy, f)  

end { PrepareForAppending } ; 

6.6.2 

関数宣言 

関数宣言 = 関数頭部 ʻ;ʼ 指令 

| 関数標示 ʻ;ʼ 関数ブロック 

| 関数頭部 ʻ;ʼ 関数ブロック . 

関数頭部 = ʻfunctionʼ 識別子 [ 仮引数並び ] ʻ: ] 結果型 . 

関数標示 = ʻfunctionʼ 関数名 . 

関数名 = 識別子 . 

結果型 = 単純型名 | ポインタ型名 . 

関数ブロック = ブロック . 

関数宣言の

関数頭部の中に

...

仮引数並びがあれば,それに応じて,その関数頭部の

識別子に結合した関数

ブロック(もしあれば)の仮引数が定まる。関数ブロックは,代入文の

関数名がそのブロックと結合する

代入文を少なくとも一つ含ま

..

なければならない(6.8.2.2参照)。 

関数宣言の

関数頭部の中の

...

識別子の出現は,結果型が表す結果の型に結合した関数名としての,その識

別子の定義位置となる。この定義位置の領域は,その関数宣言を直接に含む

.....

ブロックとする。 

その中に

..指令forwardがある関数宣言の.関数頭部の中に

...

,関数名としての定義位置をもつ識別子には,

関数宣言の

関数標示の中の

...

関数名としての引用がちょうど1回だけなければならない。しかも,その関数

頭部を直接に含む

.....

手続き関数宣言部が,その関数標示を直接に含ま

.....

なければならない。 

関数宣言の

関数ブロック(もしあれば)は,その関数宣言の

関数頭部の中の

...

識別子又はその関数宣言の

関数標示の中の

...

関数名のいずれかと結合する。同時に,関数ブロックの

ブロックは,識別子又は関数名の

いずれかに結合した結果の型と結合する。 

一つの関数名に結合する関数ブロックは,1個以下でなければならない。 

例 手続き関数宣言部の例 

function Sqrt (x : real) : real ; 

{ この関数は,Newton法によりx (x > 0) の平方根を計算する。 } 

23 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

var 

old, estimate : real ; 

begin 

estimate : = x ; 

repeat 

old : = estimate ; 

estimate : = (old+ x / old) * 0.5 ; 

until abs (estimate-old) < eps * estimate ;{ epsは大域的な定数である。 } 

Sqrt : = estimate 

end { Sqrt } ; 

function max (a : vector) : real ; 

{ この関数は,aの成分の最大値を求める。 } 

var 

largestsofar : real ; 

fence : indextype ; 

begin 

largestsofar : = a [1] ; 

{ largestsofar = max (a [1] ) が成立する。 } 

for fence : = 2 to limit do begin 

if largestsofar < a [fence] then largestsofar : = a [fence]  

{ largestsofar = max (a [1] , ... , a [fence] ) が再び成立する。 } 

end ; 

{ したがって,largestsofar = max (a [1] , ... , a [limit] ) である。 } 

max : = largestsofar 

end { max } ; 

function GCD (m, n : natural) : natural ; 

begin 

if n = 0 then GCD : = m else GCD : = GCD (n, m mod n) ; 

end ; 

{ 次の二つの関数は,括弧付きの式を解析し,それを内部表現に変える。これらの 

関数は,互いに呼び合う(相互再帰的という。)ので,forwardを用いて宣言 

されている。これらの関数で使う次の識別子は,ここでは定義していない。 

formula, IsOpenParenthesis, IsOperator, MakeFormula, nextsym, 

operation, ReadElement, ReadOperator 及び SkipSymbol。 } 

function ReadExpression : formula ; forward ; 

function ReadOperand : formula ; forward ; 

function ReadExpression ; { forward宣言の頭部参照。 } 

var 

this : formula ; 

op : operation ; 

24 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

begin 

this : = ReadOperand ; 

while IsOperator (nextsym) do 

begin 

op : = ReadOperator ; 

this : = MakeFormula (this, op, ReadOperand) ; 

end ; 

ReadExpression : = this 

end; 

function ReadOperand ; { forward宣言の頭部参照。 } 

begin 

if IsOpenParenthesis (nextsym) then 

begin 

SkipSymbol ; 

ReadOperand : = ReadExpression ; 

{ nextsymは閉じ括弧のはずである。 } 

SkipSymbol 

end 

else ReadOperand : = ReadElement 

end ; 

6.6.3 

引数 

6.6.3.1 

一般規則 値引数仕様の

識別子並びの中の

...

識別子をあたい

値ひき

引すう

数という。変数引数仕様の

識別子並び

の中の

...

識別子を変数引数という。 

仮引数並び = ʻ(ʼ 仮引数区域 { ʻ;ʼ 仮引数区域 } ʻ)ʼ . 

仮引数区域 > 値引数仕様 | 変数引数仕様 | 手続き引数仕様 | 関数引数仕様 . 

値引数仕様 = 識別子並び ʻ:ʼ 型名 . 

変数引数仕様 = ʻvarʼ 識別子並び ʻ:ʼ 型名 . 

手続き引数仕様 = 手続き頭部 . 

関数引数仕様 = 関数頭部 . 

参考1. 仮引数区域の構文規則は,6.6.3.7.1にもある。 

手続き頭部の

仮引数並びを領域とする,引数名としての定義位置をもつ識別子を,その手続き頭部の

別子に結合した手続きブロック(もしあれば)の

ブロックの仮引数という。関数頭部の

仮引数並びを領域

とする,引数名としての定義位置をもつ識別子を,その関数頭部の

識別子に結合した関数ブロック(もし

あれば)の

ブロックの仮引数という。 

値引数仕様又は変数引数仕様の

識別子並びの中の

...

識別子の出現は,その識別子の引数名としての定義位

置及び結合した変数名としての定義位置となる。前者の領域は,それを直接に含む

.....

仮引数並びとし,後者

の領域は,それを仮引数とするブロック(もしあれば)とする。 

手続き引数仕様の

手続き頭部の中の

...

識別子の出現は,その識別子の引数名としての定義位置及び結合し

た手続き名としての定義位置となる。前者の領域は,それを直接に含む

.....

仮引数並びとし,後者の領域は,

それを仮引数とするブロック(もしあれば)とする。 

background image

25 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

関数引数仕様の

関数頭部の中の

...

識別子の出現は,その識別子の引数名としての定義位置及び結合した関

数名としての定義位置となる。前者の領域は,それを直接に含む

.....

仮引数並びとし,後者の領域は,それを

仮引数とするブロック(もしあれば)とする。 

参考2. 仮引数並びが手続き引数仕様又は関数引数仕様に含ま

..

れている場合,対応する手続きブロッ

ク又は関数ブロックは存在しない。 

6.6.3.2 

値引数 仮引数及び結合した変数名は,同じ変数を表す。仮引数の型は,値引数仕様の

型名が表

す型とする。仮引数の型は,ファイル型の

成分型とすることができる型(6.4.3.5参照)でなければならな

い。実引数(6.7.3及び6.8.2.3参照)は,式でなければならない。その値は,仮引数の型に対して代入可能

でなければならない。ブロックの駆動の際,その時点の式の値が仮引数の表す変数に与えられる。 

6.6.3.3 

変数引数 実引数は,変数アクセスでなければならない。実引数の型は,変数引数仕様の

型名が

表す型と同じでなければならない。仮引数の型は,この型とする。実引数は,ブロックの駆動の前にアク

セスされる。アクセスされた変数は,そのブロックの駆動の間,参照中とする。対応する仮引数及び結合

した変数名は,駆動の間,この変数を表す。 

実変数引数は,可変部の選択子であるフィールドを表してはならない。実変数引数は,詰めありの型を

もつ変数の成分を表してはならない。 

6.6.3.4 

手続き引数 実引数(6.7.3及び6.8.2.3参照)は,手続き名でなければならない。この手続き名

の定義位置は,プログラムブロックに含ま

..

れていなければならない。実引数の表す手続きが仮引数並びを

もつ場合,手続き引数仕様が直接に含む

.....

仮引数並びは,それと同形でなければならない。そうでない場合,

手続き引数仕様は,仮引数並びを含ん

..

ではならない。仮引数及び結合した手続き名は,ブロックの駆動の

間,実引数を表す。 

6.6.3.5 

関数引数 実引数(6.7.3及び6.8.2.3参照)は,関数名でなければならない。この関数名の定義

位置は,プログラムブロックに含ま

..

れていなければならない。実引数の表す関数が仮引数並びをもつ場合,

関数引数仕様が直接に含む

.....

仮引数並びは,それと同形でなければならない。そうでない場合,関数引数仕

様は,仮引数並びを含ん

..

ではならない。関数の結果の型と関数引数仕様が直接に含む

.....

結果型が表す型は,

同じでなければならない。仮引数及び結合した関数名は,ブロックの駆動の間,実引数を表す。 

6.6.3.6 

引数並びの同形性 二つの仮引数並びは,同じ個数の仮引数区域を直接に含み

.....

,かつ対応する位

置にある仮引数区域同士が一致するときに,同形であるという。二つの仮引数区域は,次の(a)〜(e)の条件

のうちのいずれかが成立するときに,一致するという。 

(a) 双方が値引数仕様で,同じ個数の仮引数を含み,それぞれの値引数仕様の.型名が同じ型を表す。 

(b) 双方が変数引数仕様で,同じ個数の仮引数を含み,それぞれの変数引数仕様の.型名が同じ型を表す。 

(c) 双方が手続き引数仕様で,それぞれの手続き頭部の.仮引数並びが同形である。 

(d) 双方が関数引数仕様で,それぞれの関数頭部の.仮引数並びが同形であり,かつそれぞれの関数頭部の.

結果型の含む

..

型名が同じ型を表す。 

(e) 双方が値整合配列仕様であるか,又は双方が変数整合配列仕様であるかのいずれかであり,かつそれ

ぞれの整合配列引数仕様が同じ個数の仮引数及び同等な整合配列形式を含む

..

。二つの整合配列形式は,

次の(1)〜(4)の条件すべてが成立するときに,同等であるという。 

(1) それぞれの整合配列形式が添字型仕様を一つだけ直接に含む

.....

。 

(2) それぞれの添字型仕様の.順序型名が同じ型を表す。 

(3) 整合配列形式の直接に含む

.....

(成分の)整合配列形式が同等であるか,又は整合配列形式の

型名が同

じ型を表す。 

26 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(4) 双方の整合配列形式が詰めあり整合配列形式であるか,又は双方が詰めなし整合配列形式である。 

参考1. 整合配列形式の省略形とそれに対応する完全形とは,等価とする(6.6.3.7参照)。 

2. (e)の扱いについては,5.1(a), 5.1(b), 5.1(c), 5.2(a)及び5.2(b)を参照のこと。 

6.6.3.7 

整合配列引数 

参考 6.6.3.7の扱いについては,5.1(a), 5.1(b), 5.1(c), 5.2(a)及び5.2(b)を参照のこと。 

6.6.3.7.1 

一般規則 整合配列引数仕様に含ま

..

れる識別子並びの中の

...

識別子の出現は,その識別子の引数

名としての定義位置及び結合した変数名としての定義位置となる。前者の領域は,それを直接に含む

.....

仮引

数並びとし,後者の領域は,それを仮引数とするブロック(もしあれば)とする。この変数名を整合配列

引数という。 

添字型仕様の中の

...

識別子の出現は,その識別子の限界名としての定義位置となる。この定義位置の領域

は,それを直接に含む

.....

仮引数並び及びその仮引数並びで指定される仮引数をもつブロック(もしあれば)

とする。 

仮引数区域 > 整合配列引数仕様 . 

整合配列引数仕様 = 値整合配列仕様 | 変数整合配列仕様 . 

値整合配列仕様 = 識別子並び ʻ:ʼ 整合配列形式 . 

変数整合配列仕様 = ʻvarʼ 識別子並び ʻ:ʼ 整合配列形式 . 

整合配列形式 = 詰めあり整合配列形式 | 詰めなし整合配列形式 . 

詰めあり整合配列形式 = ʻpackedʼ ʻarrayʼ ʻ[ʼ 添字型仕様 ʻ]ʼ ʻofʼ 型名 .

詰めなし整合配列形式 = ʻarrayʼ ʻ[ʼ 添字型仕様 { ʻ;ʼ 添字型仕様 } ʻ]ʼ 

ʻofʼ( 型名 | 整合配列形式 ) . 

添字型仕様 = 識別子 ʻ..ʼ 識別子 ʻ:ʼ 順序型名 . 

因子 > 限界名 . 

限界名 = 識別子 . 

参考1. 仮引数区域の構文規則は,6.6.3.1にもある。因子の構文規則は,6.7.1にもある。 

整合配列形式が整合配列形式を直接に含む

.....

場合,省略形が許容されていなければならない。省略形は,

完全形の“] of array [”をセミコロンで置き換えた形とする。省略形と完全形とは,等価とする。 

例 array [u..v : T1] of array [j..k : T2] of T3 

array [u..v : T1; j..k : T2] of T3 

ブロックの駆動の間,添字型仕様の最初の識別子の引用は,実引数の型の,対応する添字型(6.6.3.8参

照)の最小値を表す。添字型仕様の2番目の識別子の引用は,添字型の最大値を表す。 

参考2. 限界名が表すものは,定数でも変数でもない。 

一つの整合配列引数仕様の中に現れる仮引数に対応する実引数(6.7.3及び6.8.2.3参照)の型は,すべて

同じでなければならない。実引数の型は,整合配列形式に整合(6.6.3.8参照)していなければならない。

仮引数の型は,他のどの型とも違う配列型とする。この配列型の成分型は,整合配列引数仕様によって定

まる整合配列引数の固定成分型とする。その添字型は,実引数の型の添字型のうち,整合配列引数仕様の

含む

..

整合配列形式が含む

..

添字型仕様に対応する(6.6.3.8参照)添字型とする。整合配列引数仕様の含む

..

合配列形式が含む

..

型名が表す型を,その整合配列引数仕様によって定まる整合配列引数の固定成分型とい

う。 

参考3. 仮引数のもつ型は,配列型によって表されていないから,文字列型(6.4.3.2参照)とはなら

ない。 

27 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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) T1の添字型がT2と適合する。 

(b) T1の添字型の最小値及び最大値がT2の定める閉区間内にある。 

(c) T1の成分型が,整合配列形式が直接に含む

.....

型名が表す型と同じ型を表すか,又は整合配列形式が直接

..

に含む

...

整合配列形式に整合する。 

(d) T1が詰めなしで,かつ整合配列形式が詰めなし整合配列形式であるか,又は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 

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

28 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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. L〜S(f0↑))) かつ 

(f. R=S ( )) かつ 

(f↑は全面的不定である) 

reset(f) 

前提表明: 成分f0. L及びf0. Rは不定でない 

帰結表明:  (f. L=S() )かつ 

(f. R= (f0. L〜f0. R〜X)) かつ 

(f. M=Inspection) かつ 

(f. R=S( )であればf↑は全面的不定である,そうでなければf↑=f. R. first) 

ここで,fが標準の型名textの表す型をもち,かつf0. L〜f0. Rが空列でなく,(f0. L〜

f0. R) .lastが行末成分でない場合,Xは行末成分だけから成る列とする。それ以外の場

合,X=S( )とする。 

get (f)  

前提表明: (f0. M=Inspection) かつ 

(f0. Lもf0. Rも不定でない) かつ 

29 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

(f0. R≠S ())  

帰結表明: (f. M=Inspection) かつ 

(f. L= (f0. L〜S (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) end 

と等価とする。ここで,ffは参照中のファイル変数を表す。 

fをファイル変数,vを変数アクセスとするとき,手続き呼出し文read (f, v) は,ファイル変数を

アクセスし,その文のそれ以降の実行中,ファイル変数を参照中にする。read (f, v) の実行は, 

begin v : = ff↑; get (ff) end 

と等価とする。ここで,ffは参照中のファイル変数を表す。 

参考 ここでの変数アクセスは,変数引数ではない。したがって,バッファ変数の値が代入可能

なものでさえあれば,詰めあり構造の成分であってもよい。 

write 

fをファイル変数,e1, . . . , enを式 (n≧2) とするとき,手続き呼出し文write (f, e1, . . . , en) は,ファイ

ル変数をアクセスし,その文のそれ以降の実行中,ファイル変数を参照中にする。wnte (f, e1 , . . . , en) の

実行は, 

begin write (ff, e1) ; write (ff, e2, . . . , en) end 

と等価とする。ここで,ffは参照中のファイル変数を表す。 

fをファイル変数,eを式とするとき,手続き呼出し文write (f, e) は,ファイル変数をアクセスし,そ

の文のそれ以降の実行中,ファイル変数を参照中にする。write (f, e) の実行は, 

begin ff↑: = e; put (ff) end 

と等価とする。ここで,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)  

新しい変数を作成し,この変数を指示する新しい指示値を作成する。この指示値を変数アクセス

30 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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 

background image

31 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

 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

32 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

及び6.4.2.3参照)とする。 

chr (x)  

式xの型は,整数型でなければならない。結果の型は,文字型とする。結果は,式xの値に等しい順序

数をもつ文字型の値とする。この文字値が存在しなければ,誤りとする。文字型の任意の値chに対して, 

chr (ord(ch) )=ch 

が成立する。 

succ (x)  

式xの型は,順序型でなければならない。結果の型は,式xの型(6.7.1参照)と同じとする。結果は,

式xの順序数より1だけ大きい順序数をもつ値とする。この値が存在しなければ,誤りとする。 

pred (x)  

式xの型は,順序型でなければならない。結果の型は,式xの型(6.7.1参照)と同じとする。結果は,

式xの順序数より1だけ小さい順序数をもつ値とする。この値が存在しなければ,誤りとする。 

6.6.6.5 

論理関数 

odd (x)  

式xの型は,整数型でなければならない。odd (x) は,式 

(abs (x) mod 2= 1) 

と等価とする。 

eof (f)  

引数fは,ファイル変数でなければならない。実引数並びを省略した場合,この関数は,標準のテキス

トファイルinput(6.10参照)に適用する。この場合,プログラムは,つづりinputの識別子を含む

..

プログ

ラム引数並びを含ま

..

なければならない。結果は,f. Rが空列(6.4.3.5参照)であれば値true,空列でなけ

れば値falseとする。eof (f) が駆動されたとき,fが不定であれば,誤りとする。 

eoln (f)  

引数fは,テキストファイルでなければならない。実引数並びを省略した場合,この関数は,標準のテ

キストファイルinput(6.10参照)に適用する。この場合,プログラムは,つづりinputの識別子を含む

..

ログラム引数並びを含ま

..

なければならない。結果は,f. R. firstが行末成分(6.4.3.5参照)であれば値true,

そうでなければ値falseとする。eoln (f) が駆動されたとき,fが不定であるか,又はeof (f) がtrueであれ

ば,誤りとする。 

6.7 

式 

6.7.1 

一般規則 式は,値を表す。因子として使用された変数アクセスは,それによってアクセスされる

変数に与えられている値(もしあれば)を表す。因子の使用時にその因子の

変数アクセスの表す変数が不

定であれば,誤りとする。演算子の優先順位は,4段階とし,演算子notを最高の優先順位,次に乗除演

算子,次に加減演算子及び符号,そして関係演算子を最低の優先順位とする。同じ優先順位の演算子が二

つ以上並ぶ場合は,左優先で結合する。 

式 = 単純式 [ 関係演算子 単純式 ] . 

単純式 = [ 符号 ] 項 { 加減演算子 項 } . 

項 = 因子 { 乗除演算子 因子 } . 

因子 > 変数アクセス | 符号なし定数 | 関数呼出し 

   | 

集合構成子 | ʻ(ʼ 式 ʻ)ʼ | ʻnotʼ 因子 . 

符号なし定数 = 符号なし数 | 文字列 | 定数名 | ʻnilʼ . 

background image

33 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

集合構成子 = ʻ[ʼ [ 元表記 { ʻ,ʼ 元表記 } ] ʻ]ʼ . 

元表記 = 式 [ ʻ..ʼ 式 ] . 

参考1. 因子の構文規則は,6.6.3.7.1にもある。 

S型の因子は,SがTの部分範囲である場合,T型として扱う。同様に,set of S型の因子は,詰めなし

正規T集合型として扱い,packed set of S型の因子は,詰めあり正規T集合型として扱う。 

集合構成子は,集合型の値を表す。集合構成子[ ]は,任意の集合型の,元を一つも含まない値を表す。

一つ以上のげん

元ひょう

き記を含む

..

集合構成子は,詰めなし正規T集合型の値又は詰めあり正規T集合型の値を表

す。いずれの型となるかは,文脈による。ここで,Tは集合構成子の.元表記の.式の型とする。一つの集合

構成子の

各元表記の

各式の型は,すべて同じでなければならない。この型は,順序型でなければならない。

集合構成子は,集合構成子の

一つ以上の元表記の表す元から成る集合(空集合でありうる。)を表す。 

xを式とするとき,元表記xは,値xをもつ元を表す。x及びyを式とするとき,元表記x. . . yは,xの

値からyの値までの閉区間内にある基底型の値をもつすべての元(0個でありうる。)を表す。元表記の中

..

式の評価順序は,処理系依存とする。集合構成子の中の

...

元表記の評価順序は,処理系依存とする。 

参考2. xの値がyの値より大きいとき,元表記x. . . yは,一つの元も表さない。 

3. 集合構成子[ ]は,特定の型をもたない。可能な場合には,代入可能性,又は演算子のオペラ

ンドの型に関する規則によって適当な型を定める。 

例a) 因子 

15 

sin (x + y)  

[red, c, green]  

[1, 5, 10. . 19, 23]  

(x+y+z) 

not p 

(b) 項 

x * y 

i/ (1 - i)  

(x <= y) and (y < z)  

(c) 単純式 

p or q 

x + y 

-x 

hue1 + hue2 

i * j + 1 

(d) 式 

x = 1.5 

p <= q 

p = q and r  

(i < j) = (j < k)  

c in hue1 

background image

34 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.7.2 

演算子 

6.7.2.1 

一般規則 

乗除演算子 = ʻ*ʼ | ʻ/ʼ | ʻdivʼ | ʻmodʼ | ʻandʼ . 

加減演算子 = ʻ+ʼ | ʻ-ʼ | ʻorʼ . 

関係演算子 = ʻ=ʼ | ʻ<>ʼ | ʻ<ʼ | ʻ>ʼ | ʻ<=ʼ | ʻ>=ʼ |

ʻinʼ . 

因子,項及び単純式を,オペランドという。二項演算子のオペランドの評価順序は,処理系依存とする。 

参考 したがって,オペランドは,文面どおりの順に評価されるかもしれないし,逆順に評価される

かもしれない。場合によっては,両方のオペランドが並列に評価されるかもしれないし,片方

だけしか評価されないかもしれない。 

6.7.2.2 

算術演算子 二項算術演算及び単項算術演算のオペランドの型及び結果の型は,それぞれ表3及

び表4のとおりとする。 

表3 二項算術演算 

演算子 演算 

オペランドの型 

結果の型 

加算 

整数型又は実数型 

両方のオペランドの型が
整数型であれば整数型,
そうでなければ実数型 

減算 

整数型又は実数型 

乗算 

整数型又は実数型 

除算 

整数型又は実数型 

実数型 

div 

切捨てを伴う除算 整数型 

整数型 

mod 

剰余 

整数型 

整数型 

表4 単項算術演算 

演算子 演算 

オペランドの型 

結果の型 

恒等 

整数型又は実数型 

整数型又は実数型 

符号反転 整数型又は実数型 

整数型又は実数型 

参考1. 特殊記号+, −及び*は,集合演算子(6.7.2.4参照)としても使う。 

x/yの形をした項の値は,xをyで割った結果とする。yが0であれば,誤りとする。 

i div jの形をした項の値は,次の条件を満たす。 

abs (i)−abs (j) < abs ((i div j) * j) ≦ abs (i)  

このとき,abs (i) < abs (j) であれば,値は0とする。そうでなければ,値は,iとjの符号が同じであれ

ば正,違っていれば負とする。jが0であれば,誤りとする。 

i mod jの形をした項の値は,次の条件を満たす。 

i mod j = i−(k*j) かつ 0≦i mod j < j,ただしkは整数 

jが0又は負であれば,誤りとする。 

参考2. i≧0かつj>0の場合に限り,関係 (i div j) *j + i mod j=iが成立する。 

標準の定数名maxintは,整数型の処理系定義の値を表す。この値は,次の(a)〜(d)の条件を満たす。 

(a) 閉区間 [−maxint, +maxint] 内の整数値は,すべて整数型の値である。 

(b) この区間内の整数値に対する単項算術演算は,整数計算に関する数学的規則に従って正しく行われる。 

(c) この区間内の二つの整数値に対する二項算術演算は,その結果もこの区間内にあるならば,整数計算

に関する数学的規則に従って正しく行われる。 

(d) この区間内の二つの整数値に対する関係演算は,整数計算に関する数学的規則に従って正しく行われ

る。 

background image

35 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

整数から実数への変換並びに実数に対する算術演算子及び標準関数の結果は,対応する数学的結果の近

似とする。この近似の精度は,処理系定義とする。 

整数に対する演算又は関数が,整数計算に関する数学的規則に従うことができなければ,誤りとする。 

6.7.2.3 

論理演算子 論理演算のオペランドの型は,論理型でなければならない。結果の型は,論理型と

する。論理演算子or, and及びnotは,それぞれ論理和,論理積及び否定の各演算を表す。 

論理式 = 式 . 

論理式は,論理型の値を表す式でなければならない。 

6.7.2.4 

集合演算子 集合演算のオペランドの型及び結果の型は,表5のとおりとする。 

表5 集合演算 

演算子 演算 

オペランドの型 

結果の型 

和集合 同じ詰めなし正規T集合型 

又は詰めあり正規T集合 
型(6.7.1参照) 

オペランドの型と同じ 

差集合 

積集合 

xを順序型Tの値,u及びvを正規T集合型のオペランドとする。任意のxに対して次の条件が成立す

る。 

・ xがuの元であるか又はvの元である場合,かつその場合に限りxはu+vの元である。 

・ xがuの元であり,vの元ではない場合,かつその場合に限りxはu−vの元である。 

・ xがuの元であり,vの元でもある場合,かつその場合に限りxはu*vの元である。 

6.7.2.5 

関係演算子 関係演算のオペランドの型及び結果の型は,表6のとおりとする。 

表6 関係演算 

演算子 オペランドの型 

結果の型 

= <> 

任意の単純型,ポインタ型,文字列型, 
詰めなし正規T集合型又は詰めあり正規T集合型 

論理型 

< > 

任意の単純型又は文字列型 

論理型 

<= >= 任意の単純型,文字列型,詰めなし正規T集合型 

又は詰めあり正規T集合型 

論理型 

in 

左オペランド:任意の順序型T 

右オペランド:詰めなし正規T集合型又は 

詰めあり正規T集合型 

論理型 
 

=, <>, <, >, >=及び<=の二つのオペランドの型は,適合するか,同じ詰めなし正規T集合型若しくは詰め

あり正規T集合型であるか,又は一方が実数型で他方が整数型であるか,のいずれかでなければならない。 

演算子=, <>, <及び>は,それぞれ“等しい”,“等しくない”,“より小さい”及び“より大きい”を意味

する。 

集合に対して使う場合を除けば,演算子<=及び>=は,それぞれ“より小さいか又は等しい”及び“より

大きいか又は等しい”を意味する。u及びvを集合型のオペランドとするとき,u<=vは“uがvの部分集

合である”を,u>=vは“vがuの部分集合である”を意味する。 

参考 論理型は順序型であり,falseはtrueより小さい。したがって,p及びqを論理型のオペランド

とするとき,p=qは同値を,p<=qは“pならばq”を意味する。 

適合する文字列型(6.4.3.2参照)のオペランドを比較するのに使う場合,関係演算子=, <>, <, >, <=及び

>=は,次に定める辞書式順序による比較を表す。この辞書式順序は,文字列型の値に対する全順序関係を

定める。 

s1とs2を適合する文字列型の値とし,nをその文字列型の成分の個数とする。このとき,次の条件が成

background image

36 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

立する。 

・ [1..n] 内のすべてのiに対してs1 [i] =s2 [i] のとき,かつそのときに限りs1=s2 

・ [1..n] 内のあるpについて,s1 [p] <s2 [p] ,しかも [1..p-1] 内のすべてのiに対してs1 [i] =s2 [i] の

とき,かつそのときに限りs1<s2 

演算子>, <>, <=及び>=の定義は,=及び<の定義から導く。 

演算子inは,順序型のオペランドの値が集合型の値の元であれば,値trueを生じる。そうでなければ,

値falseを生じる。 

6.7.3 

関数呼出し 関数呼出しは,関数呼出しの

関数名に結合した関数ブロックの

ブロックの駆動を指定

する。そして,その駆動のアルゴリズムの完了時の,駆動結果の値を生じる。アルゴリズムの完了時に結

果が不定であれば,誤りとする。 

参考 関数の駆動がgoto文(6.8.2.4参照)によって終了する場合,駆動のアルゴリズムが完了したこ

とにはならない (6.2.3.2(a)参照)。したがって,駆動の結果が不定でも誤りとはならない。 

関数が仮引数をもつならば,関数呼出しは,実引数並びを含ま

..

なければならない。実引数並びの中の

...

実引数は,関数宣言で定義された対応する仮引数に渡される。その対応は,実引数の並び及び仮引数の並

びの中の引数の位置による。実引数の個数は,仮引数の個数と同じでなければならない。実引数の型は,

6.6.3に規定するとおり,仮引数の型と対応しなければならない。実引数の評価,アクセス及び引数渡しの

順序は,処理系依存とする。 

関数呼出し = 関数名 [ 実引数並び ] . 

実引数並び = ʻ(ʼ 実引数 { ʻ,ʼ 実引数 } ʻ)ʼ . 

実引数 = 式 | 変数アクセス | 手続き名 | 関数名 . 

例 sum (a, 63)  

GCD (147, k)  

sin (x + y)  

eof (f)  

ord (f↑)  

6.8 

文 

6.8.1 

一般規則 文は,アルゴリズム上の動作を表す。文は,実行可能とする。 

文 = [ ラベル ʻ:ʼ] ( 単純文 | 構造文 ) . 

参考1. 文は,ラベルで修飾することができる。 

文Sの.ラベル(もしあれば)は,Sを修飾するという。このラベルは,次の(a)〜(c)の条件のうちのいず

れかが成立している場合でなければ,goto文G(6.8.2.4参照)に含まれてはならない。 

(a) SがGを含む

..

。 

(b) SがGを含む

..

文並びの

文である。 

(c) SがGを含む

..

ブロックの

,実行部の

複合文の

文並びの

文である。 

参考2. ブロック内のgoto文が,それを囲むブロックのラベルを参照することができるのは,ラベル

が外側のブロックの一番外側の文を修飾しているときに限る。 

6.8.2 

単純文 

6.8.2.1 

一般規則 単純文は,他の文を含ま

..

ない。空文は,字句を含ま

..

ず,“何もしない”という動作を

表す。 

単純文 = 空文 | 代入文 | 手続き呼出し文 | goto文 . 

background image

37 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

空文 = . 

6.8.2.2 

代入文 代入文は,代入文の

変数アクセスが表す変数又は代入文の

関数名が表す駆動結果に,代

入文の式の値を与える。値は,それぞれ変数又は駆動結果の型に対して代入可能でなければならない。駆

動結果に対する代入文は,その代入文の

関数名に結合した関数ブロック(6.6.2参照)に含ま

..

れていなけれ

ばならない。 

代入文 = ( 変数アクセス | 関数名 ) ʻ:=ʼ 式 . 

変数アクセスは,代入文の実行中,その変数を参照中にする。変数を参照中にする動作及び式の評価の

順序は,処理系依存とする。 

変数又は駆動結果にその型の値が与えられていない状態のことを,不定という。構造型をもつ変数の場

合,その変数の全部の成分が全面的不定である状態のことを,全面的不定という。構造型をもたない変数

又は駆動結果の場合,全面的不定は,不定と同じ意味とする。 

例 x : = y + z 

p : = (1 <= i) and (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ではない。 

6.8.2.4 

goto文 goto文は,それ以降の処理をgoto文の.ラベルが表すプログラム内位置から続けることを

指定する。goto文の実行によって,次の(a)〜(b)のいずれかに該当するものを除いて,すべての駆動が終了

する。 

(a) 指定されたプログラム内位置を包含する駆動 

(b) (a)又は(b)によって終了しないと規定する駆動の駆動位置を包含する駆動 

goto文 = ʻgotoʼ ラベル . 

background image

38 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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)  

6.8.3.5 

case文 case文の.選択肢の.選択定数並びの.選択定数の中に,同じ値を表すものが二つ以上あって

はならない。これらの選択定数の型は,順序型でなければならず,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 

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

background image

39 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

繰返し文 = 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) then z : = z * x; 

i : = i div 2; 

x : = sqr (x)  

end 

while not eof (f) do 

begin process (f↑) ; get (f)  

end 

6.8.3.9 

for文 for文は,for文の.制御変数が表す変数に一連の値を与えながら,for文の.文を繰り返して

実行することを指定する。 

for文 = ʻforʼ 制御変数 ʻ: =ʼ 初期値  ( ʻtoʼ | ʻdowntoʼ ) 終値 ʻdoʼ 文 . 

制御変数 = 純変数 . 

初期値 = 式 . 

終値 = 式 . 

制御変数の

純変数の

変数名の

識別子は,そのfor文を直接に含む

.....

ブロックの

変数宣言部で宣言されたも

のでなければならない。制御変数の型は,順序型でなければならない。初期値及び終値の型は,この型と

適合しなければならない。for文の.文が1回でも実行されるならば,初期値及び終値の値は,制御変数の型

background image

40 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

に対して代入可能でなければならない。for文の実行の後(goto文によって脱出した場合を除く。),制御変

数は,不定とする。for文及びそのfor文を直接に含む

.....

ブロックの

手続き関数宣言部は,for文の制御変数が

表す変数を変えうる文を含ん

..

ではならない。 

次の(a)〜(d)の条件のうちのいずれかが成立するときに,文Sは変数Vを変えうるという。 

(a) Sが代入文であり,Sの.変数アクセスがVを表す。 

(b) SがVを表す実変数引数を含む

..

。 

(c) Sが標準手続きread又は標準手続きreadlnの駆動を指定する手続き呼出し文であり,Sの.read引数並

び又はreadln引数並びの.変数アクセスがVを表す。 

(d) Sが等価なプログラムの断片によって規定される文であり,そのプログラムの断片が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 

background image

41 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

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 

42 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

と等価とする。 

例 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が表す型の構造によって定義される列型の値として,r〜s〜t〜u = 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. L〜f. R=f0. L〜f0. R) かつ 

(f. R=t〜u) かつ 

(f. R=S( )であればf↑は全面的不定である,そうでなければf↑=f. R. first) 

参考1. ここでの変数アクセスは,変数引数ではない。したがって,バッファ変数の値が代入可能な

ものでさえあれば,詰めあり構造の成分であってもよい。 

(a) n≧1のとき,read (f, v1, . . . , vn) は,テキストファイルをアクセスし,その文のそれ以降の実行中,そ

のテキストファイルを参照中にする。v1, . . . , vnのそれぞれは,実数型,文字列型又は文字型若しくは

整数型と適合する型をもつ変数アクセスでなければならない。n≧2のとき,read (f, v1, . . . , vn) の実行

は, 

begin read (ff, v1) ; read (ff, v2, . . . , vn) end 

と等価とする。ここで,ffは参照中のテキストファイルを表す。 

(b) vが文字型(又はその部分範囲)の変数アクセスの場合,read (f, v) の実行は, 

begin v : = ff↑; get (ff) end 

43 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

と等価とする。ここで,ffは参照中のテキストファイルを表す。 

参考2. get及びread (f, v) の帰結表明を満たすためには,r=S ( ), length (s) =1とする必要がある。 

(c) vが整数型(又はその部分範囲)の変数アクセスの場合,read (f, v) は,次の四つの要求を満足する。

sのどの成分も行末成分に等しくない。rの成分(もしあれば)は,すべて文字型の値空白又は行末成

分に等しい。 (s〜t〜u) .firstは,文字型の値空白とも行末成分とも等しくない。sが空列であるか,又

はsが6.1.5の構文規則に定める符号付き整数の形式であり,かつs〜S (t. first) が符号付き整数の形式

でない。sが空列であれば,誤りとする。この符号付き整数の値は,vのもつ型に対して代入可能でな

ければならない。この値をvに与える。 

参考3. 列rは,読み飛ばすべき空白及び行末成分の列を表す。列sは,読取りの対象となる符号付

き整数を表す。 

(d) vが実数型の変数アクセスの場合,read (f, v) は,次の四つの要求を満足する。sのどの成分も行末成

分に等しくない。rの成分(もしあれば)は,すべて文字型の値空白又は行末成分に等しい。 (s〜t〜

u) .firstは,文字型の値空白とも行末成分とも等しくない。sが空列であるか,又はsが6.1.5の構文規

則に定める符号付き数の形式であり,かつs〜S (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) end 

と等価とする。ここで,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に適用する。この場合,

44 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

プログラムは,つづり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) end 

と等価とする。ここで,ffは参照中のテキストファイルを表す。 

fがテキストファイルを表し,pがwrite引数であるとき,write (f, p) は,0個以上の文字の列をテキスト

ファイルfに書き出す。この列のそれぞれの文字cについて, 

begin ff↑: = c; put (ff) end 

と等価な操作をテキストファイルfに適用する。ここで,ffは参照中のテキストファイルを表す。書き出

す文字の列は,write引数pの最初の式の値の表現とする。この表現の詳細は,6.9.3.1〜6.9.3.6に規定する。 

参考 writeの定義は,putを用いている。したがって,putの帰結表明に関して処理系定義と規定する

事項は,writeに対しても適用する(6.6.5.2参照)。 

6.9.3.1 

write引数 write引数pは,次のいずれかの形とする。 

e : TotalWidth : FracDigits 

e : TotalWidth 

式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) TotalWidth≧IntDigits+1の場合 

(TotalWidth−IntDigits-1)個の空白, 

e<0のとき符号ʻ−ʼ, e≧0のとき空白,

45 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

IntDigitsけたのabs (e) の10進表現。 

(b) TotalWidth<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けた目の数字, 

46 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

文字ʻ.ʼ, 

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) and (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の値の最初の文字から九番目の文字まで順に並べたもの。 

47 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

1≦TotalWidth≦nのときは, 

最初の文字からTotalWidth番目の文字まで順に並べたもの。 

6.9.4 

手続きwriteln writelnの引数並びの構文規則は,次のとおりとする。 

writeln引数並び = [ ʻ(ʼ ( ファイル変数 | write引数 ) 

                { ʻ,ʼ write引数 } ʻ)ʼ ] . 

手続きwritelnは,テキストファイルにだけ適用できる。ファイル変数を省略した場合,又はwriteln引

数並び全体を省略した場合,この手続きは,標準のテキストファイルoutputに適用する。この場合,プロ

グラムは,つづりoutputの識別子を含む

..

プログラム引数並びを含ま

..

なければならない。 

writeln (f, p1, . . . , pn) は,テキストファイルをアクセスし,その文のそれ以降の実行中,そのテキストフ

ァイルを参照中にする。writeln (f, p1, . . . , pn) の実行は, 

begin write (ff, p1, . . . , pn) ; writeln (ff) end 

と等価とする。ここで,ffは参照中のテキストファイルを表す。 

writelnの効果は,次の前提表明及び帰結表明(記法は6.6.5.2参照)によって規定する。 

前提表明: (f0が不定でない) かつ 

(f0. M=Generation) かつ 

(f0. R=S ())  

帰結表明: (f. L=(f0. L〜S(end-of-line) )) かつ 

(f↑は全面的不定である) かつ 

(f. R=S ())  かつ 

(f. M=Generation), 

ここで,S (end-of-line) は,6.4.3.5に規定する行末成分だけから成る列とする。 

参考 writeln (f) は,その時点までに生成された部分行(空でありうる。)を終える。6.6.5.2の規定に

よって,前提表明がwriteln (f) の実行直前に成立していなければ,誤りとする。 

6.9.5 

手続きpage writeln (f) に対する前提表明(6.9.4参照)がpage (f) の駆動の直前に成立していなけ

れば,誤りとする。実引数並びを省略した場合,この手続きは,標準のテキストファイルoutputに適用す

る。この場合,プログラムは,つづりoutputの識別子を含む

..

プログラム引数並びを含ま

..

なければならない。

page (f) は,テキストファイルfを改ページ機能をもつ装置上に印字している場合に以後は新しいページに

印字するという処理系定義の効果をもつ。f. Lが空列でなく,しかもf. L. lastが行末成分(6.4.3.5参照)

でない場合,writeln (f) を駆動する。更に,バッファ変数f↑を全面的不定にする。生成の間に手続きpage

を適用したテキストファイルを検査したときの効果は,処理系依存とする。 

6.10 プログラム 

プログラム = プログラム頭部 ʻ;ʼ プログラムブロック ʻ.ʼ . 

プログラム頭部 = ʻprogramʼ 識別子 [ ʻ( ʼ プログラム引数並び ʻ)ʼ ] . 

プログラム引数並び = 識別子並び . 

プログラムブロック = ブロック . 

プログラム頭部の

識別子をプログラム名という。プログラム名は,プログラムの中で何の意味ももたな

い。プログラム引数並びの含む

..

識別子を,プログラム引数という。それらは,互いに異なっていなければ

ならない。各プログラム引数には,プログラムブロックを領域とする,変数名としての定義位置がなけれ

ばならない。プログラム引数が表す変数のプログラム外部の実体への結び付け方は,処理系依存とする。

ただし,変数の型がファイル型である場合,その結び付け方は,処理系定義とする。 

48 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

参考 このような外部実体の外部表現は,この規格の範囲外とする。 

6.に規定する変数に対するすべての動作,演算又は関数の実行は,変数がプログラム引数であって,プ

ログラム引数の結び付け方の結果として,定義どおり行えないとき,誤りとする。 

標準の識別子input又はoutputの,プログラム引数並びの.識別子並びの中の

...

出現は,その標準の識別子

の,標準の型名textの表す標準の型をもつ変数名としての定義位置となる。この定義位置の領域は,プロ

グラムブロックとする。識別子inputがプログラム引数並びの中に現れると,そのテキストファイル又は

結合したバッファ変数に対する最初のアクセスまでに,resetに対する帰結表明が成立する。同様に,識別

子outputがプログラム引数並びの中に現れると,rewriteに対する帰結表明が成立する。標準手続きreset

又はrewriteを,これらのテキストファイルに適用したときの効果は,処理系定義とする。 

例 program copy (f, g) ; 

var f, g : file of real; 

begin reset (f) ; rewrite (g) ; 

while not eof (f) do 

begin g↑: = : f↑; get (f) ; put (g)  

end 

end.  

program copytext (input, output) ; 

{ このプログラムは,テキストファイルinputの文字を,行の構造を 

保ったままテキストファイルoutputにコピーする。 } 

var ch : char; 

begin 

while not eof do 

begin 

while not eoln do 

begin read (ch) ; write (ch)  

end; 

readln; writeln 

end 

end. 

program t6p6p3p4 (output) ; 

var globalone, globaltwo : integer; 

procedure dummy; 

begin 

writeln (ʼfail4ʼ)  

end { dummy } ; 

procedure p (procedure f(procedure ff; procedure gg) ; procedure g); 

49 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

var localtop : integer; 

procedure r; 

begin { r }  

if globalone = 1 then 

begin 

if (globaltwo <> 2) or (localtop <> 1) then 

writeln (ʼfail1ʼ)  

end 

else if globalone = 2 then 

begin 

if (globaltwo <> 2) or (localtop <> 2) then 

writeln (ʼfail2ʼ)  

else 

writeln (ʼpassʼ)  

end 

else 

writeln (ʼfail3ʼ) ; 

globalone : = globalone + 1 

end { r } ; 

begin { p }  

globaltwo : = globaltwo + 1; 

localtop : = globaltwo; 

if globaltwo = 1 then 

p (f, r)  

else 

f (g, r)  

end { p } ; 

procedure q (procedure f; procedure g) ; 

begin 

f; 

end { q } ; 

begin { t6p6p3p4 }  

globalone : = 1; 

globaltwo : = 0; 

p (q, dummy)  

end. { t6p6p3p4 }  

50 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書A(参考) 構文規則 

構造型,単純型,特殊記号,符号付き数,プログラム及びポインタ型の六つの非終端記号は,意味の規

定の中で用いるだけで,構文規則の右辺では用いない。文法全体の開始記号は,非終端記号“プログラム”

とする。 

6.6.3.7.1 

値整合配列仕様 = 識別子並び ʻ:ʼ 整合配列形式 . 

6.6.3.1 

値引数仕様 = 識別子並び ʻ:ʼ 型名 . 

6.1.7 

アポストロフィ表記 = ʻʼʼʼ . 

6.6.3.7.1 

因子 > 限界名 . 

6.7.1 

因子 > 変数アクセス | 符号なし定数 | 関数呼出し 

   | 集合構成子 | ʻ(ʼ 式 ʻ)ʼ | ʻnotʼ 因子 . 

6.1.1 

英字 = ʻaʼ | ʻbʼ | ʻcʼ | ʻdʼ | ʻeʼ| ʻfʼ | ʻgʼ | ʻhʼ | ʻiʼ

   | ʻjʼ | ʻkʼ | ʻlʼ | ʻmʼ | ʻnʼ | ʻoʼ | ʻpʼ | ʻqʼ |

ʻrʼ 

   | ʻsʼ | ʻtʼ | ʻuʼ | ʻvʼ | ʻwʼ | ʻxʼ | ʻyʼ | ʻzʼ . 

6.4.1 

書下し型 = 書下し順序型 | 書下し構造型 | 書下しポインタ型 . 

6.4.3.1 

書下し構造型 = [ ʻpackedʼ ]  詰めなし構造型 . 

6.4.2.1 

書下し順序型 = 列挙型 | 部分範囲型 . 

6.4.4 

書下しポインタ型 = ʻ↑ʼ 被指示型 . 

6.7.2.1 

加減演算子 = ʻ+ʼ | ʻ−ʼ | ʻorʼ . 

6.4.1 

型定義 = 識別子 ʻ=ʼ 型表記 . 

6.2.1 

型定義部 = [ ʻtypeʼ 型定義 ʻ:ʼ { 型定義 ʻ;ʼ } ] . 

6.4.1 

型表記 = 型名 | 書下し型 . 

6.4.1 

型名 = 識別子 . 

6.4.3.3 

可変部 = ʻcaseʼ 可変要素選択子 ʻofʼ 可変要素 { ʻ;ʼ 可変要素 } . 

6.4.3.3 

可変要素 = 選択定数並び ʻ:ʼ ʻ(ʼ フィールド並び ʻ)ʼ . 

6.4.3.3 

可変要素選択子 = [ タグフィールド ʻ:ʼ ] タグ型 . 

6.6.3.1 

仮引数区域 > 値引数仕様 | 変数引数仕様 | 手続き引数仕様 | 関数引数仕様 . 

6.6.3.7.1. 

仮引数区域 > 整合配列引数仕様 . 

6.6.3.1 

仮引数並び = ʻ(ʼ 仮引数区域 { ʻ;ʼ 仮引数区域 } ʻ)ʼ . 

6.7.2.1 

関係演算子 = ʻ=ʼ | ʻ<>ʼ | ʻ<ʼ | ʻ>ʼ | ʻ<=ʼ | ʻ>=ʼ | ʻinʼ .

6.6.2 

関数宣言 = 関数頭部 ʻ;ʼ 指令 

|  関数標示 ʻ;ʼ 関数ブロック 

| 関数頭部 ʻ;ʼ 関数ブロック . 

6.6.2 

関数頭部 = ʻfunctionʼ 識別子 [ 仮引数並び ] ʻ:ʼ 結果型 . 

6.6.3.1 

関数引数仕様 = 関数頭部 . 

6.6.2 

関数標示 = ʻfunctionʼ 関数名 . 

6.6.2 

関数ブロック = ブロック . 

6.6.2 

関数名 = 識別子 . 

51 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.7.3 

関数呼出し = 関数名 [ 実引数並び ] . 

6.4.3.4 

基底型 = 順序型 . 

6.8.2.1 

空文 = . 

6.8.3.6 

繰返し文 = repeat文 | while文 | for文 . 

6.6.2 

結果型 = 単純型名 | ポインタ型名 . 

6.6.3.7.1 

限界名 = 識別子 . 

6.7.1 

元表記 = 式 [ ʻ. .ʼ 式 ] . 

6.7.1 

項 = 因子 { 乗除演算子 因子 } . 

6.4.3.1 

構造型 = 書下し構造型 | 構造型名 . 

6.4.1 

構造型名 = 型名 . 

6.8.3.1 

構造文 = 複合文 | 条件文 | 繰返し文 | with文 . 

6.4.3.3 

固定部 = レコード要素 { ʻ;ʼ レコード要素 } . 

6.7.1 

式 = 単純式 [ 関係演算子 単純式 ] . 

6.1.3 

識別子 = 英字 { 英字 | 数字 } . 

6.4.2.3 

識別子並び = 識別子 { ʻ,ʼ 識別子 } . 

6.1.5 

指数 = [ 符号 ] 数字列 . 

6.2.1 

実行部 = 複合文 . 

6.4.2.1 

実数型名 = 型名 . 

6.7.3 

実引数 = 式 | 変数アクセス | 手続き名 | 関数名 . 

6.7.3 

実引数並び = ʻ(ʼ 実引数 { ʻ,ʼ 実引数 } ʻ)ʼ 

6.4.3.4 

集合型 = ʻsetʼ ʻofʼ 基底型 . 

6.7.1 

集合構成子 = ʻ[ʼ [ 元表記 { ʻ,ʼ 元表記 } ] ʻ]ʼ . 

6.8.3.9 

終値 = 式 . 

6.4.2.1 

順序型 = 書下し順序型 | 順序型名 . 

6.4.2.1 

順序型名 = 型名 . 

6.5.2 

純変数 = 変数名 . 

6.8.3.3 

条件文 = if文 | case文 . 

6.7.2.1 

乗除演算子 = ʻ*ʼ | ʻ/ʼ | ʻdivʼ | ʻmodʼ | ʻandʼ . 

6.1.5 

小数部 = 数字列 . 

6.8.3.9 

初期値 = 式. 

6.1.4 

指令 = 英字 { 英字 | 数字 } . 

6.1.1 

数字 = ʻ0ʼ | ʻ1ʼ | ʻ2ʼ | ʻ3ʼ | ʻ4ʼ 

| ʻ5ʼ | ʻ6ʼ | ʻ7ʼ | ʻ8ʼ | ʻ9ʼ . 

6.1.5 

数字列 = 数字 { 数字 } . 

6.8.3.9 

制御変数 = 純変数 . 

6.6.3.7.1 

整合配列形式 = 詰めあり整合配列形式 | 詰めなし整合配列形式 . 

6.6.3.7.1 

整合配列引数仕様 = 値整合配列仕様 | 変数整合配列仕様 . 

6.4.3.2 

成分型 = 型表記 . 

6.5.3.1 

成分変数 = 添字付き変数 | フィールド表記 . 

6.8.3.5 

選択肢 = 選択定数並び ʻ:ʼ 文 . 

52 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.8.3.5 

選択式 = 式 . 

6.4.3.3 

選択定数 = 定数 . 

6.4.3.3 

選択定数並び = 選択定数 { ʻ,ʼ 選択定数 } . 

6.4.3.2 

添字型 = 順序型 . 

6.6.3.7.1 

添字型仕様 = 識別子 ʻ. .ʼ 識別子 ʻ:ʼ 順序型名 . 

6.5.3.2 

添字式 = 式 . 

6.5.3.2 

添字付き変数 = 配列変数 ʻ[ʼ 添字式 { ʻ,ʼ 添字式 } ʻ]ʼ . 

6.8.2.2 

代入文 = (変数アクセス | 関数名 ) ʻ:=ʼ 式 . 

6.4.3.3 

タグ型 = 順序型名 . 

6.4.3.3 

タグフィールド = 識別子 . 

6.4.2.1 

単純型 = 順序型 | 実数型名 . 

6.4.1 

単純型名 = 型名 . 

6.7.1 

単純式 = [ 符号 ] 項 { 加減演算子 項 } . 

6.8.2.1 

単純文 = 空文 | 代入文 | 手続き呼出し文 | goto文 . 

6.6.3.7.1 

詰めあり整合配列形式 = ʻpackedʼ ʻarrayʼ ʻ[ʼ 添字型仕様 ʻ]ʼ ʻofʼ 型名 .

6.4.3.1 

詰めなし構造型 = 配列型 | レコード型 | 集合型 | ファイル型 . 

6.6.3.7.1 

詰めなし整合配列形式 = ʻarrayʼ ʻ[ʼ 添字型仕様 { ʻ;ʼ 添字型仕様 } ʻ]ʼ

ʻofʼ( 型名 | 整合配列形式 ) . 

6.3 

定数 = [ 符号 ] ( 符号なし数 | 定数名 ) 

| 文字列 . 

6.3 

定数定義 = 識別子 ʻ=ʼ 定数 . 

6.2.1 

定数定義部 = [ ʻconst' 定数定義 ʻ;ʼ { 定数定義 ʻ;ʼ } ]. 

6.3 

定数名 = 識別子 . 

6.2.1 

手続き関数宣言部 = { ( 手続き宣言 | 関数宣言 ) ʻ;ʼ } . 

6.6.1 

手続き宣言 = 手続き頭部 ʻ;ʼ 指令 

| 手続き標示 ʻ;ʼ 手続きブロック 

| 手続き頭部 ʻ;ʼ 手続きブロック . 

6.6.1 

手続き頭部 = ʻprocedureʼ 識別子 [ 仮引数並び ] . 

6.6.3.1 

手続き引数仕様 = 手続き頭部 . 

6.6.1 

手続き標示 = ʻprocedureʼ 手続き名 . 

6.6.1 

手続きブロック = ブロック . 

6.6.1 

手続き名 = 識別子 . 

6.8.2.3 

手続き呼出し文 = 手続き名 ( [ 実引数並び ] 

| read引数並び | readln引数並び 

| write引数並び | writeln引数並び ) . 

6.1.2 

特殊記号 = ʻ+ʼ | ʻ−ʼ | ʻ*ʼ | ʻ/ʼ | ʻ=ʼ | ʻ<ʼ | ʻ>ʼ | ʻ [ʼ

     |  ʻ] ʼ | ʻ.ʼ | ʻ,ʼ | ʻ:ʼ | ʻ;ʼ | ʻ↑ʼ | ʻ (ʼ | ʻ) ʼ

     | ʻ<>ʼ | ʻ<=ʼ | ʻ>=ʼ | ʻ: =ʼ | ʻ. .ʼ | 予約語 . 

6.4.3.2 

配列型 = ʻarrayʼ ʻ[ʼ 添字型 { ʻ,ʼ 添字型 } ʻ]ʼ ʻofʼ 成分型 . 

6.5.3.2 

配列変数 = 変数アクセス . 

53 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.5.5 

バッファ変数 = ファイル変数 ʻ↑ʼ . 

6.4.4 

被指示型 = 型名 . 

6.5.4 

被指示変数 = ポインタ変数 ʻ↑ʼ . 

6.4.3.5 

ファイル型 = ʻfileʼ ʻofʼ 成分型 . 

6.5.5 

ファイル変数 = 変数アクセス . 

6.5.3.3 

フィールド指定部 = フィールド名 . 

6.4.3.3 

フィールド並び = [ ( 固定部 [ ʻ;ʼ 可変部 ] | 可変部 ) [ ʻ;ʼ ]  ] . 

6.5.3.3 

フィールド表記 = レコード変数 ʻ.ʼ フィールド指定部 

| フィールド表記名 . 

6.8.3.10 

フィールド表記名 = 識別子 . 

6.4.3.3 

フィールド名 = 識別子 . 

6.8.3.2 

複合文 = ʻbeginʼ 文並び ʻendʼ . 

6.1.5 

符号 = ʻ+ʼ | ʻ−ʼ . 

6.1.5 

符号付き実数 = [ 符号 ] 符号なし実数 . 

6.1.5 

符号付き数 = 符号付き整数 | 符号付き実数 . 

6.1.5 

符号付き整数 = [ 符号 ] 符号なし整数 . 

6.1.5 

符号なし実数 = 数字列 ʻ.ʼ 小数部 [ ʻeʼ 指数 ] 

       | 数字列 ʻeʼ 指数 . 

6.1.5 

符号なし数 = 符号なし整数 | 符号なし実数 . 

6.1.5 

符号なし整数 = 数字列 . 

6.7.1 

符号なし定数 = 符号なし数 | 文字列 | 定数名 | ʻnilʼ . 

6.4.2.4 

部分範囲型 = 定数 ʻ. .ʼ 定数 . 

6.10 

プログラム = プログラム頭部 ʻ;ʼ プログラムブロック ʻ.ʼ . 

6.10 

プログラム頭部 = ʻprogramʼ 識別子 [ ʻ(ʼ プログラム引数並び ʻ)ʼ ] . 

6.10 

プログラム引数並び = 識別子並び . 

6.10 

プログラムブロック = ブロック . 

6.2.1 

ブロック = ラベル宣言部 定数定義部 型定義部 変数宣言部 手続き関数宣言部 実

行部 . 

6.8.1 

文 = [ ラベル ʻ:ʼ ] ( 単純文 | 構造文 ) . 

6.8.3.1 

文並び = 文 { ʻ;ʼ 文 } . 

6.5.1 

変数アクセス = 純変数 | 成分変数 | 被指示変数 | バッファ変数 . 

6.6.3.7.1 

変数整合配列仕様 = ʻvarʼ 識別子並び ʻ:ʼ 整合配列形式 . 

6.5.1 

変数宣言 = 識別子並び ʻ:ʼ 型表記 . 

6.2.1 

変数宣言部 = [ ʻvarʼ 変数宣言 ʻ;ʼ { 変数宣言 ʻ;ʼ } ] . 

6.6.3.1 

変数引数仕様 = ʻvarʼ 識別子並び ʻ:ʼ 型名 . 

6.5.2 

変数名 = 識別子 . 

6.4.4 

ポインタ型 = 書下しポインタ型 | ポインタ型名 . 

6.4.1 

ポインタ型名 = 型名 . 

6.5.4 

ポインタ変数 = 変数アクセス . 

6.1.7 

文字列 = ʻʼʼ 文字列要素 { 文字列要素 } ʻʼʼ . 

54 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.1.7 

文字列要素 = アポストロフィ表記 | 文字列用文字 . 

6.1.7 

文字列用文字 = 処理系定義の文字集合の文字の一つ . 

6.1.2 

予約語 = ʻandʼ | ʻarrayʼ | ʻbeginʼ | ʻcaseʼ | ʻconstʼ | ʻdivʼ 

| ʻdoʼ | ʻdowntoʼ | ʻelseʼ | ʻendʼ | ʻfileʼ | ʻforʼ 

| ʻfunctionʼ | ʻgotoʼ | ʻifʼ | ʻinʼ | ʻlabelʼ | ʻmodʼ 

| ʻnilʼ | ʻnotʼ | ʻofʼ | ʻorʼ | ʻpackedʼ | ʻprocedureʼ 

| ʻprogramʼ | ʻrecordʼ | ʻrepeatʼ | ʻsetʼ | ʻthenʼ 

| ʻtoʼ | ʻtypeʼ | ʻuntilʼ | ʻvarʼ | ʻwhileʼ | ʻwithʼ . 

6.1.6. 

ラベル = 数字列 . 

6.2.1 

ラベル宣言部 = [ ʻlabelʼ ラベル { ʻ,ʼ ラベル } ʻ;ʼ ]. 

6.4.3.3 

レコード型 = ʻrecordʼ フィールド並び ʻendʼ . 

6.5.3.3 

レコード変数 = 変数アクセス . 

6.8.3.10 

レコード変数並び = レコード変数 { ʻ,ʼ レコード変数 } . 

6.4.3.3 

レコード要素 = 識別子並び ʻ:ʼ 型表記 . 

6.4.2.3 

列挙型 = ʻ(ʼ 識別子並び ʻ)ʼ . 

6.7.2.3 

論理式 = 式 . 

6.8.3.5 

case文 = ʻcaseʼ 選択式 ʻofʼ 選択肢 { ʻ;ʼ 選択肢 }  [ ʻ;ʼ ]  ʻendʼ .

6.8.3.4 

else部= ʻelseʼ文. 

6.8.3.9 

for文 = ʻforʼ 制御変数 ʻ: =ʼ 初期値  ( ʻtoʼ | ʻdowntoʼ ) 終値 ʻdoʼ

文 . 

6.8.2.4 

goto文 = ʻgotoʼ ラベル . 

6.8.3.4 

if文 = ʻifʼ 論理式 ʻthenʼ 文 [ else部 ] . 

6.9.1 

read引数並び = ʻ(ʼ [ ファイル変数 ʻ,ʼ ] 

変数アクセス { ʻ,ʼ 変数アクセス } ʻ)ʼ . 

6.9.2 

readln引数並び = [ ʻ(ʼ ( ファイル変数 | 変数アクセス ) 

{ ʻ,ʼ 変数アクセス } ʻ)ʼ ] . 

6.8.3.7 

repeat文 = ʻrepeatʼ 文並び ʻuntilʼ 論理式 . 

6.8.3.8 

while文 = ʻwhileʼ 論理式 ʻdoʼ 文 . 

6.8.3.10 

with文 = ʻwithʼ レコード変数並び ʻdoʼ 文 . 

6.9.3 

write引数 = 式 [ ʻ:ʼ 式 [ ʻ:ʼ 式 ] ] . 

6.9.3 

write引数並び = ʻ(ʼ [ ファイル変数 ʻ,ʼ ] write引数 { ʻ,ʼ write引数 }

ʻ)ʼ . 

6.9.4 

writeln引数並び = [ ʻ(ʼ ( ファイル変数 | write引数 ) 

{ ʻ,ʼ write引数 } ʻ)ʼ ] . 

55 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書B(参考) 索引 

アクセス 

6.5.1 

6.5.3.1 

6.5.3.3 

6.5.5 

6.6.3.3 

6.6.3.7.2 

6.6.3.7.3 

6.6.5.2 

6.8.2.2 

6.8.2.3 

6.8.3.10 

6.9.1 

6.9.2 

6.9.3 

6.9.4 

6.10 

誤り 

1.2 

3.1 

5.1 

6.4.6 

6.5.3.3 

6.5.4 

6.5.5 

6.6.3.8 

6.6.5.2 

6.6.5.3 

6.6.5.4 

6.6.6.2 

6.6.6.3 

6.6.6.4 

6.6.6.5 

6.7.1 

6.7.2.2 

6.7.3 

6.8.3.5 

6.9.1 

6.9.3 

6.9.3.1 

6.9.4 

6.9.5 

6.10 

因子 

6.6.3.7.1 

6.6.5.3 

6.7.1 

6.7.2.1 

演算子 

6.7.1 

6.7.2 

6.7.2.1 

6.7.2.2 

6.7.2.4 

6.7.2.5 

オペランド 

6.7.1 

6.7.2.1 

6.7.2.2 

6.7.2.3 

6.7.2.4 

6.7.2.5 

型名 

6.2.2.9 

6.2.2.11 

6.4.1 

6.4.2.1 

6.4.4 

6.6.3.1 

6.6.3.2 

6.6.3.3 

6.6.3.6 

6.6.3.7.1 

6.6.3.8 

6.10 

可変要素 

6.4.3.3 

6.5.3.3 

6.6.5.3 

仮引数 

6.2.3.2 

6.6.1 

6.6.2 

6.6.3.1 

6.6.3.2 

6.6.3.3 

6.6.3.4 

6.6.3.5 

6.6.3.6 

6.6.3.7.1 

6.6.3.7.2 

6.6.3.7.3 

6.7.3 

6.8.2.3 

仮引数並び 

6.6.1 

6.6.2 

6.6.3.1 

6.6.3.4 

6.6.3.5 

6.6.3.6 

6.6.3.7.1 

関数 

6.2.3.2 

6.2.3.3 

6.4.3.5 

6.6 

6.6.2 

6.6.3.5 

6.6.6.2 

6.6.6.3 

6.6.6.4 

6.6.6.5 

6.7.2.2 

6.7.3 

6.9.3.3 

6.9.3.4.1 

6.9.3.4.2 

関数宣言 

6.1.4 

6.2.1 

6.6 

6.6.2 

6.7.3 

関数ブロック 

6.1.4 

6.2.3.2 

6.2.3.3 

6.6.2 

6.6.3.1 

6.8.2.2 

関数名 

6.2.3.1 

6.2.3.2 

6.2.3.3 

6.6.2 

6.6.3.1 

6.6.3.5 

6.7.3 

6.8.2.2 

関数呼出し 

6.2.3.4 

6.6.3.7.2 

6.7.1 

6.7.3 

基底型 

6.4.3.4 

6.4.5 

6.4.6 

6.7.1 

結果 

6.2.3.2 

6.2.3.3 

6.2.3.5 

6.6.2 

6.6.6.2 

6.6.6.3 

6.6.6.4 

6.7.2.2 

6.7.2.4 

6.7.2.5 

6.7.3 

6.8.2.2 

元 

6.4.6 

6.7.1 

6.7.2.5 

構造型 

6.4.3.1 

6.4.3.5 

6.5.1 

6.8.2.2 

参照中 

6.5.3.1 

6.5.3.3 

6.5.4 

6.5.5 

6.6.3.3 

6.6.3.7.2 

6.6.3.7.3 

6.6.5.2 

6.6.5.4 

6.8.2.2 

6.8.3.10 

6.9.1 

6.9.2 

6.9.3 

6.9.4 

式 

6.5.3.2 

6.6.3.2 

6.6.3.7.2 

6.6.5.2 

6.6.5.3 

6.6.5.4 

6.6.6.2 

6.6.6.3 

6.6.6.4 

6.6.6.5 

6.7.1 

6.7.2.3 

6.7.3 

6.8.2.2 

6.8.3.5 

6.8.3.9 

6.9.3 

6.9.3.1 

識別子 

4. 

6.1.3 

6.2.2.1 

6.2.2.5 

6.2.2.7 

6.2.2.8 

6.2.2.9 

6.2.2.10 

6.2.2.11 

6.3 

6.4.1 

6.4.2.3 

6.4.3.3 

6.5.1 

6.5.2 

6.6.1 

6.6.2 

6.6.3.1 

6.6.3.7.1 

6.6.3.7.2 

6.8.3.9 

6.8.3.10 

6.10 

識別子並び 

6.4.2.3 

6.4.3.3 

6.5.1 

6.6.3.1 

6.6.3.7.1 

6.6.3.7.3 

6.10 

字句 

4. 

6.1 

6.1.1 

6.1.8 

6.1.9 

実数型 

6.1.5 

6.3 

6.4.2.2 

6.4.6 

6.6.6.2 

6.6.6.3 

6.7.2.2 

6.7.2.5 

6.9.1 

6.9.3.1 

6.9.3.4 

実引数 

6.6.3.2 

6.6.3.3 

6.6.3.4 

6.6.3.5 

6.6.3.7.1 

6.6.3.7.2 

56 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

6.6.3.7.3 

6.6.5.3 

6.7.3 

6.8.2.3 

6.8.3.9 

実引数並び 

6.6.6.5 

6.7.3 

6.8.2.3 

6.9.5 

集合型 

6.4.3.1 

6.4.3.4 

6.7.1 

6.7.2.5 

順序型 

6.4.2.1 

6.4.2.2 

6.4.2.3 

6.4.2.4 

6.4.3.2 

6.4.3.3 

6.4.3.4 

6.6.6.4 

6.7.1 

6.7.2.5 

6.8.3.5 

6.8.3.9 

純変数 

6.5.1 

6.5.2 

6.8.3.9 

処理系依存 

3.4 

5.1 

5.2 

6.4.3.5 

6.5.3.2 

6.7.1 

6.7.2.1 

6.7.3 

6.8.2.2 

6.8.2.3 

6.9.1 

6.9.5 

6.10 

処理系定義 

3.1 

3.3 

5.1 

5.2 

6.1.7 

6.1.9 

6.4.2.2 

6.4.3.5 

6.6.5.2 

6.7.2.2 

6.9.2 

6.9.3 

6.9.3.1 

6.9.3.4.1 

6.9.3.5 

6.9.5 

6.10 

指令 

6.1.4 

6.6.1 

6.6.2 

整合配列形式 

6.6.3.6 

6.6.3.7.1 

6.6.3.8 

整数型 

6.1.5 

6.3 

6.4.2.2 

6.4.6 

6.6.6.2 

6.6.6.3 

6.6.6.4 

6.6.6.5 

6.7.2.2 

6.7.2.5 

6.9.1 

6.9.3.1 

6.9.3.3 

成分 

6.1.7 

6.4.3.1 

6.4.3.2 

6.4.3.3 

6.4.3.5 

6.4.5 

6.5.1 

6.5.3.1 

6.5.3.2 

6.5.3.3 

6.6.2 

6.6.3.3 

6.6.3.6 

6.6.3.7.3 

6.6.5.2 

6.6.6.5 

6.8.2.2 

6.8.3.10 

6.9.1 

6.9.3.6 

6.9.4 

6.9.5 

成分型 

6.4.3.2 

6.4.3.5 

6.4.6 

6.5.5 

6.6.3.2 

6.6.3.7.1 

6.6.3.8 

選択定数 

6.4.3.3 

6.6.5.3 

6.8.3.5 

全面的不定 

6.2.3.5 

6.5.3.3 

6.6.5.2 

6.6.5.3 

6.8.2.2 

6.9.1 

6.9.4 

6.9.5 

添字型 

6.4.3.2 

6.5.3.2 

6.6.3.7.1 

6.6.3.8 

添字付き変数 

6.5.3.1 

6.5.3.2 

6.6.3.7.2 

対応する 

4. 

6.1.4 

6.1.7 

6.1.9 

6.2.3.2 

6.2.3.3 

6.4.1 

6.4.3.3 

6.6.3.1 

6.6.3.3 

6.6.3.6 

6.6.3.7.1 

6.6.3.7.2 

6.6.3.7.3 

6.6.3.8 

6.6.4 

6.6.5.2 

6.7.2.2 

6.7.3 

6.8.2.3 

代入可能 

6.4.6 

6.5.3.2 

6.6.3.2 

6.6.5.2 

6.6.5.4 

6.8.2.2 

6.8.3.9 

6.9.1 

代入文 

6.2.3.3 

6.6.2 

6.6.5.3 

6.8.2.1 

6.8.2.2 

6.8.3.9 

定義位置 

6.2.1 

6.2.2.1 

6.2.2.2 

6.2.2.3 

6.2.2.4 

6.2.2.5 

6.2.2.7 

6.2.2.8 

6.2.2.9 

6.2.2.10 

6.2.2.11 

6.2.3.1 

6.2.3.2 

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.6.3.4 

6.6.3.5 

6.6.3.7.1 

6.8.3.10 

6.10 

定数 

6.3 

6.4.2.4 

6.4.3.3 

6.6.2 

6.6.3.7.1 

適合する 

6.4.3.3 

6.4.4 

6.4.5 

6.4.6 

6.4.7 

6.6.3.8 

6.7.2.5 

6.8.3.9 

6.9.1 

テキストファイル 

6.4.3.5 

6.5.5 

6.6.6.5 

6.9.1 

6.9.2 

6.9.3 

6.9.4 

6.9.5 

6.10 

手続き 

6.2.3.2 

6.2.3.3 

6.4.4 

6.5.4 

6.6 

6.6.1 

6.6.3.4 

6.6.3.7.2 

6.8.2.3 

6.8.3.9 

6.9.1 

6.9.2 

6.9.3 

6.9.4 

6.9.5 

6.10 

手続き宣言 

6.1.4 

6.2.1 

6.6 

6.6.1 

6.8.2.3 

手続きブロック 

6.1.4 

6.2.3.2 

6.2.3.3 

6.6.1 

6.6.3.1 

6.8.2.3 

手続き名 

6.2.3.1 

6.2.3.2 

6.2.3.3 

6.6.1 

6.6.3.1 

6.6.3.4 

6.7.3 

6.8.2.3 

57 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

手続き呼出し文 

6.2.3.4 

6.8.2.1 

6.8.2.3 

6.8.3.9 

同形 

6.6.3.4 

6.6.3.5 

6.6.3.6 

配列型 

6.4.3.1 

6.4.3.2 

6.5.3.2 

6.6.3.7.1 

6.6.3.8 

バッファ変数 

6.5.1 

6.5.5 

6.6.5.2 

6.9.1 

6.9.5 

6.10 

引数 

6.6.1 

6.6.3.1 

6.6.3.2 

6.6.3.3 

6.6.3.4 

6.6.3.5 

6.6.3.6 

6.6.3.7.1 

6.6.3.7.2 

6.6.3.7.3 

6.6.5.2 

6.6.6.2 

6.6.6.5 

6.8.3.9 

6.9.1 

6.9.2 

6.9.3 

6.9.3.5 

6.9.4 

6.10 

ファイル型 

6.4.3.1 

6.4.3.5 

6.4.6 

6.5.5 

6.6.3.2 

6.10 

ファイル変数 

6.5.5 

6.6.5.2 

6.6.6.5 

6.9.1 

6.9.2 

6.9.3 

6.9.4 

フィールド 

6.4.3.3 

6.5.3.3 

6.6.3.3 

フィールド表記 

6.2.2.6 

6.5.3.1 

6.5.3.3 

フィールド名 

6.4.3.3 

6.5.3.3 

6.8.3.10 

複合文 

6.2.1 

6.8.1 

6.8.3.1 

6.8.3.2 

不定 

6.5.3.3 

6.5.4 

6.6.5.2 

6.6.5.3 

6.6.5.4 

6.6.6.5 

6.7.1 

6.7.3 

6.8.2.2 

6.8.3.9 

6.9.3 

6.9.4 

部分範囲 

6.4.2.4 

6.4.5 

6.7.1 

6.9.1 

プログラム引数並

び 

6.2.3.5 

6.10 

ブロック 

6.2.1 

6.2.3.1 

6.2.3.2 

6.2.3.3 

6.2.3.4 

6.3 

6.4.1 

6.4.2.3 

6.5.1 

6.6.1 

6.6.2 

6.6.3.1 

6.6.3.2 

6.6.3.3 

6.6.3.4 

6.6.3.5 

6.6.3.7.1 

6.6.3.7.2 

6.6.3.7.3 

6.7.3 

6.8.1 

6.8.2.3 

6.8.3.9 

6.10 

文 

6.2.1 

6.6.5.4 

6.8.1 

6.8.2.1 

6.8.3.1 

6.8.3.4 

6.8.3.5 

6.8.3.6 

6.8.3.8 

6.8.3.9 

6.8.3.10 

閉区間 

6.1.5 

6.1.6 

6.4.6 

6.6.3.8 

6.7.1 

6.7.2.2 

変数 

6.2.3.2 

6.2.3.3 

6.4.1 

6.4.3.5 

6.4.4 

6.5.1 

6.5.3.1 

6.5.3.2 

6.5.3.3 

6.5.4 

6.5.5 

6.6.3.1 

6.6.3.2 

6.6.3.3 

6.6.3.7.1 

6.6.3.7.2 

6.6.3.7.3 

6.6.5.2 

6.6.5.3 

6.6.5.4 

6.7.1 

6.8.2.2 

6.8.3.9 

6.8.3.10 

6.9.1 

6.10 

変数アクセス 

6.5.1 

6.5.3.2 

6.5.3.3 

6.5.4 

6.5.5 

6.6.3.3 

6.6.3.7.3 

6.6.5.2 

6.6.5.3 

6.7.1 

6.7.3 

6.8.2.2 

6.8.3.9 

6.9.1 

6.9.2 

ポインタ型 

6.4.1 

6.4.4 

6.5.4 

6.6.5.3 

6.7.2.5 

文字 

6.1.7 

6.1.9 

6.4.2.2 

6.6.6.4 

6.9.1 

6.9.3.2 

6.9.3.4.1 

6.9.3.4.2 

文字型 

6.1.7 

6.4.2.2 

6.4.3.2 

6.4.3.5 

6.5.5 

6.6.6.4 

6.9.1 

6.9.3.1 

6.9.3.2 

文字列 

6.1.1 

6.1.7 

6.1.8 

6.3 

6.4.3.2 

6.7.1 

文字列型 

6.1.7 

6.4.3.2 

6.4.5 

6.4.6 

6.6.3.7.1 

6.7.2.5 

6.9.3.1 

6.9.3.6 

有効範囲 

6.2 

6.2.2 

6.2.2.2 

6.2.2.4 

6.2.2.5 

6.2.2.6 

6.2.2.8 

予約語 

6.1.2 

6.1.3 

6.1.4 

ラベル 

6.1.6 

6.2.1 

6.2.2.1 

6.2.2.5 

6.2.2.7 

6.2.2.8 

6.2.2.9 

6.2.2.11 

6.2.3.2 

6.2.3.3 

6.8.1 

6.8.2.4 

領域 

6.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.10 

6.2.3.1 

6.2.3.2 

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.6.3.7.1 

6.8.3.10 

6.10 

58 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

レコード型 

6.4.3.1 

6.4.3.3 

6.5.3.3 

6.6.5.3 

6.8.3.10 

レコード変数 

6.4.3.3 

6.5.3.3 

6.8.3.10 

列挙型 

6.4.2.1 

6.4.2.3 

論理型 

6.4.2.2 

6.7.2.3 

6.7.2.5 

6.9.3.1 

6.9.3.5 

論理式 

6.7.2.3 

6.8.3.4 

6.8.3.7 

6.8.3.8 

goto文 

6.8.1 

6.8.2.1 

6.8.2.4 

6.8.3.1 

6.8.3.7 

6.8.3.9 

59 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書C(参考) 標準の識別子 

abs 

6.6.6.2 

pack 

6.6.5.4 

arctan 

6.6.6.2 

page 

6.9.5 

Boolean 

6.4.2.2 

pred 

6.6.6.4 

char 

6.4.2.2 

put 

6.6.5.2 

chr 

6.6.6.4 

read 

6.6.5.2, 6.9.1 

cos 

6.6.6.2 

readln 

6.9.2 

dispose 

6.6.5.3 

real 

6.4.2.2 

eof 

6.6.6.5 

reset 

6.6.5.2 

eoln 

6.6.6.5 

rewrite 

6.6.5.2 

exp 

6.6.6.2 

round 

6.6.6.3 

false 

6.4.2.2 

sin 

6.6.6.2 

get 

6.6.5.2 

sqr 

6.6.6.2 

input 

6.10 

sqrt 

6.6.6.2 

integer 

6.4.2.2 

succ 

6.6.6.4 

ln 

6.6.6.2 

text 

6.4.3.5 

maxint 

6.7.2.2 

true 

6.4.2.2 

new 

6.6.5.3 

trunc 

6.6.6.3 

odd 

6.6.6.5 

unpack 

6.6.5.4 

ord 

6.6.6.4 

write 

6.6.5.2, 6.9.3 

output 

6.10 

writeln 

6.9.4 

60 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書D(参考) 誤り 

規格に準拠する処理系は,誤りをどう扱うかを述べた文書を用意しなければならない。そうした文書を

作成する際の便宜を図って,6.に規定するすべての誤りを再録する。 

D.1 

6.5.3.2 

添字式を一つだけ直接に含む添字付き変数の場合,その添字式の値が配列型の添字型

に対して代入可能でなければ,誤りとする。 

D.2 

6.5.3.3 

可変要素の成分が参照中又はアクセス中のときに,その可変要素が有効でなくなれ

ば,誤りとする。 

D.3 

6.5.4 

被指示変数のポインタ変数がnil値を表すならば,誤りとする。 

D.4 

6.5.4 

被指示変数のポインタ変数が不定であれば,誤りとする。 

D.5 

6.5.4 

被指示変数が参照中であるとき,その被指示変数を指示する値をそのポインタ型から

消去すれば,誤りとする。 

D.6 

6.5.5 

バッファ変数f↑が参照中であるとき,ファイル変数fの値を変更すれば,誤りとす

る。 

D.7 

6.6.3.2 

値引数について,順序型の式である実引数の値が対応する仮引数の型に対して代入可

能でなければ,誤りとする。 

D.8 

6.6.3.2 

値引数について,集合型の式である実引数の値が対応する仮引数の型に対して代入可

能でなければ,誤りとする。 

D.9 

6.6.5.2 

put, write, writeln又はpageを用いるとき,ファイルのモードがGenerationでなければ,

誤りとする。 

D.10 

6.6.5.2 

put, write, writeln又はpageを用いるとき,ファイルが不定であれば,誤りとする。 

D.11 

6.6.5.2 

put, write, writeln又はpageを用いるとき,ファイルの終わりとなっていなければ,誤

りとする。 

D.12 

6.6.5.2 

putを用いるとき,バッファ変数が不定であれば,誤りとする。 

D.13 

6.6.5.2 

resetを用いるとき,ファイルが不定であれば,誤りとする。 

D.14 

6.6.5.2 

get又はreadを用いるとき,ファイルのモードがInspectionでなければ,誤りとする。 

D.15 

6.6.5.2 

get又はreadを用いるとき,ファイルが不定であれば,誤りとする。 

D.16 

6.6.5.2 

get又はreadを用いるとき,ファイルの終わりとなっていれば,誤りとする。 

D.17 

6.6.5.2 

readについて,そのバッファ変数の値が変数アクセスの型に対して代入可能でなけれ

ば,誤りとする。 

D.18 

6.6.5.2 

writeについて,式の値がバッファ変数の型に対して代入可能でなければ,誤りとす

る。 

D.19 

6.6.5.3 

new (p, c1, . . . , cn) について,新しい変数の可変要素が指定された可変部のそれ以外の

可変要素が有効になれば,誤りとする。 

D.20 

6.6.5.3 

dispose (p) について,指示値がnew (p, c1, . . . , cn) の形式を使って作成されたもので

あれば,誤りとする。 

D.21 

6.6.5.3 

dispose (p, k1, . . . , km) について,変数がnew (p, c1, . . ., cn) の形式を使って作成された

ものでないか,又はnがmに等しくなければ,誤りとする。 

D.22 

6.6.5.3 

dispose (p, k1, . . . , km) について,pの指示値で指示される変数の有効な可変要素が選

61 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

択定数k1, . . . , kmが表す値に対応する可変要素と違えば,誤りとする。 

D.23 

6.6.5.3 

disposeについて,ポインタ型の引数がnil値を表すならば,誤りとする。 

D.24 

6.6.5.3 

disposeについて,ポインタ型の引数が不定であれば,誤りとする。 

D.25 

6.6.5.3 

因子の,代入文の又は実引数の,変数アクセスの被指示変数がnewの第2の形式を使

って作成された変数を表すならば,誤りとする。 

D.26 

6.6.5.4 

packについて,順序型の引数の値が詰めなし配列引数の添字型に対して代入可能でな

ければ,誤りとする。 

D.27 

6.6.5.4 

packについて,詰めなし配列の成分に不定であってしかもアクセスされるものが一つ

でもあれば,誤りとする。 

D.28 

6.6.5.4 

packについて,詰めなし配列の添字が詰めなし配列の添字型の上限を超えれば,誤り

とする。 

D.29 

6.6.5.4 

unpackについて,順序型の引数の値が詰めなし配列引数の添字型に対して代入可能で

なければ,誤りとする。 

D.30 

6.6.5.4 

unpackについて,詰めあり配列のいずれかの成分が不定であれば,誤りとする。 

D.31 

6.6.5.4 

unpackについて,詰めなし配列の添字が詰めなし配列の添字型の上限を超えれば,誤

りとする。 

D.32 

6.6.6.2 

sqr(x)について,xの平方の値が存在しなければ,誤りとする。 

D.33 

6.6.6.2 

ln(x)について,xが0より大きくなければ,誤りとする。 

D.34 

6.6.6.2 

sqrt(x)について,xが負であれば誤りとする。 

D.35 

6.6.6.3 

trunc(x)について,xが正又は0の場合は,0≦x-trunc(x)<1を満たす整数型の値が,負

の場合は,-1<x-trunc(x)≦0を満たす整数型の値が,存在しなければ,誤りとする。 

D.36 

6.6.6.3 

round(x)について,xが正又は0の場合は,trunc (x+0.5) の値が,負の場合は,trunc 

(x-0.5) の値が,存在しなければ,誤りとする。 

D.37 

6.6.6.4 

chr(x)について,式xの値に等しい順序数をもつ文字型の値が存在しなければ,誤り

とする。 

D.38 

6.6.6.4 

succ(x)について,式xの順序数より1だけ大きい順序数をもつその順序型の値が存在

しなければ,誤りとする。 

D.39 

6.6.6.4 

pred(x)について,式xの順序数より1だけ小さい順序数をもつその順序型の値が存在

しなければ,誤りとする。 

D.40 

6.6.6.5 

eof(f)が駆動されたとき,fが不定であれば,誤りとする。 

D.41 

6.6.6.5 

eoln(f)が駆動されたとき,fが不定であれば,誤りとする。 

D.42 

6.6.6.5 

eoln(f)が駆動されたとき,eof(f)がtrueであれば,誤りとする。 

D.43 

6.7.1 

式に含まれる変数アクセスの表す変数が,その使用時に不定であれば,誤りとする。 

D.44 

6.7.2.2 

x/yの形をした項について,yが0であれば,誤りとする。 

D.45 

6.7.2.2 

i div jの形をした項について,jが0であれば,誤りとする。 

D.46 

6.7.2.2 

i mod jの形をした項について,jが0又は負であれば,誤りとする。 

D.47 

6.7.2.2 

整数に対する演算又は関数が,整数計算に関する数学的規則に従うことができなけれ

ば,誤りとする。 

D.48 

6.7.3 

関数の駆動の結果が,その駆動のアルゴリズムの完了時に不定であれば,誤りとする。 

D.49 

6.8.2.2 

代入文について,順序型の式の値が変数又は関数名の型に対して代入可能でなけれ

62 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

ば,誤りとする。 

D.50 

6.8.2.2 

代入文について,集合型の式の値が変数の型に対して代入可能でなければ,誤りとす

る。 

D.51 

6.8.3.5 

case文について,case文に入るとき,選択式の値がどの選択定数とも等しくなければ,

誤りとする。 

D.52 

6.8.3.9 

for文について,for文の文が1回でも実行される場合,初期値の値が制御変数の型に

対して代入可能でなければ,誤りとする。 

D.53 

6.8.3.9 

for文について,for文の文が1回でも実行される場合,終値の値が制御変数の型に対

して代入可能でなければ,誤りとする。 

D.54 

6.9.1 

テキストファイルから整数を読み取る場合,先行する空白及び行末成分を読み捨てた

後,列の残りが符号付き整数の形をしていなければ,誤りとする。 

D.55 

6.9.1 

テキストファイルから整数を読み取る場合,読み取った符号付き整数の値が変数アク

セスの型に対して代入可能でなければ,誤りとする。 

D.56 

6.9.1 

テキストファイルから実数を読み取る場合,先行する空白及び行末成分を読み捨てた

後,列の残りが符号付き数の形をしていなければ,誤りとする。 

D.57 

6.9.1 

readを用いるとき,バッファ変数が不定であれば,誤りとする。 

D.58 

6.9.3.1 

テキストファイルへ書き出す場合,TotalWidth又はFracDigitsの値が1未満であれば,

誤りとする。 

D.59 

6.10 

変数に対するすべての動作,演算又は関数の実行は,変数がプログラム引数であって,

プログラム引数の結び付け方の結果として,定義どおり行えないとき,誤りとする。 

D.60 

6.6.3.8 

整合配列引数について,実引数の配列型の添字型の最小値又は最大値が,整合配列形

式の直接に含む添字型仕様の順序型名の表す型の定める閉区間内になければ,誤りと

する。 

63 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書E(参考) 処理系定義の機能 

規格に準拠する処理系は,処理系定義の機能に関する定義を示さなければならない。この定義を用意す

る際の便宜を図って,6.に規定するすべての処理系定義の機能を再録する。 

E.1 

6.1.7 

標準の文字型の処理系定義の値を表す文字列用文字。 

参考 コンパイルと実行を違う環境で行う処理系の場合,二つの文字集合及びそれらの間の対応関係

を定義しなければならないことがある。 

E.2 

6.1.9 

基準表現の字句↑,[及び],代替表現の字句@,並びに注釈両端の文字{及び}を受け

付けるか否かは処理系定義とする。 

E.3 

6.4.2.2(b) 

符号つき実数が表す処理系定義の実数の部分集合の処理系定義の近似の値。 

参考 この部分集合の定義は,他の仕様文書を参照しておくのでもよい。 

E.4 

6.4.2.2(d) 

文字型の値は,処理系定義の文字の集合の列挙とする。 

E.5 

6.4.2.2(d) 

文字型のそれぞれの値の順序数は,処理系定義とする。 

E.6 

6.4.3.5 

テキストファイル禁止文字の集合は,処理系定義とする。 

E.7 

6.6.5.2 

ファイル操作rewrite, put, reset 及び get をいつ実際に行うかは,処理系定義とする。 

E.8 

6.7.2.2 

定数名maxint が表す値は,処理系定義とする。 

E.9 

6.7.2.2 

実数に対する演算及び関数の値が数学的な結果を近似する精度は,処理系定義とす

る。 

E.10 

6.9.3.1 

整数型に対する Totalwidth の基準値は,処理系定義とする。 

E.11 

6.9.3.1 

実数型に対する Totalwidth の基準値は,処理系定義とする。 

E.12 

6.9.3.1 

論理型に対する Totalwidth の基準値は,処理系定義とする。 

E.13 

6.9.3.4.1 

ExpDigits の値は,処理系定義とする。 

E.14 

6.9.3.4.1 

実数型の値の出力に使う指数部表現文字(ʻeʼ又はʻEʼ)は,処理系定義とする。 

E.15 

6.9.3.5 

論理型の値の出力に使うʻTrueʼ及びʻFalseʼの各英字の大文字・小文字の別は,処

理系定義とする。 

E.16 

6.9.5 

生成モードのテキストファイルに手続きpageを適用したときの効果は,処理系定義

とする。 

E.17 

6.10 

ファイル型のプログラム引数の結び付け方は,処理系定義とする。 

E.18 

6.10 

reset又はrewriteを標準のファイルinput及びoutputに適用したときの効果は,処理

系定義とする。 

64 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

附属書F(参考) 処理系依存の機能 

規格に準拠する処理系は,処理系依存の機能についての文書も用意するとよい。この文書を用意する際

の便宜を図って,6.に規定するすべての処理系依存の機能を再録する。 

F.1 

6.4.3.5 

テキストファイルにtに対して,t.L又はt.Rの成分にテキストファイル禁止文字に含

まれる文字を与えたときの効果は,処理系依存とする。 

F.2 

6.5.3.2 

添字付き変数の中の添字式の評価及び配列変数のアクセスの順序は,処理系依存とす

る。 

F.3 

6.7.1 

元表記の中の式の評価順序は,処理系依存とする。 

F.4 

6.7.1 

集合構成子の中の元表記の評価順序は,処理系依存とする。 

F.5 

6.7.2.1 

二項演算子のオペランドの評価順序は,処理系依存とする。 

F.6 

6.7.3 

関数呼出しの実引数の評価,アクセス及び引数渡しの順序は,処理系依存とする。 

F.7 

6.8.2.2 

代入文の変数へのアクセス及び式の評価の順序は,処理系依存とする。 

F.8 

6.8.2.3 

手続き呼出し文の実引数の評価,アクセス及び引数渡しの順序は,処理系依存とする。 

F.9 

6.9.5 

生成の間に手続きpageを適用したテキストファイルを検査したときの効果は,処理

系依存とする。 

F.10 

6.10 

プログラム引数が表すファイル型以外の変数のプログラム外部の実体への結び付け

方は,処理系依存とする。 

65 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

氏名 

所属 

(主査) 

筧   捷 彦 

(早稲田大学) 

(幹事) 

石 畑   清 

(東京大学) 

安 村 通 晃 

(株式会社日立製作所) 

(委員) 

安 部 暁 一 

(日本電気株式会社) 

上 原 憲 二 

(三菱電機株式会社) 

落 合 正 雄 

(株式会社東芝) 

黒 田 幸 明 

(日本電信電話株式会社) 

津 田 一 生 

(富士通静岡エンジニアリング株式会社) 

西 風   一 

(沖電気工業株式会社) 

原 田   稔 

(沖電気工業株式会社) 

藤 丸 政 人 

(日本電信電話株式会社) 

古 川   彰 

(株式会社東芝) 

(事務局) 

鳥 井   寛 

(社団法人日本電子工業振興協会) 

楡 木 武 久 

(社団法人日本電子工業振興協会) 

言語標準化調査研究委員会(1993年度改名) 

氏名 

所属 

(委員長) 

中 田 育 男 

(筑波大学) 

(幹事) 

土 居 範 久 

(慶応義塾大学) 

田 中   清 

(日本電信電話株式会社) 

黒 川 利 明 

(日本アイ・ビー・エム株式会社) 

(委員) 

西 村 恕 彦 

(東京農工大学) 

原 田 賢 一 

(慶応義塾大学) 

筧   捷 彦 

(早稲田大学) 

湯 浅 太 一 

(豊橋技術科学大学) 

武 市 正 人 

(東京大学) 

田 中   茂 

(富士通株式会社) 

神 野 俊 昭 

(株式会社日立製作所) 

佐 伯 正 夫 

(三菱電機株式会社) 

落 合 正 雄 

(株式会社東芝) 

桜 井 弘 之 

(日本電気株式会社) 

原 田   稔 

(沖電気工業株式会社) 

栗 林 雅 人 

(日本ユニシス株式会社) 

一 本 有 三 

(東芝情報システム株式会社) 

村 田 賢 一 

(情報処理振興事業協会) 

大 櫛 陽 一 

(東海大学) 

中 島 一 郎 

(通産産業省) 

瀬戸屋 英 雄 

(工業技術院) 

(事務局) 

楡 木 武 久 

(社団法人日本電子工業振興協会) 

内 山 誠 作 

(社団法人日本電子工業振興協会) 

66 

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

2019年7月1日の法改正により名称が変わりました。まえがきを除き,本規格中の「日本工業規格」を「日本産業規格」に読み替えてください。 

Pascal言語JIS改正原案作成専門委員会 

氏名 

所属 

(委員長) 

筧   捷 彦 

(早稲田大学) 

(幹事) 

石 畑   清 

(明治大学) 

(委員) 

安 村 通 晃 

(慶応義塾大学) 

田 中   清 

(日本電信電話株式会社) 

落 合 正 雄 

(株式会社東芝) 

茂 木   強 

(三菱電機株式会社) 

高 橋 和 彦 

(富士通静岡エンジニアリング株式会社) 

神 野 俊 昭 

(株式会社日立製作所) 

安 部 暁 一 

(日本電気株式会社) 

原 田   稔 

(沖電気工業株式会社) 

瀬戸屋 英 雄 

(工業技術院) 

(事務局) 

内 山 誠 作 

(社団法人日本電子工業振興協会)