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

日本工業規格

JIS

B 8440-1995

産業用ロボット−中間コードSTROLIC

Industrial robots−Intermediate code STROLIC

1. 適用範囲 この規格は,種々の産業用ロボット(以下,ロボットという。)間での,中間コードレベル

における動作プログラムの移植性を高めるために,ロボットコントローラ(1)用中間コード(2)STROLIC

(Standard Robot Language in Intermediate Code) (以下,STROLICという。)の記述形式及び機能について規

定する。

中間コードに関する規格は,

(1) 中間コードの割付方法,

(2) 中間コードによるデータ構造表現,

(3) 中間コードの機能別割付表,

(4) システム関数の中間コード割付表

からなる。

注(1) ロボットコントローラ(以下,コントローラという。)は,STROLICの解釈をする処理系(イ

ンタプリタ),アクチュエータを駆動するサーボ系などからなる。

(2) この規格でいう中間コードは,ロボットシステム内部で使用されるもので,利用者が使用する

プログラム言語とは独立に設計されている。利用者は,任意のプログラム言語を選択できる。

ロボット用プログラム言語の一例として,SLIM (JIS B 8439) がある。

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

(1) プログラム装置 利用者がプログラムを用意するための装置。STROLICコードは,この装置によって

生成され,通信回線で接続されたコントローラに伝送される。上位計算機ともいう。

(2) プログラム STROLICコードの並び。

(3) 処理系定義 各処理系ごとの定義。各処理系は,その処理方法及び意味を何らかの形で定義化しなけ

ればならない。概念を,紛らわしくない文脈で明確な文章で表現する。

(4) 例外状態 中間コードが,STROLIC仕様に従って動作できない又は動作していないことを,処理系が

認識した状態とする。

(5) 拡張 STROLIC仕様に対する記述形式・機能の変更。ただし,拡張に際してSTROLIC仕様に合致す

るプログラムを排除してはならない。

(6) 動作領域 動作領域とは,ロボットの動作が保証される空間。

備考 JIS B 0134における“作業領域”,“可動領域”などのいずれに該当するかは,処理系に依存す

る。

(7) 座標系 STROLICが扱う座標系は,ロボットのベース座標系及びエンドエフェクタのツール座標系が

ある。

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

2

B 8440-1995

(8) タスク STROLICの処理系の外で,同時並行的に実行される実行単位。

(9) プロセス STROLICの処理系の中で,同時並行的に実行される実行単位。

3. 規定事項 この規格の規定事項は,次のとおりとする。

(1) STROLICによるコードの構文。

(2) STROLICで表現されたコードによって制御されるロボットシステムに対して入出力できるデータの

形式,数値の表現の精度及び範囲。

(3) STROLICで表現されたコードによって制御されるロボットシステムの動作。

(4) STROLICで表現されたコードの意味の解釈に関する事項。

(5) 検出されなければならない誤り及び例外状態並びにそれらの処理方法。

4. STROLICへの規格合致性

4.1

規格合致性 この規格では,次の二つの合致性を定める。

(1) STROLICで表現されたコードの規格合致性。

(2) STROLICで表現されたコードを処理する処理系の規格合致性。

4.2

コードの規格合致性 STROLICで表現されたコードは,次の条件を満たすとき,コードの規格合致

性をもつ。

(1) STROLICプログラム中の各々のコードが,この規格で定める正しい構文に従っていること。

(2) STROLICプログラム中の各々のコードが,この規格で明示的に定める正しい意味をもっていること。

(3) STROLICプログラム中のコードの列が,全体としてこの規格で明示的に定める正しい意味をもつ正し

いプログラムを構成していること。

4.3

処理系の規格合致性 処理系は,次の条件を満たすとき,処理系の規格合致性をもつ。

(1) コードの規格合致性をもつプログラムを受け入れて実行できること。

(2) コードの規格合致性をもたないプログラムに対しては,これを実行できないことを報告できること。

(3) 誤り及び例外状態を,この規格の定めるところに従って解釈し実行できること(4.4及び4.5参照)。

(4) コードの規格合致性をもつプログラム中の各々のコードの意味を,この規格の定めるところに従って

実行できること。

(5) コードの規格合致性をもつプログラム中の全体としての意味を,この規格の定めるところに従って実

行できること。

(6) 数値については,この規格で定める精度及び範囲を処理できること。

(7) この規格で“規定しない”としている機能及び“処理系定義”としている機能に対する動作を,明確

に定義してあること。

4.4

誤りの処理 コード及びプログラム中の構文上又は意味上の誤りがあることを,必ずしも報告しな

くてもよい。

4.5

例外状態の処理 例外状態の処理は,次による。

(1) 処理系の規格合致性をもつ処理系は,この規格で定める例外状態を,すべて報告しなければならない。

ただし,例外状態を処理する機能を備えている場合は,例外状態を報告しなくてもよい。

(2) 処理系の規格合致性をもつ処理系は,例外状態を検出したとき,プログラムの実行を停止する。プロ

グラムの実行が停止すると,ロボットの動作も停止する。ただし,例外処理手続を規定している場合

は,その手続による。この例外処理の規定がある場合であっても,処理系のハードウェア,操作環境

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

3

B 8440-1995

などの制約によって,例外処理の手続がとれない場合は,プログラムの実行を終了する。

(3) この規格では,プログラムの実行の停止及びロボットの動作の停止について処理系定義とし,例外状

態の検出の順序及び処理の順序については規定しない。

4.6

拡張の規格合致性 処理系の規格合致性をもつ処理系は,拡張した言語仕様で表現されたプログラ

ムを受け入れてもよい。この処理系がそのようなプログラムを受け入れる場合には,STROLIC仕様に合致

していない部分を報告する必要はない。ただし,この場合であって,コードがSTROLIC仕様に合致して

いないとき,処理系は,誤りを報告するか又は合致していない部分の構文規則及び意味をあらかじめ与え

ておかなければならない。

5. STROLIC

5.1

STROLICコードの構文 STROLICコードの構文は,次による。

STROLICコード = データコード | 機能コード

データコード = 評価抑制データ | 数値データ | 文字列データ |

間接参照 | 配列データ |

レコードデータ | 関数データ |

ベクトルデータ | 同次変換データ |

ポーズデータ

機能コード = STROLIC関数 | 利用者コード

5.2

STROLICコードの意味 中間コードは,バイト列で表現する。中間コードには,データを表すタグ

付きデータ及び機能を表す機能コードがある。機能コードは,2バイト(又は4バイト)を単位とするビ

ット列の並びであり,ビットパターンがもつ意味とその並びがもつ意味とで解釈される。機能コードでは

先に現れたバイトが上位のビットを構成する。

参考 中間コードは,シリアルライン上を送られたり,ファイルに直接書き込まれることを想定して

いるが,印刷可能でない文字及びASCIIコードにおける制御文字を含むので,実際の伝送又は

ファイル操作において,制御用コードの取扱いに注意する。

6. 評価抑制データ

6.1

評価抑制データの構文 評価抑制子の構文は,次による。

評価抑制子データ=評価抑制タグ( データ頭部 | 機能コード )

データ頭部 = 評価抑制タグ | 間接参照タグ | データタグ部

データタグ部 = 1バイト整数タグ | 2バイト整数タグ|

4バイト整数タグ | 4バイト実数タグ |

8バイト実数タグ |

配列タグ 長さ 配列要素タグ |

文字列タグ 長さ | レコードタグ 長さ |

関数タグ 長さ | ベクトルタグ |

同次変換タグ | ポーズタグ 長さ

長さ = 整数データ

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

4

B 8440-1995

6.2

評価抑制子の意味 一般の中間コードは,フェッチされると,それぞれ決まった評価が行われる。

例えば,変数を評価すると,その値が得られる。しかし,評価を行わずに,そのままスタックに積みたい

場合がある。このとき,評価抑制子#を用いる。評価抑制の対象は,ユーザ変数,関数及びタグがある。

ユーザ変数及び関数の場合は,コードそのものが結果となる。タグの場合は,1バイトのタグコードが

結果となる。長さをもつタグの場合には,長さ情報までを含めたバイト列,配列の場合,長さの情報及び

要素の型を表すタグまでのバイト列が結果となる。

可変の長さをもつデータ構造では,その長さがそのデータ構造の長さに対応したバイト数を表す。長さ

は,正の整数値とする。長さは,タグ付きの整数で表す。したがって,127以下の値ならタグ付きの1バ

イトの整数を用い,それ以上なら2バイト又は4バイトの整数を用いる。

7. 数値データ

7.1

数値データの構文 数値データの構文は,次による。

数値データ = 整数データ | 実数データ

整数データ = 1バイト整数 | 2バイト整数 | 4バイト整数

1バイト整数 = 1バイト整数タグ 1バイト整数値

2バイト整数 = 2バイト整数タグ 2バイト整数値

4バイト整数 = 4バイト整数タグ 4バイト整数値

実数データ = 4バイト実数 | 8バイト実数

4バイト実数 = 4バイト実数タグ 4バイト実数値

8バイト実数 = 8バイト実数タグ 8バイト実数値

7.2

数値データの意味 整数には,1バイト整数,2バイト整数,4バイト整数の三つがある。1バイト

整数は,タグF1の後に1バイトの整数値が続く。2バイト整数では,タグF2の後に2バイトの整数値が

上位バイト・下位バイトの順で続く。4バイト整数も同様である。

実数には,4バイト実数と8バイト実数との二つがある。4バイト実数では,タグF5の後に4バイトの

実数値が上位バイトから下位バイトへと続く。8バイト実数の場合も同様である。実数の表現形式は,参

考2の表現を推奨する。

8. 間接参照

8.1

間接参照の構文 間接参照の構文は,次による。

間接参照 = 間接参照タグ 利用者コード

8.2

間接参照の意味 間接参照では,続く2バイトで表されるユーザコードの中身を用いた間接参照を

行う。

9. 配列データ

9.1

配列データの構文 配列データの構文は,次による。

配列データ = 配列タグ 長さ 配列要素タグ { 配列要素 }*

配列要素タグ = データタグ部

配列要素 = タグなしデータコード

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

5

B 8440-1995

9.2

配列データの意味 配列データは,配列を表す。配列とは,同一の型のデータを並べたものである。

配列データは,配列タグ,データの長さ,配列要素タグに続く配列要素の並びである。配列要素タグは,

配列要素に対応する型のタグを用いる。配列要素は,データコードからタグを取除いた部分(タグなしデ

ータコード)で表現する。

長さは,配列要素の全量をバイトで表した値であり,配列タグ,長さ及び配列要素タグの長さは含まな

い。

10. 文字列データ

10.1 文字列データの構文 文字列データの構文は,次による。

文字列データ = 文字列タグ 長さ { 文字 }*

10.2 文字列データの意味 文字列は,文字データ(バイト)の並びである。文字コード系には依存しな

い。特に漢字コードを含むことを妨げない。文字列は,文字列タグに続いて文字列の長さがあり,その後

に文字データが並ぶ。

長さは,文字データの長さをバイト数で表した値であり,タグ及び長さの長さは含まない。

11. レコードデータ

11.1 レコードデータの構文 レコードデータの構文は,次による。

レコードデータ = レコードタグ 長さ { レコード要素 }*

レコード要素 = タグなしデータコード

11.2 レコードデータの意味 レコードデータは,レコード構造体を表す。レコード構造体とは,型の異

なるデータの集まりである。レコードデータの内部構造は,STROLICでは関知しない。内部構造のアクセ

スは,利用者の責任である。レコードデータは,レコードタグに続き,データの長さがあり,その後にレ

コードの要素データが並ぶ。レコード要素にはタグを付けず,データコードからタグを取除いた部分(タ

グなしデータコード)を並べて表現する。

長さは,レコード・データの長さをバイト数で表した値であり,タグ及び長さは含まない。

12. 関数データ

12.1 関数データの構文 関数データの構文は,次による。

関数データ = 関数タグ 長さ { STROLICコード }*

12.2 関数データの意味 ユーザ関数の表現である。コードの列の部分には,関数の本体を,中間コード

で表す。関数の本体の中では,分岐関係の中間コードを用いることができる。関数のコードの列は,関数

定義の終了のコード “END” で終わっていなければならない。

長さは,関数のコードの長さをバイト数で表した値であり,タグ及び長さは含まない。

13. ベクトルデータ

13.1 ベクトルデータの構文 ベクトルデータの構文は,次による。

ベクトルデータ = ベクトルタグ { ベクトル要素 }3

ベクトル要素 = 4バイト実数値

page

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

6

B 8440-1995

13.2 ベクトルデータの意味 ベクトルは,三つの実数データの集まりで,全体で14バイトの長さをもつ。

各実数値は,4バイト(単精度)で,実数を示すタグはもたない。3次元ベクトル値を表す。ベクトルタグ

をVec,3実数値をそれぞれx,y,zとするとき,

Vec x y z

は,ベクトル

[x,y,z]

を表す。

14. 同次変換データ

14.1 同次変換データの構文 同次変換データの構文は,次による。

同次変換データ = 同次変換タグ { 同次変換要素 }12

同次変換要素 = 4バイト実数値

14.2 同次変換データの意味 同次変換データは,12個の実数データからなり,全体で50バイトの長さを

もつ。各実数値は,4バイト(単精度)で,実数を示すタグはもたない。3行×4列の変換行列を表す。同

次変換タグをTrn,それに続く各実数値をPx,Py,Pz,Nx,Ny,Nz,Ox,Oy,Oz,Ax,Ay,Azとする

と,

Trn Px Py Pz Nx Ny Nz Ox Oy Oz Ax Ay Az

は,同次変換マトリクス

Nx Ox Ax Px

Ny Oy Ay Py

Nz Oz Az Pz

0

0

0

1

を表す。

15. ポーズデータ

15.1 ポーズデータの構文 ポーズデータの構文は,次による。

ポーズデータ = ポーズタグ 長さ { ポーズ要素 }*

ポーズ要素 = 数値データ

15.2 ポーズデータの意味 ポーズの表現である。ポーズとは,空間上の位置の情報のほか,その位置で

のロボットの姿勢及びその他のパラメータの総合体である。

また,その内部表現は,各インプリメントに依存して様々である。したがって,ここではその内部表現

には関与しない。ポーズにかかわる一まとまりの情報を,ポーズデータと呼ぶ。

長さは,ポーズデータの長さをバイト数で表した値であり,タグ及び長さは含まない。

長さ以下のデータの構成は,処理系定義とする。STROLICでは関知しない。ただし,各処理系は,この

表現と同次変換データの表現との間の相互変換の関数(TRNとPNT)を提供しなくてはならない。この変

換に際し,同次変換データの表現だけでは表しきれない情報については,仮想マシン内に状態パラメータ

(これを,コンフィギュレーションと呼ぶ)を設ける。コンフィギュレーション(主に,姿勢関連)は,

コンフィギュレーション情報の設定/参照の関数によって取り扱う。このコンフィギュレーション情報の

操作関数には拡張関数が用意されており,各処理系ごとの拡張に対応できる。

page

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

7

B 8440-1995

16. STROLIC関数

16.1 STROLIC関数の構文 STROLIC関数の構文は,次による。

STROLIC関数 = 2バイトSTROLIC関数コード

STROLIC関数は,2バイトのSTROLIC関数コードであり,表1に示すものからなる。

表1 STROLIC関数一覧表

コード

表記

機能

加算

減算

乗算

除算

べき乗

剰余

整数除算

1増加

1減少

比較・等しい

比較・等しくない

比較・小さいか等しい

比較・大きいか等しい

比較・小さい

比較・大きい

近似比較

1の補数

論理積

論理和

排他的論理和

ビットセット

ビットクリア

ビットテスト

左論理シフト

右論理シフト

左算術シフト

右算術シフト

論理否定

文字列の連結

文字列の長さ

部分文字列の取出し

正弦

余弦

正接

逆正接

逆正接(2引き数)

自然対数

指数

平方根

2の補数

絶対値

符号判定

整数化

1バイト 整数化

page

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

8

B 8440-1995

コード

表記

機能

2バイト 整数化

4バイト 整数化

実数化

4バイト 実数化

8バイト 実数化

近似比較パラメタ (ε) の設定

近似比較パラメタ (ε) の読出し

円周率

度・ラジアン変換

ラジアン・度変換

ベクトル長

ベクトルの和

ベクトルの差

ベクトルのスカラ倍

ベクトルの内積

ベクトルの外積

同次変換の積

同次変換の逆変換

同次変換とベクトルの積

ポーズから同次変換への変換

同次変換からポーズヘの変換

ポーズの位置成分取出し

ポーズの並進変換

ツール座標によるポーズの並進変換

ポーズの加算

ポーズの減算

ポーズデータの構成

ポーズデータの分解

ベクトルの構成

ベクトルの分解

配列の構成

配列の分解

利用者コードの構成

