# スクリプトVer1(SC1構文)

マニュアル > スクリプトガイド > # スクリプトVer1(SC1構文) |

SC1構文とは

スクリプトVer1（以後SC1構文と呼びます）は下記の２箇所で使用されます。

•Panel Server 「スクリプトVer1アクション」

•Panel Server 各アクション詳細設定タブのスクリプト実行

SC1構文は+ - * / < > などのVisualBasic互換の演算子を利用し、タグ同士の演算を行う簡易的なスクリプトです。手軽に使用できることを目的としており、if文（条件分岐）やfor文（繰り返し処理）などは使用できません。

より高度な処理を行いたい場合はスクリプトVer2(SC2構文)を使用してください。

| 本パッケージのVer4ではタグスクリプトと呼ばれていましたが、Ver5以降ではスクリプトの構文体系を整理するため、スクリプトVer1（略してSC1構文）と名称が変わりました。

| 実際のアクションの設定方法については「スクリプトVer1」を参照して下さい。

基本的な構文

SC1構文は下記の構文で記述します。

タグパス1 = 演算式1 タグパス2 = 演算式2 タグパス3 = 演算式3

スクリプトが実行されると、演算式の結果がタグへ書き込まれます。演算式の部分にタグパスを含めることができます。複数の式を記述したい場合は、改行して記述していきます。計算はすべて数値で行われ、「TRUE」は1で「FALSE」は0として扱われ、文字は数値に変換されます。

例）

    U01.F01.T01 = 1
    U01.F01.T01 = U01.F01.T02 * (U01.F01.T03 + 1)
    U01.F01.T01 = (U01.F01.T02 And U01.F01.T03) Or (U01.F01.T04 And U01.F01.T05)

| SC1構文では文字を扱うことができません。文字型のタグの場合、文字が数値に変換され処理されます。例えば文字列の合成など、文字として値を扱いたい場合はスクリプトVer2(SC2構文)を使用して下さい。

オペレーター(演算子)

使用できるオペレーターを以下にまとめます。

オペレーター
算術演算子 |
指数演算 | ^ | 数値のべき乗を求めます。
マイナス符号 | - | 式の符号を反転した値を指定するために使用されます。
乗算 | * | 2つの数値の積を計算します。
除算 | / | 2つの数値の商を計算します。
整数除算 | \ | 2つの数値の商を計算し、結果を整数で返します。
剰余演算 | Mod | 2つの数値の除算を行い、その剰余を返します。
加算 | + | 2つの数値の和を求めます。
減算 | - | 2つの数値の差を求めます。
比較演算子 |
等しい | = | 2つの数値の比較し、等しければTRUEを返します。
等しくない | <> | 2つの数値の比較し、等しくなければTRUEを返します。
より小さい | < | 2つの数値の比較し、左値が右値より小さければTRUEを返します。
より大きい | > | 2つの数値の比較し、左値が右値より大きければTRUEを返します。
以下 | <= | 2つの数値の比較し、左値が右値以下であればTRUEを返します。
以上 | >= | 2つの数値の比較し、左値が右値以上であればTRUEを返します。
論理演算子 |
論理否定 | Not | 式の論理否定を求めます。
論理積 | And | 2つの式の論理積を求めます。
論理和 | Or | 2つの式の論理和を求めます。
排他的論理和 | Xor | 2つの式の排他的論理和を求めます。
論理等価演算 | Eqv | 2つの式の論理等価演算を行います。
論理包含演算 | Imp | 2つの式の論理包含演算を行います。
論理積 | AndN | 2つの式の論理積を求めます（数値としてビット単位の比較をします）。
論理和 | OrN | 2つの式の論理和を求めます（数値としてビット単位の比較をします）。

計算例
算術演算子 |
|  | 例 | 結果
指数演算 | ^ | 2 ^ 3 | 8
マイナス符号 | - | 3 – 2 | 1
乗算 | * | 2 * 1.5 | 3
除算 | / | 5 / 2 | 2.5
整数除算 | \ | 15 \ 2 | 7
剰余演算 | Mod | 15 Mod 2 | 1 (15 / 2 = 7 余り1であるため)
加算 | + | 1 + 0.5 | 1.5
減算 | - | 2 – 4 | -2
比較演算子 |
|  | 例 | 結果
等しい | = | 12 = 12 | 1
|  | 34 = 12 | 0
等しくない | <> | 12 <> 12 | 0
|  | 34 <> 12 | 1
より小さい | < | 12 < 12 | 0
|  | 12 < 34 | 1
より大きい | > | 12 > 12 | 0
|  | 34 > 12 | 1
以下 | <= | 12 <= 12 | 1
|  | 34 <= 12 | 0
以上 | >= | 12 >= 12 | 1
|  | 12 >= 34 | 0
論理演算子 |
|  | 例 | 結果
論理否定 | Not | Not 1 | 0
|  | Not 0 | 1
|  | Not 123 | 0
論理積 | And | 1 And 1 | 1
|  | 1 And 0 | 0
|  | 0 And 1 | 0
|  | 0 And 0 | 0
|  | 12 And 123 | 1
論理和 | Or | 1 Or 1 | 1
|  | 1 Or 0 | 1
|  | 0 Or 1 | 1
|  | 0 Or 0 | 0
|  | 12 Or 123 | 1
排他的論理和 | Xor | 1 Xor 1 | 0
|  | 1 Xor 0 | 1
|  | 0 Xor 1 | 1
|  | 0 Xor 0 | 0
|  | 12 Xor 123 | 0
論理等価演算 | Eqv | 1 Eqv 1 | 1
|  | 1 Eqv 0 | 0
|  | 0 Eqv 1 | 0
|  | 0 Eqv 0 | 1
|  | 12 Eqv 123 | 1
論理包含演算 | Imp | 1 Imp 1 | 1
|  | 1 Imp 0 | 0
|  | 0 Imp 1 | 1
|  | 0 Imp 0 | 1
|  | 12 Imp 123 | 1
論理積 | AndN | 1 AndN 1 | 1
|  | 1 AndN 0 | 0
|  | 0 AndN 1 | 0
|  | 0 AndN 0 | 0
|  | 12 AndN 123 | 8(00001100 AndN 01111011 = 00001000)
論理和 | OrN | 1 OrN 1 | 1
|  | 1 OrN 0 | 1
|  | 0 OrN 1 | 1
|  | 0 OrN 0 | 0
|  | 12 OrN 123 | 127(00001100 OrN 01111011 = 01111111)

| 1つの式の中で複数の演算子が使われているとき、一定の順序で計算されます。まず、算術演算子、比較演算子、論理演算子の順序で評価されます。算術演算子および論理演算子は、上表に示す順序で評価されます。比較演算子の各演算子の優先順位はすべて同じです。括弧「()」 を使用すると、強制的に優先順序を入れ替えることができます。括弧の内側の演算は外側の演算よりも常に優先的に実行されます。

| 仮想デバイスはPLCをシミュレートしたデバイス（ビットデバイス、ワードデバイス）なので、整数しか扱えません。小数を扱うには、メモリデバイスの数値タグを利用します。

| ネットワークタグをスクリプト中で用いる場合、下記のように先頭に「//Network/」を付加して下さい。 例）
    //Network/N01/T01