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

 

日本工業規格          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が扱う座標系は,ロボットのベース座標系及びエンドエフェクタのツール座標系が

ある。 


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) 処理系の規格合致性をもつ処理系は,例外状態を検出したとき,プログラムの実行を停止する。プロ

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

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


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バイト実数タグ | 

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

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

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

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

長さ = 整数データ 


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 

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

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

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

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


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バイト実数値 


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  

 

1  

を表す。 

 

15. ポーズデータ 

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

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

ポーズ要素 = 数値データ 

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

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

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

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

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

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

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

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

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

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

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


B 8440-1995  

16. STROLIC関数 

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

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

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

表1 STROLIC関数一覧表 

コード 

表記 

機能 

EF00 

ADD 

加算 

EF01 

SUB 

減算 

EF02 

MUL 

乗算 

EF03 

DIV 

除算 

EF04 

PWR 

べき乗 

EF05 

MOD 

剰余 

EF06 

IDIV 

整数除算 

EF07 

INC 

1増加 

EF08 

DEC 

1減少 

EF09 

EQU 

比較・等しい 

EF0A 

NEQ 

比較・等しくない 

EF0B 

LEQ 

比較・小さいか等しい 

EF0C 

GEQ 

比較・大きいか等しい 

EF0D 

LT 

比較・小さい 

EF0E 

GT 

比較・大きい 

EF0F 

AEQ 

近似比較 

EF10 

CPL 

1の補数 

EF11 

AND 

論理積 

EF12 

OR 

論理和 

EF13 

XOR 

排他的論理和 

EF14 

BSET 

ビットセット 

EF15 

BCLR 

ビットクリア 

EF16 

BTST 

ビットテスト 

EF17 

LSH 

左論理シフト 

EF18 

RSH 

右論理シフト 

EF19 

LSHA 

左算術シフト 

EF1A 

RSHA 

右算術シフト 

EF1B 

NOT 

論理否定 

EF1C 

CONC 

文字列の連結 

EF1D 

LNG 

文字列の長さ 

EF1E 

MID 

部分文字列の取出し 

EF1F 

SIN 

正弦 

EF20 

COS 

余弦 

EF21 

TAN 

正接 

EF22 

ATAN 

逆正接 

EF23 

ATAN2 

逆正接(2引き数) 

EF24 

LN 

自然対数 

EF25 

EXP 

指数 

EF26 

SQRT 

平方根 

EF27 

NEG 

2の補数 

EF28 

ABS 

絶対値 

EF29 

SGN 

符号判定 

EF2A 

INT 

整数化 

EF2B 

INT1 

1バイト 整数化 


B 8440-1995  

コード 

表記 

機能 

EF2C 

INT2 

2バイト 整数化 

EF2D 

INT4 

4バイト 整数化 

EF2E 

REAL 

実数化 

EF2F 

REAL4 

4バイト 実数化 

EF30 

REAL8 

8バイト 実数化 

EF31 

SEPS 

