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

X 3011-1995

(1) 

目次

第 1 部言語仕様

1

序文

1

1.

  静的構文に対する超言語

1

2.

  静的構文及び意味

2

2.1

  基本文字

2

2.2

  式子

3

2.2.1

  名前

3

2.2.2

  変数

3

2.2.2.1

  局所変数名

4

2.2.2.2

  大域変数名

4

2.2.2.3

  変数の扱い

5

2.2.2.4

  変数の環境

8

2.2.3

  定数字列

8

2.2.3.1

  数値データの値

8

2.2.3.2

  定数字列の意味

9

2.2.4

  データの数値解釈

9

2.2.4.1

  整数解釈

10

2.2.4.2

  真偽値解釈

10

2.2.5

  定文字列

10

2.2.6

  組込み特殊変数名

10

2.2.7

  組込み関数

11

2.2.7.1

  $ASCII

12

2.2.7.2

  $CHAR

13

2.2.7.3

  $DATA

13

2.2.7.4

  $EXTRACT

13

2.2.7.5

  $FIND

14

2.2.7.6

  $FNUMBER

14

2.2.7.7

  $GET

15

2.2.7.8

  $JUSTIFY

15

2.2.7.9

  $LENGTH

15

2.2.7.10

  $NEXT(1)

15

2.2.7.11

  $ORDER

16

2.2.7.12

  $PIECE

17

2.2.7.13

  $QUERY

17

2.2.7.14

  $RANDOM

18

2.2.7.15

  $SELECT

18


X 3011-1995

目次

(2) 

2.2.7.16

  $TEXT

18

2.2.7.17

  $TRANSLATE

19

2.2.7.18

  $VIEW

19

2.2.7.19

  $Z

19

2.2.8

  単項演算子

20

2.2.9

  外部特殊変数

20

2.2.10

  外部関数

20

2.3

  式

21

2.3.1

  算術 2 項演算子

22

2.3.2

  関係演算子

22

2.3.2.1

  数値関係

22

2.3.2.2

  文字列関係

22

2.3.3

  パターン照合

23

2.3.4

  論理演算子

24

2.3.5

  連結演算子

24

2.4

  ルーチン

24

2.4.1

  ルーチン構造

24

2.4.2

  ルーチンの実行

25

2.5

  命令の一般則

25

2.5.1

  後置条件並び

26

2.5.2

  命令間の間隔

27

2.5.3

  注釈

27

2.5.4

  READ と WRITE における書式

27

2.5.5

  $X 組込み特殊変数と$Y 組込み特殊変数に対する副作用

27

2.5.6

  時間制限

28

2.5.7

  行参照

28

2.5.8

  命令の引数の間接指定

29

2.5.9

  パラメタ渡し

29

2.6

  命令の規定

30

2.6.1

  BREAK

30

2.6.2

  CLOSE

30

2.6.3

  DO

31

2.6.4

  ELSE

31

2.6.5

  FOR

31

2.6.6

  GOTO

33

2.6.7

  HALT

33

2.6.8

  HANG

34

2.6.9

  IF

34

2.6.10

  JOB

34

2.6.11

  KILL

35


X 3011-1995

目次

(3) 

2.6.12

  LOCK

35

2.6.13

  NEW

37

2.6.14

  OPEN

37

2.6.15

  QUIT

38

2.6.16

  READ

39

2.6.17

  SET

40

2.6.18

  USE

41

2.6.19

  VIEW

42

2.6.20

  WRITE

42

2.6.21

  XECUTE

42

2.6.22

  Z

42

第 2 部 MUMPS 移植要件

43

序文

43

1.

  式の要素

43

1.1

  名前

43

1.2

  局所変数

43

1.2.1

  局所変数の個数

43

1.2.2

  添字の個数

43

1.2.3

  添字の値

43

1.2.4

  ノードの個数

43

1.3

  大域変数

43

1.3.1

  大域変数の個数

43

1.3.2

  添字の個数

44

1.3.3

  添字の値

44

1.3.4

  ノードの個数

44

1.4

  データ型

44

1.5

  数値の範囲

44

1.6

  整数

44

1.7

  文字列

44

1.8

  組込み特殊変数

44

2.

  式

44

2.1

  式の入れ子

44

2.2

  結果

44

3.

  ルーチン及び命令行

44

3.1

  命令行

44

3.2

  命令行の個数

44

3.3

  命令の個数

44

3.4

  行ラベル

45

3.5

  行ラベルの個数

45


X 3011-1995

目次

(4) 

3.6

  ルーチンの個数

45

4.

  間接指定

45

5.

  記憶容量の制限

45

6.

  入れ子

45

7.

  その他の移植要件

45

8.

  $Z 関数

45

附属書 A(参考)  ASCII 文字集合

46

附属書 B(参考)  生成規則一覧

50

英和対訳

57


日本工業規格

JIS

 X

3011

-1995

プログラム言語 MUMPS

Programming language MUMPS

日本工業規格としての前書き

この規格は,

1992

年第 1 版として発行された ISO/IEC11756 (Information technology−Programming languages

−MUMPS)  を翻訳し,原国際規格の様式によって作成した日本工業規格であるが,規定内容の一部を我が

国の実情に即して変更した。

なお,この規格で側線を施してある箇所は,原国際規格の規定内容を変更した事項又は原国際規格にはな

い事項である。

第 1 部  言語仕様 

序文  第 部は,プログラム言語 MUMPS を規定する二つの章からなる。1.では,第 部全体を通じて使

う静的構文に対する超言語を規定する。2.では,言語の静的構文及び全体の意味を規定する。静的構文と

動的構文の区別は,次のとおりとする。静的構文とは,情報交換媒体での表現又は印字した場合の表現に

おける,ルーチンの文字の列としての形をいう。動的構文とは,ルーチンの解釈実行時に現れうる文字の

列としての形をいう。ただし,これは,MUMPS を実際に解釈実行 (interpret) しなければならないことを

意味しない。動的構文では,制御の移行や間接指定 (indirection) から生じる値も考慮の対象とする。

1.

静的構文に対する超言語  超言語での終端記号は,JIS X 0201 及び JIS X 0208 による文字とする。超

言語での演算子は,次のとおりとする。

演算子

意味

−−−−

−−−−−−−−−−

::=

規定

