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

 

日本工業規格          JIS 

 

B 8439-1992 

 

 

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

Industrial robots−Programming language SLIM 

 

 

1. 適用範囲 この規格は,主として組立作業に用いる種々の産業用ロボット(以下,ロボットという。)

間での,動作プログラムの移植性を高めるためのプログラム言語SLIM (Standard Language for Industrial 

Manipulators) (以下,SLIMという。)の記述形式及び機能(以下,言語仕様という。)について規定する。 

備考1. この規格で規定する構文の記述方法を,附属書に規定する。 

2. この規格の引用規格を,次に示す 

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

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

JIS X 0201 情報交換用符号 

 

2. 用語の定義 この規格で用いる主な用語の定義は,次によるほか,JIS X 0001及びJIS X 0015による。 

(1) 処理系定義 プログラムの処理方法・意味について,処理系ごとに定める定義。この場合,処理系ご

とにプログラムの処理方法・意味を具体的に成文化しておかなければならない。 

(2) 拡張 SLIMの言語仕様と規格合致性をもつプログラムを排除しない範囲で,SLIMの言語仕様を変更

すること。 

備考 規格合致性については,4.に規定する。 

(3) 例外状態 プログラムが,SLIMの言語仕様に従って動作できないこと又は動作していないことを,

処理系が認識したときの状態。 

(4) 丸め 高精度の数値から低精度の数値を得る方法。実数値から整数値を得る場合,元の値に0.5を加

えた値に対してそれを超えない最大の整数値を結果とする。 

 

3. 規定事項 この規格の規定事項は,次による。 

(1) SLIMの言語仕様によるプログラムの構文。 

(2) SLIMで書かれたプログラムによって制御されるロボットシステムに対して入出力できるデータ形式

並びに数値表現の精度及び範囲。 

(3) SLIMで書かれたプログラムによって制御されるロボットシステムの動作。 

(4) SLIMで書かれたプログラムの意味の解釈に関する事項。 

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

 

4. SLIMへの規格合致性 

4.1 

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

(1) SLIMで書かれたプログラムの規格合致性。 


B 8439-1992 

(2) SLIMで書かれたプログラムを処理する処理系の規格合致性。 

4.2 

プログラムの規格合致性 プログラムは,次の条件を満たすとき,プログラムの規格合致性をもつ。 

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

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

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

を構成していること。 

4.3 

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

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

(2) プログラムの規格合致性をもたないプログラムに対しては,これを受け入れられないことを報告でき

ること。 

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

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

解釈できること。 

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

解釈できること。 

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

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

定義してあること。 

4.4 

誤りの処理 処理系の規格合致性をもつ処理系は,プログラムに構文上の誤り又は意味上の誤りが

あることを必ずしも報告しなくともよい。 

4.5 

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

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

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

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

ならない。ただし,例外処理手続を規定している場合は,その手続によらなければならない。この例

外処理の規定がある場合であっても,処理系のハードウェア,操作環境などの制約によって例外処理

の手続がとれない場合は,プログラムの実行を終了しなければならない。 

(3) この規格では,例外状態の検出の順序及び処理の順序については規定しない。 

4.6 

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

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

致していない部分を報告する必要はない。ただし,この場合であって,文その他の要素がSLIMの言語仕

様に定める構文規則に合致していないときは,処理系は,誤りを報告するか又は合致していない部分の構

文規則及び意味をあらかじめ与えておかなければならない。 

 

5. プログラム要素 

5.1 

文字 SLIMで使用する文字 (character) は,表1による。 


B 8439-1992 

表1 SLIM用文字の組 

英字 (letter) 

ABCDEFGHIJKL 
MNOPQRSTUVWX 
YZ 

数字 (digit) 

0123456789 

記号 (symbol) 

!”ʼ#$%&( )*+− 
.,/:;=<>?@

̀〔 

〔 

¥〕^{ }−| 

空白 (space) 

空白文字 

下線 (underscore) 

_ 

処理系定義文字 

処理系で使用可能な上記以外の文字 

備考1. 英小文字の使用は,処理系に依存するものとする。 

2. 情報交換用の符号系は,JIS X 0201の7単位又は8単位の符号系を用いることが望ましい。 

5.2 

識別子 

5.2.1 

構文 識別子 (identifier) の構文は,図1による。 

図1 識別子 (identifier) 

 

5.2.2 

意味 識別子の文字数の制限については,処理系定義とする。ただし,この文字数の制限は,8文

字以上でなければならない。 

また,識別子の少なくとも先頭の8文字までは,識別可能でなければならない。 

 

6. 定数 

6.1 

構文 定数の構文は,次の(1)〜(10)による。 

(1) 符号なし整数 符号なし整数 (unsigned integer) の構文は,図2による。 

図2 符号なし整数 (unsigned integer) 

 

(2) 符号なし数 符号なし数 (unsigned number) の構文は,図3による。 


B 8439-1992 

図3 符号なし数 (unsigned number) 

 

(3) 角度値 角度値(1) (degree number) の構文は,図4による。 

図4 角度値 (degree number) 

 

注(1) “ラジアン”でなく,“度”によって角度を表現したいときに用いる(例参照)。 

例 90度の正弦を示す例:SIN (90DEG) 

参考 90DEGは,2

ジアンを度数表現で表記したものであって,定数90を意味するものでは

ない。 

(4) 16進数 16進数 (hexadecimal number) の構文は,図5による。 

図5 16進数 (hexadecimal number) 

 

例1. 10進数の16を16進数で表した場合の例:&H10 

例2. 10進数の255を16進数で表した場合の例:&HFF 

(5) 2進数 2進数 (binary number) の構文は,図6による。 

図6 2進数 (binary number) 

 

例1. 10進数の4を2進数で表した場合の例:&B0100 

例2. 10進数の15を2進数で表した場合の例:&B1111 

(6) 符号なし定数 符号なし定数 (unsigned constant) の構文は,図7による。 


B 8439-1992 

図7 符号なし定数 (unsigned constant) 

 

(7) 定数 定数 (constant) の構文は,図8による。 

図8 定数 (constant) 

 

例1. −10.5E−10 

例2. +90DEG 

例3. −&H0F 

(8) 正定数 正定数 (positive constant) の構文は,図9による。 

図9 正定数 (positive constant) 

 

(9) 文字列 文字列 (string) の構文は,図10による。 

図10 文字列 (string) 

 

備考 文字列の要素として”を用いるときは,”を二つ続ける(例参照)。 

例 文字の列EXAMPLE OF “A” を表す例: “EXAMPLE OF”” A ””” 

(10) ポーズ定数 ポーズ定数 (pose constant) の構文は,図11による。 


B 8439-1992 

図11 ポーズ定数 (pose constant) 

 

6.2 

意味 定数の意味は,次による。 

(1) 算術型の定数[6.1(1)〜(8)]は,その定数によって表現される数を値とする。符号なし整数の文字Eは,

10のべき乗を示す。Eの直後の符号を省略したときは,正符号が省略されているとみなされる。有効

数字のけた数については,処理系定義とする。ただし,10進6けた以上の精度でなければならない。 

(2) 各処理系の許容する定数の最大値・最小値を機械最大値・機械最小値という。この実際の数値につい