利用者コードの分解

スタックトップのコピー

スタックトップの切り落とし

スタックトップの入替え

データのプッシュ

データのポップアップ

代入

バイト抽出

バイト埋込み

要素抽出

要素埋込み

相対分岐(3)

偽条件相対分岐(3)

真条件相対分岐(3)

復帰(3)

関数宣言の終わり(3)

入れ子構造の設定

入れ子構造からの復帰

page

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

9

B 8440-1995

コード

表記

機能

外側の入れ子レベルのデータのプッシュ

外側の入れ子レベルのデータのポップアップ

変数宣言

変数の解放

DCL,FREEの始まり

関数定義の始まり

サブルーチンの呼出し

関数実行の強制終了

領域の割付け

領域の割付け

領域のクリア

領域の解放

領域のサイズを得る

STROLICのバージョンIDを得る

処理系のバージョンIDを得る

中間コードインタプリタの初期化

トレース開始

トレース終了

トレース

同期

肯定的応答

否定的応答

結果要求

関数の起動

タスクの起動

関数の実行優先度

タスクの実行優先度

関数の周期起動指定

タスクの周期起動指定

関数の終了判定

タスクの終了判定

関数の強制終了

タスクの強制終了

関数の強制中断

タスクの強制中断

関数の強制再開

タスクの強制再開

競合資源のロック

競合資源のロック解除

事象の待合わせ

複数事象の待合わせ(AND条件)

複数事象の待合わせ(OR条件)

事象の取出し

事象の発生

事象のクリア

チャネルからのデータ入力

チャネルへのデータ出力

共有変数の宣言

時刻

日付

時計

page

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

10

B 8440-1995

コード

表記

機能

時刻の設定

日付の設定

内部時計のクリア

時刻要素データのまとめ

時刻データの要素データへの分解

日付要素データのまとめ

日付データの要素データへの分解

通信ポートの設定

出力ポートへの出力

入力ポートからの入力

入力条件待ち

割込みの活性化

割込みの不活性化

割込みの再活性化

割込みコードの定義

割込み処理の定義

タイマ割込みの設定

タイマ割込みの再設定

タイマ割込み処理の定義

ファイルステータスの取出し

ファイルへの書出し

ファイルの読込み

ファイルの1行書出し

ファイルの1行読込み

ファイルの入出力用オープン

ファイルのクローズ

1文字出力

1文字入力

文字列の分解(BASIC形式)

文字列の構成(BASIC形式)

文字列の分解(C形式)

文字列の構成(C形式)

関節速度指定

手先速度指定

手先加速度指定

時間による手先加速度指定

手先減速度指定

時間による手先減速度指定

コンフィギュレーション設定

コンフィギュレーション設定2

コンフィギュレーション設定3

コンフィギュレーション取出し

コンフィギュレーション取出し2

コンフィギュレーション取出し3

現在ポーズの取込み

現在ジョイント値の取込み

キャリブレーション

中断

時間待ち

関節角空間直線補間絶対移動

関節角空間直線補間相対移動

page

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

11

B 8440-1995

コード

表記

機能

直角座標空間直線補間絶対移動

直角座標空間直線補間相対移動

ツール座標系直線補間移動

直角座標空間円弧補間移動

直角座標空間3点指定円弧補間移動

関節角絶対位置移動

関節角相対位置移動

近傍精度設定

近傍精度参照

ロボットの動作完了待ち

ロボットの動作完了判定

ハンドを開く

ハンドを閉じる

握る

ハンドの定義

ハンド定義の参照

ハンドの交換

注(3) 関数データの中だけで有効。

16.2 STROLIC関数の意味 STROLIC関数が評価されると,あらかじめ定められた機能が実行される。

それぞれの機能については,附属書1に規定する。機能の実行に際しては,必要ならば,スタック上のデ

ータを引き数として用いる。

また,実行の結果をスタック上に置くものもある。

17. 利用者コード

17.1 利用者コードの構文 利用者コードの構文は,次による。

利用者コード = 2バイト利用者コード | 拡張利用者コード

17.2 利用者コードの意味 2バイト利用者コードは,2バイトのコードであり,16進数で1000からEAFF

の値を取る。拡張利用者コードは,4バイトのコードであり,16進数でEA001000からEBFFFFFFの値を

取る。拡張利用者コードのうち,EB001000からEB00EAFFは,2バイト利用者コードの1000からEAFF

に対応する。0000から0FFFまでは利用しない。

利用者コードには,利用者が値を代入することができる。関数データを代入すれば利用者コードは関数

コードとなり,その他のデータを代入すれば変数コードとなる。関数コードの評価では,利用者によって

定められた機能が実行される。

また,変数コードの評価では,代入されている値を取り出し,スタックへプッシュする。

18. タグ

18.1 一般 STROLICのデータコードは,タグで始まる。タグには,1バイトのタグである基本データタ

グ及び2バイトのタグである拡張データタグがある。タグコードに続くデータには,各タグごとにその長

さと意味を定める。

18.2 基本データ構造 基本データ構造は,STROLICの基本的データを表現するデータ構造で,基本デー

タタグで始まる。基本データタグを表2に示す。

page

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

12

B 8440-1995

表2 基本データタグ

タグ

表記

意味

評価抑制子

1バイト整数

2バイト整数

予約

4バイト整数

4バイト実数

8バイト実数

間接参照

予約

配列

文字列

レコード

予約

関数

予約(機械語関数)

タグ拡張(2バイトタグ)

18.3 拡張データ構造 拡張データ構造は,ロボット用データを表現するデータ構造で,拡張データタグ

(2バイト)で始まる(表3参照)。

表3 拡張データタグ

タグ

表記

意味

ベクトル

同次変換

予約

点(マシン表現)

予約

利用者拡張用

関連規格 JIS B 0134 産業用ロボット−用語

JIS B 8439 産業用ロボット−プログラム言語 SLIM

JIS X 0001 情報処理用語 基本用語

JIS X 0015 情報処理用語(プログラム言語)

JIS X 0201 情報交換用符号

IEEE 754 A Standard for Binary Floating Point Arithmetic

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

13

B 8440-1995

附属書1 組込関数の機能

1. 適用範囲 この附属書は,STROLICにおける組込関数の機能に関する一般的事項及び詳細について規

定する。

2. 内部割付け 組込機能を三つに大別し,以下のようにコード領域を割り付ける。

(1) EC00〜EDFF (512) ロボット制御機能の呼出し

(2) EE00〜EEFF (256) システム機能の呼出し

(3) EF00〜EFFF (256) 仮想マシン基本操作

基本操作は,仮想マシン内の基本的オペレーションを行う。システム機能の呼出しは,ロボット制御装

置の基本システム内の機能の呼出しで,入出力,時計などを含む。ロボット制御機能の呼出しは,文字ど

おり各種ロボットの制御機能を呼び出す。

3. 基準整数 中間コードは,表面記述と異なり,様々なデータの表現をコーディングしたものが取り扱

われる。各種データの表現に用いられるデータの内部表現は,主に整数である。すなわち,表面記述上の

様々なデータは,整数値に符号化されて内部で取り扱われる。このため整数表現は,単に整数を表すとい

う以上に,より重要な基本データである。中間コードでは,整数にタグ付きで可変長の表現を用いている。

しかし,コーディングにおいて,ときとしてこうした可変長のデータ表現が適していない場合がある。例

えば,ビットごとに意味のあるデータなどである。こうした目的には,基準整数として2バイト整数(I2

整数)を用いる。

4. ビット位置表現 データ単位内のビット位置を表す表し方が必要である。データ単位内でのビットの

位置は,そのビットの2のべき乗の指数で表す。したがって,最下位ビットは2の0乗であるので,第0

ビットと表す。最上位ビットは,用いるデータ単位の大きさによって,8ビットのデータ単位では2の7

乗で第7ビット,16ビット長では第15ビット,32ビット長では第31ビットと表現する。

5. 混合演算 算術演算では,内部表現の異なる数値データどうしの演算,混合演算が行えると便利であ

る。中間コードでは,長さが異なる整数データどうし,長さ(精度)が異なる実数データどうし及び整数

データと実数データとの間の演算がある。各データ間の関係を強さの表現を用い,

I1 < I2 < I4 < R4 < R8

と表した場合,混合演算では,より強い方のデータ表現に変換して演算が行われる。

また,その演算結果も,その強いデータ表現で得られる。

6. 丸めの処理 関数の引き数が整数として意味をもつ場合,実引き数が実数ならば,特別の規定のない

限り,関数の評価(実行)に先立ってあらかじめ整数に丸められる。

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

14

B 8440-1995

7. 論理値 論理操作のために,論理値の表現を定める必要がある。STROLICに,論理型のデータは存在

しない。論理データは,基準整数型 (I2) のデータに論理値をコーディングして用いる。まず,論理値の真

と偽とに対し,標準整数の1と0とを対応させる。

真・・・1

偽・・・0

また,論理値の判定の場合,スタック上のデータが,I1,I2,I4,R4,R8のいずれの型であっても,そ

の値が0ならば偽,さもなければ真と評価する。

if 論理値 = 0 then 偽 else 真

8. エラーコード 各種関数には,実行に際しエラーの発生するものがある。このような場合に,関数の

実行終了時にエラーコードが帰される。このエラーコードの割付けは,特に規定された場合を除いて,次

のルールによる。

(1) エラーコードには標準整数を用いる。

(2) 0をノーマル状態(ノーエラー)とする。

(3) エラーに対して正の整数値を小さい方から順に割り振る。

ただし,ビットに意味があるような場合,この限りではない。

9. 例外処理 組込関数一覧の例外の項に,発生する例外とその処理を記述する。しかし,一般的に発生

する例外のすべてを記述してはいない。STROLICの処理系が扱う例外として,計算機言語一般のものとロ

ボット言語特有のものがある。計算機言語一般の例外として,次のものがある。

・ 0による割算

・ 数値のオーバーフロー又はアンダーフロー

・ スタックのオーバーフロー又はアンダーフロー

・ データの型の不一致

・ 未定義のデータ

・ その他の計算機エラー

ロボット言語特有の例外として,次のものがある。

・ 動作領域外

・ 速度過大

・ その他のエラー

これらの例外が発生したとき,インタプリタは停止する。

また,例外の項に処理が記述されていない場合にも,停止する。

また,ロボットコントローラで発生する例外としては,次のものがある。

・ 非常停止

・ サーボエラー

・ 通信エラー

・ その他のコントローラエラー

これらの例外が発生したとき,サーボ電源を落とすなどロボットそのものの動作が停止するよう処置す

る。

また,例外の項にその処理が記述されていない場合にも,停止する。

page

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

15

B 8440-1995

なお,いずれの場合でも停止及び復旧の具体的手順については,処理系定義とする。

10. 組込関数の詳細 STROLICにおける組込関数の詳細については,附属書1表1に規定する。附属書1

表1の様式(項目及び内容)は,次のとおり。

コード

STROLIC関数のコード番号(16進数表現)

表記

コードに付けられた名前(ニーモニック)

機能

簡便に表現された関数の働き

呼出形式

関数の実行のさせ方(引き数の順番)

結果

関数の実行後スタックに残される結果

入力

引き数の型及び意味

出力

結果の型及び意味

説明

機能の詳細説明

例外

関数の実行時に発生する例外事項及びその処理

備考

その他の補足的事項

附属書1表の読み方は,次の例のとおりである。

コード

項目

記述

表記

機能

呼出形式

結果

入力

出力

減算 (subtract)

説明

スタック上の二つの数の減算を行い,結果

をスタックへ置く。

例外

備考

読み方 呼出形式の例 (a b SUB) では,引き数がa,b実行すべき関数がSUBである。STROLICでは,こ

の順で評価が進むことを表している。以下,スタックが使用されているとして説明する。a及びbは,こ

の順に積まれる(つまり,bがTop of Stackになる)。関数SUBが実行されると,a,bがスタック上から

取り除かれ,結果として,数値cがスタック上に積まれる。この関数SUBは,2引き数で一つの出力の関

数である。

入力の型及びに結果の型の指定は,引き数aが任意の数値(I1,I2,I4,R4,R8の一つ)であり,引き

数bも同様である。結果cも数値であり,その型は混合演算の結果として得られる型となる。入力の型,

出力の型の欄には可能な型をコンマ (, ) で区切って並べる。

page

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

16

B 8440-1995

附属書1表1 組込関数

コード

EF00

機能

加算 (add)

呼出形式

結果

a b ADD

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I1,I2,I4,R4,R8

出力

説明

表記

ADD

スタック上の二つの数の加算を行い,結果をスタックへ置く。

c=a+b

例外

備考

コード

EF01

機能

減算 (subtract)

呼出形式

結果

a b SUB

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I1,I2,I4,R4,R8

出力

説明

表記

SUB

スタック上の二つの数の減算を行い,結果をスタックへ置く。

c=a−b

例外

備考

コード

EF02

機能

乗算 (multiply)

呼出形式

結果

a b MUL

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I1,I2,I4,R4,R8

出力

説明

例外

表記

スタック上の二つの数の乗の演算を行い,結果をスタックへ置く。

c=a×b

MUL

page

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

17

B 8440-1995

備考

コード

EF03

機能

除算 (divide)

呼出形式

結果

a b DIV

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :R8

出力

表記

DIV

説明

スタック上の二つの数の除算を行い,結果をスタックへ置く。

c=a÷b

例外

0除算は,エラー検出をする。エラーに対する処理は,処理系定義とする。

備考

コード

EF04

機能

べき乗 (power)

呼出形式

結果

a b PWR

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I1,I2,I4,R4,R8

出力

表記

説明

スタック上の二つの数のべき乗の演算を行い,結果をスタックへ

置く。

c=ab

例外

b<0の場合は,0除算の場合と同じ処理を行う。

備考

コード

EF05

機能

呼出形式

結果

剰余 (modulo)

a b MOD

c

入力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

出力

表記

説明

スタック上の二つの数の剰余を取り,結果をスタックへ置く。

SGN (a) × ( |a|−INT( |a|÷|b| ) ×|b| )

例外

除数bが0の場合は,0除算と同じ処理を行う。

備考

剰余の符号

PWR

MOD

page

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

18

B 8440-1995

コード

EF06

機能

整数除算 (integer divide)

呼出形式

結果

a b IDIV

c

入力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

出力

表記

説明

スタック上の二つの数の整数除算を行い,結果をスタックへ置

く。

SGN (a×b) ( INT ( |a|÷|b| ) )

例外

除数bが0の場合,0除算と同様の処理を行う。

備考

整数除算の符号

コード

EF07

機能

1増加 (increment)

呼出形式

結果

a INC

b

入力

出力

a :I1,I2,I4

b :I1,I2,I4

説明

スタック上の数に1の加算を行い,結果をスタックへ置く。

b=a+1

表記

IDIV

INC

例外

備考

コード

結果bの型は,入力aと同じとする。

正の最大値をINCすると,結果は負の最大値となる。

EF08

表記

DEC

page

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

19

B 8440-1995

機能

1減少 (decrement)

呼出形式

結果

a DEC

b

入力

出力

a :I1,I2,I4

b :I1,I2,I4

説明

スタック上の数から1を引き,結果をスタックへ置く。

b=a−1

例外

備考

コード

結果bの型は入力aと同じとする。

負の最大値をDECすると,結果は正の最大値となる。

EF09

表記

機能

比較・等しい (equal)

呼出形式

結果

a b EQU

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I2 (論理値)

出力

説明

EQU

スタック上の二つの数の比較を行い,結果をスタックへ置く。

a=bのとき c=真

a≠bのとき c=偽

例外

備考

整数の比較の場合,入力の型が一致していないときでも,値が等しければ,結果を真とする。

実数の比較の場合,入力の型が同じでなくてはならない。

型が異なる場合,結果を偽とする。

整数と実数の比較は,結果を偽とする。

コード

EF0A

機能

比較・等しくない (not equal)

呼出形式

結果

a b NEQ

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I2 (論理値)

出力

説明

表記

スタック上の二つの数の比較を行い,結果をスタックへ置く。

a≠bのとき c=真

a=bのとき c=偽

NEQ

page

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

20

B 8440-1995

例外

備考

整数の比較の場合,入力の型が一致していないときでも,値が等しくなければ,結果を真とする。

実数の比較の場合,入力の型が同じでなくてはならない。

型が異なる場合,結果を真とする。

整数と実数の比較は,結果を真とする。

コード

EF0B

機能

比較・小さいか等しい (less than or equal to)

呼出形式

結果

a b LEQ

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I2 (論理値)

出力

説明

表記

LEQ

スタック上の二つの数の比較を行い,結果をスタックへ置く。

a≦bのとき c=真

a>bのとき c=偽

例外

備考

コード

EF0C

機能

比較・大きいか等しい (greater than or equal to)

呼出形式

結果

