例: A%=SOD ( 2 )
3. 異なるポートの複数ビット
異なるポートの複数ビットをまとめて指定する場合、カッコ内にポート番号とビットの二桁をカ ンマで区切って記述します。
記述例:DO(mb, mb, ... ,mb)
例:
DO
(37 , 25 , 20
)DO
(37
),DO
(25
),DO
(20
)を指定4. ポート内の全ビット
ひとつのポート内の全ビットをすべて指定する場合、ポート番号に続けて()を記述します。
なお、上記2.または3.の方法で記述することもできます。
記述例:DOm()
例:
DO 2
()DO
(27
)〜DO
(20
)の全てを指定→
DO
(27 , 26 , 25 , 24 , 23 , 22 , 21 , 20
)またはDO 2
(7 , 6 , 5 , 4 , 3 , 2 , 1 , 0
)でも同じ1 2 3 4 5 6 7
11 変数の有効範囲
変数は下記の通り分類されます。
11.1 動的変数の有効範囲
動的変数は、宣言されるプログラム位置によって、全域変数(グローバル変数)と局所変数(ロー カル変数)とに分けられ、それぞれ有効範囲が異なります。
変数のタイプ 説 明
グローバル変数
(全域変数)
サブプロシージャ外(SUB 文〜ENDSUB 文で囲まれた領域以外)
で宣言された変数。プログラム全体で有効となる。
ローカル変数
(局所変数)
サブプロシージャ内で宣言された変数。そのサブプロシージャ内で のみ有効となる。
11.2 静的変数の有効範囲
静的変数は実行プログラムのリセットによりデータがクリアされない変数です。
どのプログラムからも変数のデータを変更、参照することができます。
変数名は下記のように決められており、任意の変数名で使用することはできません。
変数の型 変数名
整数型 SGIn (n:0〜7)
実数型 SGRn (n:0〜7)
11.3 動的配列の有効範囲
動的変数は宣言されるプログラム位置によって、全域変数(グローバル変数)と局所変数(ローカ ル変数)とに分けられます。
変数のタイプ 説 明
グローバル変数
(全域変数)
サブプロシージャ外(SUB 文〜ENDSUB 文で囲まれた領域以外)
で宣言された変数。プログラム全体で有効となる。
ローカル変数
(局所変数)
サブプロシージャ内で宣言された変数。そのサブプロシージャ内で のみ有効となる。
・配列についての詳細は、3章「5 配列」を参照してください。
・プログラムレベルで宣言した変数を、仮引数として引き渡さないでサブプロシージャから参 照するには、SHARED文を使用します(詳しくは、8章「91 SHARED」を参照してください)。
MEMO
1 2 3 4 5 6 7
変数のクリア ● 3-21
12 変数のクリア
12.1 動的変数のクリア
下記のいずれかの場合、数値型変数はゼロに、文字型変数はヌルストリング(空の文字列)にク リアされます。変数の配列も同様にクリアされます。
プログラム編集を行ったとき。
■
プログラムを切替えたとき(SWI命令を実行したときも含む)。
■
プログラムをコンパイルしたとき。
■
プログラムリセットを実行したとき。
■
自動モードで、プログラム停止中に専用入力信号 DI15(プログラムリセット入力)をOFFか
■
らONしたとき。
システムモードの初期処理で、下記のどちらかを初期処理したとき。
■
1. プログラムメモリ(システム>ショキショリ>メモリ>プログラム)
2. 全メモリ(システム>ショキショリ>メモリ>スベテ)
下記のオンライン命令を実行したとき。
■
@RESET、@INIT PGM、@INIT MEM、@INIT ALL、@SWI プログラム中で、HALT文を実行したとき。
■
12.2 静的変数のクリア
下記のいずれかの場合、整数型、実数型ともにゼロにクリアされます。
システムモードの初期処理で、下記の初期処理をしたとき。
■
全メモリ(システム>ショキショリ>メモリ>スベテ)
下記のオンライン命令を実行したとき
■
@INIT MEM、 @INIT ALL
・静的変数の値は、プログラム編集を行なってもクリアされません。
MEMO
第 4 章
式と演算
1 1 算術演算 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 4-1
2 2 文字列演算 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 4-4
3 3 ポイントデータの形式 ・・・・・・・・・・・・・・・・ 4-5
4 4 DI/DO 条件式 ・・・・・・・・・・・・・・・・・・・・・・・・ 4-6
1 2 3 4 5 6 7
算術演算 ● 4-1
1 算術演算
1.1 算術演算子
演算子 記述例 意 味
+ A+B AとBを加算する ー A-B AからBを減算する
* A*B AとBを乗算する
/ A/B AをBで除算する
^ A^B AのB乗(べき乗)を求める
ー -A Aの符号を反転する
MOD A MOD B AをBで除算した余りを求める(剰余)
剰余の演算で扱われる数値が実数である場合、小数点以下切り捨てし、整数に変換した後、実行 されます。結果は整数の割算の余りです。
例:
A= 15 MOD 2
→A= 1
(15 / 2 = 7 .... 1
)A= 17 . 34 MOD 5 . 98
→A= 2
(17 / 5 = 3 .... 2
)1.2 関係演算子
関係演算子は2つの値を比較するのに用います。比較の結果が「真」なら「-1」、「偽」なら「0」とな ります。
演算子 記述例 意 味
= A=B AとBが等しければ「-1」、そうでなければ「0」
<>, >< A<>B AとBが等しくなければ「-1」、そうでなければ「0」
< A<B AがBより小さければ「-1」、そうでなければ「0」
> A>B AがBより大きければ「-1」、そうでなければ「0」
<=, =< A<=B AがB以下なら「-1」、そうでなければ「0」
>=, => A>=B AがB以上なら「-1」、そうでなければ「0」
例:
A= 10
>5
→10
>5
は「真」となるのでA=- 1
・実数変数や実数配列に対して、等価関係演算子を使用した場合、丸め誤差などにより期待し た結果が得られないことがあります。
例:・・・・・・・・・・・・・・・・・・・・・A=2
B=SQR(A!)
IF A!=B!*B! THEN・・・
→このとき、A!とB! * B!は等しくなりません。
MEMO
1 2 3 4 5 6 7
1.3 論理演算子
論理演算子は1つまたは2つの値をビットごとに操作するのに用います。たとえばI/Oポートの 入出力状態の操作に使用できます。
論理演算の結果は各ビットごとに0または1で表します
■
実数データに対する論理演算は整数に変換してから行われます
■
演算子 機 能 意 味
NOT, 〜 否定 各ビットを反転する
AND、& 論理積 両方のビットが1の時に1となる
OR, | 論理和 どちらかのビットが1の時に1となる
XOR 排他的論理和 両方のビットが異なる時に1となる
例:A%=NOT 13.05 → A%には「-14」が代入される(13に四捨五入してから反転)
ビット 7 6 5 4 3 2 1 0
13 0 0 0 0 1 1 0 1
NOT 13=-14 1 1 1 1 0 0 1 0
例:A%=3 AND 10 → A%には「2」が代入される
ビット 7 6 5 4 3 2 1 0
3 0 0 0 0 0 0 1 1
10 0 0 0 0 1 0 1 0
3 AND 10 = 4 0 0 0 0 0 0 1 0
例:A%=3 OR 10 → A%には「11」が代入される
ビット 7 6 5 4 3 2 1 0
3 0 0 0 0 0 0 1 1
10 0 0 0 0 1 0 1 0
3 OR 10 = 11 0 0 0 0 1 0 1 1
例:A%=3 XOR 10 → A%には「9」が代入される
ビット 7 6 5 4 3 2 1 0
3 0 0 0 0 0 0 1 1
10 0 0 0 0 1 0 1 0
3 OR 10 = 11 0 0 0 0 1 0 0 1
1 2 3 4 5 6 7
算術演算 ● 4-3
1.4 演算の優先順位
演算は下記の優先順位に従って行います。優先順位が同じである場合、その式の中で左側に書か れている演算から順に実行されます。
優先順位 演算内容
1 ()で囲まれた式
2 関数, 変数
3 ^(指数)
4 独立した+, ー(単項演算子)
5 *, /
6 MOD
7 +, ー
8 関係演算子
9 NOT, 〜 (否定)
10 AND, & (論理積)
11 OR, |, XOR(論理和, 排他的論理和)
1.5 型の変換
式の中で形式の異なるデータどうしの演算を行なうと、データの型が変換されます。
1.● 実数を整数に代入すると、四捨五入となります。
例:
A%
=125 . 67
→A%
=126
2.● 整数を実数で四則演算すると、結果は実数となります。
例:
A
(0
)=125 * 0 . 25
→A
(0
)=31 . 25
3.● 整数を整数で割ると、余りは捨てられ、結果は整数となります。