ては,処理系定義とする。 

(3) 角度は,ラジアンで表す。これを度数で表現する場合には,6.1(3)の角度値を用いる。 

(4) 文字列の値は,記号”で挟まれたすべての文字の列とする。この場合,空白も意味をもつ。文字列の

長さとは,記号”によって挟まれた文字列の長さである。各処理系の許容する文字列の最大長は,処

理系定義とする。 

(5) ポーズ定数は,ロボットの位置・姿勢・形態を表す定数である。ポーズ定数を構成する算術式には,

変数を含んでいてはならない。 

また,算術式の個数n及び意味については,処理系定義とする。 

6.3 

例外状態 定数の例外状態は,次による。 

(1) 数値定数が,正の機械最大値又は負の機械最小値の範囲外であるとき。この場合,それぞれ機械最大

値又は機械最小値として処理を続行してもよい。 

(2) 文字列が,その制限長を超えているとき。 

(3) ポーズ定数の要素式の数が,足りないとき。 

 

7. 変数 

7.1 

構文 変数の構文は,次の(1)〜(9)による。 

(1) 算術変数 算術変数 (arithmetic variable) の構文は,図12による。 

図12 算術変数 (arithmetic variable) 

 

(2) 単純変数 単純変数 (simple variable) の構文は,図13による。 

図13 単純変数 (simplevariable) 

 

(3) 算術型後置子 算術型後置子 (arithmetic type postposition) の構文は,図14による。 


B 8439-1992 

図14 算術型後置子 (arithmetic type postposition) 

 

(4) 文字列変数 文字列変数 (string variable) の構文は,図15による。 

図15 文字列変数 (string variable) 

 

(5) 部分文字列指定 部分文字列指定 (substring qualifier) の構文は,図16による。 

図16 部分文字列指定 (substring qualifier) 

 

(6) 文字列型後置子 文字列型後置子 (string type postposition) の構文は,図17による。 

図17 文字列型後置子 (string type postposition) 

 

(7) 添字 添字 (subscription) の構文は,図18による。 

図18 添字 (subscription) 

 

(8) ポーズ変数 ポーズ変数 (pose variable) の構文は,図19による。 

図19 ポーズ変数 (pose variable) 

 

(9) 番号付きポーズ変数 番号付きポーズ変数 (numbered pose variable) の構文は,図20による。 


B 8439-1992 

図20 番号付きポーズ変数 (numbered pose variable) 

 

7.2 

意味 変数の意味は,次による。 

備考 プログラムの実行中は,常に,算術変数は数値に,文字列変数は文字列値に,ポーズ変数及び

番号付きポーズ変数はポーズ値に結び付けられている。変数に結び付けられた値は,プログラ

ムの文の実行によって,陰に陽に変わることがある。 

(1) ポーズ名称は,あらかじめポーズ変数宣言[10.1(6)参照]で宣言しておかなければならない。 

(2) ポーズ番号の下限は1とし,上限については処理系定義とする。 

(3) ポーズ番号式を用いた番号付きポーズ変数は,その評価値と同一のポーズ番号をもつ番号付きポーズ

変数とみなされる。例えば,P [I] でIの値が5の場合は,P5とみなされる。 

(4) P005,P05,P5などは,同一の番号付きポーズ変数を表す。 

(5) 変数名には,予約語(キーワード)を含んでもよいが,予約語だけの変数名は許されない。 

(6) FNで始まる識別子は,関数名称であるとみなされるため,変数名としては使用できない。 

(7) 表2に示す変数は,特別な意味をもつ組込み変数であり,他の目的で使用してはならない。 

表2 組込み変数 

変数 

型 

意味 

DATE$ 

文字列 

日付をYY/MM/DDの形式で示す。 

TIME$ 

文字列 

時刻をHH : MM : SSの形式で示す。 

 

TIMER 

 
整数 

時刻を基準時からの秒で示す。 

備考 基準時については処理系定義

とする。 

(8) 変数の識別は,識別子だけによる。型後置子は識別に関与しない。 

(9) 配列の各要素は,添字式の値によって定まる配列の要素として参照される。添字式は,求められた値

に最も近い整数に丸められる。 

(10) 文字列変数に結び付けられた文字列の長さは,0文字から最大文字列長まで変わり得る。最大文字列

長については,処理系定義とするが,255文字とするのが望ましい。 

(11) 文字列a$の部分文字列指定a$ (m : n) は,a$に結びついた文字列値のm文字目からn文字目までの部

分文字列を指定する。文字列の中の文字は,左から右に,それぞれ1から順に番号が付けられる。m