a b GEQ

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I2 (論理値)

出力

説明

表記

GEQ

スタック上の二つの数の比較を行い,結果をスタックへ置く。

a≧bのとき c=真

a<bのとき c=偽

例外

備考

コード

EF0D

機能

比較・小さい (less than)

呼出形式

結果

a b LT

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I2 (論理値)

出力

表記

LT

page

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

21

B 8440-1995

説明

スタック上の二つの数の比較を行い,結果をスタックへ置く。

a<bのとき c=偽

a≧bのとき c=偽

例外

備考

コード

EF0E

機能

比較・大きい (greater than)

呼出形式

結果

a b GT

c

入力

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

c :I2 (論理値)

出力

説明

表記

GT

スタック上の二つの数の比較を行い,結果をスタックへ置く。

a>bのとき c=真

a≦bのとき c=偽

例外

備考

コード

EF0F

機能

近似比較 (approximately equal)

呼出形式

結果

a b AEQ

c

入力

出力

a :R4,R8

b :R4,R8

c :I2 (論理値)

説明

スタック上の二つの数の近似比較を行い,結果をスタックへ置く。すなわち,もしabs (a−b) <εなら

表記

AEQ

結果は真,そうでなければ偽となる。

|a−b|<εのとき c=真

|a−b|≧εのとき c=偽

例外

備考

近似の許容範囲εの設定には,関数SEPSを用いる。

コード

EF10

機能

1の補数 (complement)

呼出形式

結果

a CPL

b

表記

CPL

page

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

22

B 8440-1995

入力

出力

a :I1,I2,I4

b :I1,I2,I4

説明

スタック上の数のビット反転を行い,結果をスタックへ置く。

例外

備考

コード

EF11

機能

論理積 (bitwise AND)

呼出形式

結果

a b AND

c

入力

出力

b :I1,I2,I4

c :I1,I2,I4

説明

スタック上の二つの数のビットごとの論理積を取り,結果をスタックへ置く。

表記

AND

例外

備考

コード

EF12

機能

論理和 (bitwise OR)

呼出形式

結果

a b OR

c

入力

出力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

説明

スタック上の二つの数のビットごとの論理和を取り,結果をスタックへ置く。

表記

OR

例外

備考

コード

EF13

機能

排他的論理和 (bitwise exclusive-OR)

呼出形式

結果

a b XOR

c

入力

出力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

説明

スタック上の二つの数のビットごとの排他的論理和を取り,結果をスタックへ置く。

表記

XOR

page

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

23

B 8440-1995

例外

備考

コード

EF14

機能

ビットセット (bit set)

呼出形式

結果

a b BSET

c

入力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

出力

説明

表記

BSET

入力aの第bビットを1にして,結果をスタックへ置く。

bの示すビット位置は,aの中に含まれていなくてはならない。

出力cの型は,aの型と同一である。

例外

備考

コード

aがnビットの場合,0≦b<nでなければ,cはaと同じ値をとる。

EF15

表記

BCLR

機能

ビットクリア (bit clear)

呼出形式

結果

a b BCLR

c

入力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

出力

説明

入力aの第bビットを0にして,結果をスタックへ置く。

bの示すビット位置は,aの中に含まれていなくてはならない。

出力cの型は,aの型と同一である。

例外

備考

コード

aがnビットの場合,0≦b<nでなければ,cはaと同じ値をとる。

EF16

表記

BTST

機能

ビットテスト (bit test)

呼出形式

結果

a b BTST

c

入力

a :I1,I2,I4

b :I1,I2,I4

c :I2 (論理値)

出力

説明

入力aの第bビットが1なら1を,0なら0をスタックへ置く。

bの示すビット位置は,aの中になくてはならない。

page

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

24

B 8440-1995

例外

備考

コード

aがnビットの場合,0≦b<nでなければ,cは偽となる。

EF17

表記

機能

左論理シフト (left shift logical)

呼出形式

結果

a b LSH

c

入力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

出力

説明

LSH

入力aをbビットだけ左論理シフトし,結果をスタックへ置く。

bが負の値をもつときは,右論理シフトが行われる。

出力cの型は,aと同じである。

例外

備考

コード

aがnビットの場合,|b|≧nであれば,cは0となる。

EF18

表記

機能

右論理シフト (right shift logical)

呼出形式

結果

a b RSH

c

入力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

出力

説明

RSH

入力aをbビットだけ右論理シフトし,結果をスタックへ置く。

bが負の値をもつときは,左論理シフトが行われる。

cの型は,aと同じである。

例外

備考

コード

aがnビットの場合,|b|≧nであれば,cは0となる。

EF19

表記

機能

左算術シフト (left shift arithmetic)

呼出形式

結果

a b LSHA

c

入力

出力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

説明

入力aをbビットだけ左算術シフトし,結果をスタックへ置く。

LSHA

page

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

25

B 8440-1995

bが負の値をもつときは,右算術シフトが行われる。

cの型は,aと同一となる。

例外

備考

コード

aがnビットの場合,b≧nであれば,左へのシフトならcの符号ビットはaと同じで,符号ビット以

外はすべて0となる。

右へのシフトでは,全ビットがaの符号ビットと同じとなる。

EF1A

表記

RSHA

機能

右算術シフト (right shift arithmetic)

呼出形式

結果

a b RSHA

c

入力

a :I1,I2,I4

b :I1,I2,I4

c :I1,I2,I4

出力

説明

入力aをbビット右算術シフトし,結果をスタックへ置く。

bが負の値をもつときは,左算術シフトが行われる。

cの型は,aと同一となる。

例外

備考

コード

aがnビットの場合,b≧nであれば,左へのシフトならcの符号ビットはaと同じで,符号ビット以

外は,すべて0となる。右へのシフトでは,全ビットがaの符号ビットと同じとなる。

EF1B

表記

NOT

機能

論理否定 (logical NOT)

呼出形式

結果

a NOT

b

入力

出力

a :I1,I2,I4,R4,R8

b :I2 (論理値)

説明

入力aを論理否定し,結果をスタックへ置く。

aが0の値をもつときは,真,0以外のときは,偽となる。

例外

備考

コード

EF1C

機能

文字列の連結 (concatenate)

呼出形式

結果

a b CONC

c

入力

出力

a b :St

c :St

表記

CONC

page

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

26

B 8440-1995

説明

文字列aに文字列bを連結し,結果をスタックに置く。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

EF1D

文字列の長さ (length of the string)

a LNG

b

a :St

b :I1,I2,I4

文字列aの長さを返す。

表記

LNG

出力bをどの型で返すかは,処理系定義とする。すなわち,長さに応じて型を選んでもよいし,すべ

て14型で返してもよい。

EF1E

表記

MID

部分文字列の取出し (middle of the string)

a b c MID

d

a :St

b c :I1,I2,I4,R4,R8

d :St

文字列aのb文字目からc文字分の部分文字列を取り出し,結果をスタックへ置く。

bが1より小さい場合は,文字列aの先頭から取り出す。

cが1より小さい場合は,出力dは空の文字列とする。

b+cがaの長さを超える場合は,b文字目から最後までの文字列とする。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

EF1F

正弦 (sine)

a SIN

b

a :R4,R8

b :R4,R8

aの正弦を計算し,結果をスタックへ置く。

b=sin a

aは,ラジアン (radian) を単位とする。

EF20

余弦 (cosine)

a COS

b

a :R4,R8

b :R4,R8

aの余弦を計算し,結果をスタックへ置く。

b=cos a

aは,ラジアン (radian) を単位とする。

EF21

正接 (tangent)

a TAN

表記

SIN

表記

COS

表記

TAN

page

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

27

B 8440-1995

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

b

a :R4,R8

b :R4,R8

aの正接を計算し,結果をスタックへ置く。

b=tan a

aは,ラジアン (radian) を単位とする。

EF22

逆正接 (arctangent)

a ATAN

b

a :R4,R8

b :R4,R8

aの値の逆正接を計算し,結果をスタックへ置く。

表記

ATAN

EF23

表記

逆正接 (arctangent) (2引き数)

a b ATAN2

c

a :R4,R8(Y座標)

b :R4,R8(X座標)

c :R4,R8

スタック上の値の逆正接を計算し,結果をスタックへ置く。

c=tanー1ba

(b>0のとき)

ATAN2

