公開日: 04/01/2021

演算子

演算子は一般的な数値演算、値の比較、リストの作成、データ要素の添え字の指定、メッセージの送信、リストの連結、名前の適用範囲の指定、式の終了などの機能を持つ、1文字または2文字の記号です。

演算子にはさまざまな種類があります。

二項演算子3 + 4+a = 7=のように、両側にオペランドをとるもの)

接頭演算子(論理否定の!aのように、右側にオペランドを1つとるもの)

接尾演算子aをインクリメントするa++のように左側にオペランドを1つとるもの)

式を書きやすくするために、JSLでは関数の代わりの方法として、いくつかの特別な文字演算子が使用できます。これらの演算子は、関数として記述した場合と同じ意味を持ちます。たとえば、次の2つのステートメントは等価です。

Net Income After Taxes = Net Income - Taxes;
Assign( Net Income After Taxes, Subtract( Net Income, Taxes ) );

割り当て演算を書くときは、Assign()関数か、二項演算子の=を使います。同様に、引き算を行うには、Subtract()関数またはマイナス記号を使います。どちらも、JMP内部では同じものとして扱われます。

通常、JSLでは空白が無視されるので、“netincomeaftertaxes”と“net income after taxes”は同じものとみなされます。ただし、2文字の演算子の文字間にスペースを入れてはなりません。次の演算子は、必ずスペースなしで入力してください。

||、|/、<=、>=、!=、==、+=、-=、*=、/=、++、--、<<、::、:*、:/、/*、*/

他に、一般的な演算子としてセミコロン( ; )があります。セミコロンは次のような目的で使用します。

プログラミングシーケンスで、複数の式を区切り、同時につなげる。セミコロンは最後の式の結果を戻します。つまり、a;bGlue(a,b)と等価です。

式の最後。セミコロンを式の最後に付けることはできますが、他の言語のようにステートメントの終わりを表すものとして機能するわけではありません。

式には複数の演算子を含めることができます。その場合、演算子は優先度順にグループ化されていきます。たとえば、*+より優先されます。

a + b * c

まずb * cの掛け算が行われた後、その結果がaに加算されます。

+-より優先されます。

a + b * c - d

まずb * cの掛け算が行われた後、その結果がaに加算されます。a + b * cの結果からdが引かれます。

表5.3は、演算子と、対応する関数をまとめたものです。演算子は優先順位の高い順にリストしてあります。

表5.3 演算子、および対応する関数(優先順位の高い順)

演算子

関数構文

説明

{ }

リスト

{a,b}

List(a,b)

リストを作成する。

[ ]

添え字

a[b,c]

Subscript(a,b,c)

データ要素aの中にある特定の要素を指定する。aは、リスト、行列、データ列、プラットフォームのオブジェクト、ディスプレイボックスのどれでもかまいません。

++

Post Increment

a++

Post Increment(a)

aに1を加えた値をaに格納する。

JMPには、プリインクリメント演算子がありません。代わりに、Add To()演算子(+=)を使用します。

– –

Post Decrement

a––

Post Decrement(a)

aから1を引いた値をaに格納する。

JMPには、プリデクリメント演算子がありません。代わりに、Subtract To()演算子(-=)を使用します。

^

検出力

a^b

Power(a,b)

Power(x)

ab乗する。引数を1つだけ指定したときは、2乗と解釈されます。たとえば、Power(x)と指定した場合は、x2が計算されます。

マイナス記号

a

Minus(a)

aの符号を反転する。

!

Not

!a

Not(a)

論理否定。0(偽)を0でない値(または真)にする。1(真)を0の値(偽)にする。

*

掛け算

a*b

Multiply(a,b)

abを掛ける。

:*

EMult

a:*b

EMult(a,b)

行列abを要素ごとに掛ける。(行列aの各要素に行列bの各要素を掛ける。)

/

割り算

a/b

Divide(a,b)

Divide(x)

Divide(a, b)abで割る。

Divide(x)と指定した場合には、分母がx、分子が1と解釈され、1/xが求まります。

:/

EDiv

a:/b

EDiv(a,b)

行列abで要素ごとに割る。(行列aの各要素を行列bの各要素で割る。)

+

追加

a+b

Add(a,b)

abを足す。

引き算

ab

Subtract(a,b)

aからbを引く。

||

Concat

a||b

Concat(a,b)

2つ以上の文字列または2つ以上のリストを接合する。行列を横方向に連結する。リストの連結または『スクリプト構文リファレンス』を参照してください。

|/

VConcat

matrix1|/matrix2

VConcat(matrix1, matrix2)

行列を縦方向に連結する。(行列を横方向に連結する場合は||またはConcatを使用。)

::

指数

a::b

Index(a,b)

abの整数の要素を持つ行列を作成する。

(コロンは、有効範囲を指定する演算子としても使われます。その場合、:aはデータテーブル列aを、::aはJSLのグローバル変数aを意味します。スコープ演算子を参照してください。)

<<

Send

object << message

Send(object, message)

オブジェクト(object)にメッセージ(message)を送る。

==

単純

a==b

Equal(a,b)...

比較のためのブール値。これらはすべて、真のときは1、偽のときは0を戻します。aまたはbに欠測値があると、欠測値が戻され、真も偽も評価されません。欠測値の扱いについては、欠測値を参照。

!=

Not Equal

a!=b

Not Equal(a,b)...

<

Less

a<b

Less(a,b)...

<=

Less or Equal

a<=b

Less or Equal(a,b)

>

Greater

a>b

Greater(a,b)

>=

Greater or Equal

a>=b

Greater or Equal(a,b)

<=、 <

Less Equal Less

a<=b<c

Less Equal Less(a,b,c)

範囲チェック。真のときは1、偽のときは0を戻します。abのどちらかが欠測値のときは、欠測値になります。

<、<=

Less Less Equal

a<b<=c

Less Less Equal(a,b,c)

&

And

a&b

And(a,b)

論理積。両方が真のとき、真を戻します。左の値が偽の場合、右の値は評価されません。欠測値の扱いについては、欠測値を参照。

|

Or

a|b

Or(a,b)

論理和。どちらかまたは両方が真のとき、真を戻します。欠測値の扱いについては、欠測値を参照。

=

Assign

a=b

Assign(a,b)

bの値をaに代入する。aの現在の値が置き換わります。

+=

Add To

a+=b

AddTo(a,b)

bにaを足し、結果をaに代入する。

-=

Subtract To

a–=b

SubtractTo(a,b)

aからbを引き、結果をaに代入する。

*=

Multiply To

a*=b

MultiplyTo(a,b)

abを掛け、結果をaに代入する。

/=

Divide To

a/=b

DivideTo(a,b)

abで割って、結果をaに代入する。

;

Glue

a;b

Glue(expr, expr, ...)

abの順に実行する。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).