又はnが1からLEN (a$) までの範囲になければ,mはMAX (m, 1) と,nはMIN [n, LEN(a$] とする

(LEN,MAX及びMINは,16.参照)。 

さらに,m > nならば,次のとおりとする。 

(a) n < m < LEN (a$) の場合,a$ (m : n) は,m番目の文字列の直前にある空文字列とする。 

(b) LEN (a$) < mの場合,a$ (m : n) は,a$の直後の空文字列とする。 

(12) 実行開始時に各変数に結び付けられる初期値については,処理系定義とする。 

7.3 

例外状態 変数の例外状態は,次による。 

(1) 添字式の値が,明示的に示された配列要素の上限・下限の範囲内にないとき。この場合,プログラム


B 8439-1992 

の続行はできない。 

(2) 型後置子が,矛盾しているとき。この例外状態は,入力時に検出されることが望ましい。 

(3) ポーズ番号が,許される範囲内にないとき。この例外状態は,入力時に検出されることが望ましい。 

(4) ポーズ番号式の値が,許される範囲内にないとき。この場合,プログラムの続行はできない。 

 

8. 演算式 

8.1 

演算式の構文 演算式 (expression) の構文は,図21による。 

図21 演算式 (expression) 

 

8.2 

算術式 

8.2.1 

構文 算術式の構文は,次の(1)〜(6)による。 

(1) 算術式 算術式 (arithmetic expression) の構文は,図22による。 

図22 算術式 (arithmetic expression) 

 

(2) 項 項 (term) の構文は,図23による。 

図23 項 (term) 

 

(3) 算術一次子 算術一次子 (primary) の構文は,図24による。 

図24 算術一次子 (primary) 

 

(4) 因子 因子 (factor) の構文は,図25による。 


10 

B 8439-1992 

図25 因子 (factor) 

 

(5) 算術関数 算術関数 (arithmetic function) の構文は,図26による。 

図26 算術関数 (arithmetic function) 

 

(6) 算術関数名 算術関数名 (arithmetic function name) の構文は,図27による。 

図27 算術関数名 (arithmetic function name) 

 

8.2.2 

意味 算術子の意味は,次による。 

(1) 組込み関数以外の関数は,あらかじめDEF文で定義しておかなければならない。 

(2) +,−,*,/,MOD及び ^ は算術演算子であり,演算子の示す数値演算を行う。ここで,^ はべ

き乗演算子である。NOT,AND,OR及びXORはビット操作演算子であり,ビットごとの演算を行う。 

(3) 0^0は1とする。 

(4) 計算の精度は10進6けた以上とし,最大・最小は1038以下・10−38以上とすることが望ましい。 

8.2.3 

例外状態 算術式の例外状態は,次による。 

(1) 0による除算が行われたとき。この場合,被除数の符号をもった機械最大値を商とすることが望まし

い。 

(2) 式の評価であふれが生じたとき。この場合,正しい符号をもった機械最大値を式の値とすることが望

ましい。 

(3) 負の数値を非整数でべき乗したとき。この場合,プログラムの続行はできない。 

(4) 0を負の数値でべき乗したとき。この場合,正の機械最大値とすることが望ましい。 

(5) 式の評価で下位あふれが生じたとき。この場合,例外状態であることを報告し,結果を0としてプロ

グラムを続行することが望ましい。 

(6) 関数の実引き数の数と仮引き数の数とが合わないとき。この場合,プログラムの続行はできない。 


11 

B 8439-1992 

8.3 

文字列式 

8.3.1 

構文 文字列式の構文は,次の(1)〜(5)による。 

(1) 文字列式 文字列式 (string expression) の構文は,図28による。 

図28 文字列式 (string expression) 

 

(2) 文字列因子 文字列因子 (string factor) の構文は,図29による。 

図29 文字列因子 (string factor) 

 

(3) 文字列一次子 文字列一次子 (string primary) の構文は,図30による。 

図30 文字列一次子 (string primary) 

 

(4) 文字列関数 文字列関数 (string function) の構文は,図31による。 

図31 文字列関数 (string function) 

 

(5) 文字列関数名 文字列関数名 (string function name) の構文は,図32による。 

図32 文字列関数名 (string function name) 

 

8.3.2 

意味 文字列式の意味は,次による。 

(1) 組込み関数以外の関数は,あらかじめ10.で規定する関数宣言で定義しておかなければならない。 

(2) +は,文字列の連結演算を行う演算子である。 

8.3.3 

例外状態 文字列式の例外状態は,次による。 

(1) 文字列関数の実引き数の数と仮引き数の数とが合わないとき。この場合,プログラムの続行はできな

い。 

8.4 

ポーズ 


12 

B 8439-1992 

8.4.1 

構文 ポーズの構文は,次の(1)及び(2)による。 

(1) ポーズ ポーズ (pose) の構文は,図33による。 

図33 ポーズ (pose) 

 

(2) 並進偏差 並進偏差 (deviation) の構文は,図34による。 

なお,ロボット座標系における例を例1に,ハンド座標系における例を例2に示す。 

図34 並進偏差 (deviation) 

 

例1. ロボット座標系における並進偏差の例 

 

例2. ハンド座標系における並進偏差の例 

 

現在ポーズ*から付随するハンド座標系 (f−g−h) で (

 

 

れた点(ポーズ)

P002は,次のように定義される。 

P002=*+ (

昀  

最  

8.4.2 

意味 ポーズの意味は,次による。 

(1) +は,偏差演算を行う演算子である。 

(2) *は,ステートメント実行時のロボットの現在ポーズを示す。 

(3) 並進偏差におけるHは,ハンド座標系での並進偏差であることを示す。ただし,ハンド座標系につい


13 

B 8439-1992 

ては,処理系定義とする。 

8.4.3 

例外状態 ポーズの例外状態は,次による。 

(1) ポーズ変数又は番号付きポーズ変数の値が,確定していないとき。この例外状態は,実行時に検出さ

れることが望ましい。 

 

9. プログラム構造 

9.1 

構文 プログラム構造の構文は,次の(1)〜(7)による。 

(1) プログラム プログラム (program) の構文は,図35による。 

図35 プログラム (program) 

 

(2) 区 区 (block) の構文は,図36による。 

図36 区 (block) 

 

(3) 単純行 単純行 (simple line) の構文は,図37による。 

図37 単純行 (simple line) 

 

(4) 行番号 行番号 (line number) の構文は,図38による。 

図38 行番号 (line number) 

 

(5) ラベル ラベル (label) の構文は,図39による。 

図39 ラベル (label) 

 

(6) 行末 行末 (end of line) の構文は,図40による。 

図40 行末 (end of line) 

 

備考 行末は行がそこで終わっていることを示す。プログラムの表記上は何も書かれていないが,処

理系によってはCR(キャリッジリターン),LF(ラインフィード)などの制御文字がその位置

に挿入される場合がある。 


14 

B 8439-1992 

(7) コメント コメント (comment) の構文は,図41による。 

図41 コメント (comment) 

 

(8) END行 END行 (END line) の構文は,図42による。 

図42 END行 (END line) 

 

9.2 

意味 プログラム構造の意味は,次による 

(1) 一つのプログラムは,行番号の値の昇順に並んだ区(ブロック)の並びとする。プログラムの最後の

行は,END行でなければならない。プログラムの実行は,一番若い番号から始まり,次のいずれかの

場合になるまで順次実行される。 

(a) フロー制御(13.参照)によって制御が変わった場合 

(b) STOP文が実行された場合 

(c) END行に到達した場合 

(d) 例外状態となった場合 

(2) 行の先頭は,行番号でなければならない。行番号において先行する0は,意味をもたない。 

(3) 1行に書くことができる文字数は,処理系に依存する。行末 (end of line) は,この文字数に含まれな

い。 

(4) ラベル名の長さ及び命名方法は,識別子の定義に従う。 

(5) ラベル名は,別の目的で用いたり,二重に定義したりしてはならない。 

(6) コメントは,プログラムの実行に何の効果も及ぼさない。ただし,コメントをGOTO文など分岐命令

の分岐先として用いてもよい。この場合,制御は引き続く最初の文に移る。 

(7) コメントは,1行以内に納まっていなければならない。 

 

10. 宣言 

10.1 構文 宣言 (declaration) の構文は,次の(1)〜(6)による。 

(1) I/O変数宣言 I/O変数宣言 (declaration of I/O variable) の構文は,図43による。 


15 

B 8439-1992 

図43 I/O変数宣言 (declaration of I/O variable) 

 

備考 BITと指定されたI/O変数をBIT型I/O変数という。 

(2) ハンド名称宣言 ハンド名称宣言 (declaration of hand identifier) の構文は,図44による。 

図44 ハンド名称宣言 (declaration of hand identifier) 

 

(3) 配列宣言 配列宣言 (declaration of array) の構文は,図45による。 

図45 配列宣言 (declaration of array) 

 

(4) 関数宣言 関数宣言 (declaration of function) の構文は,図46による。 

図46 関数宣言 (declaration of function) 

 

例1. DEF FNPI=3.141 592 

例2. DEF FNXYZ (X, Y, Z) =X+Y*Z+1 

(5) 関数名 関数名 (function name) の構文は,図47による。 


16 

B 8439-1992 

図47 関数名 (function name) 

 

(6) ポーズ変数宣言 ポーズ変数宣言 (declaration of pose variable) の構文は,図48による。 

図48 ポーズ変数宣言 (declaration of pose variable) 

 

10.2 意味 宣言の意味は,次による。 

(1) ポーズ変数は,宣言してから使用することが必要である。ただし,暗黙の型宣言があるときは,この

限りではない。 

(2) I/O変数は,ロボットと周辺装置との間の入出力を行うための変数であり,この変数で入出力のポー

トアドレスを定義する。ただし,I/Oポートアドレス,マスク情報については,処理系定義とする。 

また,必要ならば処理系定義のオプションを付けてもよい。 

(3) ハンドパラメータの意味については,処理系定義とする。 

(4) 暗黙の型宣言の採用は,処理系に依存する。その場合,その意味については,処理系定義とする。 

(5) 配列の添字は,1から始まる。 

また,配列の次元は,3次元までである。 

10.3 例外状態 宣言の例外状態は,次による。 

(1) I/O変数宣言で示されるポートアドレスが,指定可能範囲を超えているとき。この例外状態は,入力

時に検出されることが望ましい。 

(2) 配列の次元が,3次元を超えているとき。この例外状態は,入力時に検出されることが望ましい。 

(3) 配列の大きさが,処理系で定義された制限を超えているとき。 

(4) 宣言によって名称が,二重に定義されているとき。この例外状態は,入力時に検出されることが望ま

しい。 

 

11 文 

11.1 構文 文 (statement) の構文は,図49による。 

図49 文 (statement) 

 

11.2 意味 文の意味は,次による。 


17 

B 8439-1992 

(1) 文は,プログラムの個々の機能の実行を明示するものである。 

(2) 代入文は,変数に結び付けられている値を変更する文である(12.参照)。 

(3) フロー制御文は,プログラムの実行の順序を制御する文である(13.1参照)。 

(4) ロボット制御文は,ロボット又はロボットの周辺装置の制御を行う文である(14.参照)。 

(5) 入出力文は,入出力装置に対して入出力を行う文である(15.参照)。 

 

12. 代入文 

12.1 代入文の構文 代入文 (assignment statement) の構文は,図50による。 

図50 代入文 (assignment statement) 

 

12.2 LET文 

12.2.1 構文 LET文の構文は,次の(1)〜(5)による。 

(1) LET文 LET文 (LET statement) の構文は,図51による。 

図51 LET文 (LET statement) 

 

(2) 算術代入 算術代入 (arithmetic assignment) の構文は,図52による。 

図52 算術代入 (arithmetic assignment) 

 

(3) 文字列代入 文字列代入 (string assignment) の構文は,図53による。 

図53 文字列代入 (string assignment) 

 

(4) ポーズ代入 ポーズ代入 (pose assignment) の構文は,図54による。 

図54 ポーズ代入 (pose assignment) 

 

(5) ポーズ成分代入 ポーズ成分代入 (pose element assignment) の構文は,図55による。 


18 

B 8439-1992 

図55 ポーズ成分代入 (pose element assignment) 

 

12.2.2 意味 LET文の意味は,次による。 

(1) 算術代入は,算術変数に結び付けられている値を,右辺の算術式を評価して得られる値に置き換える

文である。 

(2) 文字列代入は,文字列変数に結び付けられている値を,右辺の文字列式を評価して得られる値に置き

換える文である。文字列代入の左辺に部分文字列指定がある場合は,その文字列変数の部分文字列指

定で指定された部分が右辺で置き換わる。この結果として,文字列全体の長さが変わることもある。 

(3) ポーズ代入は,ポーズ変数又は番号付きポーズ変数に結び付けられている値を,右辺のポーズを評価

して得られる値に置き換える文である。 

(4) ポーズ成分代入は,ポーズ変数又は番号付きポーズ変数のX成分,Y成分又はZ成分のいずれか指定

された成分を右辺の値で置き換える文である。 

12.2.3 例外状態 LET文の例外状態は,次による。 

(1) 文字列の長さが,許される文字列長を超えたとき。この例外状態は,代入時に検出されることが望ま

しい。 

(2) 指定されたポーズが,ロボットの可動領域を超えているとき。この例外状態は,代入時に検出される

ことが望ましい。 

(3) ポーズ変数の成分に代入した結果が,ロボットの可動領域を超えているとき。この例外状態は,代入

時に検出されることが望ましい。 

12.3 HOME文 

12.3.1 構文 HOME文 (HOME statement) の構文は,図56による。 

図56 HOME文 (HOME statement) 

 

12.3.2 意味 HOME文の意味は,次による。 

(1) HOME文は,ホームポーズを定義する文である。HOME文は,通常,GOHOME文と組み合わせて用

いられる。 

備考 ホームポーズをプログラムの中で定義しておかないと,GOHOME文を用いてホームポーズへ

動かすことはできない。 

(2) 一度定義されたホームポーズは,HOME文によって再定義されるまで有効である。 

12.3.3 例外状態 HOME文の例外状態は,次による。 

(1) 指定されたポーズが,ロボットの可動領域を超えているとき。この例外状態は,代入時に検出される

ことが望ましい。 

 

13. フロー制御 

13.1 フロー制御文 


19 

B 8439-1992 

13.1.1 構文 フロー制御文の構文は,次の(1)〜(3)による。 

(1) フロー制御文 フロー制御文 (flow control statement) の構文は,図57による。 

図57 フロー制御文 (flow control statement) 

 

(2) 関係式 関係式 (relational expression) の構文は,図58による。 

図58 関係式 (relational expression) 

 

備考 図58における=,<,>,<=,=<,>=,=>,<>又は><は,関

係演算子であり,それぞれの意味は表3のとおり。 

表3 関係演算子 

関係演算子 

意味 

= 

等しい 

< 

小さい 

> 

大きい 

<=, =< 

小さいか又は等しい 

>=, => 

大きいか又は等しい 

<>, >< 

等しくない 

(3) アドレス アドレス (address) の構文は,図59による。 


20 

B 8439-1992 

図59 アドレス (address) 

 

例1. GOTO 100 

例2. GOTO *LABEL 

例3. IF X=1 THEN *LABEL ELSE GOTO 100 

13.1.2 意味 フロー制御文の意味は,次による。 

(1) GOTO文は,行番号又はラベル名で示される文へ無条件に制御を移す文である。 

(2) GOSUB文は,行番号又はラベル名で示されるサブルーチンへ制御を移す文である。 

(3) RETURN文は,サブルーチンからその呼び出し元へ制御を戻す文である。 

(4) STOP文は,プログラムの実行を終了する文である。 

(5) ON GOTO文は,条件式で示される数値と同じ順位に書かれた行番号又はラベル名へ制御を移す文で

ある。このときの順位は,左から1,2,………と数える。条件式で示される数値は,整数に丸められ

た後処理される。 

(6) IF文は,条件式が成立するときにTHEN以下の文を実行する。条件式が不成立のときは,ELSE以下

の文を実行する。ELSE以下がない場合で条件不成立のときは,次の文へ進む。 

(7) 関係式において,関係演算子と第2演算式とを省略すると,“<>0”が仮定される。 

例 次の二つの文は等価である。 

IF X THEN GOTO *LABEL1 

IF X<>0 THEN GOTO *LABEL1 

(8) IF文のTHEN及びELSEの後ろには,それぞれ一つの文又はアドレスが書ける。 

例 IF X>100 THEN Y=100 ELSE Y=X 

(9) IF文の入れ子を行った場合のELSEは,そのELSEに最も近くて対応のないTHENに対応する。 

例  

 

13.1.3 例外状態 フロー制御文の例外状態は,次による。 

(1) GOTO文,GOSUB文又はIF文の分岐先が存在しないとき。この例外状態は,入力時に検出されるこ

とが望ましい。 

(2) ON−GOTO文の式の値が,飛び先の数の範囲外であるとき。この場合,プログラムの続行はできない。 

13.2 FOR区 

13.2.1 構文 FOR区の構文は,次の(1)〜(3)による。 

(1) FOR区 FOR区 (FOR block) の構文は,図60による。 


21 

B 8439-1992 

図60 FOR区 (FOR block) 

 

(2) FOR行 FOR行 (FOR line) の構文は,図61による。 

図61 FOR行 (FOR line) 

 

(3) NEXT行 NEXT行 (NEXT line) の構文は,図62による。 

図62 NEXT行 (NEXT line) 

 

13.2.2 意味 FOR区の意味は,次による。 

(1) FOR区は,FOR行で始まり,同じ制御変数をもつ最初のNEXT行で終わる。制御変数が省略された

NEXT行は,その直前にある対応のないFOR行に対応する。FOR区は,物理的に入れ子にすること

ができるが,二つのFOR区を交錯させてはならない。FOR区の内側の別のFOR区は,元のFOR区

に完全に含まれていなければならない。 

(2) FOR行において“STEP増分”句を省略すると,増分として+1が想定される。 

(3) FOR区の動作は,他の文の並びを用いて定義することができる。 

FOR v=初期値 TO 終了値 STEP 増分 

(区) 

NEXT v 

は,次と等価する。 

LET own1=終了値 

LET own2=増分 

LET v=初期値 

line1 IF (v−own1) *SGN (own2) >0 THEN line2 

(区) 


22 

B 8439-1992 

LET v=v+own2 

GO TO line1 

line2 REM 次へ進む 

ただし,ここで,own1及びown2は,そのFOR区に関係付けられている変数とし,利用者からは

参照できない。line1及びline2は,そのFOR区に関係付けられている行番号とし,利用者からは参照

できない。変数own1及びown2は,他のFOR区に関係付けられている同様の変数とは別のものとす

る。 

(4) FOR区の外側からFOR区の内側へ,RETURN文以外の文の実行によって,制御を移してはならない。 

13.2.3 例外状態 FOR区の例外状態は,次による。 

(1) FOR行とNEXT行との対応が,正しくないとき。 

(2) FOR区の外側からRETURN文以外の実行で,制御を移したとき。この例外状態は,入力時に検出さ

れることが望ましい。 

 

14. ロボット制御文 

14.1 ロボット制御文の構文 ロボット制御文 (robot control statement) の構文は,図63による。 

備考 ロボット制御文は,ロボット制御装置及び周辺装置の制御を行う文である。 

図63 ロボット制御文 (robot control statement) 

 

14.2 動作制御 

14.2.1 構文 動作制御の構文は,次の(1)〜(10)による。 

(1) 動作制御 動作制御 (motion control) の構文は,図64による。 

図64 動作制御 (motion control) 

 

(2) MOVE文 MOVE文 (MOVE statement) の構文は,図65による。 


23 

B 8439-1992 

図65 MOVE文 (MOVE statement) 

 

(3) 補間指定 補間指定 (interpolation) の構文は,図66による。 

図66 補間指定 (interpolaion) 

 

(4) 動作オプション 動作オプション (motion option) の構文は,図67による。 

図67 動作オプション (motion option) 

 

(5) 続行オプション 続行オプション (continue option) の構文は,図68による。 

図68 続行オプション (continue option) 

 

(6) ROTATE文 ROTATE文 (ROTATE statement) の構文は,図69による。 


24 

B 8439-1992 

図69 ROTATE文 (ROTATE statement) 

 

(7) 回転面指定 回転面指定 (plane specifier) の構文は,図70による。 

図70 回転面指定 (plane specifier) 

 

(8) 回転面名 回転面名 (plane identifier) の構文は,図71による。 

図71 回転面名 (plane identifier) 

 

(9) DRIVE文 DRIVE文 (DRIVE statement) の構文は,図72による。 

図72 DRIVE文 (DRIVE statement) 

 

(10) GOHOME文 GOHOME文 (GOHOME statement) の構文は,図73による。 

図73 GOHOME文 (GOHOME statement) 

 

14.2.2 意味 動作制御の意味は,次による。 

(1) MOVE文は,ロボットを現在ポーズから,poseで示されるポーズへ移動させる文である。 

例1. 現在ポーズからP001を経由してP002に移動する場合の例 

MOVE L, P001, P002 


25 

B 8439-1992 

 

例2. ポーズ指定で*を用いた場合の例 

MOVE L, P001+ (0, 0, 10), *+ (20, 0, 0) 

 

(2) MOVE文において円弧補間を指定する場合のposeは,必ず二つ指定しなくてはならない。 

例 現在ポーズと経由ポーズ (P001) 及び最終ポーズ (P002) によって作られる円上を移動する場合

の例:MOVE C, P001, P002 

 

(3) MOVE文における@は,位置決め精度を示す。位置決め精度は数値が大きいほど高精度となる。@だ

けを指定した場合には,最も低い位置決め精度となる。 

また,@を指定しない場合には,最も高い位置決め精度となる。 

例 現在ポーズ (*) の上方10へ,速度100で直線移動する場合の例 

(並進位置決め精度は5) 

MOVE L, @5*+ (0, 0, 10), S=100 

備考 粗級を指定すると,指定点の近傍に入ったところで次の目標点への制御に移る。 

(4) MOVE文において動作オプションを用いると,移動中の速度の指定,ハンド開閉の指定又は移動時間

の指定ができる。ただし,速度の指定については,そのMOVE文の実行の間だけ有効である。 

(5) MOVE文において続行オプションを用いると,移動制御は,直後の文に引き継がれる。このとき,直

後の文はMOVE文でなければならない。ただし,IOBLOCK ONの状態では,その間に入出力文を挟

むことができる。 

(6) ROTATE文は,指定した回転面内で指定角度だけロボットを回転させる文である。角度の正負につい

ては,指定面の法線に対して右ねじの方向を正とする。 

(7) ROTATE文において3点による回転面の指定をした場合には,第1ポーズが面の原点を示し,第2ポ

ーズがX軸に乗り,第3のポーズがXY平面に乗るような面を表す。 

(8) DRIVE文は,各軸を直接制御する文である。処理系は,各軸に対して回転軸であるか又は並進軸であ


26 

B 8439-1992 

るかを定め,かつ,その正の動作方向を定めることが必要である。 

(9) GOHOME文は,ロボットを現在ポーズからホームポーズへ移動させる文である。移動の方法につい

ては,処理系定義とする。 

14.2.3 例外状態 動作制御の例外状態は,次による。 

(1) 未確定のポーズがあるとき。この場合,プログラムは続行できない。 

(2) 指定ポーズが,可動領域外であるとき。この場合,プログラムは続行できない。 

(3) MOVE文の補間指定において円弧補間が指定された場合で,ポーズが一つ以下又は三つ以上のとき。

この例外状態は,入力時に検出されることが望ましい。 

(4) 続行オプションの指定されたMOVE文の直後に,許されない文があるとき。この例外状態は,入力時

に検出されることが望ましい。 

(5) ROTATE文で回転中心が指定面上にないとき。この場合,プログラムは続行できない。 

(6) GOHOME文に対するホームポーズの定義がないとき。この場合,プログラムは続行できない。 

(7) 位置決め精度値が,処理系定義の上限と下限との間にないとき。この例外状態は,入力時に検出され

ることが望ましい。 

(8) 速度値が,処理系定義の上限と下限との間にないとき。 

(9) 移動時間値が,0以下であるとき。 

14.3 ハンド制御 

14.3.1 構文 ハンド制御の構文は,次の(1)〜(4)による。 

(1) ハンド制御 ハンド制御 (end-effector control) の構文は,図74による。 

図74 ハンド制御 (end-effector control) 

 

(2) RELEASE文 RELEASE文 (RELEASE statement) の構文は,図75による。 

図75 RELEASE文 (RELEASE statement) 

 

(3) GRASP文 GRASP文 (GRASP statement) の構文は,図76による。 

図76 GRASP文 (GRASP statement) 

 


27 

B 8439-1992 

(4) CHANGE文 CHANGE文 (CHANGE statement) の構文は,図77による。 

図77 CHANGE文 (CHANGE statement) 

 

14.3.2 意味 ハンド制御の意味は,次による。 

(1) RELEASE文は,ハンドを開くことを指示する文である。 

また,この文では,ハンドの開きに関するオプションを書くことができる。 

なお,オプションの機能については,処理系定義とする。 

(2) GRASP文は,ハンドを閉じることを指示する文である。 

また,この文では,ハンドの閉じに関するオプションを書くことができる。 

なお,オプションの機能については,処理系定義とする。 

(3) CHANGE文は,ハンドをハンド名称で示されるものに変更することを宣言する文である。この宣言は,

次にCHANGE文が実行されるまで有効である。この場合のハンド名称は,ハンド名称宣言で定義さ

れたものでなければならない。 

備考 CHANGE文は,自動的にハンドを交換するものではない。 

14.3.3 例外状態 ハンド制御の例外状態は,次による。 

(1) CHANGE文で指定した名前が,ハンド名称でないとき,又は定義されていないとき。この例外状態は,

入力時に検出されることが望ましい。 

14.4 入出力制御 

14.4.1 構文 入出力制御の構文は,次の(1)〜(6)による。 

(1) 入出力制御 入出力制御 (I/O control) の構文は,図78による。 

図78 入出力制御 (I/O control) 

 

(2) IN文 IN文 (IN statement) の構文は,図79による。 

図79 IN文 (IN statement) 

 

(3) OUT文 OUT文 (OUT statement) の構文は,図80による。 

図80 OUT文 (OUT statement) 

 

(4) SET文 SET文 (SET statement) の構文は,図81による。 


28 

B 8439-1992 

図81 SET文 (SET statement) 

 

(5) RESET文 RESET文 (RESET statement) の構文は,図82による。 

図82 RESET文 (RESET statement) 

 

(6) IOBLOCK文 IOBLOCK文 (IOBLOCK statement) の構文は,図83による。 

図83 IOBLOCK文 (IOBLOCK statement) 

 

14.4.2 意味 入出力制御の意味は,次による。 

(1) IN文は,I/O変数名で示されるポートアドレスからデータを入力する文である。この場合,I/O変数宣

言で示したマスクなどの処理は,自動的に行われる。 

(2) OUT文は,I/O変数名で示されるポートアドレスにデータを出力する文である。この場合,I/O変数宣

言で示したマスクなどの処理は,自動的に行われる。 

(3) SET文は,BIT型I/O変数のビット出力を1にする文である。ここで,ALLを用いるとすべてのBIT

型I/O変数のビット出力が1になる。 

なお,パルス時間の単位は,msとする。 

(4) RESET文は,BIT型I/O変数のビット出力を0にする文である。ここで,ALLを用いるとすべての

BIT型I/O変数のビット出力が0になる。 

(5) IOBLOCK文は,IOBLOCK ONとIOBLOCK OFFとの対で用いられる。 

IOBLOCK ONとIOBLOCK OFFとで囲まれた範囲内では,ロボットが動作命令を実行中にその動作

命令に引き続く複数のI/O命令が並列実行される。ただし,I/O命令以外の命令が現れると,一度並列

実行は打ち切られる。しかし,もしその範囲内に別の動作命令があると,その直後にあるI/O命令か

ら並列実行が行われる。 

なお,並列実行に関するタイミングについては,処理系定義とする。 

14.4.3 例外状態 入出力制御の例外状態は,次による。 

(1) IN文又はOUT文において,指定されたI/O変数がI/O変数宣言で宣言されていないとき。この例外

状態は,入力時に検出されることが望ましい。 

(2) SET文又はRESET文のI/O変数の型が,BIT型でないとき。この例外状態は,入力時に検出されるこ

とが望ましい。 

(3) IOBLOCK OFFが,これと対応するIOBLOCK ONが実行されていないのに,実行されたとき。 

14.5 速度制御 


29 

B 8439-1992 

14.5.1 構文 速度制御の構文は,次の(1)〜(4)による。 

(1) 速度制御 速度制御 (speed control) の構文は,図84による。 

図84 速度制御 (speed control) 

 

(2) SPEED文 SPEED文 (SPEED statement) の構文は,図85による。 

図85 SPEED文 (SPEED statement) 

 

(3) ACCEL文 ACCEL文 (ACCEL statement) の構文は,図86による。 

図86 ACCEL文 (ACCEL statement) 

 

(4) JSPEED文 JSPEED文 (JSPEED statement) の構文は,図87による。 

図87 JSPEED文 (JSPEED statement) 

 

14.5.2 意味 速度制御の意味は,次による。 

(1) SPEED文は,ロボットの手先の移動速度を指定する文である。速度値の意味(具体的には,単位又は

最高速度に対する割合など)については,処理系定義とする。 

(2) ACCEL文は,加速度・減速度を指定する文である。加速度・減速度の数値の意味(具体的には,単

位又は最高速度・減速度に対する割合など)については,処理系定義とする。 

(3) JSPEED文は,軸の動作速度を指定する文である。速度値の意味(具体的には,単位又は最高速度に

対する割合など)については,処理系定義とする。 

14.6 時間制御 

14.6.1 構文 時間制御の構文は,次の(1)〜(3)による。 

(1) 時間制御 時間制御 (timer control) の構文は,図88による。 

図88 時間制御 (timer control) 

 

(2) DELAY文 DELAY文 (DELAY statement) の構文は,図89による。 


30 

B 8439-1992 

図89 DELAY文 (DELAY statement) 

 

(3) WAIT文 WAIT文 (WAIT statement) の構文は,図90による。 

図90 WAIT文 (WAIT statement) 

 

14.6.2 意味 時間制御の意味は,次による。 

(1) DELAY文は,指定された時間だけプログラムの実行を待つ文である。待ち時間の単位については,

処理系定義とする。 

(2) WAIT文は,関係式が成立するまでプログラムの実行を待つ文である。タイムアウト時間の単位につ

いては,処理系定義とする。 

備考 タイムアウトが発生したときは,オペレータに報告することが望ましい。 

14.7 停止制御 

14.7.1 構文 停止制御の構文は,次の(1)〜(3)による。 

(1) 停止制御 停止制御 (termination control) の構文は,図91による。 

図91 停止制御 (termination control) 

 

(2) HOLD文 HOLD文 (HOLD statement) の構文は,図92による。 

図92 HOLD文 (HOLD statement) 

 

(3) HALT文 HALT文 (HALT statement) の構文は,図93による。 

図93 HALT文 (HALT statement) 

 

14.7.2 意味 停止制御の意味は,次による。 

(1) HOLD文は,プログラムの実行を一時停止する文である。一時停止したときは,コンソールに数値又

は文字が規定形式で出力される。再起動すると,プログラムは,HOLD文の次の文から実行される。 

(2) HALT文は,プログラムの実行を停止する文である。停止したときは,コンソールに数値又は文字が

規定形式で出力される。再起動すると,プログラムは,その先頭から実行される。 

備考 これらの命令文は,プログラムを停止するものであるが,実際のロボットの停止とのずれが最

小限になることが望ましい。 

14.8 形態制御 


31 

B 8439-1992 

14.8.1 構文 形態制御の構文は,次の(1)〜(4)による。 

(1) 形態制御 形態制御 (configuration control) の構文は,図94による。 

図94 形態制御 (configuration control) 

 

(2) 左腕系右腕系形態 左腕系右腕系形態 (arm system configuration) の構文は,図95による。 

図95 左腕系右腕系形態 (arm system configuration) 

 

備考 LEFTY及びRIGHTYは,次のような形態をいう。 

 

(3) ひじ形態 ひじ形態 (elbow system configuration) の構文は,図96による。 

図96 ひじ形態 (elbow system configuration) 

 

備考 ABOVE及びBELOWは,次のような形態をいう。 

 

(4) 手首形態 手首形態 (wrist system configuration) の構文は,図97による。 


32 

B 8439-1992 

図97 手首形態 (wrist system configuration) 

 

備考 FLIP及びNONFLIPは,次のような形態をいう。NONFLIP

は,FLIPの形態から,手首部の姿勢を変えずに,腕を腕の
軸回りに180°回転させた形態である(矢印の向きが反対
になることでこのことを表している。)。 

 

14.8.2 意味 形態制御の意味は,次による。 

(1) 形態制御文は,ロボットの形態を一意的に決定するための補助的な情報を指定する文である。 

(2) これらの形態指定は,一度指定すると,次に指定するまで有効である。 

(3) これらの形態指定の採用については,処理系定義とする。 

(4) 形態が指定されていない場合の形態値については,処理系定義とする。 

(5) 異なる系の形態指定は,コンマで区切って一つの文に並べて書くことができる。しかし,同一系の形

態の指定を一つの文に並べて書くことはできない。 

 

15. 入出力文 

15.1 入出力文の構文 入出力文 (input/output statement) の構文は,図98による。 

図98 入出力文 (input/output statement) 

 

15.2 PRINT文 

15.2.1 構文 PRINT文の構文は,次の(1)及び(2)による。 

(1) PRINT文 PRINT文 (PRINT statement) の構文は,図99による。 

図99 PRINT文 (PRINT statement) 

 

(2) 印字句切り 印字句切り (separator) の構文は,図100による。 


33 

B 8439-1992 

図100 印字句切り (separator) 

 

15.2.2 意味 PRINT文の意味は,次による。 

(1) 数式は,結果が0又は正ならば1文字の空白が,負ならば−の符号が付き,その直後に10進数表現の

数値が続き,最後には一つの空白が付いて出力される。処理系では,指数・仮数の出力有効けたにつ

いて定めておかなければならない。この場合,指数は2けた,仮数は6けた以上の有効けたがあるこ

とが望ましい。 

(2) 整数として正確に表される数は,小数点以下なしの形式で出力される。 

(3) 指数部なしで精度を落とさずに表現できる数は,指数部なしで出力される。この場合,例えば仮数の

出力有効けたが6のとき,10−6は .000001と,10−7は1.E−7と出力される。 

(4) 文宇式列は,文字列データが出力される。 

(5) ポーズの出力については,処理系定義とする。 

(6) データ項目の印字が行幅を超えるときは,行末を出力してからデータ項目が出力される。 

(7) 印字句切り“,”は,印字位置に応じて次のように出力される。 

(a) 現在位置が右端のときは,行末 (end of line) が出力される。 

(b) 出力すべきデータが行幅を超えるときは,行末を出力し,次行に出力される。 

(c) 上記以外のときは,1文字以上の空白を出力し,次の印字欄に出力される。 

(d) 印字行は,一定の個数の印字欄に分割される。印字欄の幅と個数については,処理系定義とする。 

(8) 印字句切り“;”は,最後に出力した位置の直後から出力される。ただし,データ出力は(7)(a)及び(b)

に従う。文字列の場合,出力途中で行端に達すると,そこで行末を出力し,残りは次行から出力され

る。 

(9) PRINT文が印字句切りで終わっていないときは,最後に行末が出力される。 

15.3 INPUT文 

15.3.1 構文 INPUT文 (INPUT statement) の構文は,図101による。 

図101 INPUT文 (INPUT statement) 

 

15.3.2 意味 INPUT文の意味は,次による。 

(1) INPUT文を実行すると,入力要求(プロンプト)が出力される。ユーザは,それに応じて入力データ


34 

B 8439-1992 

を入力する。 

備考 プロンプトの形式は,?△(△は空白を表す。)又は識別名?△を推奨するが,詳細については,

処理系定義とする。 

(2) 入力データの型は,入力される変数の型と一致していなければならない。特に,位置変数のときは,

処理系で定められた形式で,定められた数だけ入力しなければならない。 

また,これらの形式は,PRINT文による出力と対応していなければならない。 

(3) 入力データに下位あふれが発生すると,結果は0となる。 

15.3.3 例外状態 INPUT文の例外状態は,次による。 

備考 入力の誤りに対しては,再入力を要求してもよい。 

(1) 入力データが大きすぎて,あふれが発生したとき。 

(2) データ数が,指定された変数の数より多いとき。 

(3) データの型が,一致しないとき。 

 

16. 組込み関数 

16.1 構文 組込み関数の構文は,(1)〜(3)による。 

(1) 組込み関数 組込み関数 (implementation-supplied function) の構文は,図102による。 

図102 組込み関数 (implementation-supplied function) 

 

(2) 算術組込み関数 算術組込み関数 (implementation-supplied arithmetic function) の構文は,図103によ

る。 


35 

B 8439-1992 

図103 算術組込み関数 (implementation-supplied arithmetic function) 

 

(3) 文字列組込み関数 文字列組込み関数 (implementation-supplied string function) の構文は,図104によ

る。 

図104 文字列組込み関数 (implementation-supplied string function) 

 

16.2 意味 組込み関数の意味は,次による。 

(1) 組込み関数は,あらかじめ定められた算法(アルゴリズム)によって結果が求められる関数である。 

(2) 算術組込み関数の引き数の数及び型並びに関数の値は,表4による。 


36 

B 8439-1992 

表4 算術組込み関数 

関数の種類 

関数 

引き数の数 引き数の型 

関数の値 

平方根 

SQR 

  1 

算術式 

平方根値 

三角関数 

SIN 

  1 

算術式 

正弦値 

COS 

  1 

算術式 

余弦値 

TAN 

  1 

算術式 

正接値 

ATN 

  1 

算術式 

逆正接値 

ATN2 

  2 

算術式 

逆正接値 

最大値最小値 

MAX 

≧2 

算術式 

最大値 

MIN 

≧2 

算術式 

最小値 

絶対値 

ABS 

 1 

算術式 

絶対値 

ポーズ成分抽出 POSX 

 1 

ポーズ 

ポーズのx成分値 

POSY 

 1 

ポーズ 

ポーズのy成分値 

POSZ 

 1 

ポーズ 

ポーズのz成分値 

距離 

DIST 

 2 

ポーズ 

2点間の距離値 

単位変換 

DEGRAD 

 1 

算術式 

ラジアン値 

RADDEG 

 1 

算術式 

度数値 

文字列変換 

ORD 

 1 

文字列式 文字コード値 

VAL 

 1 

文字列式 数値 

STRPOS 

 2 

文字列式 部分文字列の位置 

文字列長 

LEN 

 1 

文字列式 文字列の長さ 

備考1. ATN2の場合において,出力

曰瀰

栰樰謰

また,出力角の符号は,

礰湻

と同じとなる。このとき,

0であってはならない。 

 

2. POSX,POSY又はPOSZは,与えられたポーズ情報の並進位置のx,

y又はz成分を取り出す関数である。 

3. DISTは,ポーズで表現された2点間の距離を求める関数である。 
4. ORDは,文字列の先頭の文字を文字コードに変換する関数である。 
5. VALは,文字列で表現された数値を値に変換する関数である。 
6. STRPOSは,第1引き数の文字列の中で第2引き数の文字列と一致

する最初の部分文字列の位置を求める関数である。この位置が見つ
からない場合には,結果が0となる。 

7. LENは,文字列の長さを求める関数である。 

参考 DEGRADの引き数はラジアンの値であるので,角度値(例えば,

90DEG)を用いると,意図する結果にはならないので注意が必要であ
る。 

(3) 文字列組込み関数の引き数の数及び型並びに関数の値は,表5による。 


37 

B 8439-1992 

表5 文字列組込み関数 

関数の種類 

関数 

引き数の数 引き数の型 

関数の値 

文字列変換 

CHR$ 

算術式 

コードの文字化 

STR$ 

算術式 

10進文字列 

BIN$ 

算術式 

2進文字列 

HEX$ 

算術式 

16進文字列 

MIRROR$ 

文字列式 

ミラー反転文字列 

部分文字列 

LEFT$ 

文字列式 
算術式 

左部分文字列 

RIGHT$ 

文字列式 
算術式 

右部分文字列 

MID$ 

文字列式 
算術式 
算術式 

中央部分文字列 

備考1. CHR$は,式の値を文字コードとしての意味をもつ長さ1の文字列に

変換する関数である。 

2. STR$は,数値を値から文字列表現に変換する関数である。 
3. BIN$は,数値を値から2進文字列表現に変換する関数である。 
4. HEX$は,数値を値から16進文字列表現に変換する関数である。 
5. MIRROR$は,文字列の2進数のビットの並びを逆転した文字列に

変換する関数である。 

6. RIGHT$ (LEFT$) は,第1引き数の文字列の右(左)から第2引き

数で指定された長さの部分文字列を求める関数である。この場合,
長さ0を指定すると空の文字列が結果となる。 

7. MID$は,第1引き数の文字列の第2引き数で指定された位置から

第3引き数で指定された長さの部分文字列を求める関数である。こ
の場合,長さを省略すると文字列の終わりまでが結果となる。 

また,長さ0を指定すると空の文字列が結果となる。 

16.3 例外状態 組込み関数の例外状態は,次による。 

(1) 引き数の数が合わないとき。この例外状態は,入力時に検出することが望ましい。 

(2) 引き数の型が合わないとき。この例外状態は,入力時に検出することが望ましい。 

(3) 数値計算であふれが起こったとき。 

(4) 数値計算で0除算が起こったとき。 

(5) ATN2の二つの引き数がともに0であるとき。 

(6) 部分文字列の長さが負のとき。 


38 

B 8439-1992 

附属書 構文の記述方法 

1. 適用範囲 この附属書は,SLIMによるプログラムの構文の記述方法について規定する。 

 

2. 構文の構成 構文は,構文図によって記述する。構文図は,構文要素で構成し,その並び順を矢印で

示して表す。 

 

3. 構文要素 構文要素の記述例とその説明を附属書表1に示す。 

附属書表1 構文要素の記述例 

構文要素の標記例 

説明 

この内にある文字列又は記号(この場合,FN)を
そのまま記述すべきことを示す。 

 

この内に示す名称の定数,文など(この場合,
block)を記述することを示す。 

 

Aを3回繰り返すことを示している。 

Bを2回まで繰り返してよいことを示している。 

例 

 

この場合 “C”, “C, C” 又は “C, C, C” のいずれ
かを記述することを示している。 

 

括弧内は,この構文要素の意味・解説用に付けた
名称を示す。 
この例では,ここで用いる正数 (positive number) 
を特に変数長と呼ぶことを示している。 

 

4. 空白の挿入 空白の挿入については,次による。 

(1) 構文図の中で実線で結ばれている構文要素の間は一つ以上の空白を置くことができる。隣り合う構文

要素で左の構文要素の最後の文字と右の構文要素の初めの文字とがともに英字又は数字の場合には,

一つ以上の空白で区切らなくてはならない。 

(2) 構文図の中で二重線で結ばれた構文要素の間には,空白を置いてはならない。 

 


39 

B 8439-1992 

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

 

 

氏名 

所属 

(委員長) 

 

新 井 民 夫 

東京大学 

 

 

松 元 明 弘 

東洋大学 

 

 

伊佐山 建 志 

通商産業省 

 

 

吉 田 藤 夫 

工業技術院 

 

 

柿 倉 正 義 

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

 

 

高 島   覺 

財団法人機械振興協会 

 

 

黒 澤 豊 樹 

黒澤R&G技術事務所 

 

 

石 井   博 

株式会社小野技術研究所 

 

 

鈴 木 和 彦 

日本電装株式会社 

 

 

吉 田 邦 夫 

日本ビクター株式会社 

 

 

斎 藤 和 春 

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

 

 

川 村 敏 和 

株式会社東芝 

 

 

西 本 克 史 

富士通株式会社 

 

 

針 木 和 夫 

株式会社不二越 

 

 

佐 藤 和 克 

松下電器産業株式会社 

 

 

中 村 寿 夫 

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

 

 

松 島 幹 治 

川崎重工業株式会社 

 

 

村 上 悦 三 

株式会社ダイヘン 

 

 

毛 利 峻 治 

株式会社日立製作所 

 

 

原   龍 一 

ファナック株式会社 

 

 

奥 井 得 博 

富士電機株式会社 

 

 

高 木 裕 明 

ぺんてる株式会社 

 

 

森   俊 二 

三菱電機株式会社 

 

 

田 中 雅 人 

株式会社安川電機 

 

 

松 本 博 志 

株式会社ユーシン精機