b=tan−1a(ただし,

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

π

2

<

b

π

2

c=SGN (a) ×π+tan−1ba(b<0のとき)

c=SGN (a) ×2π

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

(b=0のとき)

EF24

表記

自然対数 (natural logarithm)

a LN

b

a :R4,R8

b :R4,R8

スタック上の値の自然対数を計算し,結果をスタックへ置く。

b=log a

a≦0の場合は,0除算の場合と同じ処理をする。

LN

EF25

表記

指数 (exponential)

a EXP

b

a :R4,R8

b :R4,R8

自然対数の底eのa乗を計算し,結果をスタックへ置く。

b=ea

EXP

page

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

28

B 8440-1995

コード

機能

呼出形式

結果

入力

出力

説明

EF26

表記

平方根 (square root)

a SQRT

b

a :R4,R8

b :R4,R8

スタック上の値aの平方根を計算し,結果をスタックへ置く。

b=a

例外

備考

a<0の場合は,0除算の場合と同様の処理をする。

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

EF27

表記

2の補数 (negate)

a NEG

b

a :I1,I2,I4

b :I1,I2,I4

スタック上の値の2の補数を計算し,結果をスタックへ置く。

NEG

EF28

表記

絶対値 (absolute value)

a ABS

b

a :I1,I2,I4,R4,R8

b :I1,I2,I4,R4,R8

スタック上の値の絶対値を計算し,結果をスタックへ置く。

b=|a|

ABS

EF29

表記

符号判定 (sign)

a SGN

b

a :I1,I2,I4,R4,R8

b :I2 (1,0又は−1)

スタック上の値の符号を調べ,結果をスタックへ置く。

aが正のとき b=1

aが0のとき b=0

aが負のとき b=−1

SGN

EF2A

表記

整数化 (convert to integer)

a INT

b

a :I1,I2,I4,R4,R8

b :I1,I2,I4

スタック上の数値を整数化し,結果をスタックへ置く。

結果の型は,必要最小限のものが選ばれる。

INT

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

SQRT

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

整数化とは,その数を超えない最大の整数を求めることである。

オーバフローした場合は,aと同符号のI4の最大値とする。

page

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

29

B 8440-1995

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

EF2B

表記

INT1

1バイト整数化 (convert to 1 byte integer)

a INT1

b

a :I1,I2,I4,R4,R8

b :I1

スタック上の数値を1バイト整数化し,結果をスタックへ置く。

整数化した結果が1バイトに収まらないときは,下位1バイトが取られる。

整数化の処理は,INTと同じである。

EF2C

表記

INT2

2バイト整数化 (convert to 2 byte integer)

a INT2

b

a :I1,I2,I4,R4,R8

b :I2

スタック上の数を2バイト整数化し,結果をスタックへ置く。

整数化した結果が2バイトに収まらないときは,下位2バイトが取られる。

整数化の処理は,INTと同じである。

EF2D

表記

INT4

4バイト整数化 (convert to 4 byte integer)

a INT4

b

a :I1,I2,I4,R4,R8

b :I4

スタック上の数を4バイト整数化し,結果をスタックへ置く。

整数化した結果が4バイトに収まらないときは,下位4バイトが取られる。

整数化の処理は,INTと同じである。

EF2E

表記

実数化 (convert to real)

a REAL

b

a :I1,I2,I4,R4,R8

b :R4,R8

スタック上の数を実数化し,結果をスタックへ置く。

aが整数の場合,bはR4となる。

aがR4,R8の場合は,そのままbとなる。

REAL

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

EF2F

表記

4バイト実数化 (convert to 4 byte real)

a REAL4

b

a :I1,I2,I4,R4,R8

b :R4

スタック上の数を4バイト実数化し,結果をスタックへ置く。

入力がR8の場合,あふれが生じる可能性がある。

EF30

8バイト実数化 (convert to 8 byte real)

表記

REAL4

REAL8

page

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

30

B 8440-1995

呼出形式

結果

入力

出力

説明

例外

備考

a REAL8

b

a :I1,I2,I4,R4,R8

b :R8

スタック上の数を8バイト実数化し,結果をスタックへ置く。

コード

機能

呼出形式

結果

入力

出力

説明

EF31

近似比較パラメタ (ε) の設定 (set epsilon value)

表記

SEPS

表記

EPS

a SEPS

なし

a :R4,R8

近似比較パラメタ (ε) を設定する。

入力aは,絶対値 (|a|) を取ってから設定される。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

EF32

近似比較パラメタ (ε) の読出し (get epsilon value)

EPS

なし

a :R8

近似比較パラメタ (ε) を読み出して,結果をスタックに置く。

EF33

円周率 (get pi value)

PI

a

表記

PI

a :R8

円周率πの値を取り出し,スタックに置く。

EF34

表記

DEGRAD

度・ラジアン変換 (convert from degree to radian)

a DEGRAD

b

a :R4,R8

b :R4,R8

スタック上の度による角度値をラジアンに変換し,結果をスタックへ置く。型は変わらない。

EF35

表記

RADDEG

ラジアン・度変換 (convert from radian to degree)

a RADDEG

b

a :R4,R8

b :R4,R8

スタック上のラジアンによる角度値を度に変換し,結果をスタックへ置く。型は変わらない。

page

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

31

B 8440-1995

備考

コード

機能

呼出形式

結果

入力

出力

説明

EF36

表記

ベクトル長 (vector length)

a VLEN

b

a :Vec

b :R4

スタック上のベクトルの長さを計算し,結果をスタックへ置く。

VLEN

b

ただし,x,y,zは,ベクトルaのx,y,zの各成分とする。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

EF37

表記

ベクトルの和 (vector add)

a b VADD

c

a :Vec

b :Vec

c :Vec

スタック上のベクトルの和を計算し,結果をスタックへ置く。

c=a+b

VADD

EF38

表記

ベクトルの差 (vector subtract)

a b VSUB

c

a :Vec

b :Vec

c :Vec

スタック上のベクトルの差を計算し,結果をスタックへ置く。

c=a−b

VSUB

EF39

表記

ベクトルのスカラ倍 (scalar product of vector)

a b VTIMES

c

a :Vec

b :I1,I2,I4,R4,R8

c :Vec

スタック上のベクトルaの各要素をb倍し,結果をスタックへ置

く。

c=b・a

VTIMES

EF3A

ベクトルの内積 (inner product of vectors)

a b VPRODI

c

a :Vec

VPRODI

表記

page

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

32

B 8440-1995

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

b :Vec

c :R4

スタック上のベクトルの内積を計算し,結果をスタックへ置く。

c=a・b

=axbx+ayby+azbz

ただし,ax,ay,az,bx,by,bzは,ベクトルa,bのx,y,zの各成分を表す。

EF3B

表記

ベクトルの外積 (outer product of vectors, vector product)

a b VPRODO

c

a :Vec

b :Vec

c :Vec

スタック上のベクトルの外積を計算し,結果をスタックへ置く。

c =a×b

cx=aybz−azby

cy=azbx−axbz

cz=axby−aybx

ただし,ax,ay,az,bx,by,bzは,ベクトルa,bのx,y,zの各

成分を表す。

VPRODO

EF3C

表記

同次変換の積 (product of two transformation matrices)

a b TPROD

c

a :Trn(同次変換行列A)

b :Trn(同次変換行列B)

c :Trn(同次変換行列C)

スタック上の二つの変換行列の積を計算し,結果をスタックへ置

く。

C=A×B

TPROD

EF3D

表記

TINV

同次変換の逆変換 (inverse of atransformation matrix)

a TINV

b

a :Trn(同次変換行列A)

b :Trn(同次変換行列B)

スタック上の変換行列の逆行列を計算し,結果をスタックへ置く。

B=A−1

逆行列が求まらない場合,エラーを出して,停止することを推奨する。

数学的には同次変換行列には逆行列は必ず存在するが,行列Aが同次変換行列になっていない,又は

計算上の誤差によって,逆行列が求められないことがある。停止以外の処理としては,次のものが考

えられる。

① 警告をだす(続行可能)

② 疑似逆行列で代用する

EF3E

表記

TPRODV

同次変換とベクトルの積 (product of a transformation matrix and a vector)

page

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

33

B 8440-1995

呼出形式

結果

入力

出力

説明

a b TPRODV

c

a :Trn(行列A)

b :Vec(ベクトルb)

c :Vec(ベクトルc)

スタック上の同次変換行列とベクトルの積を計算し,結果をスタックへ置く。

c=A・b

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

EF3F

表記

TRN

ポーズから同次変換への変換 (conversion from pose to transformation matrix)

a TRN

b

a :Pm

b :Trn

ポーズaから,同次変換の情報を取り出し,結果をスタックへ置く。

EF40

表記

PNT

同次変換からポーズへの変換 (conversion from transformation matrix to pose)

a PNT

b

a :Trn(行列A)

b :Pm

同次変換行列Aのデータをもとに,ポーズデータbを作る。

ポーズデータを決定するために必要なその他の情報は,現在の状態のコンフィギュレーション情報を

用いる。

コンフィギュレーション情報については,config関連関数を参照のこと。

EF41

表記

LOC

ポーズの位置成分取出し (get location from pose data)

a LOC

b

a :Pm

b :Vec

ロボット座標系におけるポーズの位置(x,y,z成分)を,ベクトルの形で取り出す。

EF42

表記

DEV

ポーズの並進変換 (deviation)

a b DEV

c

a :Pm

b :Vec

c :Pm

ポーズaに,ロボット座標系における並進偏差bを施して得られるポーズをつくり,結果をスタック

へ置く。

例外

備考

ベクトルbは,ポーズデータに対し,x,y,z成分の偏差を指定する。

コード

機能

呼出形式

EF43

表記

ツール座標によるポーズの並進変換 (deviation in tool coordinate)

a b DEVH

DEVH

page

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

34

B 8440-1995

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

c

a :Tm

b :Vec

c :Tm

ポーズaに,ツール(ハンド)座標系による並進偏差bを施して得られるポーズをつくり,結果をス

タックへ置く。

ツール座標系は,現在組み付けられているハンドのものを用いる。

ベクトルbは,ポーズデータに対し,x,y,z成分の偏差を指定する。

EF44

表記

PADD

ポーズの加算 (pose add)

a b PADD

c

a :Pm 被加数

b :Pm 加数

a :Pm ポーズの和

二つのポーズの和のポーズを作る。結果のポーズは処理系依存とするが,以下の条件を満たさなくて

はならない。

P1,P2,P3をポーズ,ただしP1は現在ポーズ,P3=P2+P1とする。

このとき,次の二つのMOVE関数は,位置,姿勢を含めて同じ結果となる。

P2 ILMOVE

P3 ALMOVE

PSUB,ALMOVE,ILMOVE参照

EF45

表記

PSUB

ポーズの減算 (pose subtract)

a b PSUB

c

a :Pm 被減数

b :Pm 減数

a :Pm ポーズの差

二つのポーズの差のポーズを作る。結果のポーズは処理系依存とするが,以下の条件を満たさなくて

はならない。

P1,P2,P3をポーズ,ただしP1は現在ポーズ,P3=P2−P1とする。

このとき,次の二つのMOVE関数は,位置,姿勢を含めて同じ結果となる。

P2 ALMOVE

P3 ILMOVE

PADD,ALMOVE,ILMOVE参照

EF46

表記

CONSP

ポーズデータの構成 (construction of a pose)

a1 … an n CONSP

b

a1,…,an :任意の型 要素データ

n

:I1,I2,I4 要素データ数

b

:Pm

スタック上の要素データa1,…,anを使ってポーズデータbを作り,結果をスタックへ置く。

要素データの数,型及び順序は,処理系定義であるポーズデータの構造に従う。

EF47

ポーズデータの分解 (destruction of a pose)

表記

DESTP

page

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

35

B 8440-1995

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

a DESTP

b1 … bn n

a

:Pm

b1,…,bn :任意の型 要素データ

n

:I2

スタック上のポーズデータaを要素データb1,…,bnに分解し,結果をスタックへ置く。

スタックトップには要素数nが置かれる。

要素データの数,型及び順序は,処理系定義であるポーズデータの構造に従う。

EF48

表記

ベクトルの構成 (construction of a vector)

a b c CONSV

d

a,b,c :I1,I2,I4,R4,R8 ベクトルの要素

d

:Vec

スタック上の三つの数値から,aをx成分,bをy成分,cをz成

分とするベクトルデータdをつくり,結果をスタックへ置く。

CONSV

ベクトルの要素を整数型データで与えてもよい。この場合には,

実数に変換して処理する。

EF49

表記

DESTV

ベクトルの分解 (destruction of a vector)

a DESTV

b c d

a

:Vec

b,c,d :R4ベクトルの各成分

ベクトルデータaを,x成分b,y成分c,z成分dの各成分に分解し,結果をスタックへ置く。

EF4A

表記

CONSA

配列の構成 (construction of an array)

a1 … an n #t CONSA

b

a1,…,an :任意の型 要素型のデータ

n

:I1,I2,I4 要素の数

t

:タグ 要素型を示すタグ

b

:Ar

スタック上の要素データa1,…,anを使って配列データbを作り,結果をスタックへ置く。

要素数nは,スタック上にある要素データの数を示す。

タグtは,配列要素の型を示す。各々の配列要素は,指定された要素型に合わせて必要に応じて変換

される。

a1,…,anのいずれかが,tで指定された要素型に変換できない。

EF4B

配列の分解 (destruction of an array)

a DESTA

b1 … bn n

a

:Ar

b1,…,bn :配列要素の型 要素データ

n

:I1,I2,I4 要素数

配列aを要素に分解し,結果をスタックへ置く。

表記

DESTA

page

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

36

B 8440-1995

要素は,添え字の小さいものから順にプッシュする。

最後に(スタックトップに)要素数をプッシュする。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

EF4C

表記

CONSU

利用者コードの構成 (construction of a user code)

a CONSU

#b

a :I1,I2,I4,R4,R8 コード値

b :U

利用者コード

スタック上の数値データaと同じコード値をもつ利用者コードに評価抑制タグを付けて,結果をスタ

ックへ置く。

aが,許される利用者コード番号の範囲にない場合。

EF4D

表記

DESTU

利用者コードの分解 (destruction of a user code)

#a DESTU

b

利用者コード

a :U

b :I2,I4 コード値

評価抑制タグ付き利用者コードaを整数データに変換し,結果をスタックへ置く。

EF4E

表記

スタックトップのコピー (duplicate)

a DUP

a a

a :任意の型のデータ

a :任意の型のデータ(入力と同じ)

スタックの一番上にあるデータを複写して,スタックに置く。

スタックが空の場合,スタックアンダフローエラーとなる。

DUP

EF4F

スタックトップの切り落とし (drop)

a DROP

なし

a :任意の型のデータ

表記

DROP

EF50

表記

スタックトップの入替え (exchange)

a b EXCH

c d

a :任意の型のデータ

b :任意の型のデータ

c :任意の型のデータ(cはbと同じ)

d :任意の型のデータ(dはaと同じ)

スタックの上から二つのデータa,bの順序を入れ替える。

EXCH

スタックの一番上にあるデータを一つ取り去る。

スタックが空の場合は,何もしない。

page

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

37

B 8440-1995

スタックには,二つ以上のデータがなくてはならない。

一つ以下のときは,何もしない。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

EF51

表記

PUSH

データのプッシュ (push)

#a PUSH

b

a :U

b :任意の型のデータ

利用者コードaに代入されているデータ値bを,スタックへ置く。

利用者コードaが定義されていない,又は値が定義されていない。

EF52

データのポップアップ (pop)

a #b POP

なし

a :任意の型のデータ

b :U

表記

POP

データaを利用者コードbへ格納する。

関数STOREを用いて次のように書いても同じである。

#b a STORE

EF53

表記

代入 (store)

#a b STORE

なし

a :U

b :任意の型のデータ

STORE

利用者コードaへ値bを代入する。

関数POPを用いて次のように書いても同じである。

b #a POP

EF54

表記

EXTB

バイト抽出 (extract bytes)

#a b #c EXT

d

a :U

b :I1,I2,I4

c :データタグT

d :c型の値

利用者コードaのデータのbバイト目から,cで決まる数のデータを取り出し,タグcをつけて,c型

のデータとしてスタックに置く。

取り出すデータは,利用者コードaに割り付けられた領域内に納まっていなくてはならない。

次のいずれかの場合,プログラム停止エラーとなる。

・ 利用者コードaに,領域が割り付けられていないとき。

・ b<0のとき。

・ 取り出すデータの最終位置が,aに割り付けられた領域を超えているとき。

EF55

表記

EMBB

page

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

38

B 8440-1995

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

バイト埋込み (embed bytes)

#a b c EMB

なし

a :U

b :I1,I2,I4

c :任意の型のデータ

利用者コードaのbバイト目から,cのタグを除いた部分のデータを埋め込む。

データ位置は,利用者コードaに割り付けられた領域内に納まらなくてはならない。

次のいずれかの場合,プログラム停止エラーとなる。

・ 利用者コードaに,領域が割り付けられていないとき。

・ b<0のとき。

・ 書き込むデータの最終位置が,aに割り付けられた領域を超えているとき。

EF56

表記

EXTE

要素抽出 (extract element)

#a b EXTE

c

a :U 利用者コード

b :I1,I2,I4 要素の位置

c :I1,R4など 抽出された値

利用者コードaのデータのb番目の要素を取り出し,スタックに置く。

利用者コードは,ここでは,配列,文字列,ベクトル,同次変換のいずれかでなくてはならない。

bは,要素の位置を表し,最初の要素は,0番目と数える。

配列の場合は,結果は配列要素の型と同じ型となる。

文字列の場合は,bバイト目の1バイトが1バイト整数として得られる。

ベクトル及び同次変換では,結果はR4型となる。

次のいずれかの場合,プログラム停止エラーとなる。

・ 利用者コードが,配列,文字列,ベクトル,同次変換以外のとき。

・ 利用者コードaに代入されていないとき。

・ b<0のとき。

・ 取り出すデータがaに割り付けられた領域を超えているとき。

EF57

要素埋込み (embed element)

#a b c EMBE

なし

a :U

利用者コード

b :I1,I2,I4

要素の位置

c :I1,R4など

埋め込むデータ

表記

EMBE

利用者コードaに代入されているデータのb番目の位置に,cのタグを除いた部分のデータを埋め込

む。

データ位置は,利用者コードaに割り付けられた領域内に納まらなくてはならない。利用者コードは,

ここでは,配列,文字列,ベクトル,同次変換のいずれかでなくてはならない。

bは要素の位置を表し,最初の要素は0番目と数える。

配列の場合は,cは配列要素の型と同じ型でなければならない。

文字列の場合は,cは1バイトに丸められ,bバイト目の1バイトに埋め込まれる。ただし,cは数値

データでなくてはならない。

ベクトル及び同次変換の場合は,R4型に変換されて埋め込まれる。ただし,cは数値データでなくて

はならない。

page

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

39

B 8440-1995

例外

次のいずれかの場合,プログラム停止エラーとなる。

・ 利用者コードが,配列,文字列,ベクトル,同次変換以外のとき。

・ 利用者コードaに代入されていないとき。

・ 利用者コードの要素の型とcの型が対応しないとき。

・ b<0のとき。

・ 書き込むデータがaに割り付けられた領域を超えているとき。

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

EF58

相対分岐 (branch, goto)

a BRA

なし

a :I1,I2,I4

表記

BRA

関数内で次に実行する命令の位置を,現在の位置からaバイトだけ相対移動する。a=0ならBRAの

直後の命令へ移動する。

この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。

関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。

移動先が同じ関数内でないとき,プログラム停止となる。

EF59

偽条件相対分岐 (branch if false)

a b BRF

なし

a :I1,I2,I4

b :I1,I2,I4

表記

BRF

aの値が0のとき(偽のとき),関数内で次に実行する命令の位置を,現在の位置からbバイトだけ相

対移動する。

b=0ならBRFの直後の命令へ移動する。

この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。

関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。

移動先が同じ関数内でないとき,プログラム停止となる。

EF5A

真条件相対分岐 (branch if true)

a b BRT

なし

a :I1,I2,I4

b :I1,I2,I4

表記

BRT

aの値が1のとき(真のとき),関数内で次に実行する命令の位置を,現在の位置からbバイトだけ相

対移動する。

b=0ならBRTの直後の命令へ移動する。

この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。

関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。

移動先が同じ関数内でないとき,プログラム停止となる。

備考

コード

機能

呼出形式

結果

入力

EF5B

復帰 (return)

RET

なし

表記

RET

page

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

40

B 8440-1995

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

関数の実行を終了し,呼び出した側に戻る。

対応する戻り先が定義されていないRETの実行は,プログラム停止エラーとなる。

EF5C

関数宣言の終わり (end of function)

END

なし

表記

END

関数の宣言における関数の本体のコードの並びの終わりを示す。

EF5D

入れ子構造の設定 (nest in)

a NESTIN

なし

a :I1,I2,I4入れ子レベル(非負)

表記

NESTIN

現在の入れ子レベルを保存し,入れ子レベルaの局所変数空間を設定する。

一番外側の空間は,レベル0とする。

利用者変数は,指定されている局所変数空間に置かれる。

レベルnで宣言された利用者変数uが,すでにレベルmでも宣言されていたとき,レベルmの利用者

変数uは,レベルnでは直接には参照されない。

入れ子レベルは,順番に大きくなるよう指定することが望ましい。

EF5E

表記

NESTOUT

入れ子構造からの復帰 (nest out)

NESTOUT

なし

現在の入れ子レベルnの局所変数空間を開放し,保存してある入れ子レベルを回復する。

EF5F

表記

NPUSH

外側の入れ子レベルのデータのプッシュ (nested data push)

#a b NPUSH

c

a :U

b :I1,I2,I4 入れ子レベル

c :任意の型のデータ

入れ子レベルbで定義された利用者コードaが保持しているデータ値cを,スタックへ置く。

入れ子レベルbが定義されていないとき。

利用者コードaが入れ子レベルbで定義されていないか,又は値が定義されていないとき。

入れ子レベルbは,NESTINで定義する。

EF60

表記

外側の入れ子レベルのデータのポップアップ (nested data pop)

a #b c NPOP

なし

a :任意の型のデータ

b :U

NPOP

page

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

41

B 8440-1995

c :I1,I2,I4 入れ子レベル

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

データaを入れ子レベルcで定義された利用者コードbへ格納する。

入れ子レベルbが定義されていないとき。

入れ子レベルbは,NESTINで定義する。

EF61

表記

DCL

変数宣言 [declaration of variable(s)]

VAR #u1 #u2 … #un DCL

なし

VAR

:VAR関数コード

U1,…,Un :利用者コード

利用者コードu1,…,unを変数表に登録する。

利用者コードui (i=1,…,n) が変数表に既に登録されているとき,重複して登録されるが,新しい

登録が有効となる。

EF62

変数の解放 (free)

VAR #u1 #u2 … #un FREE

なし

VAR

:VAR関数コード

u1,…,un :利用者コード

表記

FREE

利用者コードu1,…,unを変数表から削除する。

変数表に同一利用者コードui (i=1,…,n) が複数定義されているときは,最近定義されたUiを無効

とし,古い定義を有効とする。

存在しない利用者コードUiを指定しても何も起こらない。

EF63

DCL,FREEの始まり (variable)

VAR

VAR

表記

VAR

関数のコードVARそのものを,スタック上に置く。

変数の宣言 (DCL),及び解放 (FREE) をする関数における利用者コードの並びの始まりを示す。

EF64

関数定義の始まり (function definition)

#a FDEF

なし

a :U (利用者コード)

表記

FDEF

関数を利用者コードaに設定する。関数定義全体としては,

#a FDEF b

のようになり,関数コードFDEFに続く関数型データb(関数タグFnから始まりENDまでのデータ)

を,スタックを経由せずに直接利用者コードに設定する。

page

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

42

B 8440-1995

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

関数STOREを用いて,

#a b STORE

としても効果は同様である。ただしこの場合は,データはスタックを経由する。

EF65

表記

BAL

サブルーチンの呼出し (branch and link, call)

a BAL

なし

a :I1,I2,I4

現在の位置(BALコードの直後)をリターンスタックに積み,そこからaバイトだけ相対移動する。

この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。

関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。

移動先が同じ関数内でないとき,プログラム停止となる。

RET関数で復帰できる。

別の関数へ飛ぶことは,許されない。

EF66

表記

GRET

関数実行の強制終了 (grand return)

GRET

なし

関数呼出しの状態を保持するリターンスタックをすべてクリアし,入力ストリームからの入力待ちと

なる。

この命令は,関数内でだけ有効である。

関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。

リターンスタックをクリアするので,関数の実行に戻ることはできない。

EF67

表記

ALLOC

領域の割付け (allocate)

a #b #c ALLOC

d

a :I1,I2,I4,R4,R8

b :タグ

c :U (利用者コード)

d :I1,I2,I4

d>0のとき,確保した領域の大きさ

d<0のとき,確保に不足する量

aの値にタグの長さを加えたバイト数の領域を確保し,利用者コードCに割り付ける。

確保した領域には,タグbが書き込まれる。

a=0を指定したしたときは,確保可能な最大量が得られる。このとき確保は行わない。

指定した大きさの領域が確保できないときは,不足する量が負の値で返される。この場合も領域の確

保は行わない。

通常,代入では,必要に応じて領域が自動的に確保される。

この命令は,主に,配列の領域をあらかじめ確保したいときに用いる。

EF68

表記

ALLOCZ

領域の割付け (allocate and zero clear)

a #b ALLOCZ

d

a :I1,I2,I4,R4,R8

b :タグ

c :U (利用者コード)

d :I1,I2,I4

page

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

43

B 8440-1995

説明

d>0のとき,確保した領域の大きさ

d<0のとき,確保に不足する量

関数ALLOCと同様に,領域を確保する。

さらに,確保した領域を,Nullコードで初期化する。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

EF69

領域のクリア (area clear)

#a ACLR

なし

a :U (利用者コード)

表記

ACLR

利用者コードaに割り付けられた領域を,Nullコードで初期化する。

領域が割り付けられていない場合は,何もしない。

EF6A

領域の解放 (area release)

#a ARELS

なし

a :U (利用者コード)

表記

ARELS

EF6B

表記

領域のサイズを得る (area size)

#a ASIZE

b

a :U (利用者コード)

b :I2,I4

利用者コードaに割り付けられた領域のサイズを得る。

領域が割り付けられていない場合は,−1(I2型)を返す。

ASIZE

EF6C

STROLICのバージョンIDを得る (version ID)

VERID

a

VERID

利用者コードaに割り付けられた領域を解放する。

領域が割り付けられていない場合は,何もしない。

表記

a :St

STROLIC規格のバージョンを識別できるコードを文字列で取り出す。ただし,その文字列の先頭部分

は,次に示す文字列でなくてはならない。

STROLIC JIS B 8440-1994

EF6D

処理系のIDを得る (system ID)

SYSID

a

表記

SYSID

page

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

44

B 8440-1995

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

a :St

処理系を識別できるコードを,文字列で取り出す。

取り出される文字列の内容は処理系定義であるが,処理系の名前,バージョン,提供機関,リリース

時期を入れることを推奨する。

EF6E

表記

INIT

中間コードインタプリタの初期化 (initialize)

INIT

なし

中間コードのインタプリタを初期化する。すなわち,インタプリタの内部状態をリセットするととも

に,データ領域の初期化を行う。

EF6F

トレースの開始 (trace on)

TRON

なし

表記

TRON

表記

TROFF

表記

TRACE

トレースフラグをオンにする。

関数TRACEを参照。

EF70

トレースの終了 (trace off)

TROFF

なし

トレースフラグをオフにする。

関数TRACEを参照。

EF71

トレース (trace)

a TRACE

なし

a :任意の型

トレースフラグがオンならaをコンソールに出力する。

オフなら何も出力しない。

いずれの場合も,aはスタックから取り除かれる。

コンソール出力の形式は,処理系定義とする。

aとして行番号,文番号,ラベルなどを用いると実行のトレース

が,変数の値を用いれば代入のトレースが行える。

EF72

同期 (synchronize)

SYNC

なし

表記

SYNC

page

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

45

B 8440-1995

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

コントローラと上位計算機との間の同期を行う。

このコードを実行すると,応答(ACK又はNAK)を上位計算機に送る。

スタックの状態は,変わらない。

EF73

肯定的応答 (acknowledge)

なし

なし

表記

ACK

同期 (SYNC) に対する肯定的応答コード。

このコードは実行されることはなく,単にSTROLICの表現形式で上位計算機に応答するだけである。

ACKとNAKの使い分けについては処理系定義とするが,コントローラが正常状態にあるときは,

ACK,そうでないときは,NAKを応答するという使い方が考えられる。

EF74

表記

NAK

否定的応答 (negative acknowledge)

なし

なし

同期 (SYNC) に対する否定的応答コード。

このコードは実行されることはなく,単にSTROLICの表現形式で上位計算機に応答するだけである。

ACKとNAKの使い分けについては処理系定義とするが,コント

ローラが正常状態にあるときは,ACK,そうでないときは,NAK

を応答するという使い方が考えられる。

EF75

表記

結果要求 (result)

a RESULT

なし

a :I1,I2,I4,R4,R8,Ar,St,Rd,Fn,Vec,Trn,Pm

RESULT

上位計算機にaの値を送る。

上位計算機からコントローラ内の情報を取り出したいときに使用する。

EF76

表記

FXQT

関数の起動 (execution of function)

#a b FXQT

c

a :Fn

b :I1,I2,I4,R4,R8 プロセス番号

c :I2

STROLIC関数aをプロセス番号bで起動する。

プロセス番号は,正の整数とする。

出力cは,正常に起動されたとき0,起動に失敗したとき次のエラー番号とする。

aが関数でないとき −1

システムの制約により起動できないとき −2

並行処理機能の一つである。

EF77

タスクの起動 (execution of task)

表記

TXQT

page

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

46

B 8440-1995

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

a TXQT

b

a :I1,I2,I4,R4,R8 タスク番号

b :I2

タスク番号aで識別されるタスクを起動する。

タスク番号は,正の整数とする。

出力bは,正常に起動されたとき0,起動に失敗したとき次のエラー番号とする。

aがすでに起動されているとき −1

システムの制約により起動できないとき −2

並行処理機能の一つである。

タスクについては,使用するマルチタスクOSに依存する。

EF78

表記

FPREDC

関数の実行優先度 (function precedence)

a b FPRECD

c

a :I1,I2,I4,R4,R8 プロセス番号

b :I1,I2,I4,R4,R8 優先度

c :I2

プロセス番号aで識別されるSTROLIC関数の実行優先度を指定する。優先度bは,正の整数で値が

小さいほど優先度が高い。

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

実行終了のとき 0

実行中のとき 1

待ち状態のとき 2

並行処理機能の一つである。

プロセス番号については,関数FXQTを参照。

優先度のデフォルト値は,処理系による。

EF79

表記

TPRECD

タスクの実行優先度 (task precedence)

a b TPRECD

c

a :I1,I2,I4,R4,R8 タスク番号

b :I1,I2,I4,R4,R8 優先度

c :I2

タスク番号aで識別されるタスクの実行優先度を指定する。優先度bは,正の整数で値が小さいほど

優先度が高い。

結果cの値は,次のとおりとする。

実行終了のとき 0

実行中のとき 1

待ち状態のとき 2

並行処理機能の一つである。

タスク番号については,関数TXQTを参照。

優先度のデフォルト値は,処理系による。

EF7A

関数の周期起動指定 (function cycle)

a b FCYCLE

c

a :I1,I2,I4,R4,R8 プロセス番号

b :I1,I2,I4,R4,R8 周期起動定数

表記

FCYCLE

page

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

47

B 8440-1995

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

c :I2

プロセス番号aで識別されるSTROLIC関数の周期起動を指定する。周期起動定数bは,正の整数で0

なら周期起動しない。非0で周期起動の間隔を指定する。

結果cの値は,次のとおりとする。

実行終了のとき 0

実行中のとき 1

待ち状態のとき 2

並行処理機能の一つである。

プロセス番号については,関数FXQTを参照。

周期起動定数の単位は,処理系定義であるがmsecとすることを推奨する。

EF7B

表記

TCYCLE

タスクの周期起動指定 (task cycle)

a b TCYCLE

c

a :I1,I2,I4,R4,R8 タスク番号

b :I1,I2,I4,R4,R8 周期起動定数

c :I2

タスク番号aで識別されるタスクの周期起動定数を指定する。周期起動定数bは,正の整数で0なら

周期起動しない。非0で周期起動の間隔を指定する。

結果cの値は,次のとおりとする。

実行終了のとき 0

実行中のとき 1

待ち状態のとき 2

並行処理機能の一つである。

タスク番号については,関数TXQTを参照。

周期起動定数の単位は,処理系定義であるがmsecとすることを推奨する。

EF7C

表記

FDONE

関数の終了判定 (function done)

a FDONE

b

a :I1,I2,I4,R4,R8 プロセス番号

b :I2

プロセス番号aで識別されるSTROLIC関数の実行終了を判定する。

bの値は,次のとおりとする。

実行終了のとき 0

実行中のとき 1

待ち状態のとき 2

中断状態のとき 3

並行処理機能の一つである。

プロセス番号については,関数FXQTを参照。

EF7D

表記

タスクの終了判定 (task done)

a TDONE

b

a :I1,I2,I4,R4,R8 タスク番号

b :I2

タスク番号aで識別されるタスクの実行終了を判定する。

bの値は,次のとおりとする。

実行終了のとき 0

TDONE

page

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

48

B 8440-1995

実行中のとき 1

待ち状態のとき 2

中断状態のとき 3

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

並行処理機能の一つである。

関数TXQTを参照。

EF7E

表記

FKILL

関数の強制終了 (kill function)

a FKILL

b

a :I1,I2,I4,R4,R8 プロセス番号

b :I2

プロセス番号aで識別されるSTROLIC関数の実行を強制終了する。

bの値は,次のとおりとする。

強制終了できたとき

0

プロセスaが実行中でないとき 1

並行処理機能の1つである。

プロセス番号については,関数FXQTを参照。

EF7F

表記

タスクの強制終了 (kill task)

a TKILL

b

a :I1,I2,I4,R4,R8 タスク番号

b :I2

タスク番号aで識別されるタスクの実行を強制終了する。

bの値は,次のとおりとする。

強制終了できたとき

0

タスクaが実行中でないとき 1

TKILL

並行処理機能の一つである。

関数TXQTを参照。

EF80

表記

FSUSPEND

関数の強制中断 (suspend function)

a FSUSPEND

b

a :I1,I2,I4,R4,R8 プロセス番号

b :I2

プロセス番号aで識別されるSTROLIC関数の実行を強制中断する。

bの値は,次のとおりとする。

強制中断できたとき

0

プロセスaが実行中でないとき 1

並行処理機能の一つである。

プロセス番号については,関数FXQTを参照。

EF81

表記

タスクの強制中断 (suspend task)

a TSUSPEND

b

a :I1,I2,I4,R4,R8 タスク番号

b :I2

タスク番号aで識別されるタスクの実行を強制中断する。

TSUSPEND

page

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

49

B 8440-1995

bの値は,次のとおりとする。

強制中断できたとき

0

タスクaが実行中でないとき 1

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

並行処理機能の一つである。

関数TXQTを参照。

EF82

表記

FRESUME

関数の強制再開 (resume function)

a FRESUME

b

a :I1,I2,I4,R4,R8 プロセス番号

b :I2

プロセス番号aで識別されるSTROLIC関数の実行を強制再開する。

bの値は,次のとおりとする。

強制再開できたとき

0

プロセスaが中断中でないとき 1

並行処理機能の一つである。

プロセス番号については,関数FXQTを参照。

EF83

表記

タスクの強制再開 (resume task)

a TRESUME

b

a :I1,I2,I4,R4,R8 タスク番号

b :I2

タスク番号aで識別されるタスクの実行を強制再開する。

bの値は,次のとおりとする。

強制再開できたとき

0

タスクaが中断中でないとき 1

並行処理機能の一つである。

関数TXQTを参照。

EF84

競合資源のロック (reseource lock)

a LOCK

なし

a :I1,I2,I4,R4,R8 事象フラグ番号

表記

TRESUME

LOCK

競合資源の排他制御のために,番号aで指定された事象フラグをオンにする。

フラグがすでにオンになっている場合,オフになるまで待つ。

並行処理機能の一つである。

EF85

表記

UNLOCK

競合資源のロック解除 (reseource unlock)

a UNLOCK

b

a :I1,I2,I4,R4,R8 事象フラグ番号

b :I2

競合資源の開放のために,番号aで指定された事象フラグをオフにする。

結果bは,0となる。

フラグがすでにオフになっている場合,bは1とする。

page

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

50

B 8440-1995

備考

並行処理機能の一つである。

コード

機能

呼出形式

結果

入力

出力

説明

EF86

事象の待合わせ (event wait)

a EWAIT

なし

a :I1,I2,I4,R4,R8 事象フラグ番号

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

表記

EWAIT

番号aで指定した事象フラグがオンになるまで,すなわち事象が発生するまで待つ。待ちが解かれる

とき,事象フラッグはオフになる。同じ事象フラッグで待っているタスク又はプロセスの中で待ちが

解かれるものはただ一つである。

並行処理機能の一つである。

EF87

表記

複数事象の待合わせ(AND条件) [multi event wait (and)]

a1 a2 … an n EWAITA

なし

a1 :I1,I2,I4,R4,R8 事象フラグ番号

n :I1,I2,I4,R4,R8 事象の個数

EWAITA

指定した複数事象のすべてが発生するまで待つ。待ちが解かれるとき,指定されたすべての事象フラ

ッグはオフとなる。同じ事象フラッグで待っているタスク又はプロセスの中で待ちが解かれるものは

ただ一つである。

並行処理機能の一つである。

事象の待合わせEWAITを参照。

EF88

表記

複数事象の待合わせ(OR条件) [multi event wait (or)]

a1 a2 … an n EWAITO

なし

a1 :I1,I2,I4,R4,R8 事象フラグ番号

n :I1,I2,I4,R4,R8 事象の個数

EWAITO

事象バッファをクリアし,指定した複数事象のいずれかが発生するまで待つ。いずれかの事象が発生

すると待ちが解かれる。このとき発生したすべての事象フラッグは,その事象フラッグ番号が事象バ

ッファに格納され,同時にオフとなる。発生した事象フラッグと同じ事象フラッグで待っているタス

ク又はプロセスの中で待ちが解かれるものはただ一つである。

並行処理機能の一つである。

事象の待合わせの関数EWAITを参照。

事象バッファからの取出しは,関数EPOPを参照。

EF89

事象の取出し (pop up event)

EPOP

a

表記

EPOP

a :I2 事象フラグ番号

事象バッファから事象を取り出す。

結果は,事象フラグ番号であり,事象の存在しないときは,0となる。

並行処理機能の一つである。

関数EWAITOを参照。

事象バッファから取り出される順序は,処理系に依存する。

page

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

51

B 8440-1995

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

EF8A

事象の発生 (signal evevt)

a ESIG

なし

a :I1,I2,I4,R4,R8 事象フラグ番号

表記

ESIG

番号aで指定した事象フラグをオンにして事象を発生させる。

並行処理機能の一つである。

EF8B

事象のクリア (clear event)

a1 a2 … an n ECLR

なし

a1 :I1,I2,I4,R4,R8 事象フラグ番号

n :I1,I2,I4,R4,R8 事象の個数

表記

ECLR

指定した事象フラグをクリアする。

n=0のとき,全部のフラグをクリアする。

並行処理機能の一つである。

EF8C

表記

CHIN

チャネルからのデータ入力 (channel in)

a CHIN

b

a :I1,I2,I4,R4,R8 チャネル番号

b :任意の型 入力データ

チャネル番号aで識別されるチャネルからデータを入力する。チャネル番号には事象フラッグが用い

られる。事象フラッグがオンになるのを待ってデータを取り込む。データが取り込まれると事象フラ

ッグはオフとなる。

並行処理機能の一つである。

事象フラグを介して同期が取られた送り手と受け手とのデータ交換路をチャネルと呼び,データの送

り手は同じチャネルに対しCHOUTを実行する。

EF8D

表記

CHOUT

チャネルへのデータ出力 (channel out)

a b CHOUT

なし

a :I1,I2,I4,R4,R8 チャネル番号

b :任意の型

出力データ

チャネル番号aで識別されるチャネルへデータbを出力する。チャネル番号には事象フラッグが用い

られる。

事象フラッグがオフになるのを待ってデータを送る。データを送りだすと事象フラッグはオンとなる。

並行処理機能の一つである。

事象フラグを介して同期が取られた送り手と受け手とのデータ交換路をチャネルと呼び,データの受

け手は同じチャネルに対しCHINを実行する。

EF8E

共有変数の宣言 (share variable)

#a b SHARE

なし

a :任意の型

共有する変数

表記

SHARE

page

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

52

B 8440-1995

b :I1,I2,I4

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

共有変数番号

変数aを,共有変数番号bをもつ共有変数として宣言する。

並行処理機能の一つで,他のタスクと変数を共有する機能である。

共有変数のための番号の扱いは,マルチタスクOS及び処理系に依存する。

EE00

時刻 (get time)

TIME

a

表記

TIME

a :St

時刻を文字列表現でスタックへ置く。

表現は処理系定義とするが,HH : MM : SS(24時間表記)を推奨する。

この場合,HHは時間で00〜23,MMは分で00〜59,SSは秒で00〜59の値を取る。

EE01

日付 (get date)

DATE

a

表記

DATE

a :St

日付を文字列表現でスタックへ置く。

表現は処理系定義とするが,YYYY/MM/DDを推奨する。この場合,YYYYは年で1900〜2100,MM

は月で01〜12,DDは日でり01〜31の値を取る。

EE02

内部時計 (get clock)

CLOCK

a

表記

CLOCK

a :I4

内部時計の現在の値を取り出して,スタックへ置く。

単位は処理系定義とするが,msecを用いることを推奨する。

内部時計は,停止しない。

内部時計の最大値は,処理系に依存する。

EE03

時刻の設定 (set time)

a STIME

なし

a :St

表記

STIME

時刻を設定する。

文字列が時刻表現に合致しないとき,警告をコンソールに出して,時刻設定は行わない。

EE04

日付の設定 (set date)

a SDATE

なし

表記

SDATE

page

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

53

B 8440-1995

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

a :St

日付を設定する。

文字列が日付表現に合致しないとき,警告をコンソールに出して,日付設定は行わない。

EE05

内部時計のクリア (clear clock)

CLRCLK

なし

表記

CLRCLK

内部時計の値を0に設定する。

内部時計は,停止しない。

EE06

表記

PACKTM

時刻要素データのまとめ (pack time)

a b c PACKTM

d

a :I1,I2,I4,R4,R8 時

b :I1,I2,I4,R4,R8 分

c :I1,I2,I4,R4,R8 秒

d :St

時刻表現文字列

時a,分b,秒cを時刻表現文字列dにまとめる。

a,b,cが実数型の場合には,あらかじめ整数に丸める。

時刻の表現は,処理系定義とする。

時,分,秒の値が所定の範囲内にないとき,その値を0として処理する。

EE07

表記

UNPKTM

時刻データの要素データへの分解 (unpack time)

a UNPKTM

b c d

a :St 時刻表現文字列

b :I2 時

c :I2 分

d :I2 秒

時刻表現文字列aを,時b,分c,秒dに分解する。

時刻の表現は,処理系定義とする。

文字列aが時刻表現に合致しないとき,時,分,秒の一部又は全部を0として処理する。

EE08

表記

PACKDT

日付要素データのまとめ (pack date)

a b c PACKDT

d

a :I1,I2,I4,R4,R8 年

b :I1,I2,I4,R4,R8 月

c :I1,I2,I4,R4,R8 日

d :St

日付表現文字列

年a,月b,日cを日付表現文字列dにまとめる。

a,b,cが実数型の場合には,あらかじめ整数に丸める。

日付の表現は,処理系定義とする。

年,月,日の値が所定の範囲内にないとき,処理系の定めた範囲の下限の値を用いる。

page

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

54

B 8440-1995

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

EE09

表記

UNPKDT

日付データの要素データへの分解 (unpack date)

a UNPKDT

b c d

a :St 日付表現文字列

b :I2 年

c :I2 月

d :I2 日

日付表現文字列aを,年b,月c,日dに分解する。

日付の表現は,処理系定義とする。

文字列aが日付表現に合致しないとき,年,月,日の一部又は全部を処理系の定めた範囲の下限の値

として処理する。

EE0A

表記

通信ポートの設定 (configuration of communication port)

a b c d CNFG

なし

a :I2 通信ポート番号

b :I2 フロー制御/RS制御

ビット1 RS制御(0:無,1:有)

ビット0 フロー制御(0:無,1:有)

c :I2 通信速度 (bps)

1 300bps,2 1200bps

3 2400bps,4 4800bps

5 9600bps,6 19200bps

d :I2 形式

ビット5 データ長 (0:7,1:8)

ビット3 パリティ(0:無,1:有)

ビット2 パリティ(0:奇,1:偶)

ビット1,0 ストップビット

0 1 1bit

1 0 1.5bits

1 1 2bits

CNFG

通信ポートの初期化を行う。ポート番号とファイル番号の対応は,あらかじめ処理系で決められてい

るものとする。

入力のbとdにおいて,指定されていないビットは,0とする。

不正な設定値があるときは,設定を行わない。

EE0B

出力ポートへの出力 (data output)

a b DOUT

なし

a :I1,I2,I4,R4,R8 出力ポート番号

b :I2 出力データ

表記

DOUT

ポートaへデータbを出力する。

ポート番号の値は,あらかじめ整数に丸める。

ポートaが8ビットポートの場合,データbの下位8ビットを使用する。

指定されたポートが存在しない場合,警告を発し,出力は行わない。

EE0C

表記

DIN

page

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

55

B 8440-1995

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

入力ポートからの入力 (data input)

a DIN

b

a :I1,I2,I4,R4,R8 入力ポート番号

b :I2 入力されたデータ

ポートaからデータを入力し,結果をスタックへ置く。

ポート番号の値は,あらかじめ整数に丸める。

ポートaが8ビットポートの場合,データbの上位8ビットは0とする。

指定されたポートが存在しない場合,警告を発し,入力は行わない。

EE0D

表記

IOWAIT

入力条件待ち (input wait)

a b c d IOWAIT

e f

a :I1,I2,I4,R4,R8 ポート番号

b :I2 マスクパターン

c :I2 待ち条件

1のときand

2のときor

d :I1,I2,I4,R4,R8 タイムアウト時間

e :I2 マスクした値

f :I2 タイムアウトフラグ

ポートaから読み込んだ値を,マスクパターンbでマスクしたビットがオンになるまで待つ。

待ち条件が1のときは,すべてのビットがオンになるまで待ち,2のときは,いずれかのビットがオ

ンになるまで待つ。

d時間経過しても入力条件が発生しない場合には,タイムアウトとなり,タイムアウトフラグfを1

として,待ちは解かれる。

待ち条件が成立した場合には,フラグfは0とする。

タイムアウト時間dの単位は,処理系定義とする。

なお,ポート番号aが実数で与えられた場合には,あらかじめ整数に丸める。

EE0E

割込みの活性化 (activate interrupt)

a ACT

なし

a :I1,I2,I4 割込みレベル番号

表記

ACT

表記

ACTRS

割込みレベルaの割込みを受け付けるようにする。

ACTRS,REACT参照。

EE0F

割込みの不活性化 (reset interrupt activity)

a ACTRS

なし

a :I1,I2,I4 割込みレベル

割込みレベルaの割込みを受け付けないようにする。

割込みレベルaが,0のときは,すべての割込みが禁止される。

ACT,REACTを参照。

EE10

表記

REACT

page

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

56

B 8440-1995

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

割込みの再活性化 (reactivate interrupt)

REACT

なし

ACTRSによって最近禁止された割込みレベルの割込みを受け付けるようにする。

回復される割込みは,最近禁止された一回だけである。

ACT,ACTRSを参照。

EE11

表記

割込みコードの定義 (define intrrupt code)

a b c ACTCODE

なし

a :I1,I2,I4 割込みコード

b :I1,I2,I4 割込みレベル

c :Fn,Mc,U 割込み検出手続

ACTCODE

割込みレベルbをもつ割込みコードaを定義する。

割込みの検出には,Cの手続を用いる。

ACTIONを参照。

EE12

割込み処理の定義 (define interrupt action)

a b ACTION

なし

a :I1,I2,I4 割込みコード

b :Fn,Mc,U 割込み処理

表記

ACTION

表記

TIMER

割込みコードaの割込み発生時の処理を定義する。

ACTCODEを参照。

EE13

タイマ割込みの設定 (set timer interrupt)

a TIMER

なし

a :I1,I2,I4,R4,R8 タイムアウト時間

タイムアウト時間を設定し,タイマ割込みを活性化する。

タイムアウト時間に0又は負の値を設定した場合,タイマ割込みは,不活性となる。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

EE14

タイマ割込みの再設定 (reactivate timer interrupt)

RTIMER

なし

表記

RTIMER

タイマ割込みによって最近禁止された割込みを受け付るようにする。

タイマ割込みは,再起動されない。

EE15

表記

TACTION

page

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

57

B 8440-1995

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

タイマ割込み処理の定義 (define timer action)

a TACTION

なし

a :Fn,Mc,U 割込み処理

タイマ割込み発生時の処理を定義する。

EE16

表記

FSTAT

ファイルステータスの取出し (file status)

a FSTAT

b

a :I1,I2,I4,R4,R8 ファイル番号

b :I2 ファイルのステータス

ファイルのステータスを取り出し,結果をスタックへ置く。

bit-0 EOF

bit-1 not opened

bit-2 I/O error

ファイルの終端に達しているとき,ビット0が1となる。

ファイルがオープンされていないとき,ビット1が1となる。

ファイルアクセスに失敗したとき,ビット2が1となる。

ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

EE17

ファイルへの書出し (output)

a b OUTPUT

なし

a :I1,I2,I4,R4,R8 ファイル番号

b :任意の型のデータ 書き出すデータ

表記

OUTPUT

bをa番のファイルへ書き出す。書き出される値は,テキストに変換される。データの区切り文字は,

処理系定義とするが,空白を用いることを推奨する。

ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。

ファイル書込みエラーは,プログラム停止。

EE18

表記

INPUT

ファイルの読込み (input)

a INPUT

b

a :I1,I2,I4,R4,R8 ファイル番号

b :任意の型のデータ 読み込んだデータ

a番のファイルから読み込んだデータをスタックへ置く。

型は,データの表現形式から決定される。

ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。

ファイル読込みエラーは,プログラム停止。

INPUTを実行する前に,FSTATを用いてファイルのオープン状態及びEOF状態を調べることができ

る。

EE19

表記

LOUTPUT

ファイルの1行書出し (line output)

a b LOUTPUT

なし

page

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

58

B 8440-1995

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

a :I1,I2,I4,R4,R8 ファイル番号

b :任意の型のデータ 書き出すデータ

データをファイルへ書き出す。データに続けて改行文字が書き出される。データの変換は,OUTPUT

に準じる。

ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。

ファイル書込みエラーは,プログラム停止。

OUTPUT参照。

EE1A

表記

LINPUT

ファイルの1行読込み (line input)

a #t LINPUT

c

a :I1,I2,I4,R4,R8 ファイル番号

t :タグ

c :t型のデータ 読み込んだデータ

ファイルから1行読み込み,タグtに従って値を取り出し,結果をスタックへ置く。1行の最大長及び

データの区切り文字は,処理系定義とする。

ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。

ファイル読込みエラーは,プログラム停止。

EE1B

ファイルの入出力用オープン (file open)

a b FOPEN

なし

a :I1,I2,I4,R4,R8 ファイル番号

b :I2 オープンモード

表記

FOPEN

ファイルを指定されたモードでオープンする。モードは整数で,次による。

1のとき read(読込み)

2のとき write(書出し)

4のとき append(追加)

ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。

ファイルのオープンに失敗したときは,プログラム停止。

EE1C

ファイルのクローズ (file close)

a FCLOSE

なし

a :I1,I2,I4,R4,R8 ファイル番号

表記

FCLOSE

ファイルをクローズする。

ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。

ファイルクローズエラーは,プログラム停止。

EE1D

1文字出力 (put a character)

a b PUTC

なし

a :I1,I2,I4,R4,R8 ファイル番号

b :I2 書き出すデータ(8ビット)

表記

PUTC

page

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

59

B 8440-1995

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

ファイルへ1文字書き出す。

ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。

ファイル書込みエラーは,プログラム停止。

EE1E

表記

GETC

1文字入力

a GETC

b

a :I1,I2,I4,R4,R8 ファイル番号

b :I2 読み込んだ文字(8ビット)

ファイルから1文字読み込み,結果をスタックへ置く。

ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。

ファイル読込みエラーは,プログラム停止。

EE1F

表記

DECODE1

文字列の分解(BASIC形式)

a #b DECODE1

c

a :St データ文字列

b :t 取り出したいデータ型のタグ

c :指定した型 取り出したデータ

データ文字列aを,タグbの指定に従って分解した結果をスタックへ置く。

変換エラーは,プログラム停止。

EE20

表記

ENCODE1

文字列の構成(BASIC形式)

a b1 … bn n ENCODE1

c

a

:St フォーマット文字列

b1,…,bn :任意の型 データ

n

:I1,I2,I4,R4,R8 データ数

c

:St 構成された文字列

任意の型のデータを,フォーマット文字列に従って変換し,構成された文字列をスタックへ置く。

フォーマット文字列の働きは,附属書2を参照。

変換エラーは,プログラム停止。

EE21

表記

DECODE2

文字列の分解(C形式)

a b #c1 … #cn n DECODE2

d

a :St フォーマット文字列

b :St データ文字列

c1 :U 結果の入る変数

n :I1,I2,I4,R4,R8 データ数

d :I2 分解された数

データ文字列を,フォーマット文字列の指定に従って分解して格納し,分解できた数をスタックへ置

く。

フォーマット文字列の働きは,附属書2を参照。

変換エラーは,プログラム停止。

EE22

文字列の構成(C形式)

表記

ENCODE2

page

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

60

B 8440-1995

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

a b1 … bn n ENCODE2

c

a

:St フォーマット文字列

b1,…,bn :任意の型 データ

c

:St 構成された文字列

任意の型のデータを,フォーマット文字列に従って変換し,構成された文字列をスタックに置く。

フォーマット文字列の働きは,附属書2を参照。

変換エラーは,プログラム停止。

ED00

表記

JSPEED

関節速度指定 (joint speed)

a JSPEED

b

a :I1,I2,I4,R4,R8 関節速度比率

b :I2 エラーフラグ

移動時の関節速度を比率で指定する。最高速度を100%とし,0〜100の値を指定する。既定値は処理

系依存とする。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。

指定値が負値又は最大値を超過した場合,実現不可能となり,出力は非0値となる(旧値を保持する)。

AJMOVE,IJMOVE,ADRIVE,IDRIVEの4関数でだけ有効である。

ED01

表記

SPEED

手先速度指定 (speed)

a SPEED

b

a :I1,I2,I4,R4,R8 手先の速度を指定する数値

b :I2 エラーフラグ

手先効果器 (end effector) の直角座標系における移動速度を指定する。

単位は処理系定義とするが,m/sを推奨する。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。

指定値が負値又は最大値を超過した場合,実現不可能となり,出力は非0値となる(旧値を保持する)。

直角座標系の動作命令(ALMOVE,ILMOVE,HMOVE,CMOVE1,CMOVE3の5関数)でだけ有効

である。

ED02

表記

ACCEL1

手先加速度指定(acceleration)

a ACCEL1

b

a :I1,I2,I4,R4,R8 手先の加速度を指定する数値

b :I2 エラーフラグ

手先効果器(ende effector)の直角座標系での加速度を指定する。

単位は処理系定義とするが,加速度を数値として与える場合にはm/s2を推奨し,また,最大加速度に

対する割合で指定する場合には%を推奨する。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

コントローラは,このコードを実行完了後,ACCEL1,ACCEL2のいずれかが再度実行されるまで指

定値を保持する。

加速度を数値で指定した場合の関節座標系の動作命令への影響については,処理系定義とする。

指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。

page

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

61

B 8440-1995

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

加速度を数値で指定した場合,関節座標系の動作命令(AJMOVE,IJMOVE,ADRIVE,IDRIVEの4

関数)において指定された接線加速度を維持するには,角加速度の複雑な制御が必要となる。

ED03

表記

ACCEL2

時間による手先加速度指定 (acceleration by time)

a ACCEL2

b

a :I1,I2,I4,R4,R8 最大速度に達するまでの時間

b :I2 エラーフラグ

最大速度に達するまでの時間を指定することによって,加速度を指定する。

単位は処理系定義とするが,秒を推奨する。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

コントローラは,このコードを実行完了後,ACCEL1,ACCEL2のいずれかが再度実行されるまで指

定値を保持する。

指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。

ED04

表記

DECEL1

手先減速度指定 (deceleration)

a DECEL1

b

a :I1,I2,I4,R4,R8 手先の減速度を指定する数値

b :I2 エラーフラグ

手先効果器 (end effector) の直角座標系での減速度を指定する。

単位は処理系定義とするが,減速度を数値として与える場合にはm/s2を推奨し,また,最大減速度に

対する割合で指定する場合には%を推奨する。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

コントローラは,このコードを実行完了後,DECEL1,DECEL2のいずれかが再度実行されるまで指

定値を保持する。

加速度を数値で指定した場合の関節座標系の動作命令への影響については,処理系定義とする。

指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。

減速度を数値で指定した場合,関節座標系の動作命令(AJMOVE,IJMOVE,ADRIVE,IDRIVEの4

関数)において指定された接線加速度を維持するには,角加速度の複雑な制御が必要となる。

ED05

表記

DECEL2

時間による手先減速度指定 (deceleration by time)

a DECEL2

b

a :I1,I2,I4,R4,R8 最大速度から停止するまでの時間

b :I2 エラーフラグ

最大速度から速度0に達するまでの時間を指定することによって,加速度を指定する。

単位は処理系定義とするが,秒を推奨する。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

コントローラは,このコードを実行完了後,DECEL1,DECEL2のいずれかが再度実行されるまで指

定値を保持する。

指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。

ED06

コンフィギュレーション設定 (set configuration)

a SCONF

b

a :I2 コンフィギュレーション指定

表記

SCONF

page

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

62

B 8440-1995

出力

説明

b :I2 エラーフラグ

ロボットのコンフィギュレーションパラメタ(標準コンフィギュレーション)を設定する。このパラ

メタの効果は,次のロボット制御の実行時に有効となる。

ビット位置

意味 (0/1)

第0ビット

第1ビット

第2ビット

右腕系/左腕系 (righty/lefty)

ひじ(肘)部位置 (above/below)

手首振り (flip/noflip)

ロボットに定義されていない形態を指定した場合,その指定を無視する。

その他のビットの扱いは,処理系定義とする。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

コントローラは,この関数を実行完了後,再度実行されるまで指定値を保持する。

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

この関数は,直角座標系移動に影響する。指定されたコンフィギュレーションが現在の設定と異なっ

ている場合の処置は,処理系定義とする。

これを回避するためには,いったん関節座標系移動を用いてコンフィギュレーションを合わせた後,

直角座標系移動を実行する,などの対処が考えられる。

ED07

表記

SCONF2

コンフィギュレーション設定2 (set configuration-2)

a SCONF2

b

a :I2 コンフィギュレーション指定

b :I2 エラーフラグ

ロボットのコンフィギュレーションパラメタ(拡張コンフィギュレーション)を設定する。このパラ

メタの効果は,次のロボット制御の実行時に有効となる。

コンフィギュレーション指定aによって指定される拡張コンフィギュレーションの意味及びビット位

置は,処理系定義とする。ロボットに定義されていないコンフィギュレーションを指定した場合,そ

の指定は無視する。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系依存とする。

コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。

この関数は,ロボットコントローラに固有のコンフィギュレーション設定を行うものであり,主要な

コンフィギュレーション設定はSCONFで行う。

ED08

表記

SCONF3

コンフィギュレーション設定3 (set configuration-3)

a b SCONF3

c

a :I2 コンフィギュレーション指定番号

b :I1,I2,I4,R4,R8 設定値

c :I2 エラーフラグ

ロボットのコンフィギュレーションパラメタ(拡張量コンフィギュレーション)を設定する。このパ

ラメタの効果は次のロボット制御の実行時に有効となる。

拡張量コンフィギュレーションを指定する番号aとその設定値bの意味は,処理系定義とする。ロボ

ットに定義されていないコンフィギュレーションを指定した場合,その指定を無視する。

フラグcは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。

この関数は,ロボットコントローラに固有のコンフィギュレーション設定を行うものであり,主要な

コンフィギュレーション設定はSCONFで行う。

page

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

63

B 8440-1995

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

ED09

コンフィギュレーション取出し (get configuration)

GCONF

a

表記

GCONF

a :I2 コンフィギュレーションパラメタ

現在設定されているコンフィギュレーションパラメタ(標準コンフィギュレーション)を取り出す。

コンフィギュレーションパラメタの意味及び表現については,SCONFを参照。

ロボットの構造によって意味のないビット値は,暗黙値0がセットされる。

ED0A

表記

GCONF2

コンフィギュレーション取出し2 (get configuration-2)

GCONF2

c

a :I2 コンフィギュレーションパラメタ

現在設定されているコンフィギュレーションパラメタ(拡張コンフィギュレーション)を取り出す。

コンフィギュレーションパラメタの意味と表現については,SCONF2を参照。

ロボットの構造によって意味のないビット値は,暗黙値0がセットされる。

ED0B

表記

GCONF3

コンフィギュレーション取出し3 (get configuration-3)

a GCONF3

b

a :I2 コンフィギュレーション指定番号

b :I1,I2,I4,R4,R8 コンフィギュレーションの値

現在設定されているコンフィギュレーションパラメタ(拡張量コンフィギュレーション)から,形態

指定番号aに指定されている値を取り出す。

コンフィギュレーションパラメタの意味と表現については,SCONF3を参照。

ロボットの構造によって意味のないビット値は,暗黙値0がセットされる。

ED0C

表記

HERE

現在ポーズの取込み (get current pose)

HERE

a

a :Pm

ロボットの現在ポーズを取り出し,スタックに置く。

移動命令実行中でも現在ポーズを取り出すことを原則とする。ただし,処理系によっては,コントロ

ーラの処理速度に問題を生ずるなどの理由によって,ポーズの取り出しが移動完了後となることもあ

る。

ED0D

表記

JHERE

現在ジョイント値の取込み (get current joint)

JHERE

a

a :Ar of (I4,R4) ジョイント値

ロボットの現在のジョイント値を取り出し,スタックに置く。

page

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

64

B 8440-1995

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

処理系は,I4又はR4のいずれかの型で取り出せばよい。

移動命令実行中でも現在ジョイント値を取り出すことを原則とする。ただし,処理系によっては,コ

ントローラの処理速度に問題を生ずるなどの理由によって,ジョント値の取り出しが移動完了後とな

ることもある。

ED0E

表記

CALIB

キャリブレーション (calibration)

CALIB

なし

ロボットの機械的位置姿勢とコントローラの保持している設定値とを一致させる。この働きの詳細は,

処理系定義である。

キャリブレーションの内容は,処理系に依存する。このとき,ロボットが位置姿勢を変更することも

ある。

ED0F

表記

PAUSE

中断 (pause)

a PAUSE

b

a :St メッセージ

b :I2 エラーフラグ

指定されたメッセージを標準出力装置に表示して,オペレータの指示があるまでプログラムの実行を

中断する。

また,ロボットが動作中の場合にはコントローラに動作中断を指示し,ロボットは速やかに停止する。

停止の方法については,処理系定義とする。

再開の方法は,ロボットコントローラの機能に依存するが,通常はコントローラにつけられた再開ボ

タンが押されるか,再開指令が入力されることによる。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

標準出力装置が定義されていない。

表示機能のないロボットの場合は,標準出力装置の未定義を例外扱いとしない。

ED10

表記

DELAY

時間待ち (delay)

a DELAY

b

a :I1,I2,I4,R4,R8 待ち時間

b :I2 エラーフラグ

待ち時間aで指定した時間だけ,プログラムの実行を遅らせる。

aの単位は処理系定義とするが,msecを推奨する。

この関数の実行中にプログラム実行が強制終了された場合,残計数は0となる。

また,中断又は割込みが発生した場合,残計数は保存され,その後再開した場合は残計数から継続す

る。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

指定値が限界値を超えている。

ED11

関節角空間直線補間絶対移動 (absolute joint move)

a AJMOVE

b

a :Pm 又は Ar of Pm

b :I2 エラーフラグ

表記

AJMOVE

page

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

65

B 8440-1995

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

関節角空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。

ポーズの座標値は,ロボットのベース座標系で絶対指定される。

移動終了を待たずに次の命令の実行へ進む。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

指定ポーズ(目的地)が,未定義の場合。

指定ポーズ(目的地)が,動作領域外の場合。

移動動作の完了を待つときは,$DONE関数を用いる。

コンフィギュレーションを変えることがある。

ED12

表記

IJMOVE

関節角空間直線補間相対移動 (incremental joint move)

a IJMOVE

b

a :Pm 又は Ar of Pm

b :I2 エラーフラグ

関節角空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。

ポーズの座標値は,移動開始位置からの相対位置で表現される。

移動終了を待たずに次の命令の実行へ進む。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

指定ポーズ(列)が,未定義の場合。

指定ポーズ(列)が,動作領域外の場合。

移動動作の完了を待つときは,$DONE関数を用いる。

コンフィギュレーションを変えることがある。

ED13

表記

ALMOVE

直角座標空間直線補間絶対移動 (absolute linear move)

a ALMOVE

b

a :Pm 又は Ar of Pm

b :I2 エラーフラグ

直角座標空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。

ポーズの座標値は,ロボットのベース座標系で絶対指定される。

移動終了を待たずに次の命令の実行へ進む。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

指定ポーズが,未定義の場合。

指定ポーズが,動作領域外の場合。

移動中に特異解が,発生した場合。

移動中に補間ポーズが,動作領域を超えた場合。

移動動作の完了を待つときは,$DONE関数を用いる。

ED14

表記

ILMOVE

直角座標系直線補間相対移動 (incremental linear move)

a ILMOVE

b

a :Pm 又は Ar of Pm

b :I2 エラーフラグ

直角座標空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。

ポーズの座標値は,移動開始位置からの相対位置で表現される。

移動終了を待たずに次の命令の実行へ進む。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

指定ポーズが,未定義の場合。

page

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

66

B 8440-1995

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

指定ポーズが,動作領域外の場合。

移動中に特異解が,発生した場合。

移動中に補間ポーズが,動作領域を超えた場合。

移動動作の完了を待つときは,$DONE関数を用いる。

現在ポーズをP1,目標ポーズをP2とし,P3=P2−P1とすると,次の二つのMOVE関数は位置,姿

勢を含めて同じ結果となる。

P2 ALMOVE

P3 ILMOVE

なお,ポーズの演算に関しては,PADD,PSUBを参照のこと。

ED15

表記

HMOVE

ツール座標系直線補間移動 (hand move)

a HMOVE

b

a :Pm 又は Ar of Pm

b :I2 エラーフラグ

ハンド(ツール)座標系で表現された指定ポーズ又は指定ポーズ列を直線移動する。

移動終了を待たずに次の命令の実行へ進む。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

指定ポーズが,未定義の場合。

指定ポーズが,動作領域外の場合。

移動中に特異解が,発生した場合。

移動中に補間ポーズが,動作領域を超えた場合。

移動動作の完了を待つときは,$DONE関数を用いる。

ED16

表記

CMOVE1

直角座標空間円弧補間移動 (circular move-1)

a b c d CMOVE1

e

a :I1,I2,I4,R4,R8 平面指定

b :I1,I2,I4,R4,R8 回転角

c :Pm 回転中心ポーズ

d :I1,I2,I4,R4,R8 姿勢指定

e :I2 エラーフラグ

現在ポーズから,指定平面a,回転中心c,回転角bで決まるポーズまで,円弧補間による移動をする。

移動終了を待たずに次の命令の実行へ進む。

aは,ロボット座標系における平面指定であり,1のときxy平面,2のときyz平面,3のときzx平面

を指す。

bは,b≧0のとき反時計回り,b<0のとき時計回りとする。

dは,移動に伴う姿勢の変化を指定し,1のとき回転変換され,2のとき現在姿勢を保ち,3のとき処

理系依存の姿勢となる。

フラグeは,例外が発生しなければ,0値。発生すれば非0値。

フラグeの詳細は,処理系定義とする。

指定ポーズが,未定義の場合。

補間ポーズが,動作領域外の場合。

移動中に特異解が,発生した場合。

半径が,コントローラの定める限界値を超えた場合,直線移動となる。

移動動作の完了を待つときは,$DONE関数を用いる。

メーカは,限界半径の仕様値を明記する。

ED17

直角座標空間3点指定円弧補間移動 (circular move-3)

a b CMOVE3

c

表記

CMOVE3

page

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

67

B 8440-1995

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

a :Pm 経由ポーズ

b :Pm 目的ポーズ

c :I2 エラーフラグ

現在ポーズ,経由ポーズ,目的ポーズで決まる円弧上を移動する。

移動終了を待たずに次の命令の実行へ進む。

フラグcは,例外が発生しなければ,0値。発生すれば非0値。

フラグcの詳細は,処理系定義とする。

指定ポーズが,未定義の場合。

補間ポーズが,動作領域外の場合。

移動中に特異解が,発生した場合。

3点で平面が決定できないとき。

提供機関は,限界半径の仕様値を明記すること。

円弧の半径が,コントローラの定める限界値を超えた場合は,直線移動とみなしてもよい。

移動動作の完了を待つときは,$DONE関数を用いる。

ED18

表記

ADRIVE

関節角絶対位置移動 (absolute joint drive)

a ADRIVE

b

a :Ar of (I1,I2,I4,R4,R8) 関節角パラメタ

b :I2 エラーフラグ

ロボットアームの関節角絶対位置aへ移動する。

aの単位(例えば,パルス又は角度),及び配列要素と関節との対応については,処理系定義とする。

動作終了を待たずに次の命令の実行へ進む。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

指定パラメタが可動範囲外の場合。

移動動作の完了を待つときは,$DONE関数を用いる。

ED19

表記

IDRIVE

関節角相対位置移動 (incremental joint drive)

a IDRIVE

b

a :Ar of (I1,I2,I4,R4,R8) 関節角パラメタ

b :I2 エラーフラグ

ロボットアームの関節角を増分量aだけ増やす移動をする。

aの単位(例えば,パルス又は角度),及び配列要素と関節との対応については,処理系定義とする。

動作終了を待たずに次の命令の実行へ進む。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする。

可動範囲の限界を超えようとする場合。

移動動作の完了を待つときは,$DONE関数を用いる。

各関節は同時刻に移動を開始し,同時に動作完了することが望ましい。

ED1A

表記

SACC

近傍精度設定 (set accuracy)

a SACC

b

a :I1,I2,I4,R4,R8 近傍指定パラメタ

b :I2 エラーフラグV

ロボットアームの位置決め精度を,指定位置に対してどのくらい近傍であるかによって定義する。パ

ラメタの具体的な値は処理系定義とするが,すべて正の値であって,0直は最高位置決め精度を表す。

また,初期値は,処理系定義であるが,0値(最高精度)とすることを推奨する。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

フラグbの詳細は,処理系定義とする

page

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

68

B 8440-1995

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

パラメタが許される値以外の場合。

サーボ系は,このパラメタで決まる精度基準に達した所で次の制御に移行する。パラメタの意味は,

精度を表すレベル番号のこともあれば,近傍系の値(球なら半径,箱なら一辺の大きさなど)のこと

もある

ED1B

表記

GACC

近傍精度参照 (get accuracy)

GACC

a

a :I2,R4 近傍精度パラメタ

現在設定されている近傍精度パラメタの値を取り出す。

処理系は,I2又はR4のいずれかの型で取り出す。

ED1C

表記

$WAIT

ロボットの動作完了待ち (wait)

a $WAIT

b

a :I1,I2,I4,R4,R8 タイムアウト時間

b :I2 完了状態

最も最近に出された動作指令に対するロボットの動作完了を待つ。

a時間経過しても動作完了しない場合には,タイムアウトとなり,完了状態bを1として,待ちは解

かれる。

タイムアウト時間aの単位は,処理系定義とする。

正常完了ならば,完了状態bは0値。エラーが発生すれば負値。

エラー時の完了状態bの詳細は,処理系定義とする。

手先効果器の完了をこの関数で検出できるかは,処理系に依存する。手先効果器の完了を検出する場

合,完了状態値2を用いることを推奨する。

すなわち,ロボットも手先効果器も共に動作中なら完了状態を3,手先効果器だけ動作中なら完了状

態を2,ロボットだけ動作中なら完了状態を1とする。

ED1D

ロボットの動作完了判定 (done)

$DONE

a

表記

$DONE

a :I2 完了状態

ロボットの動作完了状態を取り出す。

完了状態aは,動作中なら1,正常完了していれば0,異常完了していれば負値。

手先効果器の完了をこの関数で検出できるかは,処理系に依存する。手先効果器の完了を検出する場

合,完了状態値2を用いることを推奨する。

すなわち,ロボットも手先効果器も共に動作中なら完了状態を3,手先効果器だけ動作中なら完了状

態を2,ロボットだけ動作中なら完了状態を1とする。

ED1E

表記

HANDOPEN

ハンドを開く (hand open)

HANDO

なし

現在のハンド(手先効果器)を開く。

開閉動作の完了を待たずに次の命令へ進む。

page

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

69

B 8440-1995

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

ハンドの開閉を量で指定するとき,又は複数のパラメタを指定するときには,GRASPを用いる。

開閉動作に時間を要する場合には,DELAY又は$DONEを併用する。

ED1F

表記

HANDCLOSE

ハンドを閉じる (hand close)

HANDCLOSE

なし

現在のハンド(手先効果器)を閉じる。

開閉動作の完了を待たずに次の命令へ進む。

ハンドの開閉を量で指定するとき,又は複数のパラメタを指定するときには,GRASPを用いる。

開閉動作に時間を要する場合には,DELAY又は$DONEを併用する。

ED20

表記

GRASP

握り (grasp)

a1 … an n GRASP

b

a1,…,an :I1,I2,I4,R4,R8 把握パラメタ

n

:I1,I2,I4,R4,R8 パラメタ数

b

:I2 エラーフラグ

指定されたハンド(手先効果器)にパラメタa1,…,anを送り,制御する。

把握動作の完了を待たずに次の命令へ進む。

パラメタの意味は,ハンドに依存する。

パラメタ数nが実数で与えられた場合,あらかじめ整数に丸める。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

手先が定義されていない。

パラメタの値が不正である。

ED21

表記

HANDDEF

ハンドの定義 (hand definition)

a1 … an n b HANDDEF

c

a1,…,an :任意の型 ハンド定義のパラメタ

n

:I1,I2,I4,R4,R8 パラメタ数

b

:I1,I2,I4,R4,R8 ハンド番号

c

:I2 エラーフラグ

ハンド番号bを宣言し,それに付随する情報(ハンドの種類,ハンド座標系など)を定義する。

指定されるパラメタは,ハンドに依存する。

パラメタ数n及びハンド番号bが実数で与えられた場合,あらかじめ整数に丸める。

フラグcは,例外が発生しなければ,0値。発生すれば非0値。

ハンド番号,パラメタ数,パラメタ(型,値)が不正である。

処理系で許されるハンド定義数を超えた。

複数のハンドを指定する場合,ハンド番号は必ずしも連続している必要はない。

ED22

表記

HANDREF

ハンド定義の参照 (hand reference)

a HANDREF

b1 … bn n

a

:I1,I2,I4,R4,R8 ハンド番号V

b1,…,bn :任意の型 ハンド定義のパラメタ

n

:I2 パラメタ数

ハンド番号aで指定したハンド(手先効果器)の情報を取り出す。

ハンド番号が定義されていないときは,パラメタ数nを−1とする。

page

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

70

B 8440-1995

例外

備考

コード

機能

呼出形式

結果

入力

出力

説明

例外

備考

ED23

ハンドの交換 (hand change)

a HANDCHG

表記

a :I1,I2,I4,R4,R8 ハンド番号

b :I2 エラーフラグ

指定されたハンド(手先効果器)に論理的に交換する。

フラグbは,例外が発生しなければ,0値。発生すれば非0値。

なお,ハンド番号aが実数で与えられた場合,あらかじめ整数に丸める。

ハンド番号が未定義のとき。

ハンドの物理的交換をすることは限らない。

HANDCHG

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

71

B 8440-1995

附属書2 書式変換

1. 適用範囲 この附属書は,STROLICにおける書式変換に関しての書式指定について規定する。

備考 データの文字による表現と処理系の内部表現との変換を,書式変換という。書式変換では,変

換を指示する書式指定に従ってデータの表現形式が変換される。

2. 書式指定

(1) BASIC形式 書式指定は,ANSI FULL-BASICに従う。

(2) C形式 書式指定は,基本的にANSI Cに従う。ただし,以下の点が異なる。

・ 書式文字列中のu,l,L,hについては,意味をもたない。

・ %cについては,STROLICの整数型データが対応する。

page

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

72

B 8440-1995

参考1 中間コード・マシン

序文 この参考は,本体及び附属書の規定に関連する事柄を補足するもので,規定の一部ではない。

1. 中間コードマシン概要 中間コードの実行を行う仮想のマシンの構成を述べる。実際のインプリメン

トに際し,このとおりに作る必要はない。あくまで概念的なモデルである。

ロボット言語は,利用者が使用する入力形式言語であり,統一的文法をもつ。これを利用者とロボット

とのマン・マシン・インタフェースとしてとらえるなら,中間コードはロボットの制御盤と外部のコンピ

ュータとのマシン・マシン・インタフェースとして定義される。各種“機能”のロボット制御盤上での実

現には,“機能”を手続あるいは関数のパッケージとして準備する方法が行われ,それらの呼出しによって

“機能”を実現する。したがって,中間コード表現に用いる文法は,入力用言語で用いられるより単純,

かつ,原始的で十分である。

この中間コードは,

(1) スタックの利用

(2) 逆ポーランド記法の採用

(3) タグによるデータ構造の表現

を採用し,単純な処理系を想定しているので,その文法も,関数の処理手続として,

(1) スタックから実引き数の値を必要なだけ取り,演算する。

(2) 演算結果をスタック上に置く。

だけであり,データ構造のスタックヘの積み方としては,

(3) タグによって続くデータを解釈する。

を想定しているだけである。

なお,これらの中間コードにおける文法は,入力用言語の文法を規定するものではない。

2. 仮想マシン構成 仮想マシン(インタプリタ)は,入力ストリーム,スタック,変数表,ヒープ,リ

ターンスタックから構成される。

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

73

B 8440-1995

(1) 入力ストリーム インタプリタは,一つの入力ストリームをもつ。入力ストリームからは,中間コー

ドがバイト順に送り込まれる。インタプリタは,入力された中間コードを順次その場で実行していく。

入力ストリームにデータを送る側を,プログラム装置と呼ぶ。

(2) スタック(データ用) インタプリタは,スタック・マシンであり,すべての操作はスタックを中心

に実行される。スタックにプッシュ/ポップされるデータはすべてタグ付きで,その長さは一定して

はいない。

(3) 変数表 変数及び関数は,中間コード上では特定のコード表現で表されている。この変数コードや関

数コードは,インタプリタ内のヒープ領域に実際の場所が取られている。この対応関係は,変数表で

管理する。すなわち,変数及び関数は,変数表を引くことでヒープ上の位置を知ることができる。変

数と関数の区別は,変数表上にはない。ヒープ領域に格納されている値を見ることで判定する。

(4) ヒープ インタプリタ内には,ヒープ領域と呼ばれるエリアがある。このエリアは,必要に応じて,

利用者関数及び利用者変数の領域が(動的に)確保される。ヒープ上のデータはすべてタグ付きで格

納されている。格納されている値のタグが関数ならば,そこには関数の本体が格納されているし,そ

れ以外ならばその値,例えば,2バイト整数のタグならば2バイト整数値が(タグ付きで)格納され

ている。

(5) リターン・スタック 関数の呼出に対し,その戻りを制御するためにリターン・スタックがデータ用

のスタックとは別に用意されている。ここに,関数の呼出し及び戻りに関する情報が保持されている。

(6) その他 仮想マシンは,出力ストリームをもっている。仮想マシンは,プログラム装置から送られて

くる中間コードを順次実行していく。しかし,ときには仮想マシンからプログラム装置へ情報を送る

必要もある。このとき,出力ストリームを用いる。

また,仮想マシンは,コンフィギュレーションと呼ぶ状態パラメータをもっている。コンフィギュ

レーションの多くはロボットの姿勢,形態に関するパラメータで,設定/参照を行うことができる。

このパラメータは,実行時の必要に応じて制御装置などで参照される。標準のコンフィギュレーショ

ンとしては次の三つがある。

(a) 右腕系/左腕系 (RIGHTY/LEFTY)

(b) ひじ部位置 (ABOVE/BELOW)

(c) 手首振り (FLIP/NOFLIP)

3. 仮想マシン動作

(1) 入力ストリームから順次バイト列を取り込む。

(2) タグのときは,データであると判断し,各々のタグの定義に従って,その個数分データを取り込み,

スタックヘプッシュする。

(3) タグでなければ関数(利用者関数,組込関数)又は変数(利用者変数)であると判断し,次のバイト

を取り込んで,2バイトで関数一覧表を引いて変数又は関数の評価を行う。

4. 利用者関数及び利用者変数の評価 利用者関数及び変数は,インタプリタ内の変数表にあらかじめリ

ストされている。変数表は,利用者関数,変数のコード及びその実体の存在するヒープ上の位置へのポイ

ンタから成っている。この表を引くことによって利用者変数又は関数の実体を取り出し,評価することが

できる。取り出した実体が関数の場合は,利用者関数の評価が行われる。そうでなければ利用者変数の評

価が行われる。

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

74

B 8440-1995

(1) 利用者変数の評価 その値を取り出し,スタックヘプッシュする。このときプッシュされる値は,タ

グ付きのままである。評価を行わずに利用者変数コードそのものをスタックヘプッシュしたい場合は,

評価抑制子を用いる。

(2) 利用者関数の評価 関数本体の評価(実行)を行う。利用者関数の本体も,また,中間コードで書か

れている。インタプリタは,現在のコードのフェッチを中断し,関数本体の中間コードを順にフェッ

チして実行する。飛越し関係の中間コードは,利用者関数の中でしか使用することはできない。

RETURN命令の実行によって関数の評価は終了し,元の制御の流れに戻る。

5. 利用者関数及び利用者変数の定義 利用者変数/関数の定義には,変数の定義 (DEF) を用いる。変

数の定義では,まず,定義の開始を示すVAR関数が置かれる。それに続いて評価抑制子付きの利用者コー

ドが並び,そして最後に定義関数DEFが置かれて終了する。

VAR #u1 #u2 #u3 … #un DEF

VAR関数は,自身をスタック上ヘプッシュする。続いて,定義する利用者コードがプッシュされる。最

後にDEF関数の実行で,中間コードマシンの変数表に利用者コードが登録される。登録された直後の利用

者コードは,値も,値を入れる領域も与えられてはいない。これらは,この利用者コードヘの値の代入が

行われたときに決定される。

u1…unの利用者コードは,異なっていなくてはならない。しかし,異なる変数定義で同一の利用者コー

ドが現れてもかまわない。この場合より後から定義されたものが有効となるが,先の定義が無効となるわ

けではない。後から定義された利用者コードが解放 (FREE) されると先の定義が再び有効となる。

VAR #u1 #u2 #u3 … #un FREE

6. 利用者変数への代入

利用者コードへ値を設定するときは,代入 (STORE) を用いる。代入に先立って,利用者コードが定義

されていなくてはならない。

#u val STORE

#uは評価抑制子付きの利用者コード,valは設定する値。代入ではヒープ領域に値が置かれ,そこへの

ポインタが変数テーブル中に格納される。すでに変数に値が設定されているときは,この時点でヒープ領

域の解放が行われる。ただし,解放する領域の再利用が可能なときは,それを行ってもよい。

7. 構造をもつデータの要素 配列データ,レコードデータ及び文字列データは,構造をもつデータであ

る。構造をもつデータの要素は,タグなしで構造データ中に並べられている。構造をもつデータ中の要素

の参照は抽出 (extract) によって,設定は埋込み (embed) によってそれぞれ行うことができる。

○抽出 (extract) 構造をもつデータの要素の参照は,抽出関数EXTによって行われる。抽出関数では,

構造をもつデータ内の位置と抽出するデータの型(タグ)を与えて要素を取り出す。

st of #t EXT

stは,構造をもつデータで,普通は構造をもつデータが代入されている利用者コードが評価抑制子付き

で書かれる。ofは,オフセットで構造をもつデータのデータ部分の先頭をゼロとして数えたバイト位置で

ある。#tは,取り出す要素の型をタグの形で与える。

例 部分文字列

page

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

75

B 8440-1995

長さ8の文字列“ABCDEGFH”の第3文字目(バイト位置2)から,長さ3の文字列“CDE”

が取り出される。

○埋込み (embed) 構造をもつデータの一部分にデータを書き込むには,埋込み関数EMBを用いる。

st of elm EMB

stは,構造をもつデータで,普通は構造をもつデータが代入されている利用者コードが評価抑制子付き

で書かれる。ofは,オフセットで構造をもつデータのデータ部分の先頭をゼロとして数えたバイト位置で

ある。elmは,埋め込むデータである。

8. ブロック構造 STROLICでは,変数表を用いて利用者変数の評価を行う。このとき,ただ一つの変数

表によって利用者変数を評価すると,すべての変数は,全域的(グローバル)となる。これに対し,STROLIC

ではブロック構造をもつ表面言語の出力に対応できるように,変数表の局所化の機能が用意されている。

この局所化された構造を入れ子構造と呼ぶ。

入れ子構造の設定 NESTIN

入れ子構造の解除 NESTOUT

入れ子構造には入れ子レベルが与えられる。一番外側は,入れ子レベル0である。変数の評価は,現在

の入れ子構造からより外側の入れ子レベルの低い構造へと探していき,初めて見つかった構造の所で評価

が行われる。特別に,より外側の構造の変数を評価するために入れ子レベル付きのデータのプッシュ/ポ

ップがある。

入れ子レベル付きプッシュ NPUSH

入れ子レベル付きポップ NPOP

同じ入れ子レベルをもつ構造のより外側の変数は,参照できない。しかし,より内側の構造が解除され

ると見えるようになる。指定できる入れ子レベルは,処理系の定める深さまでである。この深さは,16〜

32くらいあれば実用上問題はない。

9. マルチタスク STROLICでは,マルチタスクの機能を用意する。マルチタスクの実現には,二つのタ

イプがある。一つは中間コードマシンの上で並行的に実行するもので,二つ目は,STROLIC処理系が乗っ

ているマルチタスクOSによるものである。STROLICでは,両方の並行処理をサポートしている。中間コ

ードマシン内での並行実行を行う場合,プロセスと呼ばれる。STROLIC利用者関数の実行が同時並行的に

行われる。一方,マルチタスクOSに依存する並行処理をタスクと呼ぶ。STROLICの中では,プロセスも

タスクも番号で識別される。これをそれぞれプロセス番号,タスク番号と呼ぶ。

起動 FXQT,TXQT

起動補助 FPREDC,TPRECD,FCYCLE,TCYCLE

終了判定 FDONE,TDONE

強制終了 FKILL,TKILL

同時並行的に実行されるプロセス間及びタスク間では,同期をとったり,データの交換を行ったりでき

るようにする必要がある。この目的のためにイベントフラグが用意されている。イベントフラグは,1ビ

ットのオン/オフフラグで同期又は排他制御に用いる。イベントフラグも番号で識別される。

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

76

B 8440-1995

ロック LOCK

ロック解除 UNLOCK

イベント待ち EWAIT,EWAITA,EWAITO,EPOP

イベント発生 ESIG

イベントクリア ECLR

プロセスの間でのデータの共有には,グローバル変数を用いる。グローバル変数は,二つのプロセス

(STROLIC関数)から共に参照することができる。別のタスクと共有するデータの場合は,共有変数宣言

が必要である。共有変数宣言では,変数に共有変数番号が割り付けられ,別のタスクは,この共有変数番

号を頼りに共有変数への参照を実現する。データの排他制御は,イベントフラグを用いて利用者が行う必

要がある。

他に,1 : 1の単方向のデータ交換を簡便に行うためにチャネルが用意されている。一つのチャネルは,

一つのイベントフラグとスタックとを介したデータ交換で実現される。

チャネル入力 CHIN

チャネル出力 CHOUT

page

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

77

B 8440-1995

参考2 実数の表現

序文 この参考は,本体及び附属書の規定に関連する事柄を補足するもので,規定の一部ではない。

この規格で使用する実数の表現は,IEEE 754の規格に準じることを推奨する。ただし数としての実数の

ビット構成だけを使用し,非数についてはこれを定めない。

実数は,以下に示すように四つ又は八つのバイトの並びで表現し,それらを第0バイトから第3バイト

又は第7バイトとする。バイトの並びの中で先行するバイトは上位のビットに,後のバイトは下位のビッ

トを構成する。バイト内の各ビットは,MSBが上位のビットに,LBSが下位のビットとなる。

実数は,符号,指数,仮数の三つから構成される。符号は数の符号を表す。指数は2の指数で中央値が

0を表す,いわゆるゲタ履き表現である。仮数は,正規化された2進小数で最初の1ビットは(常に1で

あるので)省略する。ただし,0は例外とする。

1. 単精度実数 単精度実数は,4バイト(32ビット)で表す。

符号 1ビット

指数 8ビット(2の指数でゲタ履き表現)

仮数 23ビット [仮数の先頭の1ビット (2−1) を省略]

2. 倍精度実数 倍精度実数は,8バイト(64ビット)で表す。

符号 1ビット

指数 11ビット(2の指数でゲタ履き表現)

仮数 52ビット[仮数の先頭の1ビット (2−1) を省略]

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

78

B 8440-1995

ロボット言語JIS原案作成専門委員会 構成表

(委員長)

氏名

新 井 民 夫

松 元 明 弘

伊佐山 建 志

吉 田 藤 夫

柿 倉 正 義

高 島 覺

黒 澤 豊 樹

石 井 博

鈴 木 和 彦

吉 田 邦 夫

斎 藤 和 春

川 村 敏 和

西 本 克 史

針 木 和 夫

佐 藤 和 克

中 村 寿 夫

松 島 幹 治

村 上 悦 三

毛 利 峻 治

原 龍 一

奥 井 得 博

高 木 裕 明

森 俊 二

田 中 雅 人

松 本 博 志

所属

東京大学

東洋大学

通商産業省

工業技術院

工業技術院電子技術総合研究所

財団法人機械振興協会

黒澤R&G技術事務所

株式会社小野技術研究所

日本電装株式会社

日本ビクター株式会社

セイコーエプソン株式会社

株式会社東芝

富士通株式会社

株式会社不二越

松下電器産業株式会社

石川島播磨重工業株式会社

川崎重工業株式会社

株式会社ダイヘン

株式会社日立製作所

ファナック株式会社

富士電機株式会社

ぺんてる株式会社

三菱電機株式会社

株式会社安川電機

株式会社ユーシン精機