[

省略可能

|

  |

くくり

0

回以上の反復

L

並び

V

次の記号は,構文中に現れる機能文字を表現するのに用いる。

間隔 (SP)

復帰 (CR)

改行 (LF)


2

X 3011-1995

書式送り (FF)

構文上での単位は,原則として,下線付き日本語の単語(例えば,名前,式)で表す。構文要素の連接

はそれらを横に併置して表し,選択はその対象を縦に併置して表す。記号“: : =”は,構文を規定する。

省略可能な要素は“

[”と“]

”でくくり,0 回以上反復可能な要素はその後ろに“…”を付けて示す。例

えば,名前の規定は次のようになる。

数字

名前 :

:

アルファベット

アルファベット

要素をまとめたり,選択肢を明示したりするために,それらを“|”でくくることがある。

超言語での単項演算子 L は,その直後の構文要素を 1 個以上“,

”で区切りながら並べてできる並びを

表す。

“L 名前”は“名前[,名前]…”に等しい。

超言語での 2 項演算子 V は,その左の構文要素が,その右の構文要素の構文に従った値をもっていなけ

ればならないことを表す。

“例示命令”という命令を仮に次のとおりに規定したとする。

例示命令 :

:

= EXAMPLE

SP L

例示引数

例示引数 :

:

@

式子  V L  例示引数

この構文規則は,例示引数の中に現れる間接指定を評価し終えた後には,例示命令の“EXAMPLE”に

続く例示引数の並びが,式を“,

”で区切りながら並べた並びになっていなければならないことを示す。静

的構文(すなわち,間接指定を評価する前の構文)では,例示引数の並びの部分部分が@式子の形,すな

わち,間接指定になっていて差し支えない。間接指定を許容する構文要素に対しては,通常,そのすべて

の間接指定を評価し終えた時点での構文を規定する。

備考1.  この規格の引用規格を次に示す。

JIS X 0201

  情報交換用符号

JIS X 0208

  情報交換用漢字符号

2.

この規格の対応国際規格を次に示す。

ISO/IEC 11756

  Information technology−Programming languages−MUMPS

2.

静的構文及び意味

2.1

基本文字  2.では,ルーチンの静的構文を,次の文字の列として規定する。

図形文字(間隔を含む。

復帰

改行

書式送り

構文単位のうち,図形文字,アルファベット,数字及び非引用符については,表現の簡素化のために便

宜上,次のとおりに規定する。

図形文字 :

:

=  JIS X 0201 及び JIS X 0208 による図形文字(間隔を含む。)

非引用符 :

:

=  JIS X 0201 の引用符  (”)  を除く図形文字

アルファベット :

:

=  JIS X 0201 の大文字 A∼Z 及び小文字 a∼z

数字 :

:

=  JIS X 0201 の 0∼9 の数字


3

X 3011-1995

参考  国際規格表現は,ASCII 文字による。JIS X 0201 図形記号とは,次の図形記号が異なる。

JIS X 0201

名称 ASCII 図形記号

¥

円記号

上線

参照一覧  ルーチン 2.4

2.2

式子  値を求める計算過程を記述した構文要素を,式(2.3 参照)という。式を構成する最小の単位

を式子という。

局所変数名

式子 :

:

大域変数名

組込み特殊変数名

組込み関数

外部関数

外部特殊変数

定数字列

定文字列

(式)

項 :

:

単項演算子  式子

(注:アポストロフィ)

単項演算子 :

:

(注:ハイフン)

参照一覧    組込み特殊変数名  2.2.6,組込み関数  2.2.7,外部関数  2.2.10

外部特殊変数  2.2.9,定数字列  2.2.3,定文字列  2.2.5,式  2.3

局所変数名  2.2.2.1,大域変数名  2.2.2.2

2.2.1

名前

数字

名前 :

:

アルファベット

アルファベット

参照一覧  アルファベット 2.1,数字 2.1

2.2.2

変数  この規格では,

“局所変数” (local variables) 及び“大域変数” (global variables) という用語

を,他のプログラム言語での用法とは違った意味で用いる。ここでは,MUMPS 環境におけるこれらの用

語の意味を規定する。

一つのルーチン又は一群のルーチンは,オペレーティングシステムの下での一つのプロセスとして稼働

する。ルーチンは,その実行の途中で,そのルーチン専用の変数を生成し値を変更することができる。ル

ーチンは,他のプロセスとの共用変数を操作する(生成する)こともできる。これらの変数は,通常,磁

気ディスクなどの 2 次周辺装置に記録する。プロセス専用の変数は,そのプロセスの実行が終わると,消

滅する。長期使用のために生成した(共用)変数は,そのプロセスの実行が終わっても補助記憶装置上に


4

X 3011-1995

残り,以後のプロセスからも操作することができる。

MUMPS

での用語“局所変数”は,そのプロセスの活動期間にだけ使うために生成した変数を指す。こ

れらの変数は,他のプロセスからは操作することができない。しかし,通常そのプロセスの動作中に実行

されるルーチンからは操作することができる。MUMPS には,NEW 命令やパラメタ渡しのように,これら

の変数が操作可能なルーチン又はルーチンの部分を限定する構文要素がある(2.2.2.3 参照)

MUMPS

での用語“大域変数”は,MUMPS のプロセスが生成した,永続的な共用変数を指す。大域変

数は,生成されると同時に,そのシステムの下のすべてのプロセスからも操作可能とする。大域変数は,

プロセスが消滅しても消滅することがない。大域変数は,局所変数と同様に,あるプロセス内で実行され

たすべてのルーチンから操作することができる。

2.2.2.1

局所変数名

実局所変数名

局所変数名 :

:

@

式子  V  局所変数名

名前[

(L  式)

実名所変数名 :

:

@

間接指定局所変数名 @ (L  式)

間接指定局所変数名 : : =  実式 子  V  局 所変 数

実局所変数名

実式子 :

:

=  実大域変数名

局所変数の名前には,添字の並びを付けても付けなくてもよい。添字の並びを付ける場合,

“,

”で区切

りながら並べる添字の個数に上限はない。添字の並びを付けない局所変数名は,添字の並びを付けた局所

変数名と違う値をとることができる。

間接指定局所変数名がある場合,それは常に,ある実局所変数名の一部となる。その実局所変数名の値

が局所変数名として添字をもつ形のときは,その添字の幾つかが間接指定局所変数名から生じることがあ

る。この場合,実局所変数名の結果の値の先頭には,間接指定局所変数名から生じた添字の並びが並び,

その後ろに実局所変数名の残りの(空でない)添字の並びが“,

”を置いて並ぶ。

参照一覧  式子 2.2,V1,名前 2.2.1,式 2.3,L1,実大域変数名  2.2.2.2

2.2.2.2

大域変数名

実大域変数名

大域変数名 :

:

@

式子  V  大域変数名

^  (L  式)

実大域変数名 :

:

^  名前[

(L  式)

@

間接指定大域変数名 @ (L  式)

間接指定大域変数名 : : =  実式子  V  大域変数名

“^”を前置することで,大域変数の名前を示す。大域変数名には,添字の並びを付けても付けなくて


5

X 3011-1995

もよい。添字の並びを付ける場合,

“,

”で区切りながら並べる添字の個数に上限はない。名前を省略して

“^”に続けて添字の並びを直接に書いた大域変数名を,

“略式参照” (naked reference) という。略式参

照で省略した名前及び添字の並びの先頭部分(空のこともある。

)は,

“略式指標” (naked indicator) の値

によって補完する。添字の並びを付けない大域変数名は,添字の並びを付けた大域変数名と違う値をとる

ことができる。

間接指定大域変数名がある場合,それは常に,ある実大域変数名の一部となる。その実大域変数名の値

が大域変数名として添字をもつ形のときは,その添字の幾つかが間接指定大域変数名から生じることがあ

る。この場合,実大域変数名の結果の値の先頭には,間接指定大域変数名から生じた添字の並びが並び,

その後ろに実大域変数名の残りの(空でない)添字の並びが“,

”を置いて並ぶ。

大域変数名を実行すると,次のとおりに略式指標の値が変わる。大域変数名が略式指標でない次の形を

していたとする。

N (v

1

, v

2

,

…,v

m

)

m

>0

この大域変数名の参照を行うと,略式指標には,m 個の値 N,v

1

,v

2

,…,v

m-1

が入る。その後の略式参

^ (s

1

, s

2

,

…,si)

i

>0

は,次の形の大域変数名への参照とする。

N (v

1

, v

2

,

…,V

m-1

, s

1

, s

2

,

…,si)

その参照を行うと,略式指標には,m+i−1 個の値 N,v

1

,v

2

,…,v

m-1

,s

1

,s

2

,…,si−1 が入る。略

式指標の値は,略式指標でない最初の大域変数名の参照を行うまで,不定とする。略式指標の値が不定の

ときに略式参照を行うと,誤りとする。添字の並びをもたない略式参照を行う場合,略式指標は不定とす

る。

略式指標への効果は,その大域変数名が現れる文脈によらない。特に,

“SET 大域変数名=式”によっ

て大域変数に代入を行う場合は,右辺の式の評価が終わるまで略式指標の値に変化が生じない。右辺の式

の中に現れる大域変数名の略式指標への効果は,左辺での略式指標への効果よりも先に生じる。

大域変数名又は局所変数名の構文に従うものを,単に変数名という。

大域変数名

変数名 :

:

局所変数名

参照一覧  式子 2.2,V1,式 2.3,名前 2.2.1,L1,局所変数名 2.2.2.1

2.2.2.3

変数の扱い  MUMPS には,明示的な宣言文も定義文もない。局所変数も大域変数も,添字の並

びが付いていようといまいと,そこへ値を入れようとすると自動的に生成され,一度値を入れればその値

を参照することができる。MUMPS には唯一のデータ型,すなわち文字列しかないため,型宣言又は明示

的なデータ型変換は必要ない。配列は,多次元とすることができ,変数名の深さを含めて,どの深さのと

ころにもデータを同時に保持することができる。添字には,正負の整数ばかりでなく,整数以外の数値や

数値以外の文字列(空の文字列は除く。

)も使うことができる。

一般に,局所変数の記号表への操作は,次のようにみることができる。変数に最初にデータを入れるま

では,その変数の値は不定とする。SET,READ,FOR などの命令を使って,変数にデータを入れること

ができる。その後,その変数を参照すると,最近に入れたデータを得ることができる。KILL 命令を使っ

て変数を消去すると,その変数及びその変数の配列の下位成分(もしあれば)が消滅し,それらの値は不

定とする。

ルーチン又はサブルーチンがその呼び手 (caller) の局所変数を操作するのに,特有の構文は必要ない。


6

X 3011-1995

NEW

命令又はパラメタ渡しを使った場合を除いて,サブルーチン又は呼ばれたルーチン(働き手 (callee))

は,その呼び手と同じ変数・値の組をもつ。働き手が終了すると,呼び手は,その働き手が終了時にもっ

ていたのと同じ変数・値の組をもって実行を再開する。

NEW

命令は,局所変数の有効範囲を制御する。NEW 命令は,まず,指定した変数の値を保存する。続

いて,それらの変数の値を不定にする。NEW 命令を実行したルーチン又はサブルーチンからその呼び手

に戻ったとき,保存しておいた値(なかには不定のものもありうる。

)はそれぞれの変数に戻る。パラメタ

渡しは,DO 命令,外部関数及び外部特殊変数を含め,ルーチン又はサブルーチンに引数を渡す。このと

き,働き手は,呼び手が,データを渡したり受け取ったりするのに使った変数名を意識する必要がない。

局所変数と値との対応は,概念模型を使って形式的に規定する。これは,MUMPS の処理系作成方式を

規定するものではない。

この規格で使用する“名前表” (name-table) , “値表” (value-table) , “データセル” (data-cell) , “処

理スタック” (process-stack) 及び“深さ” (level) は,概念であって,MUMPS の処理系に存在する必要

はない。

変数の値は,

“名前表”及び“値表”の二つの構造体を使って規定する(実際,最低限このとおりの二つ

の表を必要とする。

こうした表は,

プロセス固有の局所変数を扱うためにそれぞれのプロセスごとに一組,

システム全体にわたる大域変数のために一組をそれぞれ必要とする。)

。変数名と値の対応操作が局所変

数・大域変数に共通であること及びパラメタ渡し又は入れ子環境による有効範囲の問題は局所変数にだけ

生じることから,2.2.2.3 以降では,局所変数についての変数と値の対応だけを対象として規定を与える。

しかしながら,表については,その構造が同じであるものの,使い方に次の二つの大きな違いがあること

に留意すること。第 1 に,大域変数用の表は共用とすること。つまり,SET,KILL などを一つのプロセス

で実行して大域変数用の表を操作すると,その効果はすべてのプロセスに及ぶ。第 2 に,大域変数用の“名

前表”の項目(変数名)と“値表”の項目(値)とは,常に 1 対 1 に対応すること。これは,パラメタ渡

し及び NEW 命令による有効範囲制御が大域変数に及ばないことによる。

“名前表”は,項目の集まりからなる。それぞれの項目は,名前と“指標” (pointer) の対を収める。こ

の指標は,その名前と“値表”の中のちょうど 1 個の“データセル”を対応させる。

“値表”は,

“データ

セル”の集まりからなる。それぞれの“データセル”は,0 個以上のさまざまの位数 (order degree) の値組

(tuple)

を収める。値組の位数とは,その値組の要素(これを添字という。

)の個数(0 のこともある。

)を

いう。

“データセル”の中のそれぞれの値組には,対応する値が伴う。

“名前表”には,その時点でそのプロセスに既知で操作可能な,添字の並びが付かない変数名又は配列

名(名前)のすべてが項目として入る。

“値表”の“データセル”には,そのプロセスでの変数の値を表す

値組のすべてが入る。

“名前表”のそれぞれの名前(項目)は,ただ一つの“データセル”を“指す” (point) 。

“名前表”の項目は,一意な名前を収める。

“名前表”の複数の項目(名前)が,同じ“データセル”を指

していることもある。したがって,

“名前表”の項目と“データセル”とは,多対 1 の対応とする。このと

き,その名前は,

“名前表”の“指標”を通してその対応する“データセル”に“束縛” (bound) されて

いるという。すなわち,指標は,この対応を表しているから,

“指標を変更する”ということは,

“ある名

前が別の“データセル”

(値)に対応するように対応を変更する”というのに等価とする。

“名前表”の項

目は,

“処理スタック”にも入ることがある(2.2.2.4 参照)

添字の並びの付かない局所変数名の値は,

“名前表”のその局所変数名の名前を収めた項目が束縛されて

いる“データセル”の中の,位数 (degree) 0 の値組が表す。位数 n の添字付き局所変数名(配列要素)の

値も同様に,その局所変数名の名前を収めた“名前表”の項目に束縛されている“データセル”の中の値


7

X 3011-1995

組が対応する。

“データセル”の中のその特定の値組は,その局所変数名の各添字と同じ値を並べてできる

位数 n の値組とする。その“データセル”の中に対応する値組が存在しない場合,その局所変数名の値は

“不定” (undefined) とする。

例  変数及び配列要素が次の値をもっているとする。

VAR1

=”Hello”

VAR2

=12.34

VAR3

=”abc”

VAR3 (

”Smith”,  ”John”, 1234)  =123

VAR3 (

”Widget”,  ”red”)  =−56

更に,変数 DEF はあるとき存在していたが現在は値も配列ももっておらず,変数 XYZ はパラメタ渡し

によって変数 VAR2 と同じ値に“束縛”されているとする。このときの“名前表”と“値表”は,次のと

おりとする。

“名前表”

”値表”

“データセル”

VAR1

−−> ()=”Hello”

VAR2

−−>

()

=12.34

            XYZ

−−>

VAR3

−−> ()=”abc”

”Smith”,  “Jobn”, 1234)  =123

(

”Widget”,  “red”)  =−56

            DEF

−−>

プロセスがまだその実行を開始していない時点では,その“名前表”及び“値表”は空とする。変数(局

所変数名)に値を“入れよう”

“代入しよう”

)とする場合は,次の(1)(4)による。

(1)

その局所変数名の名前が“名前表”の項目にない場合は,新しい空の“データセル”を指す指標及び

その名前を収めた項目を“名前表”に追加する。その新しい“データセル”を初期値組なしで“値表”

に追加する。

(2)

そうでなければ,その局所変数名の名前を収めた“名前表”の項目の中の指標を取り出す。(3)(4)

では,この指標が指す“データセル”の中の値組を対象とする。

(3)

その局所変数名に添字の並びが付いていなければ,

“データセル”の中の位数 0 の値組の表す値を,与

えられた新しい値で書き換える。対応する値組がなければ,それを作り,その新しい値を表すように

する。

(4)

その局所変数名に添字の並びが付いていれば,

“データセル”の中のその添字の値組(すなわち,その

局所変数名の名前を除いてできる値組。この値組の位数は,添字の個数に等しい。

)が表す値を,与え

られた新しい値で書き換える。対応する値組がなければ,それを作り,その新しい値を表すようにす

る。

情報を取り出そうとするとき,その局所変数名の名前が“名前表”にないか,あっても対応する“デー

タセル”の値組が存在しなければ,その値は不定とする。そうでなければ,値が存在するから,その値を


8

X 3011-1995

取り出す。空文字列(長さ 0 の文字列)の値は,データの値が不定であることとは異なる。

変数を“抹消” (kill) しようとする場合は,次の(5)(7)による。

(5)

その局所変数名の名前が“名前表”になければ,それ以上何もしない。

(6)

その局所変数名に添字の並びが付いていなければ,対応する“データセル”の中のすべての値組を消

し去る。

(7)

その局所変数名に添字の並びが付いていれば,対応する“データセル”の中の,次の(a)及び(b)の条件

を満足するすべての値組を消し去る。ただし,局所変数名から名前を削除した後の,添字の並びの中

の添字の個数を N とする。

(a)

値組の位数が N 以上であること。

(b)

値組の最初の N 個の値が,すべてその局所変数の添字の並びの中の対応する添字の値に等しい。

この概念模型に従えば,

“データセル”の中のすべての値組を消し去っても,その“データセル”自身及

び“名前表”の中の対応する名前はそのまま残る。このことは,パラメタ渡し及び NEW 命令の結果とし

てしばしば生じる。

2.2.2.4

変数の環境  多重の変数環境 (variable context) を構成するために,“処理スタック”を使う。処

理スタックは,いわゆる後入れ先出し (LIFO) 方式の並び又はプッシュダウンスタックとし,制御の流れ

又は変数環境を管理するための情報をそこに保存したり,そこから復元したりする。

“処理スタック”に積

む情報単位を枠 (frame) という。枠は,DO 枠,外部関数枠,外部特殊変数枠,NEW 枠及びパラメタ枠の

5

種類とする。

(1) DO

枠は,DO 引数の実行レベル (execution level) 及び位置を収める。引数なしの DO 命令の場合は,

その命令の実行レベル,位置及び$T の値を収める。プロセスの実行の位置とは,その時点で実行され

た命令及び引数の位置についての記述とする。この記述には,少なくとも,ルーチン名及び現在実行

している命令又は引数の直後の文字位置を含める。

(2)

外部関数枠及び外部特殊変数枠は,$T の値,実行レベル及び位置を収める。

(3) NEW

枠は,NEW 命令の引数(NEW 引数)及び一群の“名前表”項目を収める。

(4)

パラメタ枠は,仮パラメタ並び及び一群の“名前表”項目を収める。

2.2.3

定数字列  定整数列は,空でない数字の列とし,その構文は次による。

定整数列 :

:

=  数字…

定数字列の構文は,次による。

定数字列 :

:

=  仮数部[指数部]

定整数列[.定整数列]

仮数部 :

:

.定整数列

指数部 :

:

= E

定整数列

定数字列としての文字列の値は,2.2.3.12.2.3.2 に規定する。

参照一覧  数字 2.1

2.2.3.1

数値データの値  すべての変数(局所変数,大域変数及び組込み特殊変数)は,値をもつ。その

値は,確定 (defined) 又は不定 (undefined) のいずれかとする。確定であれば,値は,文字列として扱い,

文字列として演算する。数量値は,すべてのデータ値からなる集合の部分集合をなす。

有限の 10 進数字で表現しうる数値だけが,数量値として表現可能とする。次の(1)(9)の制限を満足す


9

X 3011-1995

るデータ値だけを,数値形として扱う。

(1)

数字及び文字“−”と“.

”だけからなる。

(2)

数字を少なくとも 1 個含む。

(3)

文字“.

”をたかだか 1 個しか含まない。

(4)

数値ゼロは,長さ 1 の文字列“0”で表現する。

(5)

正の数値の表現は,文字“−”を含まない。

(6)

負の数値は,文字“−”に続けてその数値の絶対値にあたる正の数値の表現を並べて表現する(した

がって,(7)(9)には,正の数値に関しての制限を示す。

(7)

正の整数の表現は,数字だけからなり,その先頭に数字“0”が並ぶことがない。

(8)  1

未満の正の数値は,文字“.

”に続けて 1 個以上の数字を並べて表現する。このとき,その末尾に数

字“0”が並ぶことはない(この表現を,小数 (fraction) という。

(9)  1

より大きい非整数の数値は,正の整数の表現(これを,その数値の整数部という。

)に続けて小数(こ

れを,その数値の小数部という。

)を並べて表現する。

これらの制限から,表現可能な数値とその表現とは 1 対 1 に対応する。このことから数量値の文字列と

しての等値性は,数値としての等値性と等価となる。

2.2.3.2

定数字列の意味  定数字列は,非負の値だけを表す。定数字列のつづりから,その数量値への変

換過程は,次の段階を経る。

(1)

その仮数部が文字“.

”を含んでいないなら,仮数部の右端に“.

”を追加する。

(2)

その指数部が存在しなければ,(4)へ進む。

(3)

その指数部に“+”があるか,符号がないかの場合には,その指数部の定整数列の値に等しいけた分

だけ,仮数部の“.

”を右に移動する。このとき,必要なだけ仮数部の右に文字“0”を補う。その指

数部に“−”がある場合には,その指数部の定整数列の値に等しいけた分だけ,仮数部の“.

”を左に

移動する。このとき,必要なだけ仮数部の左に文字“0”を補う。

(4)

その指数部を取り除き,更に,仮数部の左端及び右端に“0”が並んでいれば,それらを取り除く。

(5)

右端の文字が“.

”であれば,それを取り除く。

(6)

結果が空の文字列となった場合は,文字列“0”とする。

2.2.4

データの数値解釈  算術演算のような演算は,その被演算子の数値解釈を行う。数値解釈とは,次

のアルゴリズムに従って,すべてのデータの集合を数量値の集合に写像することを指す。数値解釈は,数

値をそのままそれ自身に写像することに注意。

備考  ある文字列の“先頭部”とは,その文字列内のある点から左側の文字列であり,そこから右側

部分はいっさい含まないものをいう。先頭部は,空文字列か完全な文字列とする。

実引数を文字列 S と仮定する。

(1)

どの順序で並んでいても,S に対して次の符号縮小の規則を可能な限り適用する。

(a)  S

が+T の形式なら+を取り除く。

(すなわち+T  −>  T)

(b)

−+T  −>  −T

(c)

−−T  −>  T

(2)

次のうちの一つを適用する。

(a)  S

の左端の文字が“−”でない場合は,定数字列の構文記述を満足する S の最長の先頭部を形成し,

次に 2.2.3.2 のアルゴリズムを適用して結果とする。

(b)  S

が−T の形式なら(a)の方法を T に適用し,左端に“−”を付加して結果とする。結果が“−0”と


10

X 3011-1995

なった場合は,

“0”に変更する。

“数式” (numeric expression) は,式と同じ構文とする。構文規定中に数式表現があると,構文実行時に

その値の数値解釈を行う。

数式 :

:

参照一覧  式 2.3

2.2.4.1

整数解釈  ある関数では,引数を整数解釈する。整数解釈とは,次のアルゴリズムに従って,す

べてのデータ値の集合を整数値の集合に写像することを指す。

最初に引数の数値解釈を行い,小数があればそれを取り除く。結果が空文字列又は,

“−”ならそれを“0”

にする。

“整数式” (integer expression) は,式と同じ構文とする。構文規定の中に整数式があると,構文実行時

にその値の整数解釈を行う。

整数式 :

:

参照一覧  式 2.3

2.2.4.2

真偽値解釈  真偽値解釈とは,次のアルゴリズムに従って,すべてのデータ値の集合を二つの整

数値“0”

(偽)と“1”

(真)に写像することを指す。

数値解釈を行い,結果が“0”でなければ“1”とする。

“真偽値式” (true-value expression) は,式と同じ構文とする。構文規定の中に真偽値式があると,構文

実行時にその値の真偽値解釈を行う。

真偽値式 :

:

=  式

参照一覧  式 2.3

2.2.5

定文字列

”  ”

…”

定文字列 :

:

非引用符

定文字列は引用符  (”)  で囲まれ印字可能な文字列からなっているが,定文字列内に引用符がある場合

は,一対の連続した二つの引用符で表す。引用符で囲まれた引用符以外の文字はいずれもそのままでそれ

自身を表し,定文字列内の連続した二つの引用符は,一つの引用符を表す。空文字列は,二つの引用符だ

けで表す。

参照一覧  非引用符  2.1

2.2.6

組込み特殊変数名  組込み特殊変数は,$の後に,次に示す名前の一つを付けて表現する。組込み

特殊変数名で,大文字と小文字は同等とする。この規格での組込み特殊変数名は,次のとおりとする。

H [OROLOG]

I [O]

J [OB]

S [TORAGE]

T [EST]

X

Y

Z

[規定なし]

Z

以外の頭文字で始まる未使用の組込み特殊変数名は,将来拡張するための保留とする。


11

X 3011-1995

組込み特殊変数名の構文の規定は,次のとおり,2.2.6 で規定する個々の組込み特殊変数名構文からの選

択とする。

$HOROLOG

組込み特殊変数の構文

$IO

組込み特殊変数の構文

組込み特殊変数名 :

:

$Y

組込み特殊変数の構文

あらゆる処理系は,個々の組込み特殊変数名を,その省略された表記も省略されない表記も同様に認識

できなければならない。

構文

規定

−−−−−−−

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

$H [OROLOG]

$H

は,1 回のアクセスで日付と時刻を与える。その値は,D,S の形式をとる。D

は,整数で,次に規定する起算日から数えた日数とする。S は,整数で,起算日か

ら数えた秒数の 86,400 での剰余とする。1840 年 12 月 31 日の最初の秒の$H の値

を 0,0 とする。S は各秒ごとに 1 ずつ増加し,午前零時ちょうどに D は 1 繰り上

がり,S は 0 となる。

$I [O]

$I

は,現用入出力装置を示す(2.6.22.6.18 参照)

$J [OB]

個々の実行中のプロセスは,それ自身のジョブ番号をもち,その$J の値は正整数

とする。各プロセスのジョブ番号は,処理系作成者が定める同時処理の範囲内でそ

のジョブに固有とする。$J は,そのジョブが生きている間は一定とする。

$S [TORAGE]

個々の処理系は,$S の値として,使用可能な主記憶装置上の領域の大きさを文字

数で返さなければならない。$S の値を求める方法は,この規格の範囲外とする。

$T [EST]

$T

は,引数を含んだ IF 命令又は時間制限を伴った OPEN 命令,LOCK 命令,JOB

命令又は READ 命令の実行から計算された真偽値とする

2.2.9

2.2.10

2.6.3

参照)

$X $X

は,非負の整数であり,現用入出力装置における,その時点での行内の,キャ

リッジや水平カーソルの位置に近い値をもつ。

復帰や書式送りに相当する制御機能

の入力・出力によって 0 に初期化する。個々の図形文字の入力・出力は,$X の値

を増加させる(2.5.5,2.6.18 参照)

$Y $Y

は,非負の整数であり,あたかも現用入出力装置が文字入出力端末であるかの

ように,その行番号に近い値をもつ。書式送りに相当する制御機能の入力・出力に

よって 0 に初期化する。改行に相当する制御機能の入力・出力は,$Y の値を 1 増

加させる(2.5.52.6.18 参照)

$Z

[規定なし]

Z

は,規格外の組込み特殊変数を規定するための予約先頭文字とする。$Z を使用

する目的は,規格を遵守した既存ルーチンを手直しすることなく,規格の将来の拡

張用に保留してある未使用頭文字の使用を許すことにある。

2.2.7

組込み関数  組込み関数は,$の後に,次に示す名前の一つを付け,後ろに括弧に囲まれた引数並

びを付けて表す。関数名で,大文字と小文字は同等とする。規格で規定された組込み関数名を次に示す。

A [SCII]

C [HAR]


12

X 3011-1995

D [ATA]

E [XTRACT]

F [IND]

FN [UMBER]

G [ET]

J [USTIFY]

L [ENGTH]

N [EXT]

O [RDER]

P [IECE]

Q [UERY]

R [ANDOM]

S [ELECT]

T [EXT]

TR [ANSLATE]

V [IEW]

Z

[規定なし]

ZP [OSIT1ON]

ZW [IDTH]

Z

以外の頭文字で始まる未使用の関数名は,将来拡張するための保留とする。組込み関数の構文は,次

のとおりに規定する。

組込み関数の構文の規定は,次のとおり,2.2.7 で規定する個々の組込み関数構文からの選択とする。

$ASCI1

関数の構文

$CHAR

関数の構文

組込み関数 :

:

$ZWIDTH

関数の構文

あらゆる処理系は,個々の組込み関数名を,その短縮された表記も省略されない表記も同様に認識でき

なければならない。

2.2.7.1

$ASCII

$A [SCII]

(式)

この形式は,次のとおりの整数値を返す。

(1)

式の値が空文字列のとき,−1 を返す。

(2)

式の値が空文字列でないとき,式の値の左端の文字に対応する整数値 n を返す。すなわち,$A ($C (n))

=n とする。

(3)

文字に対応する整数値とは,JIS X 0201 による文字の場合は,

(列番号×16+行番号)

JIS X 0208 

よる文字の場合は,

(第 1 バイト×256+第 2 バイト)とする。

$A [SCII]

(式,整数式)

この形式は,$A(式)と同様であるが,式の値の左端の文字から整数式の値の数だけ数えたところにあ


13

X 3011-1995

る文字に対応する整数値を返す。すなわち,$A(式,整数式)は,$A($E(式,整数式)

)と同等とする。

参照一覧  式 2.3,整数式 2.2.4.1,$C2.2.7.2

2.2.7.2

$CHAR

$C [HAR]

(L  整数式)

この形式は,値が非負である引数の数に相当する長さの文字列を返す。各整数式の値が閉区間 [0, 255]

内のとき,その値をもった JIS X 0201 文字に対応する。各整数式の値が閉区間 [8481, 32384] 内のとき,

その値の 256 による整数除算の結果を第 1 バイトとし,256 による剰余を第 2 バイトとする JIS X 0208 

字に対応する。この文字列の順序は,それに対応する各整数式の順序に等しい。各整数式が負の値のとき

は,$C の値の文字に写像しない。

参照一覧  整数式 2.2.4.1,L 1

2.2.7.3

$DATA

$D [ATA]

(変数名)

この形式は,変数名の構造に応じて非負の整数を返す。整数の値は,p+d とする。

d

=1

変数名が既定義のとき,すなわち,変数名の名前が“名前表”に登録済みで,変数名の添

字の値組がそれに対応する“データセル”の中に項目として存在するとき,d=1 とする。

不定のとき,d=0 とする。

P

=10

変数が下位成分をもっているとき,すなわち,変数名の“データセル”の中に少なくとも

一つの値組が存在し,次の二つの条件を満足するとき,p=10 とする。

(1)

その値組の位数が変数名の位数より大きい。

(2)

変数名の添字が N 個あったとすると,変数名の N 個の添字と,

“データセル”の中に

ある値組の初めから数えて N 個までの引数とが等しい。

変数名の項目が”名前表”に未登録のとき,又は対応する“データセル”の中にそのとお

りの値組が存在していないとき,p=0 とする。

参照一覧  変数名 2.2.2.2

2.2.7.4

$EXTRACT

$E [XTRACT]

(式)

この形式は,式の値の最左端の文字を返す。式の値が空文字列のとき,空文字列を返す。

$E [XTRACT]

(式,整数式)

s

を式の値,m を整数式の整数値とすると,$E (s, m)  は s の第 m 番目の文字を返す。m が 1 より小さい

とき又は$L (s)  より大きいとき,$E の値は空文字列とする(s の左端の文字は第 1 番目,右端の文字は第

$L (s)

番目とする。

$E [XTRACT]

(式,整数式 1,整数式 2)

n

を整数式 2 の整数値とすると,$E (s, m, n)  は s の第 m 番目から第 n 番目までの文字を返す。

次のとおりに規定する。

(1)  m

>n のとき,$E は空文字列とする。

(2)  m

=n のとき,$E (s, m, n)  =$E (s, m)  とする。

(3)  m

<n≦$L (s)  のとき,

$E (s, m, n)

=$E (s, m)  に$E (s, m+1, n)  を連結した文字列とする。

2.3.5

の連結演算子_を用いると次のとおりとする。

$E (s, m, n)

=$E (s, m) _$E (s, m+1) _…_$E (s, m+(n−m))


14

X 3011-1995

(4)  m

<n かつ$L (s)  <n のとき,

$E (s, m, n)

=$E (s, m, $L (s))  とする。

参照一覧  式 2.3,整数式 2.2.4.1,$L2.2.7.9

2.2.7.5

$FIND

$F [IND]

(式 1,式 2)

この形式は,式 1 の中に式 2 の値が含まれているかどうかを左端から調べる。見つからないとき,$F は

0

を返す。式 1 の中に式 2 の値が,左端から調べて見つかったとき,式 2 の値の次の文字が,左端から数

えて何番目にあるか調べ,その値を返す。式 2 の値が空のとき,$F は 1 を返す。

$F [IND]

(式 1,式 2,整数式)

a

を式 1 の値,b を式 2 の値,m を整数式の値とすると,$F (a, b, m)  は,a の中に b の値が含まれている

かどうかを,a 中で文字位置が max (m, 1)  である文字から始めて左から右へ調べる。p を$F ($E (a, m, $L (a)),

b

)の値とする。b の文字列が見つからないとき(例えば,p=0 のとき)

,$F は 0 を返す。それ以外のとき

は,$F (a, b, m)  =p+max (m, 1)  −1 とする。

参照一覧  式 2.3,整数式 2.2.4.1

2.2.7.6

$FNUMBER

$FN [UMBER]

(数式,$FN 符号式)

$FN

符号式 : : =式  V $FN 符号

$FN

符号 : : =$FN 符号子…

P

T

(注意:コンマ)

+

$FN

符号子 :

:

(注意:ハイフン)

数式を編集した値を返す。各$FN 符号子は,次の規則に基づいて数式を変換する(処理の順序は重要で

はない。

$FN

符号子

行為

−−−−−−  −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

P

負の数式値に括弧を付ける。数式の絶対値を A とする。$FN 符号“P”を使用すると,

結果は次のとおりとする。

(1)

数式<0 ならば,結果は”  (”_A_”)  ”とする。

(2)

数式≧0 ならば,結果は”  ”_A_”  ”とする。

T

数式の後ろに“+”又は“−”の符号を付ける。符号の抑制を行ったとき(正の値に

対する省略時又は“−”の$FN 符号子を用いたとき)

,$FN 符号“T”を使用すると,

後ろに間隔文字が続く。

数式の中にある小数点(なければ想定して)から,左へ 3 けたごとにコンマを挿入す

る。コンマが先頭にくるときはコンマを挿入しない。

数式が正の値のとき,プラス符号  (“+”)  を強制的に付ける。

“+”の位置(前に付

けるか後に付けるか)は,

“T”の$FN 符号が付いているか否かで決まる。

数式の値が負のとき,負符号“−”を削除する。

$FN

符号式が空文字列のとき,数式に特別な編集を加えない値とする。その結果は,数式の元の値のま


15

X 3011-1995

まとする。

一つの$FN 符号の中に,同じ$FN 符号子が複数個存在しても,その$FN 符号子が一つしかない場合と同

一とする。$FN 符号子“P”は,符号の抑制又は符号配置の$FN 符号子  (“T+−”)  と組み合わせると誤

りとする。

$FN [UMBER]

(数式,$FN 符号式,整数式)

この形式は,二つの引数をもつ$FN と同じとする。ただし,$FN 符号子が処理する前に,数式の小数部

分を整数式で示すけた数に四捨五入し,必要に応じて後ろに 0 を付ける。整数式が 0 のとき,数式の評価

後は小数点を含まない。−1<数式<1 のとき,$FN の結果は小数点の左にゼロ  (“0”)  を付ける。

参照一覧  数式 2.2.4,式 2.3,V1,整数式 2.2.4.1

2.2.7.7

$GET

$G [ET]

(変数名)

この形式は,指定した変数名の状態,すなわち$D(変数名)の値に応じて,次のとおりの値を返す。

(1) $D

(変数名)#10=1 のとき,変数名が指定する変数の値を返す。

(2)

それ以外のとき,空文字列を返す。

参照一覧  変数名 2.2.2.2,#2.3.1

2.2.7.8

$JUSTIFY

$J [USTIFY]

(式,整数式)

この形式は,整数式で示す幅の領域に,式の値を右詰めにした値を返す。m を$L(式)

,n を整数式の値

とすると,次のとおりに規定する。

(1)  m

≧n のとき,$J の値は式の値とする。

(2)

それ以外のときは,S (n−m)  を式に連結したものを$J の値とする。ここで,S (x)  は x 個の間隔を表

す。

$J [USTIFY]

(数式,整数式 1,整数式 2)

この形式は,数式を編集した値を返す。数式の小数部分を整数式 2 で示すけた数に四捨五入した値を r

とする。必要なら後ろに 0 を付ける。

(整数式 2 が 0 のとき,r には小数点を付けない。

)返す値は,$J(r,

整数式 1)とする。−1<数式<1 のとき,$J の値は小数点の左側に 0 が付く。整数式 2 の負の値は,$J 関

数の拡張のための保留とする。

参照一覧  式 2.3,整数式 2.2.4.1,数式 2.2.4

2.2.7.9

$LENGTH

$L [ENGTH]

(式)

この形式は,式の値の文字数を整数値で返す。式の値が空文字列のとき,$L(式)は 0 を返す。

$L [ENGTH]

(式 1,式 2)

この形式は,式 1 の値の文字列の中に,式 2 の値の文字列が重なることなく生起する回数に 1 を加えた

数を返す。式 2 の値が空文字列のとき,$L(式 1,式 2)は 0 を返す。

参照一覧  式 2.3

2.2.7.10  $NEXT(

1

)

$N [EXT]

(変数名)

この形式は,過去との互換性を保つためにある。$NEXT の開始と終了の状態を除いては,$NEXT と

$ORDER

は同じ動作をするので,できる限り$ORDER 関数を使うことが望ましい。

$N

は,添字の順序列に従った添字の値を返す。この順序列を,照合順序列を決めるための関数 CO によ


16

X 3011-1995

って,次のとおりに規定する。

文字列 s と t に対し,順序列の中で t が s に続くとき,CO (s, t)  は t を返し,それ以外のときは,CO (s, t)

は s を返すものと定義する。

m

と n を数値データ値(2.2.3.1 参照)の規定を満足する文字列とし,u と v をこの規定を満たさない非

空文字列とする。順序列を次の条件(1)

(4)によって規定する。

(1) CO

(

”  ”, s)  =s

(2)  n

>m のとき CO (m, n)  =n で,それ以外のとき CO (m, n)  =m

(3) CO

(m,

u)

=u

(4) v]u

のとき CO (u, v)  =v で,それ以外のとき CO (u, v)  =u

すなわち,空文字列の後ろにすべての文字列が続き,数値どうしは数値順序で並び,数値の後ろに非数

値文字列が続き,非数値文字列どうしは JIS X 0201 及び JIS X 0208 での照合順序に従って並ぶ。

局所変数名と大域変数名の添字付きの形式だけを許す。局所変数名又は大域変数名の形式が Name (s

1

, s

2

,

…,s

n

)

であったとする。s

n

が−1 のとき,A をすべての添字の集合とする。s

n

が−1 でないとき,A を s

n

に続くすべての添字の集合とする。すなわち,A の中のすべての s について,条件(5)(6)が成り立つ。

(5) CO

(s

n

, s)

=s

(6) $D

(Name(s

1

, s

2

,

…,s

n-1

, s))

が 0 でない。

そのとき,$N (Name (s

1

, s

2

,

…,s

n

))

は,t 以外のすべての s に対して CO (t, s)  =s となる,A 内の値 t を

返す。すなわち,s

n

に続く他のすべての添字も t に続く。

そのとおりの t が存在しないとき,−1 を返す。

$N

は,添字の値が負の数値をもつ局所変数名と大域変数名に対しては,あいまいな結果を返す。

(

1

) $NEXT

関数は,ISO/IEC 11756の次の版において含まれないかもしれない。

参照一覧  変数名 2.2.2.2,]2.3.2.2

2.2.7.11  $ORDER

$O [RDER]

(変数名)

この形式は,添字の順序列に従った添字の値を返す。この順序列を,照合順序列を決めるための関数 CO

によって,次のとおりに規定する。

CO (s, t)

を,文字列 s と t に対し,順序列の中で t が s に続くとき,CO (s, t)  は t を返し,それ以外のと

き,CO (s, t)  は s を返すものと定義する。

m

と n を数値データ値(2.2.3.1 参照)の規定を満足する文字列とし,u と v をこの規定を満足しない非

空文字列とする。順序列を次の条件(1)(4)によって規定する。

(1) CO

(

”  ”, s)  =s

(2)  n

>m のとき CO (m, n)  =n で,それ以外のとき CO (m, n)  =m

(3) CO

(m,

u)

=u

(4) v]u

のとき CO (u, v)  =v で,それ以外のとき CO (u, v)  =u

すなわち,空文字列の後ろにすべての文字列が続き,数値どうしは数値順序で並び,数値の後ろに非数

値文字列が続き,非数値文字列どうしは JIS X 0201 及び JIS X 0208 での照合順序に従って並ぶ。

局所変数名と大域変数名の添字付きの形式だけを許す。局所変数名又は大域変数名の形式が Name (s

1

, s

2

,

…,s

n

)

であったとする。ここで s

n

は空文字列であってもよい。A を s

n

に続くすべての添字の集合とする。

すなわち,A の中のすべての s について,条件(5)(6)が成り立つ。

(5) CO

(s

n

, s)

=s


17

X 3011-1995

(6)  $D (Name (s

1

, s

2

,

…,s

n-1

, s))

が 0 でない,

そのとき,$O (Name (s

1

, s

2

,

…,s

n

))

は,t 以外のすべての s に対して CO (t, s) =s となる,A 内の値 t

を返す。すなわち,s

n

に続く他のすべての添字も t に続く。

そのとおりの t が存在しないとき,$O は空文字列を返す。

参照一覧  変数名 2.2.2.2,]2.3.2.2

2.2.7.12  $PIECE

$P [IECE]

(式 1,式 2)

この形式は,関数 NF によって規定する。関数 NF は,規定の目的だけに用いられ,m 番目の生起に続

く位置を見いだす。

NF (s, d, m)

は,文字列 s,d と整数 m によって,次のとおりに規定する。

(1)  d

が空文字列のとき,その結果は 0 とする。

(2)  m

≦0 のとき,その結果は 0 とする。

(3)  d

が s の部分文字列でないとき,すなわち,$F (s, d)  =0 のとき,その結果は,$L (s)  +$L (d)  +1 と

する。

(4)

それ以外のとき,NF (s, d, 1)  =$F (s, d)  とする。

(5)  m

>1 のとき,NF (s, d, m)  =NF ($E (s, $F (s, d) , $L (s)), d, m−1)  +$F (s, d)  −1 とする。

(6)

すなわち NF は,$F を拡張することによって,文字列 s の中で m 番目に生起する文字列 d の右側にあ

る文字の位置を示す数値を与える。

s

を式 1 の値とし,d を式 2 の値とする。$P (s, d)  は,s の部分文字列のうち,最初(一番左)の d の生

起までの文字列(d は含めない)を返す。

$P (s, d)

=$E (s, 0, NF (s, d, 1)  −$L (d)  −1)  とする。

$P [IECE]

(式 1,式 2,数式)

m

を整数式の整数値とする。$P (s, d, m)  は,s の部分文字列のうち,m−1 番目の d の生起と m 番目の d

の生起ではさまれる文字列(m−1 と m 番目の d は含めない)を返す。

$P (s, d, m)

=$E (s, NF (s, d, m−1) , NF (s, d, m)  −$L (d)  −1)  とする。

$P [IECE]

(式 1,式 2,整数式 1,整数式 2)

n

を整数式 2 の整数値とする。$P (s, d, m, n)  は,s の部分文字列のうち,左側を m−1 番目の d の生起,

右側を n 番目の d の生起ではさまれる文字列(m−1 と n 番目の d は含めない)を返す。

$P (s, d, m, n)

=$E (s, NF (s, d, m−1) , NF (s, d, n)  −$L (d)  −1)

$P (s, d, m, m)

=$P (s, d, m)  で,$P (s, d, 1)  =$P (s, d)  とする。

参照一覧  式 2.3,整数式 2.2.4.1

2.2.7.13  $QUERY

$Q [UERY]

(変数名)

変数名 1=^A (i

1

,i

2

,

…,i

p

)

,変数名 2=^A (j

1

,j

2

,…,j

q

)

とするとき,変数名 1 と変数名 2 の間に照合

順序関係が存在する。どのような (i

k

, j

k

)

の組合せにおいても,次の(1)(3)のいずれかの条件を満足する

とき,変数名 2 は変数名 1 に続くと規定する。

(1)  p

<q かつ 0<k≦p であるすべての k に対して,i

k

=j

k

(2)  P

=0 かつ q>0

(3)  k

>0 で k≦min (p, q)  ,かつ

i

k

≠j

k

である k が存在し,かつ


18

X 3011-1995

0

<n<k で i

n

≠j

n

となる n は存在せず,かつ

2.2.7.11

($ORDER の規定)で規定されている関数 CO (i

k

, j

k

)

が jk に等しい。

すなわち,初めの指標が異なるとき,最初に異なる指標について,変数名 2 のほうが変数名 1 のも

のより後ろに続く場合とする。

上の規定に従って,変数名 2 が変数名 1 に続くとき,変数名 2 を返すように関数 CQ(変数名 1,変数名

2

)を定義する。

名前値 : : =式

名前値は,変数名の構文をもち,(4)

(6)の条件を満足する。

(4)

その変数名は,略式参照でない。

(5)  2.2.3.1

で規定されている数の形式をもつ添字は,それぞれ定数字列数値として表す。

(6)  2.2.3.1

で規定されている数の形式をもたないそれぞれの添字は,次のとおりに規定する添字文字列と

して表す。

”  ”

添字文字列 : : =  ”

添字用非引用符文字

ここで,添字用非引用符文字を次のとおりに規定する。

添字用非引用符文字 : : =添字における引用符記号を除いたすべての有効な文字

このとき,関数$QUERY の値を,(7)(8)によって規定する。

(7) CQ

(変数名 1,変数名 2)=変数名 2 となる変数名 2 が存在するとき,

CQ

(変数名 1,変数名 3)=変数名 3,かつ

CQ

(変数名 3,変数名 2)=変数名 2 となる変数名 3 が存在しない場合に限り,$QUERY(変数名 1)

関数の値は,変数名 2 を表す名前値とする。

(8) CQ

(変数名 1,変数名 2)=変数名 2 となる変数名 2 が存在しないとき,$QUERY(変数名 1)関数

の値は,空文字列とする。

参照一覧  変数名 2.2.2.2,式 2.3

2.2.7.14  $RANDOM

$R [ANDOM]

(整数式)

この形式は,閉域区間[0,整数式−1]で一様分布する整数の乱数又は疑似乱数を返す。整数式の値が

1

より小さいとき,誤りとする。

参照一覧  整数式 2.2.4.1

2.2.7.15  $SELECT

$S [ELECT]

(L |  真偽値式:式 | )

この形式は,対応する真偽値式が真である最も左の式の値を返す。評価の過程は,真偽値式を左から右

の順に一つずつ,その値が真である最初の一つを見つけるまで行う。この真偽値式に対応する式だけが評

価され,この値を$S の値とする。すべての真偽値式が偽のとき,誤りとする。$S の呼出しにおいては,

一つの式しか評価しないので,少なくともその式は,定義された値をもたなければならない。

参照一覧  真偽値式 2.2.4.2,式 2.3,L1

2.2.7.16  $TEXT

+整数式

$T [EXT]

入り口参照

この形式は,引数によって示された行の内容の文字列を返す。厳密には,行終端を消去して行の全体を


19

X 3011-1995

返す。

$T

関数の引数が入り口参照の場合,行は入り口参照によって示す。入り口参照が実在ラベルを含まない

場合,行はルーチンの最初の行を示す。引数が+整数式で示される場合,次のとおりとする。整数式の値

が 0 より大きいとき,そのルーチンの整数式番目の行を示し,整数式の値が 0 に等しいとき,そのルーチ

ンのルーチン名を示す。整数式の値が 0 より小さいとき,誤りとする。

引数によって記述された行が存在しないとき,空文字列を返す。行指定があいまいな場合,その結果は

規定しない。

参照一覧  整数式 2.2.4.1,入り口参照 2.5.7

2.2.7.17  $TRANSLATE

$TR [ANSLATE]

(式 1,式 2)

式 1 の値を s とする。$TR(式 1,式 2)は,s の中の文字から,式 2 に含まれる文字をすべて取り除い

た結果を返す。

$TR [ANSLATE]

(式 1,式 2,式 3)

式 1 の値を s とする。$TR(式 1,式 2,式 3)は,s の中の文字から,式 2 の文字を式 3 の文字にすべ

て置き換えた結果を返す。s の中の文字が式 2 の中で 1 回以上生起したとき,最初(一番左)のものを変

換対象の位置とする。

変換は,s の中の各々の文字について一度だけ行う。s の中に式 2 の文字がない場合は,そのままとする。

式 2 の中の文字で,式 3 の中の同じ位置に文字がないものは,s から取り除く(これは,式 3 が式 2 より

短い場合とする。

式 2 の値が空文字列のとき,変換は行わず,s は変化させない。

参照一覧  式 2.3

2.2.7.18  $VIEW

$V [IEW]

(規定なし)

この形式によって,処理系作成者は機械に依存する情報を調べるための呼出しができる。$V 関数を含む

ルーチンは,移植性が保証され得ないことを理解すべきである。

2.2.7.19  $Z

ここで規定する以外の$Z で始まる形式は,規格外の組込み関数のための予約先頭文字とする。この目的

は,将来用いるために保留されている関数名の使用を許すことにある。

2.2.7.19.1  $ZPOSITION

$ZP [OSITION]

(式,整数式)

この形式は,式の値の文字列について,JIS X 0201 の 1 文字に対してはピッチを 1 とし,JIS X 0208 

1

文字に対してはピッチを 2 として,

先頭からのピッチ数が整数式の整数値を超えない文字位置数を返す。

次の形式の数式が省略され,p=2 としたものとする。

参考  ピッチは,文字の表示横幅の単位で,JIS X 0201 及び JIS X 0208 の文字が混在する文字列の出

力処理を容易にするために,便宜上用いる。

$ZP [OSITION]

(式,整数式,数式)

s

を式の値の文字列,f を整数式の整数値,p を数式の値とすると,次のとおりに規定する。

(1)  $ZWIDTH (s, p)

≦f のとき,$LENGTH (s)  を返す。

(2) $ZWIDTH

(s,

p)

>f のとき,n を,$ZWIDTH ($EXTRACT (s, 1, n) , p)  ≦f が成り立つ最大の整数とす

る。


20

X 3011-1995

$ZWIDTH ($EXTRACT (s, 1, n) , p)

=f のとき,n を返す。

$ZWIDTH ($EXTRACT (s, 1, n) , P)

<f のとき,

n

+ (f−$ZWIDTH ($EXTRACT (s, 1, n) , p))  ÷$ZWIDTH ($EXTRACT (s, n+1) , p)  を返す。

参照一覧  $ZWIDTH 2.2.7.19.2,式  2.3,数式  2.2.4,整数式  2.2.4.1

2.2.7.19.2  $ZWIDTH

$ZW [IDTH]

(式)

この形式は,式の値の文字列について,JIS X 0201 の 1 文字に対してはピッチを 1 とし,JIS X 0208 

1

文字に対してはピッチを 2 として計算したピッチ数を返す。

$ZW [IDTH]

(式,数式)

この形式は,式の値の文字列に対して,JIS X 0201 の 1 文字に対してはピッチを 1 とし,JIS X 0208 

1

文字に対してはピッチを数式の値として計算したピッチ数を返す。

参照一覧  式  2.3,数式  2.2.4

2.2.8

単項演算子  単項演算子には,  ’(否定),+(プラス),−(マイナス)の三つがある。

否定は,その右側の式子の真偽値を逆転する。式子の真偽値解釈が 0 のとき,  ’式子の値は 1,ほかの

条件のときその値は 0 とする。

(’  ’は二度逆転するため,元の式子の値と同じになることに注意)

プラスは,単に数値解釈を意味する。+式子の値は,式子の値の数値解釈とする。

マイナスは,式子の数値解釈を負にする。−式子の値は,−N の数値解釈とする。ここで,N は式子の

値とする。

単項演算子の演算の順は,右から左とする。

2.2.9

外部特殊変数

外部特殊変数 : : =$$行ラベル参照

外部特殊変数は,$$を行ラベル参照に前置することによって示す。外部特殊変数は,何らかの値を返す

サブルーチンを呼び出す。外部特殊変数を実行するとき,$T の現在値,現在実行中のレベル及び現在実行

中の位置を,

“処理スタック”上の外部特殊変数枠に保存する。

実行は,行ラベル参照によって示された仮パラメタ行の最初の命令に続く。レベル行への外部特殊変数

の実行は誤りとする。

サブルーチンから戻ると,$T の値と実行レベルは元に戻され,サブルーチンを終了させた QUIT 命令の

引数の値が,外部特殊変数の値として戻る。

行ラベル参照がxである外部特殊変数は,次の外部関数と同じとする。

$$

x()

行ラベル x は,仮パラメタ並び(空でもよい。

)をもたなければならない。

参照一覧  行ラベル参照 2.5.7

2.2.10

外部関数

外部関数 : : =$$行ラベル参照  実パラメタ並び

外部関数は,先頭の$$,それに続く行ラベル参照及びパラメタの実パラメタ並びによって示す。外部関

数は,何らかの値を返すサブルーチンを呼び出す。外部関数を実行するとき,$T の現在値,現在実行中の

レベル及び現在実行中の位置を,

“処理スタック”上の外部関数枠に保存する。実パラメタ並びのパラメタ

は 2.59 の規定によって処理する。

実行は,行ラベル参照によって示された仮パラメタ行の最初の命令に続く。この仮パラメタ行は,実パ

ラメタ並びに含まれる名前の個数以上の名前の個数をもつ仮パラメタ並びを含まなければならない。レベ


21

X 3011-1995

ル行への外部関数の実行は誤りとする。

サブルーチンから戻ると,$T の値と実行レベルは元に戻され,サブルーチンを終了させた QUIT 命令の

引数の値が,外部関数の値として戻る。

参照一覧  行ラベル参照 2.5.7,実パラメタ並び 2.5.9

2.3

式  式は,式子を算術 2 項演算子,文字 2 項演算子又は真偽 2 項演算子で区切って並べることで構

成する。

:

式子[式尾]…

2

項演算子

式子

式尾

:

 [

’]  真偽演算子

[

’] ?パターン

_

(注意:アンダースコア)

(注意:ハイフン)

2

項演算子

:

:

*

¥

#

関係演算子

真偽演習子

:

:

論理演習子

関係演習子 :

:

&

論理演習子

:

:

参考  国際規格表現は,ASCII 文字による。JIS X 0201 図形記号とは,次の図形記号が異なる。

JIS X 0201

名称 ASCII 図形記号

¥

円記号

式の評価順は,次のとおりとする。

(1)

左側の式子を評価する。

(2)

すぐ右側に式尾があれば,その式子又はパターンを評価し,その演算子を適用する。

(3)

必要なら(2)を右方向へ繰り返す。

演算子の優先順位は,文字列 2 項演算子,算術 2 項演算子及び真偽 2 項演算子を区別せず,左から右へ

の順番を適用する。


22

X 3011-1995

不定の値の局所変数名,大域変数名又は組込み特殊変数名を含んでいる場合,誤りとする。

参照一覧  式子 2.2,パターン 2.3.3

2.3.1

算術 項演算子  2 項演算子+,−,*,/,¥,#を算術 2 項演算子と呼ぶ。これらは,被演算子

を数値として解釈し,数値(ある場合は整数)の結果を与える。

+  代数加算

−  代数減算

*

代数乗算

/

代数除算。一つの引数が正で,もう一つの引数が負ならば結果は負とする。

0

で除した場合,誤りとする。

¥

商。代数除算の結果の整数値解釈を行う。

#

剰余。左引数の右引数による剰余を与える。右引数が 0 でなければ,

A#B

=A− (B×floor(A÷B))

ここで floor (x)  は,x を超えない最大の整数とする。

参考  国際規格表現は,ASCII 文字による。JIS X 0201 図形記号とは,次の図形記号が異なる。

JIS X 0201

名称 ASCII 図形記号

¥

円記号

2.3.2

関係演算子  関係演算子=,<,>,],[は,演算の結果が真ならば真偽値 1 を返し,それ以外な

らば 0 を返す。複合演算子  ’関係演算子は,次のとおりに規定する。

A

’関係演算子 B は,  ’A 関係演算子 B)と同じとする。

2.3.2.1

数値関係  不等式>,<は,被演算子の数値解釈をする。これらは,通常の代数的に大きいか小

さいかを表す。

2.3.2.2

文字列関係  文字列関係演算子=,],[では,その両被演算子を数値解釈することがない。

文字列関係演算子=は,等値性を検査する。被演算子が数値でないかもしれない状況で,数値としての

等値性を検査する場合,プログラマは適切な単項演算子を,その非数値の被演算子に適用してもよい。両

方の引数が数値であると分かっている場合には(例えば,2 項演算子_以外の演算の結果の場合など)

,単

項演算子は必要ない。両方の被演算子が数値である場合,数値表現は一意なので,双方の文字列としての

等値性と数値としての等値性が等価であることが保証されている。ただし,算術精度に伴う一般的な問題

があるので,除算演算子/が誤った結果を導く可能性があることに注意しなければならない。

関係演算子[を包含演算子と呼ぶ。A[B は,B が A の部分文字列であるときだけ真とする。すなわち,

A

[B は,  ’

’$F (A, B)  に等しい。空文字列は,あらゆる文字列において部分文字列となる。

関係演算子]を追従演算子と呼ぶ。A]B は,JIS X 0201 及び JIS X 0208 の照合順序で,A が B に追従

するときだけ真とする。A が B に“追従する”のは,次の場合だけとする。

(1)  B

は空文字列で,A は空文字列でないとき。

(2)  A

も B も空文字列でなく,

A

の文字列の最左端の文字が,

B

の文字列の最左端の文字に追従している,

すなわち,A の文字列の最左端が,B の文字列の最左端の文字の JIS X 0201 または JIS X 0208 の照合

順序で後ろに続くとき。

(3)  n

が正整数で,文字列 A,B の先頭から n 文字が一致している。すなわち,

$E (A, 1, n)

=$E (B, 1, n)  で,

A

の残りの文字列が,B の残りの文字列に追従している,すなわち,

$E (A, n

+1, $L(A))  が$E (B, n+1, $L(B))  に追従しているとき。


23

X 3011-1995

2.3.3

パターン照合  パターン照合演算子?は,左側被演算子の文字列の形式を検査する。S?P は,S が

パターン P で指定された文字列クラスに含まれていれば真とし,そうでなければ偽とする。

パターンは,パターン子並びとする。

パターン子  …

パターン : : =

@

式子  V  パターン

パターンが,n 組のパターン子からなるとすると,S?パターンは,次のとおりの n 組の S の部分文字列

の分割が存在すれば真とし,そうでなければ偽とする。

S

=S

1

,S

2

,…,S

n

ただし,部分文字列 S1 とパターン子は,1 対 1 に順番に対応し,各 S

1

は,それぞれのパターン子を満

足していなければならない。S

1

の幾つかは,空文字列でもよい。

それぞれのパターン子は,反復回数とそれに続くパターン符号又は定文字列からなる。S の部分文字列

S

1

は,それぞれ対応するパターン符号又は定文字列を満足する部分文字列に分解させることができるなら

ば,パターン子の条件を満足する。

パターン符号

パターン子

:

:

=  反復回数

定文字列

定整数列

反復回数

:

:

[定整数列 1]

[定整数列 2]

C

N

P

A

L

U

E

パターン符号

:

:

パターン符号で,大文字と小文字は同等とする。それぞれのパターン符号は,次のとおりに文字クラス

を 1 文字で表現する。

C

JIS X 0201

の 33 個の制御文字,DEL を含む

N

JIS X 0201

の 10 個の数値文字

P

JIS X 0201

の 33 個の句読文字,間隔を含む

A

JIS X 0201

の 52 個のアルファベット

L

JIS X 0201

の 26 個の英小文字

U

JIS X 0201

の 26 個の英大文字

E

すべての文字

JIS X 0201

の 8 単位符号 10 列から 13 列の文字

JIS X 0208

の図形文字

すべての未使用のパターン符号文字は,保留してある。

定文字列は,定文字列に等しい文字列だけが満足する。

反復回数が繰返しを表す“.

”の形式ならば,個々の S

1

がパターン子の条件を満足する 0 個以上の S

1


24

X 3011-1995

連結からなる文字列が,そのパターン子を満足する。

反復回数が一つの定整数列ならば,パターン子は,個々の S

1

がパターン子の条件を満足した定整数列個

の S

1

を連結させたものとする。特に,定整数列が 0 の場合には,対応する S

1

は空文字列とする。

反復回数が定整数列 1.定整数列 2 の形式ならば,定整数列 1 が範囲の下限,定整数列 2 が範囲の上限を

表す。上限が下限よりも小さいならば誤りとする。下限が省略され上限が指示されている場合,すなわち

“,定整数列 2”の形式の場合,下限を 0 とする。上限が省略され下限が指示されている場合,すなわち

“定整数列 1.”の形式の場合,上限を無限回とする。すなわち,反復回数の範囲は少なくとも定整数列 1

とする。パターン子の指定に適合する幾つかの S

1

を連結することで,そのパターン子を満足するが,その

S

1

の個数は,明示的又は暗黙的に指示された境界を含む範囲内になければならない。

2

重演算子“?”は,次のとおりとする。

A

’?B=’(A?B)

参照一覧  式子 2.2V1,定文字列 2.2.5,定整数列 2.2.3

2.3.4

論理演算子  演算子!と&を論理演算子と呼ぶ(これらを,論理和及び論理積という。)。これらは,

引数の真偽値解釈を行い,真偽値を結果としてもたらす。

A!B

A

及び B がともに 0 ならば 0

それ以外ならば 1

A&B

A

及び B がともに 1 ならば 1

それ以外ならば 0

2

重演算子’&及び’!の規定は,次のとおりとする。

A

&B

=’

(A&B)

A

’!B=’(A!B)

2.3.5

連結演算子  アンダスコア記号_を連結演算子とする。この演算子は,いかなる数値解釈も行わな

い。A_B の結果は,A の文字列の後ろに B の文字列を連結した文字列とする。

2.4

ルーチン  ルーチンは,ルーチンの情報交換の単位とする。ルーチンの情報交換では,各ルーチン

は,識別名であるルーチン名を含むルーチン頭から始まり,実行される命令を含むルーチン体が続く。ル

ーチン頭は,実行コードには含まれない。

ルーチン

:

:

ルーチン頭  ルーチン体

ルーチン頭

:

:

ルーチン名  行終端

ルーチン名

:

:

名前

参照一覧  ルーチン体 2.4.1,名前 2.2.1

2.4.1

ルーチン構造  ルーチン体は,ルーチン終端で終わる行の連続とする。それぞれの行は,一つの行

開始で始まり,

その前に省略可能な行ラベル及び仮パラメタ並びを付けることができる。

行開始の後には,

0

個以上のレベル指標が続き,更に 0 個以上の命令及び行終端が続く。行の最後の命令と注釈の間には,1

個以上の間隔を置く。行の“深さ”は,レベル指標の数に 1 を加えた値とする。

ルーチン体

:

:

行…ルーチン終端

仮パラメタ行

:

レベル行

仮パラメタ行

:

:

行ラベル  仮パラメタ並び  行開始  行体

レベル行

:

[行ラベル]行開始[レベル指標]…行体


25

X 3011-1995

命令の並び[命令分離子  注釈]

行体

:

注釈

行終端

仮パラメタ並び

:

:

=  (

[L 名前]

名前

行ラベル

:

定整数列

命令の並び

:

:

命令[命令分離子  命令]…

行開始

:

間隔…

レベル指標

:

:

[間隔]…

命令分離子

:

:

間隔…

行終端

:

復帰  改行

ルーチン終端

:

:

復帰  書式送り

行の行開始の左に行ラベルが存在するとき,その位置を行ラベルの“定義位置” (defining occurrence) と

いう。一つのルーチン体の中では,異なる定義位置の行ラベルが,同一のつづりであってはならない。仮

パラメタ並びは,

”深さ”が 1 の行(レベル指標を含まない)だけに与えることができる。

参照一覧  注釈 2.5.3,名前 2.2.1,L1,定整数列 2.2.3,命令 2.5

2.4.2

ルーチンの実行  ルーチンは,ブロックの順番に実行する。各ブロックは,動的に定義され,引数

なし DO 命令,DO 引数,外部関数又は外部特殊変数によって呼び出す。それぞれのブロックは,同じ“深

さ”の行の集合であり,各ブロックは,DO,外部関数又は外部特殊変数によって,その参照行から開始さ

れ,明示又は暗黙の QUIT 命令で終了する。DO 引数,外部関数又は外部特殊変数で行ラベルが指定され

なければ,ルーチン体の最初の行が使われる。

“実行レベル”は,現在実行される行の“深さ”と規定する。

現在の実行の“深さ”よりも大きな“深さ”をもっている行は無視する。すなわち,そのような行は実行

されない。現在の実行より小さい“深さ”をもった行又はルーチン終端に遭遇したならば,このブロック

を終了させるための暗黙の QUIT 命令を実行する。プロセスでの初期の“深さ”は 1 とする。無引数 DO

命令は,実行レベルを 1 増加させる。

ルーチン又はサブルーチンの中での実行の過程は,呼び出された行ラベルの行又は行ラベルの指定がな

い場合にはルーチンの先頭の行から,終端方向に行単位で行われる。行の実行の中では,左端の命令から

右方向へと命令単位で実行する。ルーチン制御を行う DO 命令,ELSE 命令,FOR 命令,GOTO 命令,IF

命令,QUIT 命令及び XECUTE 命令,外部関数並びに外部特殊変数は,この実行の流れを変える。命令の

中においては,この規格で特に明示的に規定を与えない限り,すべての式子は,左端から右方向へ評価す

る。ある式子を評価するときには,その前にその左側にあるすべての式子を評価する。式子が間接指定を

含むときは,先にそれを完全に解決してからその式子を評価する。式子は,式子の規定を満足する最も長

い文字列で構成する。

仮パラメタ行は,外部関数,外部特殊変数又は実パラメタ並びを含む DO 引数付き DO 命令の結果とし

て,呼び出さなければならない。それ以外で仮パラメタ行を実行開始することは誤りとする。

参照一覧  QUIT2.6.15,DO2.6.3,GOTO2.6.6

2.5

命令の一般則  すべての命令は,その命令の構文と解釈を示す命令語で始まる。命令語で,大文字

と小文字は同等とする。この規格には次の命令語を含む。

B [REAK]

C [LOSE]

D [O]


26

X 3011-1995

E [LSE]

F [OR]

G [OTO]

H [ALT]

H [ANG]

I [F]

J [OB]

K [ILL]

L [OCK]

N [EW]

O [PEN]

Q [UIT]

R [EAD]

S [ET]

U [SE]

V [IEW]

W [RITE]

X [ECUTE]

Z

[規定なし]

現在命令語として使用していない頭文字は,この規格を将来拡張するための保留とする。

命令の構文の規定は,次のとおり,2.6 で規定する個々の命令構文からの選択とする。

BREAK

命令の構文

CLOSE

命令の構文

命令 : : =

XECUTE

命令の構文

あらゆる処理系は,個々の命令を,その短縮された表記も省略されない表記も同様に認識できなければ

ならない。二つの命令語の頭文字が同じ場合,それらは引数の構文で区別することができる。

複数の引数をもつことのできる命令では,

命令語  引数 1,引数 2,…

という構文はすべて次の命令と等価とする。

命令語  引数 1  命令語  引数 2…

2.5.1

後置条件並び  ELSE,FOR 及び IF を除くすべての命令は,命令語の直後に条件として後置条件を

付けることで,命令全体を条件付けることができる。

後置条件 : : =[:真偽値式]

後置条件がないか,後置条件があってもその真偽値式の値が真なら,その命令を実行する。後置条件が

あって,その真偽値式の値が偽なら,その命令語とその引数は実行せず,次へ移る。

後置条件は,DO 命令,GOTO 命令又は XECUTE 命令の引数の条件付けにも用いることができる。その

場合,その後置条件を評価する前に,その後置条件の付いた引数の式子を評価する。


27

X 3011-1995

参照一覧  真偽値式 2.2.4.2

2.5.2

命令間の間隔  間隔は意味のある文字とする。行の中でそれらを用いるときには,次の規則を適用

する。

(1)

行が注釈で終了する場合にだけ,行終端の直前に間隔があってもよい(行開始を行終端の直前に配置

することができるので,行開始としての間隔にはこの規則は適用しない。

(2)

命令が少なくとも一つの引数を含む場合,

命令語又は後置条件の後ろには,

正確に一つの間隔を置く。

その命令がその行の最後ではない場合又は注釈が後ろに続く場合,その命令の後ろには一つ以上の間

隔を置く。

(3)

命令が引数をもたず,その行の最後の命令ではない場合又はその後ろに注釈が続く場合,その命令語

又は後置条件の後ろには,少なくとも二つの間隔を置く。それが行の最後の命令で,注釈が続かない

とき,その命令の後ろ又は後置条件の直後に行終端を置く。

2.5.3

注釈  命令語の最初の文字の位置にセミコロンがあると,それは注釈の先頭とする。その行の行終

端までの残りは,図形文字だけで構成されなくてはならず,それ以外の場合は無視し,何も機能しない。

注釈 : : =;

[図形文字]…

参照一覧  図形文字 2.1

2.5.4

READ

と WRITE における書式  書式は,READ 命令と WRITE 命令の中で使うことができ,出力

書式の制御を指定する。書式のパラメタは,一時に一つずつ,左から右へ順に処理する。

! …[?整数式]

書式 : : =  #

?整数式

一つの書式の中にパラメタが複数ある場合,

それらをコンマで区切る必要はない。

それらのパラメタは,

次の形式とする。

!は,現用装置上で,

“行更新” (new line) 処理を起こす。これは純粋な文字入出力装置で,復帰

に続けて改行を出力するのと等価とする。更に,$X が 0 となり,$Y が 1 増加する。

#

は,現用装置上で,

“ページ更新”  (top of form)  処理を起こす。この効果は,純粋な文字入出力装

置で,復帰に続けて書式送りを出力するのと等価とする。更に,$X と$Y は 0 とする。現用装置が

表示装置なら,画面を消去し,カーソルは左上隅に移動する。

?整数式は,整数式文字の“欄まで移動” (tab to column) するのと同様な効果をもつ。$X が整数

式以上の場合,何も起こらない。そうでない場合,これは(整数式−$X)個の間隔を出力するのと

同じとする(各行の左端の欄は位置 0 とする。

参照一覧  整数式 2.2.4.1

2.5.5

$X

組込み特殊変数と$Y 組込み特殊変数に対する副作用  READ 命令及び WRITE 命令は,一時に

1

文字ずつ転送する。そのとき,ある文字又は文字の組合せが,現用装置の種類によっては装置の制御機

能を表すことがある。入出力監視機構が,これらの制御文字又は制御文字列を検出できる限りにおいて,

$X

及び$Y の値は次のとおりに変わる。

図形文字:  キャリッジや水平カーソルが実際に移動した値を$X に加える。

後退文字:  キャリッジや水平カーソルが実際に後退した値を$X から減ずる。

改行: $Y を 1 増やす。

復帰: $X の値を 0 にする。


28

X 3011-1995

改頁: $Y と$X の値をともに 0 にする。

2.5.6

時間制限  OPEN 命令,LOCK 命令,JOB 命令及び READ 命令には,時間制限の指定を付け,外部

の条件を調べることができる。

時間制限 : : =:数式

時間制限がない場合,その命令の規定に関連した条件が満足されれば,その命令の処理が進行する。条

件が満足されなければ,それが満足されるまで命令の実行を待ち,満足されてから処理が進行する。

時間制限がなければ,$T 組込み特殊変数の値は変わらない。

時間制限がある場合,数式の値は 0 又は正の値でなくてはならない。負の値の場合は,0 とみなす。数

式の値を t とすると,数式は t 秒の時間制限を示す。

t

=0 の場合,その命令の条件を調べる。それが真なら,$T の値を 1 とする。偽なら,$T の値を 0

とする。実行は止まることなく次へ進む。

t

が正の場合,実行はその命令の条件が真になるまで一時停止する。しかし t 秒以上停止することは

ない。実行が再開する時点で,条件が真なら$T の値を 1 とし,条件が偽なら$T の値を 0 とする。

参照一覧  数式 2.2.4

2.5.7

行参照  DO 命令,GOTO 命令,外部関数,外部特殊変数及び$TEXT 関数の引数は,任意のルーチ

ンの,ある行を参照する。この箇条では,行を参照する方法について記述する。

あるルーチン内の任意の行は,ある行自身又はそれより前の行に実在する行ラベルを利用して表す。

行ラベル

実在ラベル

:

:

@

式子  V  実在ラベル

ルーチン名

ルーチン参照

:

:

@

式子  V  ルーチン参照

DO

及び GOTO の中で行を指定する形は,入り口参照という形式とする。

実在ラベル[+整数式]

[^ルーチン参照]

入り口参照

:

:

^ルーチン参照

区切り記号^がなければ,ルーチンは,そのときに実行されているルーチンのこととみなす。行の参照

(実在ラベル[+整数式]

)がなければ,最初の行のこととみなす。

DO

命令,JOB 命令,外部関数及び外部特殊変数が,指定したルーチンに渡すパラメタをもっていると

き,+整数式という形式の入り口参照は許されず,指定された行は仮パラメタ行でなくてはならない。

行ラベル参照

:

:

=  行ラベル[^ルーチン名]

^ルーチン名

+整数式がなければ,実在ラベルで指定される行は,行ラベルの付いた行とする。+整数式があり,そ

の値 n が,n≧0 の場合,それは行ラベルの付いた行から数えて n 番目の行を表す。整数式の値が負の場合

は誤りとする。定整数列の形式の行ラベルでは,その先頭に 0 が付いていた場合,それはその行ラベルの

つづりの一部として意味をもつ。

DO

命令及び GOTO 命令の中では,次の条件はどれも誤りとする。

(1)

整数式の値が大きすぎて,そのルーチンの最後の行以降の存在しない行を指し示している場合

(2)

行ラベルと同じつづりのラベルをもった行がそのルーチンに存在しない場合

すべての場合で,あるつづりの行ラベルをもった行がそのルーチンに複数存在する場合,それを参照し

た結果は不定とする。

組込み関数$TEXT と同じく,DO 命令,GOTO 命令及び JOB 命令は,それらが属するルーチン以外のル


29

X 3011-1995

ーチンの行を参照することができる。その場合は,ルーチン名を指定しなくてはならない。

参照一覧  行ラベル 2.4.1,ルーチン名 2.4,式子 2.2,V1,整数式 2.2.4.1

2.5.8

命令の引数の間接指定  一つの命令の一つの引数又は連続した複数の引数を評価するために,間接

指定を用いることができる。間接指定が使えるかどうかは,個々の命令の構文規定の中で示す。

典型的には,命令語には,次のとおりに一連の引数が続く。

命令語  間隔  L  引数

このうち引数の構文は,次のとおりとする。

一つ一つの引数の構文

引数

:

:

@

式子  V L  引数

この構文は,引数の間接指定がもつ,次の特性を表現する。

(1)

引数の間接指定は,再帰的に用いることができる。

(2)

引数の間接指定は,一つの完全な引数又は引数全体のうちの部分並びとして評価することができる。

明示的に否定していない限り,各命令の仕様は,すべての間接指定が評価された後の引数について記述

する。

参照一覧  式子 2.2,V1,L1

2.5.9

パラメタ渡し  パラメタ渡しは,一定の手順に従ったサブルーチン間情報渡しの方法で,実パラメ

タ並び付きの外部関数,外部特殊変数又は DO 命令を使って処理する。

実パラメタ並び

:

:

=  (

[L 実パラメタ]

実パラメタ

:

.実パラメタ名前

実パラメタ名前

:

:

名前

@

式子  V  実パラメタ名前

パラメタ渡しがある場合は,

行ラベル参照で指定される仮パラメタ行には仮パラメタ並びが必要であり,

そこに含まれる名前の数は,実パラメタ並びに含まれる実パラメタの数以上でなくてはならない。実パラ

メタと,仮パラメタ並びの名前の間での対応の規定は,次のとおりとする。すなわち,実パラメタ並び内

の最初の実パラメタは,仮パラメタ並び内の最初の名前に対応し,2 番目の実パラメタは仮パラメタ並び

の 2 番目の名前に対応する,などとする。同様に,次に規定するパラメタ並びの各要素と,実パラメタ又

は仮パラメタ並びの名前の間の対応もまた,左から右への順番で,位置で決まる。実パラメタの構文が実

パラメタ名前の場合,その実パラメタは“参照呼出し形式” (call-by-reference) であるといい,そうでなけ

ればその実パラメタは“値呼出し形式” (call-by-value) であるという。

パラメタ渡しがあれば,次の段階で実行する。

(1)

実パラメタを左から右への順に処理し,パラメタ並びと呼ぶ“データセル”への指標のリストを得る。

パラメタ並びには,実パラメタごとに対応する項目が一つずつ含まれる。パラメタ並びを生成する規

則は,次のとおりとする。

(a)

実パラメタが値呼出しの場合,その式を評価し,結果として 0 値をもった値組を一つ“データセル”

に生成する。その“データセル”への指標をパラメタ並びの項目とする。

(b)

実パラメタが参照呼出しの場合,

“名前表”を検索し,実パラメタ並びの名前をもつ見出しを探す。

見出しが一つ見つかると,そのパラメタ並びの項目を,

“名前表”のこの見出し内の“データセル”

指標とする。実パラメタ並びの名前がなければ,その名前をもつ“名前表”見出しと新しい(空の)


30

X 3011-1995

“データセル”への指標を生成する。この指標を,パラメタ並びのその項目とする。

(2)

仮パラメタ並びを含む“処理スタック”上にパラメタ枠を生成する。

(3)

仮パラメタ並び内のそれぞれの名前について,その名前を含む見出しを“名前表”内で探し,その見

出しが存在すれば,

“名前表”のその見出しをパラメタ枠に複写して,それを“名前表”から削除する。

これを,仮パラメタ並びの名前について暗黙の NEW を実行する段階とする。

(4)

パラメタリストの各項目について,仮パラメタ並びの名前と対応する,パラメタリストの項目(デー

タセル指標)を含む見出しを“名前表”に生成する。これを,実パラメタ並びの名前を各実パラメタ

に結び付ける段階とする。

これらの段階の結果,二つ以上の“名前表”見出しが同じ“データセル”を指し示すことがあり得る。

この共通の連結が有効である限りにおいて,

名前のうちの一つをもつ局所変数名を SET 又は KILL すると,

これは他の名前の局所変数名を暗黙のうちに,SET 又は KILL することになる。KILL 命令が,同一の“デ

ータセル”に対応する複数の名前についてこの連結を解除することはないが,この後実行されるパラメタ

渡し又は NEW 命令によってこの連結は解除されうる。

この後実行は,行ラベル参照で指定された行の行開始に続く最初の命令から始まる。サブルーチンの実

行は,ルーチン終端又は続いて実行された DO 引数,XECUTE 引数,外部関数,外部特殊変数,FOR 命令

の有効範囲にない QUIT まで続く。外部関数又は外部特殊変数の場合は,引数をもった QUIT 命令によっ

て終了しなければならない。

QUIT

で終了する場合,仮パラメタ並びの名前の連結は解除され,元の変数環境に戻る。

参照一覧  L1,式 2.3,名前 2.2.1,式子 2.2,V1,QUIT 操作の意味 2.6.15

2.6

命令の規定  命令の規定は,次のとおりとする。

2.6.1

BREAK

[間隔]

B [REAK]

後置条件

引数構文  規定なし

BREAK

は,この規格外のプログラミングのために,規格内のアクセス点を与える。引数なしの BREAK

は装置からの信号(ここでは規定していない。

)を受け取るまで実行を一時停止する。

参照一覧  後置条件 2.5.1

2.6.2

CLOSE

C [LOSE]

後置条件  間隔  L CLOSE 引数

式[:装置パラメタ並び]

CLOSE

引数

:

:

@

式子  V L CLOSE 引数

装置パラメタ並び

:

:

[式]

:]…式)

各々の CLOSE 引数の最初の式の値は,装置(又はファイルやデータ集合)を識別する。この式の値の

解釈は,処理系作成者に委ねる。装置パラメタ並びは,処理系作成者の解釈に従って,手続の終了を規定

したり,装置の占有権を解除したりすることに使用してもよい。

CLOSE

は,指定された各々の装置を占有から解除する。実行された CLOSE の引数によって指定された

装置が占有されていない場合,この命令は,装置の占有権やその装置に関するパラメタの値に何の影響も

及ぼさない。CLOSE が実行されたときに有効であった装置パラメタは,再度利用できるようその装置に関

連して保存して置かれる。実行された CLOSE の引数が現用装置を指定している場合,処理系作成者は,

命令 OPEN P USE P を暗黙の内に実行してもよい

(ここで P は,

前もって定められた省略時装置名とする。


31

X 3011-1995

そうしない場合,処理系作成者は,組込み特殊変数$IO に空値を与える。

参照一覧  後置条件 2.5.1,L1,式 2.3,式子 2.2,V1

2.6.3

DO

[間隔]

D [0]

後置条件

間隔  L DO 引数

入り口参照  後置条件

DO

引数

:

:

=  行ラベル参照  実パラメタ並び  後置条件

@

式子  V L DO 引数

引数なし DO は,内側の行ブロックの実行を開始する。後置条件が存在し,かつ真偽値式が偽ならば,

命令の実行は終了する。後置条件が存在しないか又は後置条件があって真偽値式が真ならば,DO は現在

の実行位置,現在の実行レベル,$T の現在値を含む DO 枠を“処理スタック”に置く。そして,実行レベ

ルを 1 増加させ,ルーチンの次の行を実行する。続いて実行される DO 引数,XECUTE 引数,外部関数,

外部特殊変数又は FOR 命令の有効範囲にない明示的若しくは暗黙的な QUIT に出合うと,このブロックの

実行は終了する。引数なしの DO に続く命令(もしあれば)から実行は再開する。

引数付きの DO は,それぞれの DO 引数内における入り口参照又は行ラベル参照によって指定されるサ

ブルーチンの一般的な呼出しの方法とする。入り口参照や行ラベル参照によって指定する行は,

“実行レベ

ル”が 1 でなければならない。

“実行レベル”が 1 でない行を DO 引数が実行することは誤りとする。

実行された DO 引数に実パラメタ並びが存在するならば,パラメタ渡しが行われる。行ラベル参照によ

って指定された仮パラメタ行には,その実パラメタ並びの中の実パラメタの個数以上の名前を含んだ仮パ

ラメタ並びが必要である。

各々の DO 引数は,一度に一つずつ,左から右への順に次のとおりの段階で実行する。

(1) DO

引数の式子を評価する。

(2)

後置条件が存在し,かつ真偽値式が偽であるならば,DO 引数の実行は終了する。

後置条件がないか,又は後置条件があって真偽値式が真であれば,(3)へ進む。

(3)

現在の実行位置と現在の実行レベルを含む DO 枠を”処理スタック”に置く。

(4)

実パラメタ並びが存在すれば,2.5.9 に記述されたパラメタ渡しの段階を実行する。

(5)

実行は,入り口参照又は行ラベル参照で指定された行の行開始に続く最初の命令に続く。そのサブル

ーチンの実行は,引き続いて実行される FOR,引数なしの DO,DO 引数,XECUTE 引数,外部関数

若しくは外部特殊変数の有効範囲にはない,QUIT 又はルーチン終端の実行によって終了する。この

DO

引数の有効範囲は,QUIT 又はルーチン終端の実行までとする。次に実行は,その DO 引数に続く

最初の文字位置に帰る。

参照一覧  後置条件 2.5.1,L1,ルーチンの実行 2.4.2,QUIT2.6.15,式子 2.2

V1

,入り口参照 2.5.7,行ラベル参照 2.5.7,実パラメタ並び 2.5.9

2.6.4

ELSE

E [LSE]

[間隔]

$T

の値が 1 ならば,ELSE の右にある行の残りは実行されない。$T の値が 0 であれば,次の命令から引

き続き通常どおり実行する。

2.6.5

FOR

F [OR]

[間隔]


32

X 3011-1995

間隔  局所変数名=L FOR パラメタ

FOR

パラメタ

:

:

数式 1:数式 2:数式 3

数式 1:数式 2

FOR

命令の“有効範囲”は,同じ行の FOR に続く次の命令に始まり,その行の行終端の直前で終わる。

引数をもつ FOR は,FOR パラメタを左から右へ連続的に制御し,局所変数名のさまざまな値に対して

その有効範囲内の命令を繰返し実行する。添字や間接指定の式のような局所変数名に含まれるあらゆる式

は,FOR を実行するたびに,最初の FOR パラメタを実行する前に必ず一度評価する。

各々の FOR パラメタは,次の(1)(5)に規定するとおりに,有効範囲内の命令の実行を制御する。

(ここ

で,A,B,C は,仮の変数とする。

(1) FOR

パラメタが,式の形式のとき,

(a)

局所変数名に式の値を代入する。

(b)

有効範囲内の命令を 1 回実行する。

(c)

この FOR パラメタの処理を終了する。

(2) FOR

パラメタが,数式 1:数式 2:数式 3 の形式で数式 2 が負数でないとき,

(a)  A

に数式 1 を代入する。

(b)  B

に数式 2 を代入する。

(c)  C

に数式 3 を代入する。

(d)

局所変数名に A を代入する。

(e)

局所変数名>C であれば,この FOR パラメタの処理を終了する。

(f)

有効範囲内の命令を 1 回実行する。局所変数名の値が不定ならば,誤りとする。

(g) 

局所変数名 (C−B)  ならば,この FOR パラメタの処理を終了する。

(h)

そうでなければ,局所変数名+B を局所変数名に代入する。

(i)  (f)

に戻る。

(3) FOR

パラメタが,数式 1:数式 2:数式 3 の形式で数式 2 が負数のとき,

(a)  A

に数式 1 を代入する。

(b)  B

に数式 2 を代入する。

(c)  C

に数式 3 を代入する。

(d)

局所変数名に A を代入する。

(e)

局所変数名<C ならば,この FOR パラメタの処理を終了する。

(f)

有効範囲内の命令を 1 回実行する。局所変数名の値が不定ならば誤りとする。

(g)

局所変数名< (C−B)  ならば,この FOR パラメタの処理を終了する。

(h)

そうでなければ,局所変数名+B を局所変数名に代入する。

(i)  (f)

に戻る。

(4) FOR

パラメタが,数式 1:数式 2 の形式のとき,

(a)  A

に数式 1 を代入する。

(b)  B

に数式 2 を代入する。

(c)

局所変数名に A を代入する。

(d)

有効範囲内の命令を 1 回実行する。局所変数名の値が不定ならば,誤りとする。


33

X 3011-1995

(e)

そうでなければ,局所変数名+B を局所変数名に代入する。

(f)  (d)

に戻る。

(5) FOR

命令が引数をもたないとき,

(a)

有効範囲内の命令を 1 回実行する。局所変数名は定義されていないので,参照されることはない。

(b)  (a)

に戻る。

形式(4)と引数なしの FOR は,無限ループを指定する。このループは,FOR 命令の有効範囲内で QUIT

又は GOTO が実行されたときに終了する。この二つの終了方法は,現在,その有効範囲の実行を制御して

いる FOR パラメタの形式に左右されない。更に,形式(4)の FOR パラメタの右側にある FOR パラメタは,

実行できない。

一つの FOR“外側”の FOR)の有効範囲内にもう一つの FOR(

“内側”の FOR)が含まれる場合,外側

の FOR の有効範囲の命令を 1 回実行することは,内側の FOR の有効範囲の命令を,内側の FOR 命令の

FOR

パラメタ並びの完全な走査に呼応して,すべて実行することを意味する。

一つの FOR の有効範囲における QUIT の実行は,次の(6)(7)の二つの作用をもつ。

(6)

その有効範囲内の実行を QUIT の位置で終了する。QUIT から右側に位置する命令は実行しない。

(7) QUIT

を実行すると,実行中の FOR パラメタの値はその時点のものが残り,同じ FOR パラメタ並び

内の残りの FOR パラメタは実行されず,有効範囲内の命令もこれらの制御のもとでは実行しない。

言い替えれば QUIT の実行は,有効範囲にその QUIT を含むもののうち,最も内側の FOR を直ちに終了

させる。

GOTO

命令の実行は,その GOTO 命令を含む行のすべての FOR 命令を直ちに終了させる。そして,実

行の制御を定義された地点へと移す。FOR の有効範囲における QUIT の実行は,変数の環境に影響を与え

ない。例えば,スタックされた NEW 枠は削除されたり変更されることはない。

参照一覧  局所変数名 2.2.2.1,L1,式 2.3,数式 2.2.4

2.6.6

GOTO

G [OTO]

後置条件  間隔  L GOTO 引数

入り口参照  後置条件

GOTO

引数

:

:

@

式子  V L GOTO 引数

GOTO

命令は,一般化された制御の移行とする。実行が戻ることを望むならば,DO 命令を用いるのが

よい。

各々の GOTO 引数を,一度に一つずつ左から右へと,後置条件がないか,又は,後置条件があってその

真偽値式が真であるものを見つけるまで調べる。そのとおりの GOTO 引数が見つからない場合は,制御は

移ることなく,通常どおり処理が継続する。そのとおりの GOTO 引数が見つかれば,その GOTO 引数に

よって指定された行の左端から実行が継続する。ただし,その行が GOTO 命令を含む行と同じ“深さ”で

なければならず,かつ,その GOTO 命令を含む行の“深さ”が 2 以上の場合には,GOTO 引数で定義され

た行と,GOTO 命令を含む行との間に,これより浅い“深さ”の行が存在していてはならない。更に,GOTO

を含んでいる行と GOTO 引数で示される行は,同じルーチン内になければならない。

参照一覧

後置条件 2.5.1,L1,式子 2.2,V1

 FOR

の有効範囲内で実行された GOTO の附加的な影響 2.6.5

2.6.7

HALT

H [ALT]

後置条件[間隔]

最初に,引数のない LOCK 命令が実行され,次いでこのプロセスの実行が終了する。


34

X 3011-1995

参照一覧  後置条件 2.5.1

2.6.8

HANG

H [ANG]

後置条件  間隔  L HANG 引数

数式

HANG

引数

:

:

@

式子  V L HANG 引数

数式の値を t とする。t≦0 のとき,HANG は実行しない。そうでないときは,t 秒間実行が停止する。

参照一覧  後置条件 2.5.1,L1,数式 2.2.4,式子 2.2,V1

2.6.9

IF

[間隔]

I [F]

間隔  L IF 引数

真偽値式

IF

引数

:

:

@

式子  V L IF 引数

引数なしの形式では,IF 命令は ELSE 命令の反対とする。すなわち,$T の値が 0 ならば,その行の IF

から右の部分は実行されない。$T の値が 1 ならば,次の命令から通常どおり実行が続く。

ただ一つの引数が存在する場合は,真偽値式の値を$T に入れ,上の機能を実行する。

IF

が n 個の引数をもつ場合,それは引数と同じ順で各々1 個の引数をもつ IF 命令が n 個並んだものと同

じとする。これは,引数によって表現された条件の暗黙の論理積であると解釈することもできる。

参照一覧  真偽値式 2.2.4.2,式子 2.2,V1,L1

2.6.10  JOB

J [OB]

後置条件  間隔  L JOB 引数

入り口参照[:JOB パラメタ並び]

JOB

引数

:

:

行ラベル参照 JOB 実パラメタ並び[:JOB パラメタ並び]

@

式子  V L JOB 引数

JOB

実パラメタ並び : : =(L  式)

処理パタメタ並び[時間制限]

JOB

パラメタ並び

:

:

時間制限

処理パタメタ並び

:

:

[式]

:]…式)

JOB

命令は,各 JOB 引数を用いて,別のプロセスの起動を図る。JOB 引数の中に JOB 実パラメタ並び

がある場合には,行ラベル参照によって示された仮パラメタ行は,名前の個数が JOB 実パラメタ並びの式

の個数以上の仮パラメタ並びを含まなければならない。

JOB

命令は,入り口参照又は行ラベル参照によって指定された行のプロセスを起動する。JOB 実パラメ

タ並びがある場合には,そのプロセスは起動時に確定した変数をもつことになる。これらの変数は,行ラ

ベル参照によって示された仮パラメタ行の仮パラメタ並びから取り出す。仮パラメタ並びの名前は,JOB

実パラメタ並びにある式と同数だけ作られ,その値として対応する JOB 実パラメタ並びの式の値が与えら

れる。起動されたプロセスと,それを起動させたプロセスとの間には何の連係もなく,JOB 実パラメタ並

びの式は,値だけを渡す。JOB 実パラメタ並びがない場合には,プロセスの起動時には確定した変数をも

たない。

処理パタメタ並びは,処理系作成者の固有の方法によって,主記憶分割の大きさや主装置などを明示す


35

X 3011-1995

るために用いることができる。

時間制限がある場合には,その時間制限内に起動できたかどうかが$T に入る。時間制限内に起動できな

かったとき,及び起動に成功したとき,この JOB 命令の実行は終了する。時間制限がない場合には,$T

の値は変化せず,JOB 引数で指定されたプロセスの起動が成功するまで,起動したプロセスの実行は一時

停止する。どちらの場合でも成功の意味は,処理系作成者が規定する。

参照一覧

後置条件 2.5.1,L1,入り口参照 2.5.7,行ラベル参照 2.5.7,式子 2.2

V1

,式 2.3,時間制限 2.5.6

2.6.11  KILL

[間隔]

K [ILL]

後置条件

間隔  L KILL 引数

変数名

KILL

引数  :

:

(L  局所変数)

@

式子  V L KILL 引数

名前

局所変数

:

:

@

式子  V  名前

KILL

の三つの引数の形式を,次の(1)(3)の名前で呼ぶ。

(1)

変数名

:選択的 KILL

(2)

(L 局所変数)

:排他的 KILL

(3)

引数の付かないもの

:全面的 KILL

KILL

命令は,補助関数 K (V)  を用いて次の(4)(6)に規定する。ここで,V は変数名とする。

(4)

名前 V を“名前表”で検索する。名前 V の項目が見つからないときには,関数 K (V) は終了する。

見つかったときには,

“データセル”指標を抽出して,(5)の処理を行う。

(5)  V

に添字が付いていない場合には,

“データセル”のすべての値組を消去する。

(6)  V

に添字が付いている場合には,N を V の添字の個数とする。N 個以上の添字が付いていて,かつ最

初の N 個の添字が V の添字と同じである,

“データセル”中のすべての値組を消去する。

K (V)

の手順の結果,$D (V)  =0,すなわち,V は値が不定,下位成分なし,となる。

KILL

命令の三つの形式の動作を,次の(7)(9)に規定する。

(7)

選択的 KILL−指定された変数名に関数 K を適用する。

(8)

排他的 KILL−引数並びに指定した名前を除いて,

“名前表”のすべての名前に関数 K を適用する。排

他的 KILL 命令の引数並びの中の名前には,添字を付けることはできない。

(9)

全面的 KILL−“名前表”のすべての名前に関数 K を適用する。

変数 M の下位成分である変数 N が KILL された場合,N に対する KILL の実行は,$D (M) の値に影響

を与える。すなわち,N が M の唯一の下位成分でない場合,$D (M)  は不変とし,N が M の唯一の下位成

分の場合,M が定義された値をもつとき,$D (M)  は 11 から 1 に変わり,M が不定のとき,$D (M)  は 10

から 0 に変わる。

参照一覧  後置条件 2.5.1,L1,変数名 2.2.2.2,式子 2.2,V1,名前 2.2.1

2.6.12  LOCK

[  間隔  ]

L [OCK]

後置条件

間隔  L LOCK 引数


36

X 3011-1995

名前参照

LOCK

引数

:

:

(L  名前参照) [時間制限]

@

式子  V L LOCK 引数

[

^]  名前[

(L  式)

名前参照

 : :

@

式子  V  名前参照

LOCK

命令は,応用プログラムで適切に使用することで,同時実行するプロセスが利用可能な一般化さ

れた連動 (interlock) 機能を提供する。LOCK 命令の実行は,すべての大域変数,局所変数の値又は略式指

標の値や状態に直接影響せず,またそれらに影響されない。LOCK 命令の使用は,大域変数の操作を要求

するのではなく,他のプロセスからの大域変数操作を抑制するものではない。LOCK 命令の使用は,使用

するプログラマ側が利用の慣例を確立して用いることに依存した連動機構とする。

各 LOCK 引数は,実行中のプロセスから排他的要求の取得や排他的要求の解放を行うために,MUMPS

のすべての名前空間 (name space) の部分空間を指定する。この部分空間仕様の詳細は,次のとおりとする。

説明のため,

“名前空間”とは,すべての間接指定の実行後の,すべての可能な名前参照の集合と定義す

る。プロセスごとに LOCK 表と呼ぶ表が存在する。LOCK 表は,0 個以上の名前参照を保持する。ある名

前参照は,一つのプロセスの LOCK 表に二度以上現れうるが,異なるプロセスの LOCK 表に現れることは

ない。各名前参照は,名前空間の一部分を表す。

LOCK

表内の全名前空間中の,各名前参照が要求する部分空間は,次の(1)∼(2)のとおりとする。

(1)

その名前参照に添字が付いていなかった場合,部分空間は,その添字の付かない名前参照の変数名,

及び添字の付いたすべての変数名 N (s

1

,

…,s

i

)

とする。ここで,N は名前参照と同じつづりとする。

(2)

名前参照に添字が付いている場合,その変数名を N (s

1

, s

2

,

…,s

n

)

とする。そのとき,部分空間は,

N, N (s

1

) , N (s

1

, s

2

) ,

…,N (s

1

,

…,S

i

)

(ここで i≦n とする)の集合,及び名前参照の各下位成分とす

る。

LOCK

命令に引数が付いていない場合には,LOCK は,このプロセスの LOCK 表からすべての名前参照

を削除する。

LOCK

引数の実行は,次の(3)(7)の順序で処理する。

(3)

その LOCK 引数の処理に関連したあらゆる式評価を実行する。

(4) LOCK

引数の形式が,先頭に+又は−符号を含まない場合,その LOCK 引数の残りの評価又は実行の

前に,LOCK 命令は,最初にこのプロセスの LOCK 表内のすべての名前参照を削除する。(5)(7)

は,最初に+符号が存在した場合と同等に扱う。

(5)

明示的な又は暗黙的な先行する+符号が存在する場合,

(a)

このプロセスは,その LOCK 引数によって指定されたすべての部分空間を確保できるかどうかの検

査を行う。その LOCK 引数の各名前参照が,この時点で,すべての他のプロセスの LOCK 表の中に

ある名前参照によって確保された部分空間を結合したものと重ならなければ,この部分空間を確保

することができる。

(b)

上記の検査を実行し,

プロセスが指定された部分空間を確保できない場合,

繰返しその検査を行い,

プロセスが指定した部分空間の確保ができるか又は時間制限が付いている場合,時間制限が終了す

るかのどちらかまで,このプロセスの実行は一時停止する。時間制限が終了した場合,次の(c)は行


37

X 3011-1995

わない。

(c) LOCK

引数の名前参照のすべてを,LOCK 表に挿入する。この結果,名前参照のうち幾つかは,こ

のプロセスの LOCK 表に 2 回以上入ることがありうる。その LOCK 引数の名前参照は,全部同時に

挿入されるか,全く挿入されないかのいずれかとなる。

(6) LOCK

引数の先頭に−符号をもつ場合,その LOCK 引数の各々の名前参照について,その名前参照が

このプロセスの LOCK 表に存在するときは,その名前参照の一つを LOCK 表から削除する。

(7)

時間制限が付いている場合,LOCK 引数の実行の終了時に$T によって報告される状態は,要求又は放

棄の成功又は失敗を意味する。LOCK 要求が成功した場合には 1 の値をもち,時間制限が終了した場

合には 0 とする。時間制限が付いていないならば,$T は,LOCK 引数の実行によって変化しない。

参照一覧

後置条件 2.5.1,L1,名前参照 2.6.12,時間制限 2.5.6

式子 2.2,V1,名前 2.2.1,式 2.3,下位成分 2.2.7.3 の$DATA

2.6.13  NEW

N [EW]

後置条件

[間隔]

間隔  L NEW 引数

局所変数

NEW

引数

:

:

(L  局所変数  )

@

式子  V L NEW 引数

NEW

命令は,変数の有効範囲の設定方法を提供する。

NEW

命令の三つの引数の形式を,次の(1)(3)の名前で呼ぶ。

(1)

局所変数

:選択的 NEW

(2)

(L 局所変数)  :排他的 NEW

(3)

引数並びの付かないもの  :全面的 NEW

NEW

命令の各引数は,NEW 命令の引数を含んだ枠を“処理スタック”に入れ,

“名前表”の一組の項

目をその枠に複写する。

NEW

命令の三つの形式の動作を,次の(4)(6)に規定する。

(4)

選択的 NEW−局所変数に対応する“名前表”中の項目を,その枠に複写する。

(5)

排他的 NEW−引数内の名前を除き,

“名前表”内のすべての名前に対応する項目を,その枠に複写す

る。

(6)

全面的 NEW−“名前表”のすべての項目を,その枠に複写する。

三つのすべての場合,枠に複写された“名前表”の項目を,続いて“名前表”から削除する。この削除

は,現在の処理の過程で,それらの変数を不定の状態にする効果がある。

参照一覧

後置条件 2.5.1,L1,局所変数 2.6.11,式子 2.2,V1,QUIT2.6.15

2.6.14  OPEN

O [PEN]

後置条件  間隔  L OPEN 引数

式[:OPEN パラメタ並び]

OPEN

引数 : : =

@

式子  V L OPEN 引数

装置パラメタ並び[時間制限]

OPEN

パラメタ並び

 : :

時間制限

各 OPEN 引数の最初の式の値は,装置(又はファイル若しくはデータ集合)を識別するのに用いる。こ


38

X 3011-1995

の式の値及び装置パラメタ並びの式の解釈は,処理系作成者に委ねる。

OPEN

命令は,装置の占有権を獲得するために用い,現用装置又は$IO 組込み特殊変数の値に影響を与

えない。

OPEN

命令は,各 OPEN 引数によって指定された装置の排他的な占有権を獲得しようとする。OPEN は,

OPEN

引数の処理よりも先に占有権獲得の処理を実行する。占有権が獲得できなかった場合,その装置の

占有権と装置パラメタの値に関してはなんら影響を与えない。時間制限がある場合,占有権の獲得が成功

したかどうかが,$T に入る。時間制限がない場合,$T の値は変化せず,占有権の獲得ができるまで,処

理の実行は一時停止する。

占有権は,CLOSE 命令の実行によって放棄する。占有権が放棄されるとき,すべての装置パラメタを保

持する。装置の占有権の確立において,OPEN パラメタ並びの中に特に指示がなければ,最後にその装置

に使った値をパラメタに用いる。その値も存在しない場合,処理系作成者が定めた省略値を用いる。

参照一覧

後置条件 2.5.1,L1,式 2.3,式子 2.2,V1,装置パラメタ並び 2.6.2

時間制限 2.5.6,USE2.6.18

2.6.15  QUIT

[間隔]

Q [UIT]

後置条件

間隔  式

QUIT

は,引数なし DO 命令,DO 引数,XECUTE 引数,外部関数,外部特殊変数又は FOR 命令の実行

を終わらせる。

ルーチン終端に出会うことは,無条件の引数なしの QUIT に相当する。

FOR

の中での QUIT の効果については,2.6.5 を参照のこと。ルーチン終端は,FOR 命令の有効範囲に

ありえない。

実行された QUIT が FOR の有効範囲にない場合,明示的でなければ暗黙的に,QUIT は,引数なし DO

命令,DO 引数,XECUTE 引数,外部関数又は外部特殊変数の有効範囲内にある。なぜなら,プロセスの

最初の起動は,JOB 引数の実行による場合を含めて,そのプロセスの最初に実行されたルーチン名を指名

した DO の実行によって引き起こされたとみなすことができるからである。

引数なし DO 命令,DO 引数,XECUTE 引数,外部関数又は外部特殊変数の有効範囲内での QUIT の実

行は,必要ならば前の変数環境や$T の値を復元し,実行レベルを復元する。そして,その呼び手の引数な

し DO 命令,DO 引数,XECUTE 引数,外部関数又は外部特殊変数の位置から実行を継続する。

QUIT

に引数式が存在する場合,この QUIT は,外部関数又は外部特殊変数に対する出口でなければな

らない。同様に,式が存在しない場合には,この QUIT は,引数なし DO 命令,DO 引数又は XECUTE 引

数に対する出口でなければならない。他の場合は,誤りとする。

QUIT

に出会うと,次の段階で実行する。

(1)

式が存在する場合,それを評価する。この値を,起動された外部関数又は外部特殊変数の値とする。

(2)

“処理スタック”の最上段の枠を除去する。枠が存在しない場合には,暗黙の HALT を実行する。

(3) NEW

が作成した枠の場合,保存してある NEW の引数を検討し,その形式によって次の処理の一つを

行う。

(a)

選択的 NEW−引数の局所変数に対して暗黙の KILL 命令を実行する。

(b) 

排他的 NEW−“名前表”のすべての名前から NEW の引数の名前を除いたものに対して暗黙の

KILL

命令を実行する。

(c)

全面的 NEW−暗黙の全面的 KILL 命令を実行する。


39

X 3011-1995

最後に,その枠のすべての“名前表”の項目について,枠から“名前表”へ複写する。

この枠の処理を終了し,(2)へ戻る。

(4)

パラメタ枠の場合,仮パラメタ並びを抽出し,次の段階によって並びの各名前の処理を行う。

(a)

“名前表”を検索し,その名前を含む項目を見つける。そのとおりの項目が見つからない場合は,

この名前の処理を終了する。その他の場合は,(b)へ進む。

(b)

この名前の“名前表”の項目を削除する。

最後に,すべての“名前表”の項目を,この枠から“名前表”へ複写する。

この枠の処理を終了し,(2)へ戻る。

(5)

外部関数,外部特殊変数又は引数なしの DO 命令が作成した枠の場合,その枠に保存されている値を

$T

の値とする。

(6)

実行レベルを回復し,その枠で指定された位置から実行を継続する。

参照一覧

後置条件 2.5.1,式 2.3,FOR の有効範囲での QUIT2.6.5

2.6.16  READ

R [EAD]

後置条件  間隔  L READ 引数

定文字列

書式

READ

引数

:

:

局所変数名[READ 計数]

[時間制限]

*

局所変数名[時間制限]

@

式子  V L READ 引数

READ

計数

:

:

#

整数式

READ

引数は,一度に一つずつ,左から右への順で実行する。

上から 1 番目及び 2 番目の引数形式は,現用装置に出力操作を行う。上から 3 番目及び 4 番目の引数形

式は,現用装置から指定の局所変数に入力操作を行う。時間制限がない場合,入力が,READ 計数を用い

て明示的又は暗黙的に終了するまで実行を一時停止する。

時間制限がある場合,t 秒間の時間制限とみなす。この場合には,入力終了時まで実行を一時停止する

が,この停止時間は t 秒以内とする。t<0 の場合,t=0 とする。

時間制限がある場合,$T の値は次のとおりに変化する。実行の再開時又は再開前に,入力が終了してい

たとき,$T は 1 の値をとる。それ以外のときには,0 の値をとる。

*

局所変数名[時間制限]の形式の引数を使用する場合,入力は 1 文字分の長さをもつ。1 文字を入力す

ると,入力は明示的に終了する。この文字は,JIS X 0201 及び JIS X 0208 の文字集合の文字である必要は

ない。局所変数名がとる値は,整数値とする。入力文字の集合と局所変数名がとる整数値の集合間の対応

づけは,装置特有の形式で処理系作成者が定める。時間制限があり,かつ時間切れとなる場合には,局所

変数名の値を−1 とする。

局所変数名[時間制限]の形式の引数を使用する場合,入力は可変長の文字列とする。この文字列は,

処理系作成者が規定した方法で終了する。この終了方法は,装置によって異なってもよい。局所変数名が

とる値は,時間制限がありかつ時間切れとなる場合,時間切れとなるまでに入力した文字列とする。それ

以外の場合,文字列全体とする。

局所変数名#整数式[時間制限]の形式の引数を使用する場合,整数式の値を n とする。n≦0 の場合,


40

X 3011-1995

誤りとする。それ以外の場合は,最大 n 個分の長さをもつ文字列を入力とする。この文字列は,処理系作

成者が規定した方法で終了する。例えば,n 番目の文字を受信した時に終了させる方法でもよい。この終

了方法は,装置によって異なってもよい。時間制限を使用し,今述べた処理系作成者が規定した方法で入

力が終了する前に時間切れとなった場合,局所変数名がとる値は,時間切れとなるまでに入力した文字列

とする。それ以外の場合,局所変数名は処理系作成者が規定した,装置特有の方法で終了する最大 n 個の

文字をもつ文字列とする。

定文字列の形式の引数を使用する場合,現用装置が出力可能ならば,その定文字列を現用装置に出力す

る。

書式の形式の引数を使用する場合,出力動作(2.5.4 参照)を実行する。READ の$X と$Y に対する影響

は,命令が WRITE で,引数の並び(時間制限を除く。

)が同じであり,各 WRITE 引数の式の値がその READ

の実行の結果得られる,対応する局所変数名の最終値と同一である場合と,全く同じとする。

参照一覧

後置条件 2.5.1,L1,定文字列 2.2.5,書式 2.5.4,式子 2.2,V1

局所変数名 2.2.2.1,時間制限 2.5.6,整数式 2.2.4.1

値の代入操作 2.2.2.3,現用装置 2.6.18

2.6.17  SET

S [ET]

後置条件  間隔  L SET 引数

左側$P

変数名

=式

(L  変数名)

SET

引数

:

:

@

式子  V L SET 引数

左側$P : :  = $P

[IECE]

(変数名,式 1[,整数式 1[,整数式 2]

SET

命令は,変数に値を明示的に代入するため及び変数の一部を新しい値で置き換えるための一般的な

方法を提供する。SET 引数は,式が定義する値を一つ算出する。その後,その値を一つ以上の変数にそれ

ぞれ代入するか又は左側$P のように,変数の現時点での値の一つ以上の部分を置き換えるかする。変数名

それぞれが,対象とする変数を表す。

SET

引数は,一度に一つずつ左から右の順で実行する。SET 引数は,次の順で実行する。

(1)

次の(1.1)又は(1.2)の操作を実行する。

(1.1) SET

引数の=の左辺の部分が,一つ以上の変数名からなる場合,それらの変数名を左から右への順

で走査する。

それぞれの変数名の添字をすべて,左から右への順で評価する。

(1.2) SET

引数の=の左辺の部分が,左側$P からなる場合,その左側$P の最初の引数である変数名を左

から右への順で走査し,その添字をすべて左から右への順で評価する。その後,左側$P の残りの引

数を左から右への順で評価する。

(2)

右辺の式を評価する。

(3)

次の(3.1)又は(3.2)を実行する。

(3.1) SET

の左辺が一つ以上の変数名の場合,式の値を左から右への順にそれぞれの変数名に代入する。

(3.2) SET

の左辺が$P(変数名,d,m,n)という形式の左側$P の場合,変数名のこの時点での値の m 番

目から n 番目の切片を,式の値に置き換える。ここで,d の値は,区切り記号とする。m 及び n は

ともに省略可能とする。両者ともに存在しない場合は,m=n=1 とする。m だけが存在する場合は,

n

=m とする。変数名がこの時点で値をもたない場合は,空文字列を現在の値とする。変数名の現在


41

X 3011-1995

の値は,置き換えの直前に取得する。つまり,変数名の値を取得するに先だって,それ以外の左側

$P

の引数を左から右への順で評価し,右辺の式を評価する。

s

をこの時点での変数名の値とする。k を s に含まれる d の繰返し回数,すなわち k=max (0, $L (s,

d)

−1)  とする。

t

を式の値とする。

連結演算子_を用いて,次の(a)(d)の場合に分けて規定する。

(a) m>n

又は n<1 のとき

変数名は変化せず,略式指標も変化しない。

(b)  n

≧m−1>k のとき

変数名の値は,s_F (m−1−k) _t と置き換わる。ここで F (x)  は,x>0 のとき,d を x 回繰返した

文字列とする。それ以外の場合は,F (x)  =”

”とする。いずれの場合でも,変数名は略式指標に影

響を与える。

(c)  m

−1≦k<n のとき

変数名の値は,$P (s, d, 1, m−1) _F (mim (m−1, 1)) _t と置き換わる。

(d)

それ以外のとき

変数名の値は,

$P (s, d, 1, m

−1) _F (min (m−1, 1)) _t_d_$P (s, d, n+1, k+1)

と置き換わる。

変数名が大域変数の場合,変数名が値を獲得した時点で,略式指標を設定する。変数名が略式参照の場

合には,変数名が値を獲得する直前に,その名前と最初の添字列を決めるために,略式指標の参照を行う。

参照一覧

後置条件式 2.5.1,L1,変数名 2.2.2.2,式 2.3,式子 2.2,V1

整数式 2.2.4.1,値の代入操作 2.2.2.3,連結演算子 2.3.5

略式指標 2.2.2.2

2.6.18  USE

U [SE]

後置条件  間隔  L USE 引数

式  [:装置パラメタ並び]

USE

引数

:

:

@

式子  V L USE 引数

それぞれの USE 引数の最初の式の値は,装置(又はファイル若しくはデータ集合)を識別する。この式

又は装置パラメタ並び内の式の値の解釈は,処理系作成者に委ねる。

装置を入力又は出力のデータ転送に使用する前に,USE 命令を実行してその装置を現用装置として指定

しなければならない。USE 引数の実行で装置を指定する前に,OPEN 命令を実行して,その装置の占有権

を確保しておかなければならない。

USE

命令で指定した装置は,あらたに USE 命令を実行するときまで,現用装置とする。現用装置を指

定するために式を使用すると,副作用として,$IO 組込み特殊変数がその式の値をとる。

装置パラメタ並びの中で式を用いて装置のパラメタを指定するという行為は,通常その装置の占有権を

獲得する過程で行う。しかし,USE 命令を実行することによって,既に獲得した装置のパラメタを変更す

ることもできる。

それぞれの装置に対し,個別の$X 及び$Y の値を保持する。組込み特殊変数$X 及び$Y は,現用装置の

それらの値を表す。USE 命令を実行した結果,現用装置が変わるとき,以前の$X 及び$Y の値は保存され,

新しい現用装置に関する値を$X 及び$Y の値とする。


42

X 3011-1995

参照一覧  後置条件 2.5.1,L1,式 2.3,装置パラメタ並び 2.6.2,式子 2.2,V1

2.6.19  VIEW

V [IEW]

後置条件  引数規定なし

VIEW

は,機械特有の情報を調べる機構を処理系作成者が利用できるようにする。VIEW 命令を含むル

ーチンは,移植性が保証され得ないことを理解すべきである。

参照一覧  後置条件 2.5.1

2.6.20  WRITE

W [RITE]

後置条件  間隔  L WRITE 引数

書式

*

整数式

WRITE

引数

:

:

@

式子  V L WRITE 引数

WRITE

引数は,一度に一つずつ,左から右への順で実行する。各引数の形式は,現用装置への出力操作

を規定する。

引数として書式の形式を使用する場合,2.5.4 で記述した出力動作を実行する。出力する文字は,2.5.4

及び 2.5.5 のとおり,$X 及び$Y の値に順次影響を与える。

引数として式の形式を使用する場合,式の値を装置に出力する。装置におけるこの文字列の影響は,JIS 

X 0201

及び JIS X 0208 による。出力の文字は,2.5.5 のとおり,$X 及び$Y の値に順次影響を与える。

引数として*整数式の形式を使用する場合,その整数式の値が 10 進数として表されたものとして,対応

する 1 文字を装置に出力する。出力される文字は,JIS X 0201 及び JIS X 0208 文字集合以外の文字でも差

し支えない。装置におけるこの文字は,装置によって異なる形で処理系作成者が規定してもよい。

参照一覧

後置条件 2.5.1,L1,書式 2.5.4,式 2.3,整数式 2.2.4.1,式子 2.2

V1

2.6.21  XECUTE

X [ECUTE]

後置条件  間隔  L XECUTE 引数

式  後置条件

XECUTE

引数

:

:

@

式子  V L XECUTE 引数

XECUTE

命令は,式を評価する過程で生じる MUMPS コードを実行する手段を提供する。

XECUTE

引数は,一度に一つずつ,左から右への順で評価する。XECUTE 引数内に後置条件が存在し,

かつその真偽値式が偽の場合,その XECUTE 引数は実行しない。それ以外の場合で,式の値が x のとき,

XECUTE

引数の実行は DO y の実行と等しい結果をもたらす。ここで,y は,次に示す 2 行からなるサブ

ルーチンに付けた行ラベルとし,他で未使用のつづりのものとする。このサブルーチンは,現在実行中の

ルーチンの一部とみなす。

y

行開始

行終端

行開始 QUIT

行終端

参照一覧

後置条件 2.5.1,L1,式 2.3,式子 2.2,V1,行開始 2.4.1

行終端 2.4.1

2.6.22  Z

Z

[規定なし]引数規定なし

処理系作成上で,この規格で規定されていない命令はすべて,Z の文字で始めなければならない。この


43

X 3011-1995

取り決め事項は,将来の拡張からこの規格を保護する。

第 2 部  MUMPS 移植要件 

序文  第 部では,処理系作成者と応用プログラマの利益を目的としてプログラムの移送性(ソースコー

ドが種々の処理系の間で移植性をもつこと)を保証するために,特別の注意を必要とする諸相について記

述する。ここでは,処理系作成者とプログラマの両者が移植性を重んじるときに順守しなければならない

制限の仕様を提供する。この目的を遂げるために,処理系作成者はこれらの制限を必要最低限の基準とし

て,制限に合致するか又は制限を超えなければならない。処理系作成者は,現在未規定である領域につい

て規定を与える場合には,それによって今後この規格が改定される際に,この処理系が上位互換性を失う

危険をもつことを考慮しなければならない。移植性のあるプログラムを開発しようと努力する応用プログ

ラマは,処理系作成者が提供する言語の“一方的な拡張”を用いることの危険性について考慮しなければ

ならない。

第 部では,

“明示的な制限”と“暗黙的な制限”に当たるものを規定する。明示的な制限とは,参照する

言語構成要素に直接当てはまるものをいう。暗黙的な制限とは,他の言語構成要素に加わる明示的な制限

によって,二次的に当該言語構成要素の上に加わる制限をいう。例えば,命令行の長さの明示的な制限は,

一つの命令行の中で表現されなければならない言語構成要素の長さに暗黙的な制限を与える。

1.

式の要素

1.1

名前  名前の中に用いるアルファベットは,大文字のアルファベットに制限する。名前は,その長

さに明白な制限はないが,始まりの 8 文字だけによって識別する。この長さの制限は,存在できる一意な

名前の個数に暗黙的な制限を与える。

1.2

局所変数

1.2.1

局所変数の個数  存在しうる局所変数の名前の個数には,いかなる時点でも明白な制限はない。た

だし,記憶容量の制限によってもたらされる暗黙的な制限を受ける(5.参照)

1.2.2

添字の個数  一つの局所変数の添字の個数は,その局所配列参照において,評価されたすべての添

字のバイト数の合計に,添字の個数の 2 倍と局所変数名のバイト数を加えたものが 127 を超えてはならな

いという制限をおく。

1.2.3

添字の値  局所変数の添字の値は,JIS X 0201 及び JIS X 0208 の図形文字部分集合の文字だけを含

む非空文字列とする。

個々の添字のバイト数の制限は,

63

とする。

添字の値が数値データの規定

本体 2.2.3.1

参照)を満足するものは,更に,1.5 に示す数値範囲の規定がある。これらの範囲に合致しない添字の値の

使用については,$ORDER 関数の構文の中で参照する最後の添字としての空文字列の使用及び$NEXT 関

数の構文の中で参照する最後の添字“−1”の使用を除いて,未定義とする。

1.2.4

ノードの個数  局所変数の配列が別々に定義するノードの個数に明示的な制限はないが,局所変数

の個数に対する制限(1.2.1 参照)及び添字の個数に対する制限(1.2.2 参照)によって,ノードの個数には,

暗黙的な制限がある。

1.3

大域変数

1.3.1

大域変数の個数  存在しうる独立した大域変数の名前の個数には,いかなる時点でも明示的な制限

はない。


44

X 3011-1995

1.3.2

添字の個数  一つの大域変数の添字の個数は,大域配列参照において,評価したすべての添字のバ

イト数の合計に,添字の個数の 2 倍と大域変数名のバイト数を加えたものが 127 を超えてはならない。大

域配列参照を指定するための略式参照を用いる際は,略式参照を正式参照に展開したうえでこの制限を適

用する。

1.3.3

添字の値  大域変数の添字の値には,局所変数の添字に課した制限と同じ制限をおく(1.2.3 参照)。

1.3.4

ノードの個数  定義される個々の大域変数のノードの個数に制限はない。

1.4

データ型  この規格は,単一のデータ型,すなわち可変長文字列だけをおく。数値,整数値又は真

偽値に解釈したいときは,一意的な規則に従って文字列データを数値,整数値又は真偽値に写像する。

処理系作成者が用いる内部表現には,何の制限もない。必要なあらゆる自動的なモード変換を行うこと

で外部動作が規格に一致する限り,どのような内部表現を採用してもよい。例えば,整数を 2 進数で蓄え,

文字列操作が要求されるつど 10 進数文字列に変換するのでもよい。

1.5

数値の範囲  算術演算に用いるすべての値及び数値解釈を必要とする文脈の中に用いるすべての値

は,  [−10

25

,

−10

25

]

又は [10

25

, 10

25

]

の区間内にあるか若しくは 0 とする。

数値解釈を必要とする算術演算に用いる数値の有効精度は,12 けたとする。

プログラマは非整数計算を行う際に注意する必要がある。

一般に,

非整数の被演算子に対する算術演算,

及び非整数結果をもたらす算術演算は,正確ではない。特に,非整数算術でループ制御又は算術検定を行

う場合には,予想しない結果を生ずることがある。

1.6

整数  整数解釈の結果の値の大きさは,数値としての精度によって,限度がある(1.5 参照)。整数

値演算子又は整数値関数の生成する値も,この範囲とする(

本体 2.2.4.1 参照)。

1.7

文字列  文字列のバイト数の制限は,255 とする。JIS X 0201 及び JIS X 0208 の規定する文字は,

すべて文字列に許される文字とする。

1.8

組込み特殊変数  組込み特殊変数$X 及び$Y は,非負の整数とする(1.6 参照)。$X 又は$Y が最大

許容整数値を超えて増分した場合の効果は,規定しない。

参照一覧  $X 及び$Y が増分するときの記述本体 2.5.5

2.

2.1

式の入れ子  式の中での入れ子の深さには,明示的な制限はない。文字列の長さの最大制限値が,

入れ子の深さを暗黙的に制限する(1.7 参照)

2.2

結果  中間結果であれ最終結果であれ,文字列の制限(1.7 参照)を満足しない場合は誤りとする。

更に,整数結果が整数の制限(1.6 参照)を満足しない場合も,誤りとする。

3.

ルーチン及び命令行

3.1

命令行  命令行(行)は,文字列の制限(1.7 参照)を満足しなければならない。命令行の長さは,

行の行終端までの行終端を含まない文字の個数とする。

一つの命令行の中の文字は,図形文字に限る。この文字集合の制限が,それに応じて間接指定区切り記

号の引数の値に対しても暗黙的に制限する(4.参照)

3.2

命令行の個数  一つのルーチン内の命令行の個数に明示的な制限はないが,記憶容量の制限(5.参照)

が影響を与える。

3.3

命令の個数  命令行の長さの最大制限だけが,一つの行の中の命令の個数を制限する(3.1 参照)。


45

X 3011-1995

3.4

行ラベル  名前の形式をもつ行ラベルには,名前にかかわる制限がある。定整数列の形式をもつ行

ラベルには,名前の長さにかかわる制限がある(1.1 参照)

3.5

行ラベルの個数  一つのルーチン内の行ラベルの個数に制限はない。ただし,次の制約がある。

(1)

一つの命令行に付けられる行ラベルは,ただ一つとする。

(2)

等価な(独特なものとして識別できない)行ラベルは,二つの命令行に付けてはならない。

3.6

ルーチンの個数  ルーチンの個数には,明白な制限はない。名前の長さの制限が,ルーチンの個数

を暗黙に制限する(1.1 参照)

4.

間接指定  間接指定の引数及び XECUTE 命令の引数の値には,文字列の長さに関する制限がある(1.7

参照)

。間接指定の引数及び XECUTE 命令の引数の値には,更に,命令行に許される文字集合に関する制

限がある(3.1 参照)

5.

記憶容量の制限  一つのルーチンの大きさは,5 000 バイトを超えてはならない。ルーチンの大きさと

は,ルーチン内のすべての行の大きさの和をいう。行の大きさとは,そのバイト数(3.1 参照)に 2 を加え

たものとする。

局所変数の記憶容量は,5 000 バイトを超えてはならない。この容量は,現在の NEW の文脈の中につい

ても,上位の NEW の文脈の中についても,定義されたすべての局所変数の大きさの和とする。添字をも

たない局所変数の大きさとは,名前の文字のバイト数にその値の文字のバイト数を加え,それに 4 を加え

たものをいう。一つの局所配列の大きさは,次の(1)(4)の和とする。

(1)

配列の名前のバイト数

(2)

各配列の値のバイト数に 4 を加えたもの

(3)

各配列の添字並びの各添字のバイト数

(4)

ノード N の$DATA (N)  が 10 か,11 である場合は,ノードごとに 2 を加える。

すべての添字及び値は,文字列として考える。

6.

入れ子  実行中の DO,外部関数,外部特殊変数,FOR,EXECUTE 及び間接指定の生起回数は,入れ

子の深さとして数える。制御のための記憶容量としては,入れ子の深さ 30 を提供しなければならない。実

際には,これらすべてを使用するときの深さは,記憶容量の制限(5.参照)によって制約を受けるであろ

う。

一つの式の中の入れ子は,この制限のうちには数えない。式の入れ子の個数には,明示的な制限はない

が,記憶容量の制限による暗黙の制限を受ける(5.参照)

7.

その他の移植要件  プログラマは,HANG 命令及び時間制限で非整数値を用いる場合の注意を必要と

する。一般的に,HANG 命令を実行するとき,実際に経過する時間間隔を正確なものと予期することはで

きない。特に,非整数値を信頼して用いると,HANG 命令及び時間制限の構文で予期しない結果をまねく

ことがある。

8.

$Z

関数  $ZPOSITION と$ZWIDTH の数式の値としては,1,1.25,1.5,2 に制限する。


46

X 3011-1995

附属書 A(参考)  ASCII 文字集合

8

進数 10 進数 16 進数

文字

パターン符号

0 0 00

NUL

C, E

1 1 01

SOH

C, E

2 2 02

STX

C, E

3 3 03

ETX

C, E

4 4 04

EOT

C, E

5 5 05

ENQ

C, E

6 6 06

ACK

C, E

7 7 07

BELL

C, E

10 8 08

BS C, E

11 9 09

HT C, E

12 10 0A

LF  C, E

13 11 0B

VT  C,

E

14 12 0C

FF  C, E

15 13 0D

CR  C, E

16 14 0E

SO  C, E

17 15 0F

SI  C, E

20 16  10

DLE C, E

21 17  11

DC1 C, E

22 18  12

DC2 C, E

23 19  13

DC3 C, E

24 20  14

DC4 C, E

25 21  15

NAK

C, E

26 22  16

SYN

C, E

27 23  17

ETB C, E

30 24  18

CAN

C, E

31 25  19

EM C, E

32 26 1A

SUB C, E

33 27 1B

ESC C, E

34 28 1C

FS  C, E

35 29 1D

GS  C, E

36 30 1E

RS  C, E

37 31 1F

US  C, E

40 32  20

SP  P,

E

41 33  21

! P,

E

42 34  22

” P,

E

43 35  23 # P,

E

44 36  24 $ P,

E

45 37  25

% P,

E

46 38  26 & P,

E

47 39  27

, P,

E

50 40  28  ( P,

E

51 41  29  ) P,

E

52 42 2A * P,

E

53 43 2B

+ P,

E

54 44 2C

, P,

E

55 45 2D

− P,

E

56 46 2E

. P,

E

8

進数 10 進数

16

進数

文字

パターン符号

57 47 2F  /  P,

E

60 48  30 0  N,

E

61 49  31 1  N,

E

62 50  32 2  N,

E

63 51  33 3  N,

E

64 52  34 4  N,

E

65 53  35 5  N,

E

66 54  36 6  N,

E

67 55  37 7  N,

E

70 56  38 8  N,

E

71 57  39 9  N,

E

72 58 3A

: P,

E

73 59 3B

; P,

E

74 60 3C

< P,

E

75 61 3D

= P,

E

76 62 3E

> P,

E

77 63 3F

? P,

E

100 64  40

@ P,

E

101

65

41

A

A, U, E

102

66

42

B

A, U, E

103

67

43

C

A, U, E

104

68

44

D

A, U, E

105

69

45

E

A, U, E

106

70

46

F

A, U, E

107

71

47

G

A, U, E

110

72

48

H

A, U, E

111

73

49

I

A, U, E

112 74 4A J  A,

U,

E

113

75

4B

K

A, U, E

114

76

4C

L

A, U, E

115 77 4D M A,

U,

E

116

78

4E

N

A, U, E

117

79

4F

O

A, U, E

120

80

50

P

A, U, E

121

81

51

Q

A, U, E

122

82

52

R

A, U, E

123

83

53

S

A, U, E

124

84

54

T

A, U, E

125

85

55

U

A, U, E

126

86

56

V

A, U, E

127

87

57

W

A, U, E

130

88

58

X

A, U, E

131

89

59

Y

A, U, E

132 90 5A Z A,

U,

E

133 91 5B [  P,

E

134 92 5C  /  P,

E

135 93 5D ]  P,

E


47

X 3011-1995

8

進数 10 進数 16 進数

文字

パターン符号

136 94 5E ^  P,

E

8

進数 10 進数

16

進数

文字

パターン符号

137 95 5F _ P,

E

140 96  60

, P,

E

141 97 61 a A,

L, E

142

98

62

b

A, L, E

143 99 63 c A,

L, E

144

100

64

d

A, L, E

145

101 65 e A,

L, E

146

102 66 f A,

L, E

147

103

67

g

A, L, E

150

104

68

h

A, L, E

151

105

69

i

A, L, E

152

106

6A

j

A, L, E

153

107

6B

k

A, L, E

154

108

6C

l

A, L, E

155

109

6D

m

A, L, E

156

110 6E n A,

L,

E

157

111

6F

o

A, L, E

160

112

70

p

A, L, E

161

113

71

q

A, L, E

162

114

72

r

A, L, E

163

115

73

s

A, L, E

164

116

74

t

A, L, E

165

117

75

u

A, L, E

166

118

76

v

A, L, E

167

119

77

w

A, L, E

170

120

78

x

A, L, E

171

121

79

y

A, L, E

172

122

7A

z

A, L, E

173

123 7B { P, E

174 124  7C  |  P,

E

175 125  7D  }  P,

E

176 126  7E

 ̄ P,

E

177 127  7F DEL C,

E


48

X 3011-1995


附属書 B(参考)  生成規則一覧

要素

意味

−−−−−

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

: :

規定

[  ]

省略可能

|

  |

くくり

…  0 回以上の反復

_

(注意:アンダースコア)

−  (注意:ハイフン)

*

/

¥

2

項演算子 :

:

#

$FN

符号式 :

:

式  V $FN 符号

$FN

符号 :

:

= $FN 符号子  …

P

T

,  (注意:コンマ)

$FN

符号子 :

:

−  (注意:ハイフン)

式  [:装置パラメタ並び]

CLOSE

引数 :

:

@

式子  V L CLOSE 引数

入り口参照  後置条件

DO

引数 :

:

行ラベル参照  実パラメタ並び  後置条件

@

式子  V L DO 引数

FOR

パラメタ :

:

数式 1:数式 2:数式 3

数式 1:数式 2

入り口参照  後置条件

GOTO

引数

: :

@

式子  V L GOTO 引数

数式

HANG

引数

: :

= @

式子 V L HANG 引数

真偽値式

IF

引数

: :

= @

式子  V L IF 引数

入り口参照[:JOB パラメタ並び]

JOB

引数 :

:

行ラベル参照 JOB 実パラメタ並び[:JOB パラメタ並び]

@

式子  V L JOB 引数


50

X 3011-1995

JOB

実パラメタ並び :

:

(L  式)

JOB

パラメタ並び :

:

処理パラメタ並び[時間制限]

時間制限

変数名

KILL

引数 :

:

(  L  局所変数名  )

 @

式子  V L KILL 引

L

並び

名前参照

LOCK

引数 :

:

(L  名前参照)

[時間制限]

@

式子  V L LOCK 引数

局所変数名

NEW

引数 :

:

(  L  局所変数名  )

@

式子  V L NEW 引数

式[:OPEN パラメタ並び]

OPEN

引数 :

:

@

式子  V L OPEN 引数

装置パラメタ並び[時間制限]

OPEN

パラメタ並び :

:

時間制限

定文字列

書式

READ

引数 :

:

局所変数名[READ 計数]

[時間制限]

*

局所変数名[時間制限]

@

式子  V L READ 引数

READ

計数 :

:

#

整数式

左側$P

変数名

=式

(L  変数名)

SET

引数 :

:

@

式子  V L SET 引数

式[:装置パラメタ並び]

USE

引数 :

:

@

式子  V L USE 引数

V

書式

*

整数式

WRITE

引数 :

:

@

式子  V L WRITE 引数

式  後置条件

XECUTE

引数 :

:

@

式子  V L XECUTE 引数

後置条件 :

:

[:真偽値式]

アルファベット :

:

=  JIS X 0201 の大文字 A∼Z 及び小文字 a∼z


51

X 3011-1995

実在ラベル[+整数式]

[^ルーチン参照]

入り口参照 :

:

^ルーチン参照

改行

 (LF)

外部特殊変数 :

:

$$

行ラベル参照

外部関数 :

:

$$

行ラベル参照  実パラメタ並び

定整数列[.定整数列]

仮数部 :

:

.定整数列

仮パラメタ行 :

:

行ラベル  仮パラメタ並び  行開始  行体

仮パラメタ並び :

:

[L  名前]

間隔

(SP)

関係演算子 :

:

間接指定大域変数名 :

:

実式子  V  大域変数名

間接指定局所変数名 :

:

実式子  V  局所変数名

仮パラメタ行

行 :

:

レベル行

行開始 :

:

間隔…

行終端 :

:

復帰  改行

命令の並び[命令分離子  注釈]

行体 :

:

注釈

行終端

名前

行ラベル :

:

定整数列

$ASCII

関数の構文

$CHAR

関数の構文

組込み関数 :

:

$ZWIDTH

関数の構文

$HOROLOG

組込み特殊変数の構文

$IO

組込み特殊変数の構文

組込み特殊変数名 :

:

$Y

組込み特殊変数の構文


52

X 3011-1995

実大域変数名

大域変数名 :

:

@

式子  V  大域変数名

組込み特殊変数名

組込み関数

外部関数

外部特殊変数

定数字列

定文字列

(式)

項 :

:

単項演算子  式子

時間制限 :

:

:数式

式 :

:

式子[式尾]…

局所変数名

式子 :

:

大域変数名

式尾 :

:

2

項演算子

式子

[

’]  真偽演算子

[

’]  ?パターン

指数部 :

:

E

定整数列

関係演算子

真偽演算子 :

:

論理演算子

真偽値式 :

:

^(  L  式  )

実大域変数名 :

:

^名前[

(  L  式  )

@

間接指定大域変数名 @ (L  式)

実在ラベル :

:

行ラベル

@

式子  V  実在ラベル

実局所変数名

実式子 :

:

実大域変数名

実パラメタ並び :

:

[L  実パラメタ]

・実パラメタ名前

実パラメタ :

:

名前

実パラメタ名前 :

:

@

式子  V  実パラメタ名前


53

X 3011-1995

名前[

(L  式)

実局所変数名 :

:

@

間接指定局所変数名 @ (L  式)

…[?整数式]

書式 :

:

=   #

?  整数式

書式送り

 (FF)

処理パラメタ並び :

:

[式]

:]…式)

数字 :

:

JIS X 0201

の 0∼9 の数字

数式 :

:

整数式 :

:

図形文字 :

:

JIS X 0201

及び JIS X 0208 による

図形文字(間隔を含む。)

装置パラメタ並び :

:

[式]

:]…式)

”  ”

添字文字列 :

:

添字用非引用符文字

…”

添字用非引用符文字 :

:

添字における引用符記号を除いたすべての有効な文字

’  (注:アポストロフィ)

単項演算子 :

:

−  (注:ハイフン)

注釈 :

:

[図形文字]…

定数字列 :

:

仮数部[指数部]

定整数列 :

:

数字  …

”  ”

定文字列 :

:

非引用符

…”

数字

名前 :

:

アルファベット

アルファベット

[

^]  名前[

(L  式)

名前参照 :

:

@

式子  V  名前参照

名前値 :

:

: :

パターン子  …

パターン

 @

式子  V  パターン

C

N

P

A

L

U

E

パターン符号 :

:


54

X 3011-1995

パターン符号

パターン子 :

:

反復回数

定文字列

反復回数

定整数列

[定整数列 1]

[定整数列 2]

非引用符 :

:

JIS X 0201

の  (”)  引用符を除く図形文字

: :

一つ一つの引数の構文

引数

 @

式子  V L  引数

左側$P :

:

= $P

[IECE]

(変数名,式 1[,整数式 1[,整数式 2]

レベル指標 :

:

[間隔]  …

復帰

 (CR)

大域変数名

変数名 :

:

局所変数名

BREAK

命令の構文

CLOSE

命令の構文

命令 :

:

XECUTE

命令の構文

命令の並び :

:

命令[命令分離子  命令]…

命令分離子 :

:

間隔  …

行ラベル[^ルーチン名]

行ラベル参照 :

:

^

ルーチン名

ルーチン :

:

ルーチン頭  ルーチン体

ルーチン名

ルーチン参照 :

:

@

式子  V  ルーチン参照

ルーチン終端 :

:

復帰  書式送り

ルーチン頭 :

:

ルーチン名  行終端

ルーチン名 :

:

名前

ルーチン体 :

:

行  …  ルーチン終端

レベル行 :

:

[行ラベル]行開始[レベル指標]…  行体

名前

局所変数名 :

:

@

式子  V  名前

実局所変数名

局所変数名 :

:

@

式子  V  局所変数名

&

論理演算子 :

:


55

X 3011-1995

言語標準化調査研究委員会  構成表(敬称略・順不同)

氏名

所属

(委員長)

中  田  育  男

筑波大学

(幹事)

土  居  範  久

慶應義塾大学

田  中      清

日本電信電話株式会社

黒  川  利  明

日本アイ・ビー・エム株式会社

(委員)

西  村  恕  彦

東京農工大学

原  田  賢  一

慶應義塾大学

筧      捷  彦

早稲田大学

湯  浅  太  一

豊橋技術科学大学

武  市  正  人

東京大学

田  中      茂

富士通株式会社

神  野  俊  昭

株式会社日立製作所

佐  伯  正  夫

三菱電機株式会社

落  合  正  雄

株式会社東芝

桜  井  弘  之

日本電気株式会社

原  田      稔

沖電気工業株式会社

栗  林  雅  人

日本ユニシス株式会社

一  本  有  三

東芝情報システム株式会社

村  田  賢  一

情報処理振興事業協会

大  櫛  陽  一

東海大学

中  島  一  郎

通商産業省

瀬戸屋  英  雄

工業技術院

(事務局)

楡  木  武  久

社団法人日本電子工業振興協会

内  山  誠  作

社団法人日本電子工業振興協会

MUMPS

言語原案作成専門委員会  構成表(敬称略・順不同)

氏名

所属

(委員長)

大  櫛  陽  一

東海大学

(幹事)

本  多  正  幸

千葉大学

藤  江      昭

住友電工システムズ株式会社

(委員)

嶋      芳  成

日本ダイナシステム株式会社

山  下  芳  範

福井医科大学

若  井  一  朗

マンプスシステム研究所

山  本  和  子

島根医科大学

河  村  徹  郎

鈴鹿医療科学技術大学

木  村  一  元

獨協医科大学

根  岸  重  夫

日本アイ・ビー・エム株式会社

高  橋      隆

京都大学

里  村  洋  一

千葉大学

松  本  重  雄

日本エム・エス・エム株式会社

永  井      肇

日本電気株式会社

岩  田      稔

富士通株式会社

小  林  泰  道

日本ディジタルイクイップメント株式会社

丸  尾  誠  史

工業技術院

加  山  英  男

財団法人日本規格協会

(事務局)

内  山  誠  作

社団法人日本電子工業振興協会


56

X 3011-1995

英和対訳

【A】

$A

→$ASCII

access

操作する

actual

実パラメタ

actuallist

実パラメタ並び

actualname

実パラメタ名前

alpha

アルファベット

alphabet

アルファベット

and operator (&)

論理積演算子 (&)

apostrophe

アポストロフィ

argument

引数(ひきすう)

indirection

引数の間接指定

list

引数並び

argument, QUIT

引数付き QUIT

argument less

引数なしの

arguments

引数の並び

arithmetic operator

算術演算子

arithmetic binary operator

算術 2 項演算子

array

配列

array traversal

配列の横断

$ASCII $ASCII

関数

ascendant

上位の

ascendant, immediate

直接上位の

assignment

代入

association

対応

atom

最小の単位

attribute block

属性ブロック

auxiliary storage device

補助記憶装置

【B】

B

→BREAK

basic alphabet

基本文字

binary 2

項の

binary operator

2

項演算子

binaryop

2

項演算子

block

ブロック

bound

束縛された

BREAK BREAK

命令

【C】

$C

→$CHAR

C

→CLOSE

call

呼出し

call-by-reference

参照呼出し

call-by-value

値呼出し

callee

働き手

caller

呼び手

case sensitivity

大文字小文字の区別

character

文字

pointer

文字指標

carriage

キャリッジ

$CHAR $CHAR

関数

choice

選択対象

clock

クロック

register

タイマ

CLOSE CLOSE

命令

closeargument CLOSE

引数

CO

→($NEXT,$ORDER

の 定 義 に 使 わ れ て

いる関数)

code

コード

collating order

照合順序

command

命令

word

命令語

command argument indirection

命令引数の間接指定

command structure

命令構造

commands

命令の並び

comment

注釈

component

成分

computer language

プログラム言語

concatenation operator (_)

連結演算子 (_)

conceptual model

概念模型

conditional command

条件付き命令

connotation

用法

contains operator (

[)

包含演算子  ([)

content

内容


57

X 3011-1995

control flow

制御流れ

CQ

→($QUERY の定義に

使われている関数)

CR

復帰

create

生成する

cs

命令分離子

current

その時点での

current device

現用装置

designator

現用装置指定子

horizontal cursor

現 用 装 置 水 平 カ ー ソ

ownership rule

現用装置占有規則

vertical cursor

現 用 装 置 垂 直 カ ー ソ

【D】

$D

→$DATA

D

→DO

$DATA $DATA

関数

database

データベース

data-cell

データセル

data type

データ型

data value

データ値

date

日付

decimal digit

10

進数字

declaration of variable

変数の宣言

declaration statement

宣言文

defined

確定

defining occurrence of label

実在のラベル

definition

定義

degree

位数

delete

消去

delimiter

区切り記号

denote

表す

descendant

下位成分,下位の

exclusivity rule

下位排他規則

descendant, immediate

直接下位の

device, current

現 用 装 置 , → current

device

device

装置

exclusivity rule

装置排他規則

designator

装置指定子

handling

装置の操作

parameter

装置パラメタ

specifier

装置指定式

deviceparameters

装置パラメタ並び

difference operator (

−)

減算演算子  (−)

digit

数字

directory node

ディレクトリノード

division operator (/)

除算演算子 (/)

division operator, integer (¥)

整数除算演算子 (¥)

dlabel

実在ラベル

DO DO

命令

frame DO

doargument DO

引数

dynamic syntax

動的構文

【E】

$E

→$EXTRACT

ELSE ELSE

命令

element

要素

empty

空の

empty string

空文字列

empty value

空値

endless loop

無限ループ

entry

項目,見出し

entry reference

入り口参照

entryref

入り口参照

eol

行終端

eor

ルーチン終端

equality

等値性

equals operator (

=)

等価演算子  (=)

erroneous

誤り

error

誤り

evaluation

評価

command argument

命令引数の評価

expression

式の評価

indirection

間接指定の評価

naked indicator

略式指標の評価

parameter

パラメタの評価

exclusive

排他的

execution

実行


58

X 3011-1995

execution level

実行レベル

execution location

実行位置

exfunc

外部関数

exfunc frame

外部関数枠

exp

指数部

exponent

指数

exponential expression atom

指数式子

exponential value

指数値

expr

expratom

式子

expression

tail

式尾

expritem

exprtail

式尾

$EXTRACT $EXTRACT

関数

extrinsic

外部の

function

外部関数

special variable

外部特殊変数

exvar

外部特殊変数

exvar frame

外部特殊変数枠

【F】

$F

→$FIND

F

→FOR

FF

書式送り

file

ファイル

file traversal

ファイルの横断

$FIND $FIND

関数

floor FLOOR

関数

$FN

→$FNUMBER

$FNUMBER $FNUMBER

関数

fncodatom $FN

符号子

fncode $FN

符号

fncodexpr $FN

符号式

follows operator (

])

追従演算子  (])

FOR FOR

命令

parameter FOR

パラメタ

scope switch

FOR

有効範囲スイッ

form

形式

formal

形式的な

formalline

仮パラメタ行

formallist

仮パラメタ並び

format

書式

forparameter FOR

パラメタ

fraction

小数

part

小数部

value

小数値

frame

full (string)

正式(文字列)

full reference

正式参照

func

組込み関数呼出し

function

組込み関数

【G】

G

→GOTO

$G

→$GET

$GET $GET

関数

global variable

大域変数

glvn

変数名

gnamind

間接指定大域変数名

GOTO GOTO

命令

gotoargument GOTO

引数

graphic

図形文字

greater than operator (

>)

大号演算子  (>)

grouping

くくり

gvn

大域変数名

【H】

$H

→$HOROLOG

H

→HALT, HANG

HALT HALT

命令

handling

扱い

HANG HANG

命令

hangargument HANG

引数

$HOROLOG $HOROLOG

組込み特

殊変数

【I】

$I

→$IO

I

→IF

IF IF

命令

ifargument IF

引数

implementation

処理系


59

X 3011-1995

implementor

処理系作成者

informal

非形式的な

indirection

間接指定

command argument

命令引数の間接指定

name

名前の間接指定

pattern

パターンの間接指定

subscript

添字の間接指定

integer division operator (¥)

整数除算演算子 (¥)

interpretation

解釈

interpreter

インタプリタ

integer

整数

expression

整数式

expression atom

整数式子

interpretation

整数解釈

literal

定整数列

numeric

整数値

part

整数部

truth value

真偽値解釈

value

整数値

interchange

情報交換

intexpr

整数式

intlit

定整数列

intrinsic function

組込み関数

intrinsic special variable

組込み特殊変数

$IO $IO

組込み特殊変数

【J】

$J

→$JOB, $JUSTIFY

J

→JOB

JOB JOB

命令

job number

ジョブ番号

$JOB $JOB

組込み特殊変数

jobactuallist JOB

実パラメタ並び

jobargument JOB

引数

jobparameters JOB

パラメタ並び

$JUSTIFY $JUSTIFY

関数

juxtaposition

併置

【K】

K

→KILL

KILL KILL

命令

implicit

暗黙の KILL

killargument KILL

引数

【L】

$L

→$LENGTH

L

→LOCK

L

→(超言語で並びを意

味する記号)

label

行ラベル

label offset

行ラベル相対位置

labelref

行ラベル参照

last-in-first-out

後入れ先出し

left-side

左辺の

$LENGTH $LENGTH

関数

less than operator (

<)

小号演算子  (<)

level

深さ

execution

実行レベル

indicator

レベル指標

line

レベル行

precedence

優先順位

levelline

レベル行

LF

改行

li

レベル指標

life time

生存期間

line

line reference

行参照

linebody

行体

list

並び

literal

定数

lname

局所変数名

lnamind

間接指定局所変数名

local variable

局所変数

location

位置

LOCK LOCK

命令

list LOCK

並び

lockargument LOCK

引数

locktable LOCK

logicalop

論理演算子

logical operator

論理演算子

lower case (letter)

小文字

ls

行開始

lvn

局所変数名


60

X 3011-1995

【M】

mant

仮数

mantissa

仮数

many-to-one

多対 1 の

metalanguage

超言語

minus operator (

−)

減算演算子  (−)

modulo operator (#)

剰余演算子 (#)

multidimensional

多次元

MUMPS environment

MUMPS

環境

【N】

$N

→$NEXT

N

→NEW

n-tuple n

naked indicator

略式指標

naked reference

略式参照

name

名前

name indirection

名前の間接指定

name-table

名前表

named partition storage

名 前 付 き パ ー テ ィ シ

ョン記憶域

named system storage

名 前 付 き シ ス テ ム 記

憶域

namevalue

名前値

negative

負の

nest

入れ子

nesting level

入れ子の深さ

NEW NEW

命令

frame NEW

implicit

暗黙の NEW

newargument NEW

引数

$NEXT $NEXT

関数

node

ノード

designator

ノード指定子

nonzero digit

非ゼロの数字

nonnegative

非負の

integer

非負の整数

nonquote

非引用符

normal execution sequence

通常の実行順序

not operator (

’)

否定演算子  (’)

nref

名前参照

number

numeric

数値

data value

数値データ値

expression

数式

expression evaluation

数式評価

interpretation

数値解釈

literal

定数字列

relation

数値関係

value

数量値

numexpr

数式

numlit

定数字列

【O】

$O

→$ORDER

O

→OPEN

occurrence

生起

offset, label

行ラベル相対位置

one-to-one 1

対 1 の

OPEN OPEN

命令

openargument OPEN

引数

openparameters OPEN

パラメタ並び

operating system

オ ペ レ ー テ ィ ン グ シ

ステム

operation

操作,演算

operator

演算子

arithmetic

算術演算子

concatenation

連結演算子

logical

論理演算子

metalanguage

超言語演算子

pattern

パターン演算子

precedence of

演算子の優先順位

relational

論理演算子

truth-value

真偽値演算子

unary

単項演算子

option

省略可能な

or operator (!)

論理和演算子 (!)

$ORDER $ORDER

関数

order of evaluation

評価の順序

ownership of device

装置の占有権

【P】

$P

→$PIECE


61

X 3011-1995

parameter frame

パラメタ枠

parameter passing

パラメタ渡し

partition

パーティション

marker

パ ー テ ィ シ ョ ン マ ー

space

パーティション域

stack

パ ー テ ィ シ ョ ン ス タ

ック

storage

パ ー テ ィ シ ョ ン 記 憶

patatom

パターン子

patcode

パターン符号

pattern

パターン

atom

パターン子

code

パターン符号

indirection

パターンの間接指定

match

パターン照合

match operator (?)

パ タ ー ン 照 合 演 算 子

(?)

$PIECE $PIECE

関数

plus operator (

+)

加算演算子  (+)

point

指す

pointer

指標

portability requirement

移植要件

positive

正の

post conditionals

後置条件並び

postcond

後置条件

precedence of operator

演算子の優先順位

prefix

前置きする

primitive

終端記号

printable character

図形文字

process

処理

process-stack

処理スタック

processparameters

処理パタメタ並び

product operator (*)

乗算演算子 (*)

【Q】

$Q

→$QUERY

Q

→QUIT

$QUERY $QUERY

関数

QUIT QUIT

命令

implicit

暗黙の QUIT 命令

quotient operator (/)

除算演算子 (/)

integer (¥)

整数除算演算子 (¥)

【R】

$R

→$RANDOM

R

→READ

$RANDOM $RANDOM

関数

READ READ

命令

readargument READ

引数

readcount READ

計数

reference

参照

relation

関係演算子

relational operator

関係演算子

relation

関係

numeric

数値関係

string

文字列関係

repcount

反復回数

repetition

繰返し

representation

表現

result

結果

resume

再開する

rexpratom

実式子

rgvn

実大域変数名

right-side

右辺の

rlvn

実局所変数名

routine

ルーチン

execution

ルーチンの実行

reference

ルーチン参照

routinebody

ルーチン体

routinehead

ルーチン頭

routinename

ルーチン名

routineref

ルーチン参照

【S】

$S

$SELECT,

$STORAGE

S

→SET

scope

有効範囲

marker

有効範囲マーカ

scoping

有効範囲

FOR FOR

有効範囲


62

X 3011-1995

variable

変数有効範囲

secondary peripheral device

2

次周辺装置

see

参照

$SELECT $SELECT

関数

selective

選択的

semantics

意味

SET SET

命令

separator

分離子

sequence

setargument SET

引数

setpiece

左側$P

shared

共用の

sbared database

共用データベース

sign

符号

single atomic operation

単元操作

SP

間隔

space

間隔

in command

命令間の間隔

special variable

特殊変数

square bracket

角括弧

stack

スタック

start-step parameter

初値増分パラメタ

state

状態

static syntax

静的構文

step

段階

$STORAGE $STORAGE

組込み特

殊変数

storage reference

記憶域参照

string

文字列

function

文字列関数

literal

定文字列

operator

文字列演算子

relation

文字列関係

strlit

定文字列

sublit

添字文字列

subnonquote

添字用非引用符文字

subscript

添字(そえじ)

subscript indirection

添字の間接指定

substring

部分文字列

subroutine

サブルーチン

subtraction operator (

−)

減算演算子  (−)

sum operator (

+)

加算演算子  (+)

svn

組込み特殊変数名

symbol

記号

symbol table

記号表

syntactic object

構文単位

syntactic type

構文規則上の用語型

syntax

構文

system-wide

システム全体の

【T】

$T

→$TEST, $TEXT

term

用語

termination procedure

終結手順

$TEST $TEST

組込み特殊変

$TEXT $TEXT

関数

the language

MUMPS

the MUMPS standard

この規格

time

時刻

timeout

時間制限

$TR

→$TRANSLATE

$TRANSLATE $TRANSLATE

関数

transferability

移送性

truth operator

真偽演算子

truth value

真偽値

expression

真偽値式

expression atom

真偽値式子

interpretation

真偽値解釈

truthop

真偽演算子

tuple

値組

types

種類

type conversion

型変換

type declaration

型宣言

tvexpr

真偽値式

【U】

U

→USE

unary

単項の

unary operator

単項演算子

unaryop

単項演算子

undefined

不定


63

X 3011-1995

unlock LOCK

解放

upper case (letter)

大文字

USE USE

命令

useargument USE

引数

【V】

$V

→$VIEW

V

→VIEW

V

→(超言語で値を意味

する記号)

value

value attribute

値属性

value-table

値表

variable,

変数

context

変数環境

extrinsic special

外部特殊変数

global

大域変数

intrinsic special

組込み特殊変数

local

局所変数

name

変数名

VIEW VIEW

命令

$VIEW $VIEW

関数

【W】

W

→WRITE

WRITE WRITE

命令

writeargument WRITE

引数

【X】

X

→XECUTE

$X $X

組込み特殊変数

xargument XECUTE

引数

XECUTE XECUTE

命令

【Y】

$Y $Y

組込み特殊変数

【Z】

$Z $Z

組込み特殊変数