OSP(オークマ) - サブプログラム呼び出し
プログラミングをするとき、同じパターンを繰り返し作ったり、他のプログラムをコピーして作成したりすることがあります。このようなときはサブプログラムとしてパターンを作成しておき、必要なときに呼び出せば、プログラムも見やすく、正確に作成することができます。
サブプログラムの呼び出し方は単純呼び出し機能(CALL)、軸移動呼び出し機能(MODIN, MODOUT)、G、Mコードマクロ機能の3種類があり、サブプログラムからメインプログラムに戻るには、RTSを使用します。
単純呼び出し機能|CALL
「CALL O_ Q_ (受け渡し変数)」の形式で、「O」は呼び出すプログラム名、「Q」は繰り返し回数を設定します。「Q」は省略すると1回となります。受け渡し変数はサブプログラムで使用する変数の値を設定でき、[サブプログラムの変数 = 受け渡す値]の形式となります。
% O10 VC1 = 10. VC2 = 20. VC3 = 30. LC = 100. CALL O20 LA=VC1 LB=VC2 LC=LC LD=VC3 M02 % % O20 (代入されている数値) (LA = 10.) (LB = 20.) (LC = 100.) (LD = 30.) RTS %
軸移動呼び出し機能|MODIN
「MODIN O_ Q_ (受け渡し変数)」の形式で、「O」「Q」「受け渡し変数」の使い方は単純呼び出し機能と同じですが、MODOUTでキャンセルされるまでサブプログラム呼び出しを行います。
% O10 MODIN O20 X10. Y10. (O20呼び出し) X20. Y20. (O20呼び出し) X30. Y30. (O20呼び出し) MODOUT M02 % % O20 (処理) RTS %
軸移動呼び出し指令後、再度、軸移動呼び出し指令を行うことを多重軸移動呼び出しと言います。多重軸移動呼び出しは8重まで行うことができます。
% O10 MODIN O100 MODIN O200 X0 Y0 (O200呼び出し) MODOUT MODOUT M02 % % O100 X10. Y10. RTS % % O200 X20. Y20. (O100呼び出し) RTS %
G、Mコード機能
CALL、MODIN、MODOUTを使用する代わりに、Gコードを使用してもサブプログラム呼び出しを行うことができます。ただし、ユーザーサブプログラムを使用する場合は、Gコード、Mコードに対応するプログラム名をパラメータで設定する必要があります。
Gコードを使用する場合は「G_ (受け渡し変数)」の形式で、受け渡し変数で使用出来るアドレスは、G、M、N、Oを除いたアドレスキャラクタと拡張アドレスキャラクタです。
- ユーザーサブプログラム呼び出し
- G100 :MODOUTと同じ。
- G101〜G110:MODIN O_ と同じ。
- G111〜G120:CALL O_ と同じ。
- メーカーサブプログラム呼び出し
- G300 :MODOUTと同じ。
- G301〜G349:MODIN O_ と同じ。
- G350〜G399:CALL O_ と同じ。
Mコードを使用する場合は「M_」の形式で、受け渡し変数の設定は行いません。
- ユーザーサブプログラム呼び出し
- M201〜M210:CALL O_ と同じ。
当サイトのPDF版を作成しました。教育資料やリファレンスとして使用して頂ければと思います。
上級編も作成しました。