近似比較パラメタ (

定 

EF32 

EPS 

近似比較パラメタ (

出し 

EF33 

PI 

円周率 

EF34 

DEGRAD 

度・ラジアン変換 

EF35 

RADDEG 

ラジアン・度変換 

EF36 

VLEN 

ベクトル長 

EF37 

VADD 

ベクトルの和 

EF38 

VSUB 

ベクトルの差 

EF39 

VTIMES 

ベクトルのスカラ倍 

EF3A 

VPRODI 

ベクトルの内積 

EF3B 

VPRODO 

ベクトルの外積 

EF3C 

TPROD 

同次変換の積 

EF3D 

TINV 

同次変換の逆変換 

EF3E 

TPRODV 

同次変換とベクトルの積 

EF3F 

TRN 

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

EF40 

PNT 

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

EF41 

LOC 

ポーズの位置成分取出し 

EF42 

DEV 

ポーズの並進変換 

EF43 

DEVH 

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

EF44 

PADD 

ポーズの加算 

EF45 

PSUB 

ポーズの減算 

EF46 

CONSP 

ポーズデータの構成 

EF47 

DESTP 

ポーズデータの分解 

EF48 

CONSV 

ベクトルの構成 

EF49 

DESTV 

ベクトルの分解 

EF4A 

CONSA 

配列の構成 

EF4B 

DESTA 

配列の分解 

EF4C 

CONSU 

利用者コードの構成 

EF4D 

DESTU 

利用者コードの分解 

EF4E 

DUP 

スタックトップのコピー 

EF4F 

DROP 

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

EF50 

EXCH 

スタックトップの入替え 

EF51 

PUSH 

データのプッシュ 

EF52 

POP 

データのポップアップ 

EF53 

STORE 

代入 

EF54 

EXTB 

バイト抽出 

EF55 

EMBB 

バイト埋込み 

EF56 

EXTE 

要素抽出 

EF57 

EMBE 

要素埋込み 

EF58 

BRA 

相対分岐(3) 

EF59 

BRF 

偽条件相対分岐(3) 

EF5A 

BRT 

真条件相対分岐(3) 

EF5B 

RET 

復帰(3) 

EF5C 

END 

関数宣言の終わり(3) 

EF5D 

NESTIN 

入れ子構造の設定 

EF5E 

NESTOUT 

入れ子構造からの復帰 


B 8440-1995  

コード 

表記 

機能 

EF5F 

NPUSH 

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

EF60 

NPOP 

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

EF61 

DCL 

変数宣言 

EF62 

FREE 

変数の解放 

EF63 

VAR 

DCL,FREEの始まり 

EF64 

FDEF 

関数定義の始まり 

EF65 

BAL 

サブルーチンの呼出し 

EF66 

GRET 

関数実行の強制終了 

EF67 

ALLOC 

領域の割付け 

EF68 

ALLOCZ 

領域の割付け 

EF69 

ACLR 

領域のクリア 

EF6A 

ARELS 

領域の解放 

EF6B 

ASIZE 

領域のサイズを得る 

EF6C 

VERID 

STROLICのバージョンIDを得る 

EF6D 

SYSID 

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

EF6E 

INIT 

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

EF6F 

TRON 

トレース開始 

EF70 

TROFF 

トレース終了 

EF71 

TRACE 

トレース 

EF72 

SYNC 

同期 

EF73 

ACK 

肯定的応答 

EF74 

NAK 

否定的応答 

EF75 

RESULT 

結果要求 

EF76 

FXQT 

関数の起動 

EF77 

TXQT 

タスクの起動 

EF78 

FPREDC 

関数の実行優先度 

EF79 

TPRECD 

タスクの実行優先度 

EF7A 

FCYCLE 

関数の周期起動指定 

EF7B 

TCYCLE 

タスクの周期起動指定 

EF7C 

FDONE 

関数の終了判定 

EF7D 

TDONE 

タスクの終了判定 

EF7E 

FKILL 

関数の強制終了 

EF7F 

TKILL 

タスクの強制終了 

EF80 

FSUSPEND 

関数の強制中断 

EF81 

TSUSPEND 

タスクの強制中断 

EF82 

FRESUME 

関数の強制再開 

EF83 

TRESUME 

タスクの強制再開 

EF84 

LOCK 

競合資源のロック 

EF85 

UNLOCK 

競合資源のロック解除 

EF86 

EWAIT 

事象の待合わせ 

EF87 

EWAITA 

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

EF88 

EWAITO 

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

EF89 

EPOP 

事象の取出し 

EF8A 

ESIG 

事象の発生 

EF8B 

ECLR 

事象のクリア 

EF8C 

CHIN 

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

EF8D 

CHOUT 

チャネルへのデータ出力 

EF8E 

SHARE 

共有変数の宣言 

EE00 

TIME 

時刻 

EE01 

DATE 

日付 

EE02 

CLOCK 

時計 


10 

B 8440-1995  

コード 

表記 

機能 

EE03 

STIME 

時刻の設定 

EE04 

SDATE 

日付の設定 

EE05 

CLRCLK 

内部時計のクリア 

EE06 

PACKTM 

時刻要素データのまとめ 

EE07 

UNPKTM 

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

EE08 

PACKDT 

日付要素データのまとめ 

EE09 

UNPKDT 

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

EE0A 

CNFG 

通信ポートの設定 

EE0B 

DOUT 

出力ポートへの出力 

EE0C 

DIN 

入力ポートからの入力 

EE0D 

IOWAIT 

入力条件待ち 

EE0E 

ACT 

割込みの活性化 

EE0F 

ACTRS 

割込みの不活性化 

EE10 

REACT 

割込みの再活性化 

EE11 

ACTCODE 

割込みコードの定義 

EE12 

ACTION 

割込み処理の定義 

EE13 

TIMER 

タイマ割込みの設定 

EE14 

RTIMER 

タイマ割込みの再設定 

EE15 

TACTION 

タイマ割込み処理の定義 

EE16 

FSTAT 

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

EE17 

OUTPUT 

ファイルへの書出し 

EE18 

INPUT 

ファイルの読込み 

EE19 

LOUTPUT 

ファイルの1行書出し 

EE1A 

LINPUT 

ファイルの1行読込み 

EE1B 

FOPEN 

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

EE1C 

FCLOSE 

ファイルのクローズ 

EE1D 

PUTC 

1文字出力 

EE1E 

GETC 

1文字入力 

EE1F 

DECODE1 

文字列の分解(BASIC形式) 

EE20 

ENCODE1 

文字列の構成(BASIC形式) 

EE21 

DECODE2 

文字列の分解(C形式) 

EE22 

ENCODE2 

文字列の構成(C形式) 

ED00 

JSPEED 

関節速度指定 

ED01 

SPEED 

手先速度指定 

ED02 

ACCEL1 

手先加速度指定 

ED03 

ACCEL2 

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

ED04 

DECEL1 

手先減速度指定 

ED05 

DECEL2 

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

ED06 

SCONF 

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

ED07 

SCONF2 

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

ED08 

SCONF3 

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

ED09 

GCONF 

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

ED0A 

GCONF2 

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

ED0B 

GCONF3 

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

ED0C 

HERE 

現在ポーズの取込み 

ED0D 

JHERE 

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

ED0E 

CALIB 

キャリブレーション 

ED0F 

PAUSE 

中断 

ED10 

DELAY 

時間待ち 

ED11 

AJMOVE 

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

ED12 

IJMOVE 

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


11 

B 8440-1995  

コード 

表記 

機能 

ED13 

ALMOVE 

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

ED14 

ILMOVE 

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

ED15 

HMOVE 

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

ED16 

CMOVE1 

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

ED17 

CMOVE3 

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

ED18 

ADRIVE 

関節角絶対位置移動 

ED19 

IDRIVE 

関節角相対位置移動 

ED1A 

SACC 

近傍精度設定 

ED1B 

GACC 

近傍精度参照 

ED1C 

$WAIT 

ロボットの動作完了待ち 

ED1D 

$DONE 

ロボットの動作完了判定 

ED1E 

HANDOPEN 

ハンドを開く 

ED1F 

HANDCLOSE 

ハンドを閉じる 

ED20 

GRASP 

握る 

ED21 

HANDDEF 

ハンドの定義 

ED22 

HANDREF 

ハンド定義の参照 

ED23 

HANDCHG 

ハンドの交換 

注(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に示す。 


12 

B 8440-1995  

表2 基本データタグ 

タグ 

表記 

意味 

F0 

評価抑制子 

F1 

I1 

1バイト整数 

F2 

I2 

2バイト整数 

F3 

-- 

予約 

F4 

I4 

4バイト整数 

F5 

R4 

4バイト実数 

F6 

R8 

8バイト実数 

F7 

Rf 

間接参照 

F8 

-- 

予約 

F9 

Ar 

配列 

FA 

St 

文字列 

FB 

Rd 

レコード 

FC 

-- 

予約 

FD 

Fn 

関数 

FE 

(Mc) 

予約(機械語関数) 

FF 

ext 

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

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

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

表3 拡張データタグ 

タグ 

表記 

意味 

FF01 

Vec 

ベクトル 

FF02 

Trn 

同次変換 

FF03 

-- 

予約 

FF04 

Pm 

点(マシン表現)

FF05〜FF7F 

 

予約 

FF80〜FFFF 

 

利用者拡張用 

 

関連規格 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 


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. 丸めの処理 関数の引き数が整数として意味をもつ場合,実引き数が実数ならば,特別の規定のない

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

 


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による割算 

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

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

・ データの型の不一致 

・ 未定義のデータ 

・ その他の計算機エラー 

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

・ 動作領域外 

・ 速度過大 

・ その他のエラー 

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

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

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

・ 非常停止 

・ サーボエラー 

・ 通信エラー 

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

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

る。 

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


15 

B 8440-1995  

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

 

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

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

コード 

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

表記 

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

機能 

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

呼出形式 

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

結果 

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

入力 

引き数の型及び意味 

出力 

結果の型及び意味 

説明 

機能の詳細説明 

例外 

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

備考 

その他の補足的事項 

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

例 

コード 

項目 

記述 

EF01 

表記 

SUB 

 

機能 

減算 (subtract) 

呼出形式 
結果 

a b SUB 

入力 
出力 

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

説明 

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

c=a−b 

例外 

 

備考 

 

読み方 呼出形式の例 (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も数値であり,その型は混合演算の結果として得られる型となる。入力の型,

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


16 

B 8440-1995  

附属書1表1 組込関数 

コード 

EF00 

表記 

ADD 

 

 

 

 

機能 

加算 (add) 

 

 

 

 

 

 

呼出形式 

a b ADD 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I1,I2,I4,R4,R8 

 

 

 

 

 

 

説明 

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

c=a+b 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF01 

表記 

SUB 

 

 

 

 

機能 

減算 (subtract) 

 

 

 

 

 

 

呼出形式 

a b SUB 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I1,I2,I4,R4,R8 

 

 

 

 

 

 

説明 

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

c=a−b 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF02 

表記 

MUL 

 

 

 

 

機能 

乗算 (multiply) 

 

 

 

 

 

 

呼出形式 

a b MUL 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I1,I2,I4,R4,R8 

 

 

 

 

 

 

説明 

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

c=a×b 

 

 

 

 

例外 

 

 

 

 

 

 

 


17 

B 8440-1995  

備考 

 

 

 

コード 

EF03 

表記 

DIV 

 

 

 

 

機能 

除算 (divide) 

 

 

 

 

 

 

呼出形式 

a b DIV 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :R8 

 

 

 

 

 

 

説明 

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

c=a÷b 

 

 

 

 

 

 

例外 

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

 

 

 

 

備考 

 

 

 

コード 

EF04 

表記 

PWR 

 

 

 

 

機能 

べき乗 (power) 

 

 

 

 

 

 

呼出形式 

a b PWR 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I1,I2,I4,R4,R8 

 

 

 

 

 

 

説明 

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

c=ab 

 

 

 

 

 

 

例外 

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

 

 

 

 

 

 

備考 

 

 

 

コード 

EF05 

表記 

MOD 

 

 

 

 

機能 

剰余 (modulo) 

 

 

呼出形式 

a b MOD 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

c :I1,I2,I4 

 

 

 

 

 

 

説明 

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

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

 

 

 

 

 

 

例外 

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

 

 

 

 

 

 

備考 

剰余の符号 

 

 


18 

B 8440-1995  

 

 

コード 

EF06 

表記 

IDIV 

 

 

 

 

機能 

整数除算 (integer divide) 

 

 

 

 

 

 

呼出形式 

a b IDIV 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

c :I1,I2,I4 

 

 

 

 

 

 

説明 

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

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

 

 

 

 

 

 

例外 

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

 

 

 

 

 

 

備考 

整数除算の符号 

 

 

 

 

コード 

EF07 

表記 

INC 

 

 

 

 

機能 

1増加 (increment) 

 

 

 

 

 

 

呼出形式 

a INC 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 

 

 

出力 

b :I1,I2,I4 

 

 

 

 

 

 

説明 

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

b=a+1 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

結果bの型は,入力aと同じとする。 
正の最大値をINCすると,結果は負の最大値となる。 

 

 

コード 

EF08 

表記 

DEC 


19 

B 8440-1995  

 

 

 

 

機能 

1減少 (decrement) 

 

 

 

 

 

 

呼出形式 

a DEC 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 

 

 

出力 

b :I1,I2,I4 

 

 

 

 

 

 

説明 

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

b=a−1 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

結果bの型は入力aと同じとする。 
負の最大値をDECすると,結果は正の最大値となる。 

 

 

コード 

EF09 

表記 

EQU 

 

 

 

 

機能 

比較・等しい (equal) 

 

 

 

 

 

 

呼出形式 

a b EQU 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I2 (論理値) 

 

 

 

 

 

 

説明 

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

a=bのとき c=真 
a≠bのとき c=偽 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

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

コード 

EF0A 

表記 

NEQ 

 

 

 

 

機能 

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

 

 

 

 

 

 

呼出形式 

a b NEQ 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I2 (論理値) 

 

 

 

 

 

 

説明 

スタック上の二つの数の比較を行い,結果をスタックへ置く。 
a≠bのとき c=真 
a=bのとき c=偽 

 

 

 

 

 

 


20 

B 8440-1995  

例外 

 

 

 

 

 

 

 

備考 

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

コード 

EF0B 

表記 

LEQ 

 

 

 

 

機能 

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

 

 

 

 

 

 

呼出形式 

a b LEQ 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I2 (論理値) 

 

 

 

 

 

 

説明 

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

a≦bのとき c=真 
a>bのとき c=偽 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF0C 

表記 

GEQ 

 

 

 

 

機能 

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

 

 

 

 

 

 

呼出形式 

a b GEQ 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I2 (論理値) 

 

 

 

 

 

 

説明 

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

a≧bのとき c=真 
a<bのとき c=偽 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF0D 

表記 

LT 

 

 

 

 

機能 

比較・小さい (less than) 

 

 

 

 

 

 

呼出形式 

a b LT 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I2 (論理値) 

 

 


21 

B 8440-1995  

 

 

 

 

説明 

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

a<bのとき c=偽 
a≧bのとき c=偽 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF0E 

表記 

GT 

 

 

 

 

機能 

比較・大きい (greater than) 

 

 

 

 

 

 

呼出形式 

a b GT 

 

 

結果 

 

 

 

 

 

 

入力 

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

 

 

出力 

c :I2 (論理値) 

 

 

 

 

 

 

説明 

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

a>bのとき c=真 
a≦bのとき c=偽 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF0F 

表記 

AEQ 

 

 

 

 

機能 

近似比較 (approximately equal) 

 

 

 

 

 

 

呼出形式 

a b AEQ 

 

 

結果 

 

 

 

 

 

 

入力 

a :R4,R8 
b :R4,R8 

 

 

出力 

c :I2 (論理値) 

 

 

 

 

 

 

説明 

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

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

|a−b|<

真 

|a−b|≧

偽 

 

 

例外 

 

 

 

 

 

 

 

備考 

近似の許容範囲

定には,関数SEPSを用いる。 

 

 

コード 

EF10 

表記 

CPL 

 

 

 

 

機能 

1の補数 (complement) 

 

 

 

 

 

 

呼出形式 

a CPL 

 

 

結果 

 

 

 

 

 

 


22 

B 8440-1995  

入力 

a :I1,I2,I4 

 

 

出力 

b :I1,I2,I4 

 

 

 

 

 

 

説明 

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

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF11 

表記 

AND 

 

 

 

 

機能 

論理積 (bitwise AND) 

 

 

 

 

 

 

呼出形式 

a b AND 

 

 

結果 

 

 

 

 

 

 

入力 

b :I1,I2,I4 

 

 

出力 

c :I1,I2,I4 

 

 

 

 

 

 

説明 

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

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF12 

表記 

OR 

 

 

 

 

機能 

論理和 (bitwise OR) 

 

 

 

 

 

 

呼出形式 

a b OR 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

c :I1,I2,I4 

 

 

 

 

 

 

説明 

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

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF13 

表記 

XOR 

 

 

 

 

機能 

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

 

 

 

 

 

 

呼出形式 

a b XOR 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

c :I1,I2,I4 

 

 

 

 

 

 

説明 

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

 

 


23 

B 8440-1995  

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF14 

表記 

BSET 

 

 

 

 

機能 

ビットセット (bit set) 

 

 

 

 

 

 

呼出形式 

a b BSET 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

c :I1,I2,I4 

 

 

 

 

 

 

説明 

入力aの第bビットを1にして,結果をスタックへ置く。 
bの示すビット位置は,aの中に含まれていなくてはならない。 
出力cの型は,aの型と同一である。 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

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

コード 

EF15 

表記 

BCLR 

 

 

 

 

機能 

ビットクリア (bit clear) 

 

 

 

 

 

 

呼出形式 

a b BCLR 

 

 

結果 

 

 

 

 

 

 

入力 

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 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

c :I2 (論理値) 

 

 

 

 

 

 

説明 

入力aの第bビットが1なら1を,0なら0をスタックへ置く。 
bの示すビット位置は,aの中になくてはならない。 

 

 


24 

B 8440-1995  

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

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

 

 

コード 

EF17 

表記 

LSH 

 

 

 

 

機能 

左論理シフト (left shift logical) 

 

 

 

 

 

 

呼出形式 

a b LSH 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

c :I1,I2,I4 

 

 

 

 

 

 

説明 

入力aをbビットだけ左論理シフトし,結果をスタックへ置く。 
bが負の値をもつときは,右論理シフトが行われる。 
出力cの型は,aと同じである。 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

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

 

 

コード 

EF18 

表記 

RSH 

 

 

 

 

機能 

右論理シフト (right shift logical) 

 

 

 

 

 

 

呼出形式 

a b RSH 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

c :I1,I2,I4 

 

 

 

 

 

 

説明 

入力aをbビットだけ右論理シフトし,結果をスタックへ置く。 
bが負の値をもつときは,左論理シフトが行われる。 
cの型は,aと同じである。 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

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

 

 

コード 

EF19 

表記 

LSHA 

 

 

 

 

機能 

左算術シフト (left shift arithmetic) 

 

 

 

 

 

 

呼出形式 

a b LSHA 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

c :I1,I2,I4 

 

 

 

 

 

 

説明 

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

 


25 

B 8440-1995  

bが負の値をもつときは,右算術シフトが行われる。 
cの型は,aと同一となる。 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

aがnビットの場合,b≧nであれば,左へのシフトならcの符号ビットはaと同じで,符号ビット以
外はすべて0となる。 
右へのシフトでは,全ビットがaの符号ビットと同じとなる。 

コード 

EF1A 

表記 

RSHA 

 

 

 

 

機能 

右算術シフト (right shift arithmetic) 

 

 

 

 

 

 

呼出形式 

a b RSHA 

 

 

結果 

 

 

 

 

 

 

入力 

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 

 

 

結果 

 

 

 

 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

b :I2 (論理値) 

 

 

 

 

 

 

説明 

入力aを論理否定し,結果をスタックへ置く。 
aが0の値をもつときは,真,0以外のときは,偽となる。 

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF1C 

表記 

CONC 

 

 

 

 

機能 

文字列の連結 (concatenate) 

 

 

 

 

 

 

呼出形式 

a b CONC 

 

 

結果 

 

 

 

 

 

 

入力 

a b :St 

 

 

出力 

c   :St 

 

 


26 

B 8440-1995  

 

 

 

 

説明 

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

 

 

 

 

 

 

例外 

 

 

 

 

 

 

 

備考 

 

 

 

コード 

EF1D 

表記 

LNG 

機能 

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

 

 

呼出形式 

a LNG 

 

 

結果 

 

 

入力 

a :St 

 

 

出力 

b :I1,I2,I4 

 

 

説明 

文字列aの長さを返す。 

 

 

例外 

 

 

 

備考 

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

コード 

EF1E 

表記 

MID 

機能 

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

 

 

呼出形式 

a b c MID 

 

 

結果 

 

 

入力 

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 

表記 

SIN 

機能 

正弦 (sine) 

 

 

呼出形式 

a SIN 

 

 

結果 

 

 

入力 

a :R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

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

b=sin a 

 

 

例外 

 

 

 

備考 

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

 

 

コード 

EF20 

表記 

COS 

機能 

余弦 (cosine) 

 

 

呼出形式 

a COS 

 

 

結果 

 

 

入力 

a :R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

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

b=cos a 

 

 

例外 

 

 

 

備考 

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

 

 

コード 

EF21 

表記 

TAN 

機能 

正接 (tangent) 

 

 

呼出形式 

a TAN 

 

 


27 

B 8440-1995  

結果 

 

 

入力 

a :R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

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

b=tan a 

 

 

例外 

 

 

 

備考 

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

 

 

コード 

EF22 

表記 

ATAN 

機能 

逆正接 (arctangent) 

 

 

呼出形式 

a ATAN 

 

 

結果 

 

 

入力 

a :R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

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

b=tan−1a(ただし,

2

2

b

) 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF23 

表記 

ATAN2 

機能 

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

 

 

呼出形式 

a b ATAN2 

 

 

結果 

 

 

入力 

a :R4,R8(Y座標) 
b :R4,R8(X座標) 

 

 

出力 

c :R4,R8 

 

 

説明 

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

c=tanー1ba       (b>0のとき) 

c=SGN (a) ×

tan−1ba(b<0のとき) 

c=SGN (a) ×2

瀀

b=0のとき) 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF24 

表記 

LN 

機能 

自然対数 (natural logarithm) 

 

 

呼出形式 

a LN 

 

 

結果 

 

 

入力 

a :R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

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

b=log a 

 

 

例外 

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

 

 

備考 

 

 

 

コード 

EF25 

表記 

EXP 

機能 

指数 (exponential) 

 

 

呼出形式 

a EXP 

 

 

結果 

 

 

入力 

a :R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

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

b=ea 

 

 

例外 

 

 

 

備考 

 

 

 


28 

B 8440-1995  

コード 

EF26 

表記 

SQRT 

機能 

平方根 (square root) 

 

 

呼出形式 

a SQRT 

 

 

結果 

 

 

入力 

a :R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

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

b=a 

 

 

例外 

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

 

 

備考 

 

 

 

コード 

EF27 

表記 

NEG 

機能 

2の補数 (negate) 

 

 

呼出形式 

a NEG 

 

 

結果 

 

 

入力 

a :I1,I2,I4 

 

 

出力 

b :I1,I2,I4 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF28 

表記 

ABS 

機能 

絶対値 (absolute value) 

 

 

呼出形式 

a ABS 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

b :I1,I2,I4,R4,R8 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF29 

表記 

SGN 

機能 

符号判定 (sign) 

 

 

呼出形式 

a SGN 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

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

 

 

説明 

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

aが正のとき b=1 
aが0のとき b=0 
aが負のとき b=−1 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF2A 

表記 

INT 

機能 

整数化 (convert to integer) 

 

 

呼出形式 

a INT 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

b :I1,I2,I4 

 

 

説明 

スタック上の数値を整数化し,結果をスタックへ置く。 
結果の型は,必要最小限のものが選ばれる。 

 

 

例外 

 

 

 

備考 

整数化とは,その数を超えない最大の整数を求めることである。 
オーバフローした場合は,aと同符号のI4の最大値とする。 

 

 


29 

B 8440-1995  

コード 

EF2B 

表記 

INT1 

機能 

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

 

 

呼出形式 

a INT1 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

b :I1 

 

 

説明 

スタック上の数値を1バイト整数化し,結果をスタックへ置く。 
整数化した結果が1バイトに収まらないときは,下位1バイトが取られる。 

例外 

 

 

 

備考 

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

 

 

コード 

EF2C 

表記 

INT2 

機能 

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

 

 

呼出形式 

a INT2 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

b :I2 

 

 

説明 

スタック上の数を2バイト整数化し,結果をスタックへ置く。 
整数化した結果が2バイトに収まらないときは,下位2バイトが取られる。 

例外 

 

 

 

備考 

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

 

 

コード 

EF2D 

表記 

INT4 

機能 

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

 

 

呼出形式 

a INT4 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

b :I4 

 

 

説明 

スタック上の数を4バイト整数化し,結果をスタックへ置く。 
整数化した結果が4バイトに収まらないときは,下位4バイトが取られる。 

例外 

 

 

 

備考 

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

 

 

コード 

EF2E 

表記 

REAL 

機能 

実数化 (convert to real) 

 

 

呼出形式 

a REAL 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

スタック上の数を実数化し,結果をスタックへ置く。 
aが整数の場合,bはR4となる。 
aがR4,R8の場合は,そのままbとなる。 

例外 

 

 

 

備考 

 

 

 

コード 

EF2F 

表記 

REAL4 

機能 

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

 

 

呼出形式 

a REAL4 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

b :R4 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

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

 

 

コード 

EF30 

表記 

REAL8 

機能 

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

 

 


30 

B 8440-1995  

呼出形式 

a REAL8 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 

 

 

出力 

b :R8 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF31 

表記 

SEPS 

機能 

近似比較パラメタ (

定 (set epsilon value) 

 

 

呼出形式 

a SEPS 

 

 

結果 

なし 

 

 

入力 

a :R4,R8 

 

 

出力 

 

 

 

説明 

近似比較パラメタ (

‰銊

定する。 

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

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF32 

表記 

EPS 

機能 

近似比較パラメタ (

出し (get epsilon value) 

 

 

呼出形式 

EPS 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

a :R8 

 

 

説明 

近似比較パラメタ (

‰銊

み出して,結果をスタックに置く。 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF33 

表記 

PI 

機能 

円周率 (get pi value) 

 

 

呼出形式 

PI 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :R8 

 

 

説明 

円周率

り出し,スタックに置く。 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF34 

表記 

DEGRAD 

機能 

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

 

 

呼出形式 

a DEGRAD 

 

 

結果 

 

 

入力 

a :R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

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

例外 

 

 

 

備考 

 

 

 

コード 

EF35 

表記 

RADDEG 

機能 

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

 

 

呼出形式 

a RADDEG 

 

 

結果 

 

 

入力 

a :R4,R8 

 

 

出力 

b :R4,R8 

 

 

説明 

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

例外 

 

 

 


31 

B 8440-1995  

備考 

 

 

 

コード 

EF36 

表記 

VLEN 

機能 

ベクトル長 (vector length) 

 

 

呼出形式 

a VLEN 

 

 

結果 

 

 

入力 

a :Vec 

 

 

出力 

b :R4 

 

 

説明 

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

)

(

2

2

2

z

y

x

b=

 

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

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF37 

表記 

VADD 

機能 

ベクトルの和 (vector add) 

 

 

呼出形式 

a b VADD 

 

 

結果 

 

 

入力 

a :Vec 
b :Vec 

 

 

出力 

c :Vec 

 

 

説明 

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

c=a+b 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF38 

表記 

VSUB 

機能 

ベクトルの差 (vector subtract) 

 

 

呼出形式 

a b VSUB 

 

 

結果 

 

 

入力 

a :Vec 
b :Vec 

 

 

出力 

c :Vec 

 

 

説明 

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

c=a−b 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF39 

表記 

VTIMES 

機能 

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

 

 

呼出形式 

a b VTIMES 

 

 

結果 

 

 

入力 

a :Vec 
b :I1,I2,I4,R4,R8 

 

 

出力 

c :Vec 

 

 

説明 

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

c=b・a 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF3A 

表記 

VPRODI 

機能 

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

 

 

呼出形式 

a b VPRODI 

 

 

結果 

 

 

入力 

a :Vec 

 

 


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 

表記 

VPRODO 

機能 

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

 

 

呼出形式 

a b VPRODO 

 

 

結果 

 

 

入力 

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の各
成分を表す。 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF3C 

表記 

TPROD 

機能 

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

 

 

呼出形式 

a b TPROD 

 

 

結果 

 

 

入力 

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

 

 

出力 

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

 

 

説明 

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

C=A×B 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF3D 

表記 

TINV 

機能 

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

 

 

呼出形式 

a TINV 

 

 

結果 

 

 

入力 

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

 

 

出力 

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

 

 

説明 

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

B=A−1 

 

例外 

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

備考 

数学的には同次変換行列には逆行列は必ず存在するが,行列Aが同次変換行列になっていない,又は
計算上の誤差によって,逆行列が求められないことがある。停止以外の処理としては,次のものが考
えられる。 
① 警告をだす(続行可能) 
② 疑似逆行列で代用する 

コード 

EF3E 

表記 

TPRODV 

機能 

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


33 

B 8440-1995  

呼出形式 

a b TPRODV 

 

 

結果 

 

 

入力 

a :Trn(行列A) 
b :Vec(ベクトルb) 

 

 

出力 

c :Vec(ベクトルc) 

 

 

説明 

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

c=A・b 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF3F 

表記 

TRN 

機能 

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

呼出形式 

a TRN 

 

 

結果 

 

 

入力 

a :Pm 

 

 

出力 

b :Trn 

 

 

説明 

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

 

例外 

 

 

 

備考 

 

 

 

コード 

EF40 

表記 

PNT 

機能 

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

呼出形式 

a PNT 

 

 

結果 

 

 

入力 

a :Trn(行列A) 

 

 

出力 

b :Pm 

 

 

説明 

同次変換行列Aのデータをもとに,ポーズデータbを作る。 
ポーズデータを決定するために必要なその他の情報は,現在の状態のコンフィギュレーション情報を
用いる。 

例外 

 

 

 

備考 

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

コード 

EF41 

表記 

LOC 

機能 

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

 

 

呼出形式 

a LOC 

 

 

結果 

 

 

入力 

a :Pm 

 

 

出力 

b :Vec 

 

 

説明 

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

例外 

 

 

 

備考 

 

 

 

コード 

EF42 

表記 

DEV 

機能 

ポーズの並進変換 (deviation) 

 

 

呼出形式 

a b DEV 

 

 

結果 

 

 

入力 

a :Pm 
b :Vec 

 

 

出力 

c :Pm 

 

 

説明 

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

例外 

 

 

 

備考 

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

コード 

EF43 

表記 

DEVH 

機能 

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

 

 

呼出形式 

a b DEVH 

 

 


34 

B 8440-1995  

結果 

 

 

入力 

a :Tm 
b :Vec 

 

 

出力 

c :Tm 

 

 

説明 

ポーズaに,ツール(ハンド)座標系による並進偏差bを施して得られるポーズをつくり,結果をス
タックへ置く。 
ツール座標系は,現在組み付けられているハンドのものを用いる。 

例外 

 

 

 

備考 

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

 

コード 

EF44 

表記 

PADD 

機能 

ポーズの加算 (pose add) 

 

 

呼出形式 

a b PADD 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

a1,…,an :任意の型  要素データ 
n     :I1,I2,I4 要素データ数 

 

 

出力 

b     :Pm 

 

 

説明 

スタック上の要素データa1,…,anを使ってポーズデータbを作り,結果をスタックへ置く。 
要素データの数,型及び順序は,処理系定義であるポーズデータの構造に従う。 

例外 

 

 

 

備考 

 

 

 

コード 

EF47 

表記 

DESTP 

機能 

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

 

 


35 

B 8440-1995  

呼出形式 

a DESTP 

 

 

結果 

b1 … bn n 

 

 

入力 

a      :Pm 

 

 

出力 

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

 

 

説明 

スタック上のポーズデータaを要素データb1,…,bnに分解し,結果をスタックへ置く。 
スタックトップには要素数nが置かれる。 
要素データの数,型及び順序は,処理系定義であるポーズデータの構造に従う。 

例外 

 

 

 

備考 

 

 

 

コード 

EF48 

表記 

CONSV 

機能 

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

 

 

呼出形式 

a b c CONSV 

 

 

結果 

 

 

入力 

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

 

 

出力 

d    :Vec 

 

 

説明 

スタック上の三つの数値から,aをx成分,bをy成分,cをz成
分とするベクトルデータdをつくり,結果をスタックへ置く。 

 

 

例外 

 

 

 

備考 

ベクトルの要素を整数型データで与えてもよい。この場合には,
実数に変換して処理する。 

 

 

コード 

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 

 

 

結果 

 

 

入力 

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

:I1,I2,I4 要素の数 

t  

:タグ 要素型を示すタグ 

 

 

出力 

b  

:Ar 

 

 

説明 

スタック上の要素データa1,…,anを使って配列データbを作り,結果をスタックへ置く。 
要素数nは,スタック上にある要素データの数を示す。 
タグtは,配列要素の型を示す。各々の配列要素は,指定された要素型に合わせて必要に応じて変換
される。 

例外 

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

 

備考 

 

 

 

コード 

EF4B 

表記 

DESTA 

機能 

配列の分解 (destruction of an array) 

 

 

呼出形式 

a DESTA 

 

 

結果 

b1 … bn n 

 

 

入力 

a  

 :Ar 

 

 

出力 

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

 :I1,I2,I4 要素数 

 

 

説明 

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

 

 


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 

 

 

結果 


利用者コード 

 

 

入力 

a :U 

 

 

出力 

b :I2,I4 コード値 

 

 

説明 

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

例外 

 

 

 

備考 

 

 

 

コード 

EF4E 

表記 

DUP 

機能 

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

 

 

呼出形式 

a DUP 

 

 

結果 

a a 

 

 

入力 

a :任意の型のデータ 

 

 

出力 

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

 

 

説明 

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

 

 

例外 

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

 

 

備考 

 

 

 

コード 

EF4F 

表記 

DROP 

機能 

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

 

 

呼出形式 

a DROP 

 

 

結果 

なし 

 

 

入力 

a :任意の型のデータ 

 

 

出力 

 

 

 

説明 

スタックの一番上にあるデータを一つ取り去る。 
スタックが空の場合は,何もしない。 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF50 

表記 

EXCH 

機能 

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

 

 

呼出形式 

a b EXCH 

 

 

結果 

c d 

 

 

入力 

a :任意の型のデータ 
b :任意の型のデータ 

 

 

出力 

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

 

 

説明 

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

 

 


37 

B 8440-1995  

スタックには,二つ以上のデータがなくてはならない。 
一つ以下のときは,何もしない。 

例外 

 

 

 

備考 

 

 

 

コード 

EF51 

表記 

PUSH 

機能 

データのプッシュ (push) 

 

 

呼出形式 

#a PUSH 

 

 

結果 

 

 

入力 

a :U 

 

 

出力 

b :任意の型のデータ 

 

 

説明 

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

例外 

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

備考 

 

 

 

コード 

EF52 

表記 

POP 

機能 

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

 

 

呼出形式 

a #b POP 

 

 

結果 

なし 

 

 

入力 

a :任意の型のデータ 
b :U 

 

 

出力 

 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

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

#b a STORE 

 

 

コード 

EF53 

表記 

STORE 

機能 

代入 (store) 

 

 

呼出形式 

#a b STORE 

 

 

結果 

なし 

 

 

入力 

a :U 
b :任意の型のデータ 

 

 

出力 

 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

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

b #a POP 

 

 

コード 

EF54 

表記 

EXTB 

機能 

バイト抽出 (extract bytes) 

 

 

呼出形式 

#a b #c EXT 

 

 

結果 

 

 

入力 

a :U 
b :I1,I2,I4 
c :データタグT 

 

 

出力 

d :c型の値 

 

 

説明 

利用者コードaのデータのbバイト目から,cで決まる数のデータを取り出し,タグcをつけて,c型
のデータとしてスタックに置く。 
取り出すデータは,利用者コードaに割り付けられた領域内に納まっていなくてはならない。 

例外 

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

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

・ 

b<0のとき。 

・ 

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

備考 

 

 

 

コード 

EF55 

表記 

EMBB 


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 

 

 

結果 

 

 

入力 

a :U 利用者コード 
b :I1,I2,I4 要素の位置 

 

 

出力 

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

 

 

説明 

利用者コードaのデータのb番目の要素を取り出し,スタックに置く。 
利用者コードは,ここでは,配列,文字列,ベクトル,同次変換のいずれかでなくてはならない。 
bは,要素の位置を表し,最初の要素は,0番目と数える。 
配列の場合は,結果は配列要素の型と同じ型となる。 
文字列の場合は,bバイト目の1バイトが1バイト整数として得られる。 
ベクトル及び同次変換では,結果はR4型となる。 

例外 

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

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

・ 

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

・ 

b<0のとき。 

・ 

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

備考 

 

 

 

コード 

EF57 

表記 

EMBE 

機能 

要素埋込み (embed element) 

 

 

呼出形式 

#a b c EMBE 

 

 

結果 

なし 

 

 

入力 

a :U 

利用者コード 

b :I1,I2,I4 

要素の位置 

c :I1,R4など 

埋め込むデータ 

 

 

出力 

 

 

 

説明 

利用者コードaに代入されているデータのb番目の位置に,cのタグを除いた部分のデータを埋め込
む。 
データ位置は,利用者コードaに割り付けられた領域内に納まらなくてはならない。利用者コードは,
ここでは,配列,文字列,ベクトル,同次変換のいずれかでなくてはならない。 
bは要素の位置を表し,最初の要素は0番目と数える。 
配列の場合は,cは配列要素の型と同じ型でなければならない。 
文字列の場合は,cは1バイトに丸められ,bバイト目の1バイトに埋め込まれる。ただし,cは数値
データでなくてはならない。 
ベクトル及び同次変換の場合は,R4型に変換されて埋め込まれる。ただし,cは数値データでなくて
はならない。 


39 

B 8440-1995  

例外 

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

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

・ 

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

・ 

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

・ 

b<0のとき。 

・ 

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

備考 

 

 

 

コード 

EF58 

表記 

BRA 

機能 

相対分岐 (branch, goto) 

 

 

呼出形式 

a BRA 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4 

 

 

出力 

 

 

 

説明 

関数内で次に実行する命令の位置を,現在の位置からaバイトだけ相対移動する。a=0ならBRAの
直後の命令へ移動する。 
この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。 

例外 

関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。 
移動先が同じ関数内でないとき,プログラム停止となる。 

備考 

 

 

 

コード 

EF59 

表記 

BRF 

機能 

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

 

 

呼出形式 

a b BRF 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

 

 

 

説明 

aの値が0のとき(偽のとき),関数内で次に実行する命令の位置を,現在の位置からbバイトだけ相
対移動する。 
b=0ならBRFの直後の命令へ移動する。 
この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。 

例外 

関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。 
移動先が同じ関数内でないとき,プログラム停止となる。 

備考 

 

 

 

コード 

EF5A 

表記 

BRT 

機能 

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

 

 

呼出形式 

a b BRT 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4 
b :I1,I2,I4 

 

 

出力 

 

 

 

説明 

aの値が1のとき(真のとき),関数内で次に実行する命令の位置を,現在の位置からbバイトだけ相
対移動する。 
b=0ならBRTの直後の命令へ移動する。 
この命令は,関数内でだけ有効であり,移動先も同じ関数内でなくてはならない。 

例外 

関数内でないときの処置は,処理系定義とするが,何もしないこと (no effect) を推奨する。 
移動先が同じ関数内でないとき,プログラム停止となる。 

備考 

 

 

 

コード 

EF5B 

表記 

RET 

機能 

復帰 (return) 

 

 

呼出形式 

RET 

 

 

結果 

なし 

 

 

入力 

 

 

 


40 

B 8440-1995  

出力 

 

 

 

説明 

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

 

 

例外 

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

備考 

 

 

 

コード 

EF5C 

表記 

END 

機能 

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

 

 

呼出形式 

END 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

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

 

例外 

 

 

 

備考 

 

 

 

コード 

EF5D 

表記 

NESTIN 

機能 

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

 

 

呼出形式 

a NESTIN 

 

 

結果 

なし 

 

 

入力 

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

 

 

出力 

 

 

 

説明 

現在の入れ子レベルを保存し,入れ子レベルaの局所変数空間を設定する。 
一番外側の空間は,レベル0とする。 
利用者変数は,指定されている局所変数空間に置かれる。 
レベルnで宣言された利用者変数uが,すでにレベルmでも宣言されていたとき,レベルmの利用者
変数uは,レベルnでは直接には参照されない。 

例外 

 

 

 

備考 

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

コード 

EF5E 

表記 

NESTOUT 

機能 

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

 

 

呼出形式 

NESTOUT 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

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

例外 

 

 

 

備考 

 

 

 

コード 

EF5F 

表記 

NPUSH 

機能 

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

 

 

呼出形式 

#a b NPUSH 

 

 

結果 

 

 

入力 

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

 

 

出力 

c :任意の型のデータ 

 

 

説明 

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

例外 

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

備考 

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

 

 

コード 

EF60 

表記 

NPOP 

機能 

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

 

 

呼出形式 

a #b c NPOP 

 

 

結果 

なし 

 

 

入力 

a :任意の型のデータ 
b :U 

 

 


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 

機能 

変数の解放 (free) 

 

 

呼出形式 

VAR #u1 #u2 … #un FREE 

 

 

結果 

なし 

 

 

入力 

VAR 

:VAR関数コード 

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

 

 

出力 

 

 

 

説明 

利用者コードu1,…,unを変数表から削除する。 
変数表に同一利用者コードui (i=1,…,n) が複数定義されているときは,最近定義されたUiを無効
とし,古い定義を有効とする。 

例外 

 

 

 

備考 

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

 

 

コード 

EF63 

表記 

VAR 

機能 

DCL,FREEの始まり (variable) 

 

 

呼出形式 

VAR 

 

 

結果 

VAR 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

関数のコードVARそのものを,スタック上に置く。 
変数の宣言 (DCL),及び解放 (FREE) をする関数における利用者コードの並びの始まりを示す。 

 

 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF64 

表記 

FDEF 

機能 

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

 

 

呼出形式 

#a FDEF 

 

 

結果 

なし 

 

 

入力 

a :U (利用者コード) 

 

 

出力 

 

 

 

説明 

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

#a FDEF b 

のようになり,関数コードFDEFに続く関数型データb(関数タグFnから始まりENDまでのデータ)
を,スタックを経由せずに直接利用者コードに設定する。 

例外 

 

 

 


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 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 
b :タグ 
c :U (利用者コード) 

 

 

出力 

d :I1,I2,I4 

 

 


43 

B 8440-1995  

d>0のとき,確保した領域の大きさ 
d<0のとき,確保に不足する量 

説明 

関数ALLOCと同様に,領域を確保する。 
さらに,確保した領域を,Nullコードで初期化する。 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF69 

表記 

ACLR 

機能 

領域のクリア (area clear) 

 

 

呼出形式 

#a ACLR 

 

 

結果 

なし 

 

 

入力 

a :U (利用者コード) 

 

 

出力 

 

 

 

説明 

利用者コードaに割り付けられた領域を,Nullコードで初期化する。 
領域が割り付けられていない場合は,何もしない。 

例外 

 

 

 

備考 

 

 

 

コード 

EF6A 

表記 

ARELS 

機能 

領域の解放 (area release) 

 

 

呼出形式 

#a ARELS 

 

 

結果 

なし 

 

 

入力 

a :U (利用者コード) 

 

 

出力 

 

 

 

説明 

利用者コードaに割り付けられた領域を解放する。 
領域が割り付けられていない場合は,何もしない。 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF6B 

表記 

ASIZE 

機能 

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

 

 

呼出形式 

#a ASIZE 

 

 

結果 

 

 

入力 

a :U (利用者コード) 

 

 

出力 

b :I2,I4 

 

 

説明 

利用者コードaに割り付けられた領域のサイズを得る。 
領域が割り付けられていない場合は,−1(I2型)を返す。 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EF6C 

表記 

VERID 

機能 

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

 

 

呼出形式 

VERID 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :St 

 

 

説明 

STROLIC規格のバージョンを識別できるコードを文字列で取り出す。ただし,その文字列の先頭部分
は,次に示す文字列でなくてはならない。 

STROLIC JIS B 8440-1994 

例外 

 

 

 

備考 

 

 

 

コード 

EF6D 

表記 

SYSID 

機能 

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

 

 

呼出形式 

SYSID 

 

 

結果 

 

 

入力 

 

 

 


44 

B 8440-1995  

出力 

a :St 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

取り出される文字列の内容は処理系定義であるが,処理系の名前,バージョン,提供機関,リリース
時期を入れることを推奨する。 

コード 

EF6E 

表記 

INIT 

機能 

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

 

 

呼出形式 

INIT 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

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

例外 

 

 

 

備考 

 

 

 

コード 

EF6F 

表記 

TRON 

機能 

トレースの開始 (trace on) 

 

 

呼出形式 

TRON 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

関数TRACEを参照。 

 

 

コード 

EF70 

表記 

TROFF 

機能 

トレースの終了 (trace off) 

 

 

呼出形式 

TROFF 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

関数TRACEを参照。 

 

 

コード 

EF71 

表記 

TRACE 

機能 

トレース (trace) 

 

 

呼出形式 

a TRACE 

 

 

結果 

なし 

 

 

入力 

a :任意の型 

 

 

出力 

 

 

 

説明 

トレースフラグがオンならaをコンソールに出力する。 
オフなら何も出力しない。 
いずれの場合も,aはスタックから取り除かれる。 
コンソール出力の形式は,処理系定義とする。 

 

 

例外 

 

 

 

備考 

aとして行番号,文番号,ラベルなどを用いると実行のトレース
が,変数の値を用いれば代入のトレースが行える。 

 

 

コード 

EF72 

表記 

SYNC 

機能 

同期 (synchronize) 

 

 

呼出形式 

SYNC 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 


45 

B 8440-1995  

説明 

コントローラと上位計算機との間の同期を行う。 
このコードを実行すると,応答(ACK又はNAK)を上位計算機に送る。 

例外 

 

 

 

備考 

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

 

 

コード 

EF73 

表記 

ACK 

機能 

肯定的応答 (acknowledge) 

 

 

呼出形式 

なし 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

同期 (SYNC) に対する肯定的応答コード。 
このコードは実行されることはなく,単にSTROLICの表現形式で上位計算機に応答するだけである。 

例外 

 

 

 

備考 

ACKとNAKの使い分けについては処理系定義とするが,コントローラが正常状態にあるときは,
ACK,そうでないときは,NAKを応答するという使い方が考えられる。 

コード 

EF74 

表記 

NAK 

機能 

否定的応答 (negative acknowledge) 

 

 

呼出形式 

なし 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

同期 (SYNC) に対する否定的応答コード。 
このコードは実行されることはなく,単にSTROLICの表現形式で上位計算機に応答するだけである。 

例外 

 

 

 

備考 

ACKとNAKの使い分けについては処理系定義とするが,コント
ローラが正常状態にあるときは,ACK,そうでないときは,NAK
を応答するという使い方が考えられる。 

 

 

コード 

EF75 

表記 

RESULT 

機能 

結果要求 (result) 

 

 

呼出形式 

a RESULT 

 

 

結果 

なし 

 

 

入力 

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

 

 

出力 

 

 

 

説明 

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

 

 

例外 

 

 

 

備考 

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

コード 

EF76 

表記 

FXQT 

機能 

関数の起動 (execution of function) 

 

 

呼出形式 

#a b FXQT 

 

 

結果 

 

 

入力 

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

 

 

出力 

c :I2 

 

 

説明 

STROLIC関数aをプロセス番号bで起動する。 
プロセス番号は,正の整数とする。 
出力cは,正常に起動されたとき0,起動に失敗したとき次のエラー番号とする。 
 aが関数でないとき −1 
 システムの制約により起動できないとき −2 

例外 

 

 

 

備考 

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

 

 

コード 

EF77 

表記 

TXQT 

機能 

タスクの起動 (execution of task) 

 

 


46 

B 8440-1995  

呼出形式 

a TXQT 

 

 

結果 

 

 

入力 

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

 

 

出力 

b :I2 

 

 

説明 

タスク番号aで識別されるタスクを起動する。 
タスク番号は,正の整数とする。 
出力bは,正常に起動されたとき0,起動に失敗したとき次のエラー番号とする。 
aがすでに起動されているとき −1 
システムの制約により起動できないとき −2 

例外 

 

 

 

備考 

並行処理機能の一つである。 
タスクについては,使用するマルチタスクOSに依存する。 

 

 

コード 

EF78 

表記 

FPREDC 

機能 

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

 

 

呼出形式 

a b FPRECD 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 タスク番号 
b :I1,I2,I4,R4,R8 優先度 

 

 

出力 

c :I2 

 

 

説明 

タスク番号aで識別されるタスクの実行優先度を指定する。優先度bは,正の整数で値が小さいほど
優先度が高い。 
結果cの値は,次のとおりとする。 
 実行終了のとき 0 
 実行中のとき  1 
 待ち状態のとき 2 

例外 

 

 

 

備考 

並行処理機能の一つである。 
タスク番号については,関数TXQTを参照。 
優先度のデフォルト値は,処理系による。 

 

 

コード 

EF7A 

表記 

FCYCLE 

機能 

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

 

 

呼出形式 

a b FCYCLE 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 プロセス番号 
b :I1,I2,I4,R4,R8 周期起動定数 

 

 


47 

B 8440-1995  

出力 

c :I2 

 

 

説明 

プロセス番号aで識別されるSTROLIC関数の周期起動を指定する。周期起動定数bは,正の整数で0
なら周期起動しない。非0で周期起動の間隔を指定する。 
結果cの値は,次のとおりとする。 
 実行終了のとき 0 
 実行中のとき  1 
 待ち状態のとき 2 

例外 

 

 

 

備考 

並行処理機能の一つである。 
プロセス番号については,関数FXQTを参照。 
周期起動定数の単位は,処理系定義であるがmsecとすることを推奨する。 

コード 

EF7B 

表記 

TCYCLE 

機能 

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

 

 

呼出形式 

a b TCYCLE 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

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

 

 

出力 

b :I2 

 

 

説明 

プロセス番号aで識別されるSTROLIC関数の実行終了を判定する。 
bの値は,次のとおりとする。 
 実行終了のとき 0 
 実行中のとき  1 
 待ち状態のとき 2 
 中断状態のとき 3 

例外 

 

 

 

備考 

並行処理機能の一つである。 
プロセス番号については,関数FXQTを参照。 

 

 

コード 

EF7D 

表記 

TDONE 

機能 

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

 

 

呼出形式 

a TDONE 

 

 

結果 

 

 

入力 

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

 

 

出力 

b :I2 

 

 

説明 

タスク番号aで識別されるタスクの実行終了を判定する。 
bの値は,次のとおりとする。 
 実行終了のとき 0 

 

 


48 

B 8440-1995  

 実行中のとき  1 
 待ち状態のとき 2 
 中断状態のとき 3 

例外 

 

 

 

備考 

並行処理機能の一つである。 
関数TXQTを参照。 

 

 

コード 

EF7E 

表記 

FKILL 

機能 

関数の強制終了 (kill function) 

 

 

呼出形式 

a FKILL 

 

 

結果 

 

 

入力 

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

 

 

出力 

b :I2 

 

 

説明 

プロセス番号aで識別されるSTROLIC関数の実行を強制終了する。 
bの値は,次のとおりとする。 
 強制終了できたとき      0 
 プロセスaが実行中でないとき 1 

例外 

 

 

 

備考 

並行処理機能の1つである。 
プロセス番号については,関数FXQTを参照。 

 

 

コード 

EF7F 

表記 

TKILL 

機能 

タスクの強制終了 (kill task) 

 

 

呼出形式 

a TKILL 

 

 

結果 

 

 

入力 

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

 

 

出力 

b :I2 

 

 

説明 

タスク番号aで識別されるタスクの実行を強制終了する。 
bの値は,次のとおりとする。 
 強制終了できたとき     0 
 タスクaが実行中でないとき 1 

 

 

例外 

 

 

 

備考 

並行処理機能の一つである。 
関数TXQTを参照。 

 

 

コード 

EF80 

表記 

FSUSPEND 

機能 

関数の強制中断 (suspend function) 

 

 

呼出形式 

a FSUSPEND 

 

 

結果 

 

 

入力 

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

 

 

出力 

b :I2 

 

 

説明 

プロセス番号aで識別されるSTROLIC関数の実行を強制中断する。 
bの値は,次のとおりとする。 
 強制中断できたとき      0 
 プロセスaが実行中でないとき 1 

例外 

 

 

 

備考 

並行処理機能の一つである。 
プロセス番号については,関数FXQTを参照。 

 

 

コード 

EF81 

表記 

TSUSPEND 

機能 

タスクの強制中断 (suspend task) 

 

 

呼出形式 

a TSUSPEND 

 

 

結果 

 

 

入力 

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

 

 

出力 

b :I2 

 

 

説明 

タスク番号aで識別されるタスクの実行を強制中断する。 

 

 


49 

B 8440-1995  

bの値は,次のとおりとする。 
 強制中断できたとき     0 
 タスクaが実行中でないとき 1 

例外 

 

 

 

備考 

並行処理機能の一つである。 
関数TXQTを参照。 

 

 

コード 

EF82 

表記 

FRESUME 

機能 

関数の強制再開 (resume function) 

 

 

呼出形式 

a FRESUME 

 

 

結果 

 

 

入力 

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

 

 

出力 

b :I2 

 

 

説明 

プロセス番号aで識別されるSTROLIC関数の実行を強制再開する。 
bの値は,次のとおりとする。 
 強制再開できたとき      0 
 プロセスaが中断中でないとき 1 

例外 

 

 

 

備考 

並行処理機能の一つである。 
プロセス番号については,関数FXQTを参照。 

 

 

コード 

EF83 

表記 

TRESUME 

機能 

タスクの強制再開 (resume task) 

 

 

呼出形式 

a TRESUME 

 

 

結果 

 

 

入力 

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

 

 

出力 

b :I2 

 

 

説明 

タスク番号aで識別されるタスクの実行を強制再開する。 
bの値は,次のとおりとする。 
 強制再開できたとき     0 
 タスクaが中断中でないとき 1 

 

 

例外 

 

 

 

備考 

並行処理機能の一つである。 
関数TXQTを参照。 

 

 

コード 

EF84 

表記 

LOCK 

機能 

競合資源のロック (reseource lock) 

 

 

呼出形式 

a LOCK 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4,R4,R8 事象フラグ番号 

 

 

出力 

 

 

 

説明 

競合資源の排他制御のために,番号aで指定された事象フラグをオンにする。 
フラグがすでにオンになっている場合,オフになるまで待つ。 

例外 

 

 

 

備考 

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

 

 

コード 

EF85 

表記 

UNLOCK 

機能 

競合資源のロック解除 (reseource unlock) 

 

 

呼出形式 

a UNLOCK 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 事象フラグ番号 

 

 

出力 

b :I2 

 

 

説明 

競合資源の開放のために,番号aで指定された事象フラグをオフにする。 
結果bは,0となる。 
フラグがすでにオフになっている場合,bは1とする。 

例外 

 

 

 


50 

B 8440-1995  

備考 

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

 

 

コード 

EF86 

表記 

EWAIT 

機能 

事象の待合わせ (event wait) 

 

 

呼出形式 

a EWAIT 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4,R4,R8 事象フラグ番号 

 

 

出力 

 

 

 

説明 

番号aで指定した事象フラグがオンになるまで,すなわち事象が発生するまで待つ。待ちが解かれる
とき,事象フラッグはオフになる。同じ事象フラッグで待っているタスク又はプロセスの中で待ちが
解かれるものはただ一つである。 

例外 

 

 

 

備考 

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

 

 

コード 

EF87 

表記 

EWAITA 

機能 

複数事象の待合わせ(AND条件) [multi event wait (and)] 

 

 

呼出形式 

a1 a2 … an n EWAITA 

 

 

結果 

なし 

 

 

入力 

a1 :I1,I2,I4,R4,R8 事象フラグ番号 
n :I1,I2,I4,R4,R8 事象の個数 

 

 

出力 

 

 

 

説明 

指定した複数事象のすべてが発生するまで待つ。待ちが解かれるとき,指定されたすべての事象フラ
ッグはオフとなる。同じ事象フラッグで待っているタスク又はプロセスの中で待ちが解かれるものは
ただ一つである。 

例外 

 

 

 

備考 

並行処理機能の一つである。 
事象の待合わせEWAITを参照。 

 

 

コード 

EF88 

表記 

EWAITO 

機能 

複数事象の待合わせ(OR条件) [multi event wait (or)] 

 

 

呼出形式 

a1 a2 … an n EWAITO 

 

 

結果 

なし 

 

 

入力 

a1 :I1,I2,I4,R4,R8 事象フラグ番号 
n :I1,I2,I4,R4,R8 事象の個数 

 

 

出力 

 

 

 

説明 

事象バッファをクリアし,指定した複数事象のいずれかが発生するまで待つ。いずれかの事象が発生
すると待ちが解かれる。このとき発生したすべての事象フラッグは,その事象フラッグ番号が事象バ
ッファに格納され,同時にオフとなる。発生した事象フラッグと同じ事象フラッグで待っているタス
ク又はプロセスの中で待ちが解かれるものはただ一つである。 

例外 

 

 

 

備考 

並行処理機能の一つである。 
事象の待合わせの関数EWAITを参照。 
事象バッファからの取出しは,関数EPOPを参照。 

 

 

コード 

EF89 

表記 

EPOP 

機能 

事象の取出し (pop up event) 

 

 

呼出形式 

EPOP 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :I2 事象フラグ番号 

 

 

説明 

事象バッファから事象を取り出す。 
結果は,事象フラグ番号であり,事象の存在しないときは,0となる。 

例外 

 

 

 

備考 

並行処理機能の一つである。 
関数EWAITOを参照。 
事象バッファから取り出される順序は,処理系に依存する。 

 

 


51 

B 8440-1995  

コード 

EF8A 

表記 

ESIG 

機能 

事象の発生 (signal evevt) 

 

 

呼出形式 

a ESIG 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4,R4,R8  事象フラグ番号 

 

 

出力 

 

 

 

説明 

番号aで指定した事象フラグをオンにして事象を発生させる。 

 

 

例外 

 

 

 

備考 

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

 

 

コード 

EF8B 

表記 

ECLR 

機能 

事象のクリア (clear event) 

 

 

呼出形式 

a1 a2 … an n ECLR 

 

 

結果 

なし 

 

 

入力 

a1 :I1,I2,I4,R4,R8  事象フラグ番号 
n :I1,I2,I4,R4,R8  事象の個数 

 

 

出力 

 

 

 

説明 

指定した事象フラグをクリアする。 
n=0のとき,全部のフラグをクリアする。 

 

 

例外 

 

 

 

備考 

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

 

 

コード 

EF8C 

表記 

CHIN 

機能 

チャネルからのデータ入力 (channel in) 

 

 

呼出形式 

a CHIN 

 

 

結果 

 

 

入力 

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 

機能 

共有変数の宣言 (share variable) 

 

 

呼出形式 

#a b SHARE 

 

 

結果 

なし 

 

 

入力 

a :任意の型 

共有する変数 

 

 


52 

B 8440-1995  

b :I1,I2,I4 

共有変数番号 

出力 

 

 

 

説明 

変数aを,共有変数番号bをもつ共有変数として宣言する。 

 

 

例外 

 

 

 

備考 

並行処理機能の一つで,他のタスクと変数を共有する機能である。 
共有変数のための番号の扱いは,マルチタスクOS及び処理系に依存する。 

コード 

EE00 

表記 

TIME 

機能 

時刻 (get time) 

 

 

呼出形式 

TIME 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :St 

 

 

説明 

時刻を文字列表現でスタックへ置く。 
表現は処理系定義とするが,HH : MM : SS(24時間表記)を推奨する。 
この場合,HHは時間で00〜23,MMは分で00〜59,SSは秒で00〜59の値を取る。 

例外 

 

 

 

備考 

 

 

 

コード 

EE01 

表記 

DATE 

機能 

日付 (get date) 

 

 

呼出形式 

DATE 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :St 

 

 

説明 

日付を文字列表現でスタックへ置く。 
表現は処理系定義とするが,YYYY/MM/DDを推奨する。この場合,YYYYは年で1900〜2100,MM
は月で01〜12,DDは日でり01〜31の値を取る。 

例外 

 

 

 

備考 

 

 

 

コード 

EE02 

表記 

CLOCK 

機能 

内部時計 (get clock) 

 

 

呼出形式 

CLOCK 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :I4 

 

 

説明 

内部時計の現在の値を取り出して,スタックへ置く。 
単位は処理系定義とするが,msecを用いることを推奨する。 

 

 

例外 

 

 

 

備考 

内部時計は,停止しない。 
内部時計の最大値は,処理系に依存する。 

 

 

コード 

EE03 

表記 

STIME 

機能 

時刻の設定 (set time) 

 

 

呼出形式 

a STIME 

 

 

結果 

なし 

 

 

入力 

a :St 

 

 

出力 

 

 

 

説明 

時刻を設定する。 

 

 

例外 

文字列が時刻表現に合致しないとき,警告をコンソールに出して,時刻設定は行わない。 

備考 

 

 

 

コード 

EE04 

表記 

SDATE 

機能 

日付の設定 (set date) 

 

 

呼出形式 

a SDATE 

 

 

結果 

なし 

 

 


53 

B 8440-1995  

入力 

a :St 

 

 

出力 

 

 

 

説明 

日付を設定する。 

 

 

例外 

文字列が日付表現に合致しないとき,警告をコンソールに出して,日付設定は行わない。 

備考 

 

 

 

コード 

EE05 

表記 

CLRCLK 

機能 

内部時計のクリア (clear clock) 

 

 

呼出形式 

CLRCLK 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

内部時計の値を0に設定する。 

 

 

例外 

 

 

 

備考 

内部時計は,停止しない。 

 

 

コード 

EE06 

表記 

PACKTM 

機能 

時刻要素データのまとめ (pack time) 

 

 

呼出形式 

a b c PACKTM 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

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が実数型の場合には,あらかじめ整数に丸める。 
日付の表現は,処理系定義とする。 

 

 

例外 

年,月,日の値が所定の範囲内にないとき,処理系の定めた範囲の下限の値を用いる。 

備考 

 

 

 


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 

表記 

CNFG 

機能 

通信ポートの設定 (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 

 

 

出力 

 

 

 

説明 

通信ポートの初期化を行う。ポート番号とファイル番号の対応は,あらかじめ処理系で決められてい
るものとする。 
入力のbとdにおいて,指定されていないビットは,0とする。 

例外 

不正な設定値があるときは,設定を行わない。 

 

 

備考 

 

 

 

コード 

EE0B 

表記 

DOUT 

機能 

出力ポートへの出力 (data output) 

 

 

呼出形式 

a b DOUT 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4,R4,R8 出力ポート番号 
b :I2 出力データ 

 

 

出力 

 

 

 

説明 

ポートaへデータbを出力する。 
ポート番号の値は,あらかじめ整数に丸める。 
ポートaが8ビットポートの場合,データbの下位8ビットを使用する。 

例外 

指定されたポートが存在しない場合,警告を発し,出力は行わない。 

備考 

 

 

 

コード 

EE0C 

表記 

DIN 


55 

B 8440-1995  

機能 

入力ポートからの入力 (data input) 

 

 

呼出形式 

a DIN 

 

 

結果 

 

 

入力 

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 

表記 

ACT 

機能 

割込みの活性化 (activate interrupt) 

 

 

呼出形式 

a ACT 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4 割込みレベル番号 

 

 

出力 

 

 

 

説明 

割込みレベルaの割込みを受け付けるようにする。 

 

 

例外 

 

 

 

備考 

ACTRS,REACT参照。 

 

 

コード 

EE0F 

表記 

ACTRS 

機能 

割込みの不活性化 (reset interrupt activity) 

 

 

呼出形式 

a ACTRS 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4 割込みレベル 

 

 

出力 

 

 

 

説明 

割込みレベルaの割込みを受け付けないようにする。 
割込みレベルaが,0のときは,すべての割込みが禁止される。 

 

 

例外 

 

 

 

備考 

ACT,REACTを参照。 

 

 

コード 

EE10 

表記 

REACT 


56 

B 8440-1995  

機能 

割込みの再活性化 (reactivate interrupt) 

 

 

呼出形式 

REACT 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

ACTRSによって最近禁止された割込みレベルの割込みを受け付けるようにする。 

例外 

 

 

 

備考 

回復される割込みは,最近禁止された一回だけである。 
ACT,ACTRSを参照。 

 

 

コード 

EE11 

表記 

ACTCODE 

機能 

割込みコードの定義 (define intrrupt code) 

 

 

呼出形式 

a b c ACTCODE 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4 割込みコード 
b :I1,I2,I4 割込みレベル 
c :Fn,Mc,U 割込み検出手続 

 

 

出力 

 

 

 

説明 

割込みレベルbをもつ割込みコードaを定義する。 
割込みの検出には,Cの手続を用いる。 

 

 

例外 

 

 

 

備考 

ACTIONを参照。 

 

 

コード 

EE12 

表記 

ACTION 

機能 

割込み処理の定義 (define interrupt action) 

 

 

呼出形式 

a b ACTION 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4 割込みコード 
b :Fn,Mc,U 割込み処理 

 

 

出力 

 

 

 

説明 

割込みコードaの割込み発生時の処理を定義する。 

 

 

例外 

 

 

 

備考 

ACTCODEを参照。 

 

 

コード 

EE13 

表記 

TIMER 

機能 

タイマ割込みの設定 (set timer interrupt) 

 

 

呼出形式 

a TIMER 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4,R4,R8 タイムアウト時間 

 

 

出力 

 

 

 

説明 

タイムアウト時間を設定し,タイマ割込みを活性化する。 
タイムアウト時間に0又は負の値を設定した場合,タイマ割込みは,不活性となる。 

例外 

 

 

 

備考 

 

 

 

コード 

EE14 

表記 

RTIMER 

機能 

タイマ割込みの再設定 (reactivate timer interrupt) 

 

 

呼出形式 

RTIMER 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

タイマ割込みによって最近禁止された割込みを受け付るようにする。 
タイマ割込みは,再起動されない。 

例外 

 

 

 

備考 

 

 

 

コード 

EE15 

表記 

TACTION 


57 

B 8440-1995  

機能 

タイマ割込み処理の定義 (define timer action) 

 

 

呼出形式 

a TACTION 

 

 

結果 

なし 

 

 

入力 

a :Fn,Mc,U 割込み処理 

 

 

出力 

 

 

 

説明 

タイマ割込み発生時の処理を定義する。 

 

 

例外 

 

 

 

備考 

 

 

 

コード 

EE16 

表記 

FSTAT 

機能 

ファイルステータスの取出し (file status) 

 

 

呼出形式 

a FSTAT 

 

 

結果 

 

 

入力 

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 

機能 

ファイルへの書出し (output) 

 

 

呼出形式 

a b OUTPUT 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4,R4,R8 ファイル番号 
b :任意の型のデータ 書き出すデータ 

 

 

出力 

 

 

 

説明 

bをa番のファイルへ書き出す。書き出される値は,テキストに変換される。データの区切り文字は,
処理系定義とするが,空白を用いることを推奨する。 
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。 

例外 

ファイル書込みエラーは,プログラム停止。 

 

 

備考 

 

 

 

コード 

EE18 

表記 

INPUT 

機能 

ファイルの読込み (input) 

 

 

呼出形式 

a INPUT 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 ファイル番号 

 

 

出力 

b :任意の型のデータ 読み込んだデータ 

 

 

説明 

a番のファイルから読み込んだデータをスタックへ置く。 
型は,データの表現形式から決定される。 
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。 

 

例外 

ファイル読込みエラーは,プログラム停止。 

 

 

備考 

INPUTを実行する前に,FSTATを用いてファイルのオープン状態及びEOF状態を調べることができ
る。 

コード 

EE19 

表記 

LOUTPUT 

機能 

ファイルの1行書出し (line output) 

 

 

呼出形式 

a b LOUTPUT 

 

 

結果 

なし 

 

 


58 

B 8440-1995  

入力 

a :I1,I2,I4,R4,R8 ファイル番号 
b :任意の型のデータ 書き出すデータ 

 

 

出力 

 

 

 

説明 

データをファイルへ書き出す。データに続けて改行文字が書き出される。データの変換は,OUTPUT
に準じる。 
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。 

例外 

ファイル書込みエラーは,プログラム停止。 

 

 

備考 

OUTPUT参照。 

 

 

コード 

EE1A 

表記 

LINPUT 

機能 

ファイルの1行読込み (line input) 

 

 

呼出形式 

a #t LINPUT 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 ファイル番号 
t :タグ 

 

 

出力 

c :t型のデータ 読み込んだデータ 

 

 

説明 

ファイルから1行読み込み,タグtに従って値を取り出し,結果をスタックへ置く。1行の最大長及び
データの区切り文字は,処理系定義とする。 
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。 

例外 

ファイル読込みエラーは,プログラム停止。 

 

 

備考 

 

 

 

コード 

EE1B 

表記 

FOPEN 

機能 

ファイルの入出力用オープン (file open) 

 

 

呼出形式 

a b FOPEN 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4,R4,R8 ファイル番号 
b :I2 オープンモード 

 

 

出力 

 

 

 

説明 

ファイルを指定されたモードでオープンする。モードは整数で,次による。 
1のとき read(読込み) 
2のとき write(書出し) 
4のとき append(追加) 
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。 

例外 

ファイルのオープンに失敗したときは,プログラム停止。 

 

 

備考 

 

 

 

コード 

EE1C 

表記 

FCLOSE 

機能 

ファイルのクローズ (file close) 

 

 

呼出形式 

a FCLOSE 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4,R4,R8 ファイル番号 

 

 

出力 

 

 

 

説明 

ファイルをクローズする。 
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。 

例外 

ファイルクローズエラーは,プログラム停止。 

 

 

備考 

 

 

 

コード 

EE1D 

表記 

PUTC 

機能 

1文字出力 (put a character) 

 

 

呼出形式 

a b PUTC 

 

 

結果 

なし 

 

 

入力 

a :I1,I2,I4,R4,R8 ファイル番号 
b :I2 書き出すデータ(8ビット) 

 

 

出力 

 

 

 


59 

B 8440-1995  

説明 

ファイルへ1文字書き出す。 
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。 

例外 

ファイル書込みエラーは,プログラム停止。 

 

 

備考 

 

 

 

コード 

EE1E 

表記 

GETC 

機能 

1文字入力 

 

 

呼出形式 

a GETC 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 ファイル番号 

 

 

出力 

b :I2 読み込んだ文字(8ビット) 

 

 

説明 

ファイルから1文字読み込み,結果をスタックへ置く。 
ポート番号aが実数で与えられた場合,あらかじめ整数に丸める。 

例外 

ファイル読込みエラーは,プログラム停止。 

 

 

備考 

 

 

 

コード 

EE1F 

表記 

DECODE1 

機能 

文字列の分解(BASIC形式) 

 

 

呼出形式 

a #b DECODE1 

 

 

結果 

 

 

入力 

a :St データ文字列 
b :t 取り出したいデータ型のタグ 

 

 

出力 

c :指定した型 取り出したデータ 

 

 

説明 

データ文字列aを,タグbの指定に従って分解した結果をスタックへ置く。 

 

例外 

変換エラーは,プログラム停止。 

 

 

備考 

 

 

 

コード 

EE20 

表記 

ENCODE1 

機能 

文字列の構成(BASIC形式) 

 

 

呼出形式 

a b1 … bn n ENCODE1 

 

 

結果 

 

 

入力 

a  

 :St フォーマット文字列 

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

 :I1,I2,I4,R4,R8 データ数 

 

 

出力 

 :St 構成された文字列 

 

 

説明 

任意の型のデータを,フォーマット文字列に従って変換し,構成された文字列をスタックへ置く。 
フォーマット文字列の働きは,附属書2を参照。 

例外 

変換エラーは,プログラム停止。 

 

 

備考 

 

 

 

コード 

EE21 

表記 

DECODE2 

機能 

文字列の分解(C形式) 

 

 

呼出形式 

a b #c1 … #cn n DECODE2 

 

 

結果 

 

 

入力 

a :St フォーマット文字列 
b :St データ文字列 
c1 :U 結果の入る変数 
n :I1,I2,I4,R4,R8 データ数 

 

 

出力 

d :I2 分解された数 

 

 

説明 

データ文字列を,フォーマット文字列の指定に従って分解して格納し,分解できた数をスタックへ置
く。 
フォーマット文字列の働きは,附属書2を参照。 

例外 

変換エラーは,プログラム停止。 

 

 

備考 

 

 

 

コード 

EE22 

表記 

ENCODE2 

機能 

文字列の構成(C形式) 

 

 


60 

B 8440-1995  

呼出形式 

a b1 … bn n ENCODE2 

 

 

結果 

 

 

入力 

a  

 :St フォーマット文字列 

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

 

 

出力 

c  

 :St 構成された文字列 

 

 

説明 

任意の型のデータを,フォーマット文字列に従って変換し,構成された文字列をスタックに置く。 
フォーマット文字列の働きは,附属書2を参照。 

例外 

変換エラーは,プログラム停止。 

 

 

備考 

 

 

 

コード 

ED00 

表記 

JSPEED 

機能 

関節速度指定 (joint speed) 

 

 

呼出形式 

a JSPEED 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 手先の加速度を指定する数値 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

手先効果器(ende effector)の直角座標系での加速度を指定する。 
単位は処理系定義とするが,加速度を数値として与える場合にはm/s2を推奨し,また,最大加速度に
対する割合で指定する場合には%を推奨する。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 
コントローラは,このコードを実行完了後,ACCEL1,ACCEL2のいずれかが再度実行されるまで指
定値を保持する。 
加速度を数値で指定した場合の関節座標系の動作命令への影響については,処理系定義とする。 

例外 

指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。 


61 

B 8440-1995  

備考 

加速度を数値で指定した場合,関節座標系の動作命令(AJMOVE,IJMOVE,ADRIVE,IDRIVEの4
関数)において指定された接線加速度を維持するには,角加速度の複雑な制御が必要となる。 

コード 

ED03 

表記 

ACCEL2 

機能 

時間による手先加速度指定 (acceleration by time) 

 

 

呼出形式 

a ACCEL2 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 最大速度に達するまでの時間 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

最大速度に達するまでの時間を指定することによって,加速度を指定する。 
単位は処理系定義とするが,秒を推奨する。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 
コントローラは,このコードを実行完了後,ACCEL1,ACCEL2のいずれかが再度実行されるまで指
定値を保持する。 

例外 

指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。 

備考 

 

 

 

コード 

ED04 

表記 

DECEL1 

機能 

手先減速度指定 (deceleration) 

 

 

呼出形式 

a DECEL1 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 最大速度から停止するまでの時間 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

最大速度から速度0に達するまでの時間を指定することによって,加速度を指定する。 
単位は処理系定義とするが,秒を推奨する。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 
コントローラは,このコードを実行完了後,DECEL1,DECEL2のいずれかが再度実行されるまで指
定値を保持する。 

例外 

指定値が,実現不可能な場合,若しくは負値又は最大値を超過した場合。 

備考 

 

 

 

コード 

ED06 

表記 

SCONF 

機能 

コンフィギュレーション設定 (set configuration) 

 

 

呼出形式 

a SCONF 

 

 

結果 

 

 

入力 

a :I2 コンフィギュレーション指定 

 

 


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 

 

 

結果 

 

 

入力 

a :I2 コンフィギュレーション指定 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

ロボットのコンフィギュレーションパラメタ(拡張コンフィギュレーション)を設定する。このパラ
メタの効果は,次のロボット制御の実行時に有効となる。 
コンフィギュレーション指定aによって指定される拡張コンフィギュレーションの意味及びビット位
置は,処理系定義とする。ロボットに定義されていないコンフィギュレーションを指定した場合,そ
の指定は無視する。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系依存とする。 
コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。 

例外 

 

 

 

備考 

この関数は,ロボットコントローラに固有のコンフィギュレーション設定を行うものであり,主要な
コンフィギュレーション設定はSCONFで行う。 

コード 

ED08 

表記 

SCONF3 

機能 

コンフィギュレーション設定3 (set configuration-3) 

 

 

呼出形式 

a b SCONF3 

 

 

結果 

 

 

入力 

a :I2 コンフィギュレーション指定番号 
b :I1,I2,I4,R4,R8 設定値 

 

 

出力 

c :I2 エラーフラグ 

 

 

説明 

ロボットのコンフィギュレーションパラメタ(拡張量コンフィギュレーション)を設定する。このパ
ラメタの効果は次のロボット制御の実行時に有効となる。 
拡張量コンフィギュレーションを指定する番号aとその設定値bの意味は,処理系定義とする。ロボ
ットに定義されていないコンフィギュレーションを指定した場合,その指定を無視する。 
フラグcは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 
コントローラは,このコードを実行完了後,再度実行されるまで指定値を保持する。 

例外 

 

 

 

備考 

この関数は,ロボットコントローラに固有のコンフィギュレーション設定を行うものであり,主要な
コンフィギュレーション設定はSCONFで行う。 


63 

B 8440-1995  

コード 

ED09 

表記 

GCONF 

機能 

コンフィギュレーション取出し (get configuration) 

 

 

呼出形式 

GCONF 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :I2 コンフィギュレーションパラメタ 

 

 

説明 

現在設定されているコンフィギュレーションパラメタ(標準コンフィギュレーション)を取り出す。 

例外 

 

 

 

備考 

コンフィギュレーションパラメタの意味及び表現については,SCONFを参照。 
ロボットの構造によって意味のないビット値は,暗黙値0がセットされる。 

コード 

ED0A 

表記 

GCONF2 

機能 

コンフィギュレーション取出し2 (get configuration-2) 

 

 

呼出形式 

GCONF2 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :I2 コンフィギュレーションパラメタ 

 

 

説明 

現在設定されているコンフィギュレーションパラメタ(拡張コンフィギュレーション)を取り出す。 

例外 

 

 

 

備考 

コンフィギュレーションパラメタの意味と表現については,SCONF2を参照。 
ロボットの構造によって意味のないビット値は,暗黙値0がセットされる。 

コード 

ED0B 

表記 

GCONF3 

機能 

コンフィギュレーション取出し3 (get configuration-3) 

 

 

呼出形式 

a GCONF3 

 

 

結果 

 

 

入力 

a :I2 コンフィギュレーション指定番号 

 

 

出力 

b :I1,I2,I4,R4,R8 コンフィギュレーションの値 

 

 

説明 

現在設定されているコンフィギュレーションパラメタ(拡張量コンフィギュレーション)から,形態
指定番号aに指定されている値を取り出す。 

例外 

 

 

 

備考 

コンフィギュレーションパラメタの意味と表現については,SCONF3を参照。 
ロボットの構造によって意味のないビット値は,暗黙値0がセットされる。 

コード 

ED0C 

表記 

HERE 

機能 

現在ポーズの取込み (get current pose) 

 

 

呼出形式 

HERE 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :Pm 

 

 

説明 

ロボットの現在ポーズを取り出し,スタックに置く。 

 

 

例外 

 

 

 

備考 

移動命令実行中でも現在ポーズを取り出すことを原則とする。ただし,処理系によっては,コントロ
ーラの処理速度に問題を生ずるなどの理由によって,ポーズの取り出しが移動完了後となることもあ
る。 

コード 

ED0D 

表記 

JHERE 

機能 

現在ジョイント値の取込み (get current joint) 

 

 

呼出形式 

JHERE 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :Ar of (I4,R4)  ジョイント値 

 

 

説明 

ロボットの現在のジョイント値を取り出し,スタックに置く。 

 

 

例外 

 

 

 


64 

B 8440-1995  

備考 

処理系は,I4又はR4のいずれかの型で取り出せばよい。 
移動命令実行中でも現在ジョイント値を取り出すことを原則とする。ただし,処理系によっては,コ
ントローラの処理速度に問題を生ずるなどの理由によって,ジョント値の取り出しが移動完了後とな
ることもある。 

コード 

ED0E 

表記 

CALIB 

機能 

キャリブレーション (calibration) 

 

 

呼出形式 

CALIB 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

ロボットの機械的位置姿勢とコントローラの保持している設定値とを一致させる。この働きの詳細は,
処理系定義である。 

例外 

 

 

 

備考 

キャリブレーションの内容は,処理系に依存する。このとき,ロボットが位置姿勢を変更することも
ある。 

コード 

ED0F 

表記 

PAUSE 

機能 

中断 (pause) 

 

 

呼出形式 

a PAUSE 

 

 

結果 

 

 

入力 

a :St メッセージ 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

指定されたメッセージを標準出力装置に表示して,オペレータの指示があるまでプログラムの実行を
中断する。 
また,ロボットが動作中の場合にはコントローラに動作中断を指示し,ロボットは速やかに停止する。
停止の方法については,処理系定義とする。 
再開の方法は,ロボットコントローラの機能に依存するが,通常はコントローラにつけられた再開ボ
タンが押されるか,再開指令が入力されることによる。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 

例外 

標準出力装置が定義されていない。 

 

 

備考 

表示機能のないロボットの場合は,標準出力装置の未定義を例外扱いとしない。 

コード 

ED10 

表記 

DELAY 

機能 

時間待ち (delay) 

 

 

呼出形式 

a DELAY 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 待ち時間 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

待ち時間aで指定した時間だけ,プログラムの実行を遅らせる。 
aの単位は処理系定義とするが,msecを推奨する。 
この関数の実行中にプログラム実行が強制終了された場合,残計数は0となる。 
また,中断又は割込みが発生した場合,残計数は保存され,その後再開した場合は残計数から継続す
る。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 

例外 

指定値が限界値を超えている。 

 

 

備考 

 

 

 

コード 

ED11 

表記 

AJMOVE 

機能 

関節角空間直線補間絶対移動 (absolute joint move) 

 

 

呼出形式 

a AJMOVE 

 

 

結果 

 

 

入力 

a :Pm 又は Ar of Pm 

 

 

出力 

b :I2 エラーフラグ 

 

 


65 

B 8440-1995  

説明 

関節角空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。 
ポーズの座標値は,ロボットのベース座標系で絶対指定される。 
移動終了を待たずに次の命令の実行へ進む。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 

例外 

指定ポーズ(目的地)が,未定義の場合。 
指定ポーズ(目的地)が,動作領域外の場合。 

 

 

備考 

移動動作の完了を待つときは,$DONE関数を用いる。 
コンフィギュレーションを変えることがある。 

 

 

コード 

ED12 

表記 

IJMOVE 

機能 

関節角空間直線補間相対移動 (incremental joint move) 

 

 

呼出形式 

a IJMOVE 

 

 

結果 

 

 

入力 

a :Pm 又は Ar of Pm 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

関節角空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。 
ポーズの座標値は,移動開始位置からの相対位置で表現される。 
移動終了を待たずに次の命令の実行へ進む。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 

例外 

指定ポーズ(列)が,未定義の場合。 
指定ポーズ(列)が,動作領域外の場合。 

 

 

備考 

移動動作の完了を待つときは,$DONE関数を用いる。 
コンフィギュレーションを変えることがある。 

 

 

コード 

ED13 

表記 

ALMOVE 

機能 

直角座標空間直線補間絶対移動 (absolute linear move) 

 

 

呼出形式 

a ALMOVE 

 

 

結果 

 

 

入力 

a :Pm 又は Ar of Pm 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

直角座標空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。 
ポーズの座標値は,ロボットのベース座標系で絶対指定される。 
移動終了を待たずに次の命令の実行へ進む。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 

例外 

指定ポーズが,未定義の場合。 
指定ポーズが,動作領域外の場合。 
移動中に特異解が,発生した場合。 
移動中に補間ポーズが,動作領域を超えた場合。 

 

 

備考 

移動動作の完了を待つときは,$DONE関数を用いる。 

 

 

コード 

ED14 

表記 

ILMOVE 

機能 

直角座標系直線補間相対移動 (incremental linear move) 

 

 

呼出形式 

a ILMOVE 

 

 

結果 

 

 

入力 

a :Pm 又は Ar of Pm 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

直角座標空間の直線補間によって,現在ポーズから,指定ポーズ又は指定ポーズ列を移動する。 
ポーズの座標値は,移動開始位置からの相対位置で表現される。 
移動終了を待たずに次の命令の実行へ進む。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 

例外 

指定ポーズが,未定義の場合。 

 

 


66 

B 8440-1995  

指定ポーズが,動作領域外の場合。 
移動中に特異解が,発生した場合。 
移動中に補間ポーズが,動作領域を超えた場合。 

備考 

移動動作の完了を待つときは,$DONE関数を用いる。 
現在ポーズをP1,目標ポーズをP2とし,P3=P2−P1とすると,次の二つのMOVE関数は位置,姿
勢を含めて同じ結果となる。 
P2 ALMOVE 
P3 ILMOVE 
なお,ポーズの演算に関しては,PADD,PSUBを参照のこと。 

コード 

ED15 

表記 

HMOVE 

機能 

ツール座標系直線補間移動 (hand move) 

 

 

呼出形式 

a HMOVE 

 

 

結果 

 

 

入力 

a :Pm 又は Ar of Pm 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

ハンド(ツール)座標系で表現された指定ポーズ又は指定ポーズ列を直線移動する。 
移動終了を待たずに次の命令の実行へ進む。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 

例外 

指定ポーズが,未定義の場合。 
指定ポーズが,動作領域外の場合。 
移動中に特異解が,発生した場合。 
移動中に補間ポーズが,動作領域を超えた場合。 

 

 

備考 

移動動作の完了を待つときは,$DONE関数を用いる。 

 

 

コード 

ED16 

表記 

CMOVE1 

機能 

直角座標空間円弧補間移動 (circular move-1) 

 

 

呼出形式 

a b c d CMOVE1 

 

 

結果 

 

 

入力 

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 

表記 

CMOVE3 

機能 

直角座標空間3点指定円弧補間移動 (circular move-3) 

 

 

呼出形式 

a b CMOVE3 

 

 

結果 

 

 


67 

B 8440-1995  

入力 

a :Pm 経由ポーズ 
b :Pm 目的ポーズ 

 

 

出力 

c :I2 エラーフラグ 

 

 

説明 

現在ポーズ,経由ポーズ,目的ポーズで決まる円弧上を移動する。 
移動終了を待たずに次の命令の実行へ進む。 
フラグcは,例外が発生しなければ,0値。発生すれば非0値。 
フラグcの詳細は,処理系定義とする。 

例外 

指定ポーズが,未定義の場合。 
補間ポーズが,動作領域外の場合。 
移動中に特異解が,発生した場合。 
3点で平面が決定できないとき。 

 

 

備考 

提供機関は,限界半径の仕様値を明記すること。 
円弧の半径が,コントローラの定める限界値を超えた場合は,直線移動とみなしてもよい。 
移動動作の完了を待つときは,$DONE関数を用いる。 

コード 

ED18 

表記 

ADRIVE 

機能 

関節角絶対位置移動 (absolute joint drive) 

 

 

呼出形式 

a ADRIVE 

 

 

結果 

 

 

入力 

a :Ar of (I1,I2,I4,R4,R8)  関節角パラメタ 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

ロボットアームの関節角絶対位置aへ移動する。 
aの単位(例えば,パルス又は角度),及び配列要素と関節との対応については,処理系定義とする。 
動作終了を待たずに次の命令の実行へ進む。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 

例外 

指定パラメタが可動範囲外の場合。 

 

 

備考 

移動動作の完了を待つときは,$DONE関数を用いる。 

 

 

コード 

ED19 

表記 

IDRIVE 

機能 

関節角相対位置移動 (incremental joint drive) 

 

 

呼出形式 

a IDRIVE 

 

 

結果 

 

 

入力 

a :Ar of (I1,I2,I4,R4,R8)  関節角パラメタ 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

ロボットアームの関節角を増分量aだけ増やす移動をする。 
aの単位(例えば,パルス又は角度),及び配列要素と関節との対応については,処理系定義とする。 
動作終了を待たずに次の命令の実行へ進む。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする。 

例外 

可動範囲の限界を超えようとする場合。 

 

 

備考 

移動動作の完了を待つときは,$DONE関数を用いる。 
各関節は同時刻に移動を開始し,同時に動作完了することが望ましい。 

コード 

ED1A 

表記 

SACC 

機能 

近傍精度設定 (set accuracy) 

 

 

呼出形式 

a SACC 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 近傍指定パラメタ 

 

 

出力 

b :I2 エラーフラグV 

 

 

説明 

ロボットアームの位置決め精度を,指定位置に対してどのくらい近傍であるかによって定義する。パ
ラメタの具体的な値は処理系定義とするが,すべて正の値であって,0直は最高位置決め精度を表す。 
また,初期値は,処理系定義であるが,0値(最高精度)とすることを推奨する。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
フラグbの詳細は,処理系定義とする 


68 

B 8440-1995  

例外 

パラメタが許される値以外の場合。 

 

 

備考 

サーボ系は,このパラメタで決まる精度基準に達した所で次の制御に移行する。パラメタの意味は,
精度を表すレベル番号のこともあれば,近傍系の値(球なら半径,箱なら一辺の大きさなど)のこと
もある 

コード 

ED1B 

表記 

GACC 

機能 

近傍精度参照 (get accuracy) 

 

 

呼出形式 

GACC 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :I2,R4 近傍精度パラメタ 

 

 

説明 

現在設定されている近傍精度パラメタの値を取り出す。 

 

 

例外 

 

 

 

備考 

処理系は,I2又はR4のいずれかの型で取り出す。 

 

 

コード 

ED1C 

表記 

$WAIT 

機能 

ロボットの動作完了待ち (wait) 

 

 

呼出形式 

a $WAIT 

 

 

結果 

 

 

入力 

a :I1,I2,I4,R4,R8 タイムアウト時間 

 

 

出力 

b :I2 完了状態 

 

 

説明 

最も最近に出された動作指令に対するロボットの動作完了を待つ。 
a時間経過しても動作完了しない場合には,タイムアウトとなり,完了状態bを1として,待ちは解
かれる。 
タイムアウト時間aの単位は,処理系定義とする。 
正常完了ならば,完了状態bは0値。エラーが発生すれば負値。 
エラー時の完了状態bの詳細は,処理系定義とする。 

例外 

 

 

 

備考 

手先効果器の完了をこの関数で検出できるかは,処理系に依存する。手先効果器の完了を検出する場
合,完了状態値2を用いることを推奨する。 
すなわち,ロボットも手先効果器も共に動作中なら完了状態を3,手先効果器だけ動作中なら完了状
態を2,ロボットだけ動作中なら完了状態を1とする。 

コード 

ED1D 

表記 

$DONE 

機能 

ロボットの動作完了判定 (done) 

 

 

呼出形式 

$DONE 

 

 

結果 

 

 

入力 

 

 

 

出力 

a :I2 完了状態 

 

 

説明 

ロボットの動作完了状態を取り出す。 
完了状態aは,動作中なら1,正常完了していれば0,異常完了していれば負値。 

例外 

 

 

 

備考 

手先効果器の完了をこの関数で検出できるかは,処理系に依存する。手先効果器の完了を検出する場
合,完了状態値2を用いることを推奨する。 
すなわち,ロボットも手先効果器も共に動作中なら完了状態を3,手先効果器だけ動作中なら完了状
態を2,ロボットだけ動作中なら完了状態を1とする。 

コード 

ED1E 

表記 

HANDOPEN 

機能 

ハンドを開く (hand open) 

 

 

呼出形式 

HANDO 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

現在のハンド(手先効果器)を開く。 
開閉動作の完了を待たずに次の命令へ進む。 

 

 

例外 

 

 

 


69 

B 8440-1995  

備考 

ハンドの開閉を量で指定するとき,又は複数のパラメタを指定するときには,GRASPを用いる。 
開閉動作に時間を要する場合には,DELAY又は$DONEを併用する。 

コード 

ED1F 

表記 

HANDCLOSE 

機能 

ハンドを閉じる (hand close) 

 

 

呼出形式 

HANDCLOSE 

 

 

結果 

なし 

 

 

入力 

 

 

 

出力 

 

 

 

説明 

現在のハンド(手先効果器)を閉じる。 
開閉動作の完了を待たずに次の命令へ進む。 

 

 

例外 

 

 

 

備考 

ハンドの開閉を量で指定するとき,又は複数のパラメタを指定するときには,GRASPを用いる。 
開閉動作に時間を要する場合には,DELAY又は$DONEを併用する。 

コード 

ED20 

表記 

GRASP 

機能 

握り (grasp) 

 

 

呼出形式 

a1 … an n GRASP 

 

 

結果 

 

 

入力 

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 

 

 

結果 

 

 

入力 

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とする。 


70 

B 8440-1995  

例外 

 

 

 

備考 

 

 

 

コード 

ED23 

表記 

HANDCHG 

機能 

ハンドの交換 (hand change) 

 

 

呼出形式 

a HANDCHG 

 

 

結果 

 

 

 

入力 

a :I1,I2,I4,R4,R8 ハンド番号 

 

 

出力 

b :I2 エラーフラグ 

 

 

説明 

指定されたハンド(手先効果器)に論理的に交換する。 
フラグbは,例外が発生しなければ,0値。発生すれば非0値。 
なお,ハンド番号aが実数で与えられた場合,あらかじめ整数に丸める。 

例外 

ハンド番号が未定義のとき。 

 

 

備考 

ハンドの物理的交換をすることは限らない。 

 

 


71 

B 8440-1995  

附属書2 書式変換 

 

1. 適用範囲 この附属書は,STROLICにおける書式変換に関しての書式指定について規定する。 

備考 データの文字による表現と処理系の内部表現との変換を,書式変換という。書式変換では,変

換を指示する書式指定に従ってデータの表現形式が変換される。 

 

2. 書式指定 

(1) BASIC形式 書式指定は,ANSI FULL-BASICに従う。 

(2) C形式 書式指定は,基本的にANSI Cに従う。ただし,以下の点が異なる。 

・ 書式文字列中のu,l,L,hについては,意味をもたない。 

・ %cについては,STROLICの整数型データが対応する。 


72 

B 8440-1995  

参考1 中間コード・マシン 

序文 この参考は,本体及び附属書の規定に関連する事柄を補足するもので,規定の一部ではない。 

 

1. 中間コードマシン概要 中間コードの実行を行う仮想のマシンの構成を述べる。実際のインプリメン

トに際し,このとおりに作る必要はない。あくまで概念的なモデルである。 

ロボット言語は,利用者が使用する入力形式言語であり,統一的文法をもつ。これを利用者とロボット

とのマン・マシン・インタフェースとしてとらえるなら,中間コードはロボットの制御盤と外部のコンピ

ュータとのマシン・マシン・インタフェースとして定義される。各種“機能”のロボット制御盤上での実

現には,“機能”を手続あるいは関数のパッケージとして準備する方法が行われ,それらの呼出しによって

“機能”を実現する。したがって,中間コード表現に用いる文法は,入力用言語で用いられるより単純,

かつ,原始的で十分である。 

この中間コードは, 

(1) スタックの利用 

(2) 逆ポーランド記法の採用 

(3) タグによるデータ構造の表現 

を採用し,単純な処理系を想定しているので,その文法も,関数の処理手続として, 

(1) スタックから実引き数の値を必要なだけ取り,演算する。 

(2) 演算結果をスタック上に置く。 

だけであり,データ構造のスタックヘの積み方としては, 

(3) タグによって続くデータを解釈する。 

を想定しているだけである。 

なお,これらの中間コードにおける文法は,入力用言語の文法を規定するものではない。 

 

2. 仮想マシン構成 仮想マシン(インタプリタ)は,入力ストリーム,スタック,変数表,ヒープ,リ

ターンスタックから構成される。 

 


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. 利用者関数及び利用者変数の評価 利用者関数及び変数は,インタプリタ内の変数表にあらかじめリ

ストされている。変数表は,利用者関数,変数のコード及びその実体の存在するヒープ上の位置へのポイ

ンタから成っている。この表を引くことによって利用者変数又は関数の実体を取り出し,評価することが

できる。取り出した実体が関数の場合は,利用者関数の評価が行われる。そうでなければ利用者変数の評

価が行われる。 


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は,取り出す要素の型をタグの形で与える。 

例 部分文字列 


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ビ

ットのオン/オフフラグで同期又は排他制御に用いる。イベントフラグも番号で識別される。 


76 

B 8440-1995  

ロック LOCK 

ロック解除 UNLOCK 

イベント待ち EWAIT,EWAITA,EWAITO,EPOP 

イベント発生 ESIG 

イベントクリア ECLR 

プロセスの間でのデータの共有には,グローバル変数を用いる。グローバル変数は,二つのプロセス

(STROLIC関数)から共に参照することができる。別のタスクと共有するデータの場合は,共有変数宣言

が必要である。共有変数宣言では,変数に共有変数番号が割り付けられ,別のタスクは,この共有変数番

号を頼りに共有変数への参照を実現する。データの排他制御は,イベントフラグを用いて利用者が行う必

要がある。 

他に,1 : 1の単方向のデータ交換を簡便に行うためにチャネルが用意されている。一つのチャネルは,

一つのイベントフラグとスタックとを介したデータ交換で実現される。 

チャネル入力 CHIN 

チャネル出力 CHOUT 


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) を省略] 


78 

B 8440-1995  

ロボット言語JIS原案作成専門委員会 構成表 

 

 

氏名 

所属 

(委員長) 

 

新 井 民 夫 

東京大学 

 

 

松 元 明 弘 

東洋大学 

 

 

伊佐山 建 志 

通商産業省 

 

 

吉 田 藤 夫 

工業技術院 

 

 

柿 倉 正 義 

工業技術院電子技術総合研究所 

 

 

高 島   覺 

財団法人機械振興協会 

 

 

黒 澤 豊 樹 

黒澤R&G技術事務所 

 

 

石 井   博 

株式会社小野技術研究所 

 

 

鈴 木 和 彦 

日本電装株式会社 

 

 

吉 田 邦 夫 

日本ビクター株式会社 

 

 

斎 藤 和 春 

セイコーエプソン株式会社 

 

 

川 村 敏 和 

株式会社東芝 

 

 

西 本 克 史 

富士通株式会社 

 

 

針 木 和 夫 

株式会社不二越 

 

 

佐 藤 和 克 

松下電器産業株式会社 

 

 

中 村 寿 夫 

石川島播磨重工業株式会社 

 

 

松 島 幹 治 

川崎重工業株式会社 

 

 

村 上 悦 三 

株式会社ダイヘン 

 

 

毛 利 峻 治 

株式会社日立製作所 

 

 

原   龍 一 

ファナック株式会社 

 

 

奥 井 得 博 

富士電機株式会社 

 

 

高 木 裕 明 

ぺんてる株式会社 

 

 

森   俊 二 

三菱電機株式会社 

 

 

田 中 雅 人 

株式会社安川電機 

 

 

松 本 博 志 

株式会社ユーシン精機