式は,計算や比較などの結果としてさまざまな値を表現するための手段です。式が表わす値は,DBProで扱うことができる各データ型に加えて,比較や条件判定の結果として与えられる論理値(真/偽)があります。DBProでは,各データ型に対応する単純式,比較の結果を表わす比較式,比較の結果などの論理値を演算する論理式などを総称して式と呼んでいます。論理式の一つの要素として比較式や単純式も含まれます。式は,次のような場面で使われます。

項目の初期値や計算項目の値を表現する計算式 [単価]×[数量]
集計の方法を示す集計式#合計([金額])
置換する値を表現する置換式#連番×10
検索や選択するレコードの条件を示す条件式[商品]='DBPro'
入力データの正当性をチェックする検査条件0<[数量] AND [単価]≦1000

目次
文字列式
算術式
日付式
時刻式
年月間隔式
日時間隔式
カーソル式
キーワード式
ポインタ式
比較式
論理式と論理値
代入式
式の入力
式の要素:変数,項目参照,関数,演算子など
式の構文

文字列式

文字列式は,文字列型の値を表現します。単独の文字列定数,項目参照,関数呼出しなどであることもあれば,それらの結果を連結した文字列を意味することもあります。

形式

<文字列式>::=<文字列一次子>
|<文字列式> <連結演算子> <文字列一次子>
|<文字列式> <差分演算子> <文字列一次子>
<文字列一次子>::=<文字列定数>
|<項目参照>
|<オブジェクト参照>
|<変数参照>
|<関数呼出し>
|<ナル>
|( [ <式リスト> , ] <文字列式> )
<連結演算子>::=+ | ||
<差分演算子>::=-

'文字列定数も一つの文字列式'
#文字列置換('最初の引数中の A を B に置き換える','A','B')
'文字列定数と' + [項目] + 'とを連結する'
NULL || 'を含むと結果もナル'

連結演算子

差分演算子

備考


算術式

算術式は,算術型の値を表現します。算術型には数値型(十進数型),整数型,実数型が含まれます。単独の算術定数,項目参照,関数呼出しなどであることもあれば,それらの結果に演算を施した結果を意味することもあります。

形式

<算術式>::=<算術項>
|<算術式> <加法演算子> <算術項>
<算術項>::=<算術因子>
|<算術項> <乗法演算子> <算術因子>
|<年月間隔項> <除算演算子> <年月間隔因子>
|<日時間隔項> <除算演算子> <日時間隔因子>
<算術因子>::=[ <単項演算子> ] <算術一次子>
<算術一次子>::=<算術定数>
|<項目参照>
|<オブジェクト参照>
|<変数参照>
|<関数呼出し>
|<ナル>
|( [ <式リスト> , ] <算術式> )
<加法演算子>::=+ | -
<乗法演算子>::=<乗算演算子>
|<除算演算子>
|<剰余演算子>
<乗算演算子>::=* | ×
<除算演算子>::=/ | ÷
<剰余演算子>::=MOD
<単項演算子>::=+ | -

4.3
[数量]
$COUNT+1
([英語]+[国語]+[数学])÷3
#SIN(#π/12)

算術演算子

自動的に行なわれる型変換


日付式

DBProでは,日付,時刻,年数,時間数などを操作・表現するための式が用意されています。そのうちで,日付式は日付型の値を表現します。

形式

<日付式>::=<日付一次子>
|<日付式> <加法演算子> <年月間隔式>
|<日付式> <加法演算子> <日時間隔式>
<日付一次子>::=<日付定数>
|<項目参照>
|<オブジェクト参照>
|<変数参照>
|<関数呼出し>
|<ナル>
|( [ <式リスト> , ] <日付式> )
<加法演算子>::=+ | -

DATE'1992-12-31'
[誕生日](ただし,項目 [誕生日] が日付型とする)
日付'.'+日時間隔'100日'(今日から 100 日後の日付を表わす)

日付を求める演算


時刻式

DBProでは,日付,時刻,年数,時間数などを操作・表現するための式が用意されています。そのうち,時刻式は時刻型の値を表現します。

形式

<時刻式>::=<時刻一次子>
|<時刻式> <加法演算子> <日時間隔式>
<時刻一次子>::=<時刻定数>
|<項目参照>
|<オブジェクト参照>
|<変数参照>
|<関数呼出し>
|<ナル>
|( [ <式リスト> , ] <時刻式> )
<加法演算子>::=+ | -

TIME'12:30:00'
[出社時刻](ただし,項目 [出社時刻] が時刻型とする)
時刻'.'+日時間隔'1000秒'(今から 1000 秒後の時刻)

時刻を求める演算


年月間隔式

DBProでは,日付,時刻,年数,時間数などを操作・表現するための式が用意されています。そのうち,年月間隔式は年月間隔型の値を表現します。年齢計算などに便利です。

形式

<年月間隔式>::=<年月間隔項>
|<年月間隔式> <加法演算子> <年月間隔項>
|<日付式> <時間隔演算子> <日付式>
<年月間隔項>::=<年月間隔因子>
|<年月間隔項> <乗法演算子> <算術因子>
|<年月間隔項> <剰余演算子> <年月間隔因子>
|<年月間隔項> <剰余演算子> <算術因子>
<年月間隔因子>::=[ <単項演算子> ] <年月間隔一次子>
<年月間隔一次子>::=<年月間隔定数>
|<項目参照>
|<オブジェクト参照>
|<変数参照>
|<関数呼出し>
|<ナル>
|( [ <式リスト> , ] <年月間隔式> )
<加法演算子>::=+ | -
<乗法演算子>::=<乗算演算子>
|<除算演算子>
|<剰余演算子>
<乗算演算子>::=* | ×
<除算演算子>::=/ | ÷
<剰余演算子>::=MOD
<単項演算子>::=+ | -
<時間隔演算子>::=-

年月間隔'300年'
日付'.'-[誕生日](今日現在の満年齢)

年月間隔を求める演算


日時間隔式

DBProでは,日付,時刻,年数,時間数などを操作・表現するための式が用意されています。そのうち,日時間隔式は日時間隔型の値を表現します。

形式

<日時間隔式>::=<日時間隔項>
|<日時間隔式> <加法演算子> <日時間隔項>
|<時刻式> <時間隔演算子> <時刻式>
<日時間隔項>::=<日時間隔因子>
|<日時間隔項> <乗法演算子> <算術因子>
|<日時間隔項> <剰余演算子> <日時間因子>
|<日時間隔項> <剰余演算子> <算術因子>
<日時間隔因子>::=[ <単項演算子> ] <日時間隔一次子>
<日時間隔一次子>::=<日時間隔定数>
|<項目参照>
|<オブジェクト参照>
|<変数参照>
|<関数呼出し>
|<ナル>
|( [ <式リスト> , ] <日時間隔式> )
<加法演算子>::=+ | -
<乗法演算子>::=<乗算演算子>
|<除算演算子>
|<剰余演算子>
<乗算演算子>::=* | ×
<除算演算子>::=/ | ÷
<剰余演算子>::=MOD
<単項演算子>::=+ | -
<時間隔演算子>::=-

日時間隔'10日と5時間32分40秒'
時刻'.'-[開始時刻](開始時刻からの経過時間)

日時間隔を求める演算


カーソル式

カーソル式はカーソルを扱う式で,DPL中でだけ使用できます。

形式

<カーソル式>::=<カーソル一次子>
<カーソル一次子>::=<カーソル名>
|<変数参照>
|<関数呼出し>
|<ナル>
|( [ <式リスト> , ] <カーソル式> )

解説


ポインタ式

ポインタ型の値はメモリ中を指すアドレスです。

形式

<ポインタ式>::=<ポインタ項>
|<ポインタ式> <加法演算子> <算術項>
|<ポインタ式> <減算演算子> <算術項>
|<ポインタ式> <減算演算子> <ポインタ項>
<ポインタ項>::=<変数参照>
|<関数呼出し>
|<ナル>

解説


キーワード式

キーワード型の値は,主にDPLのコマンドステートメントのパラメータに利用されます。

形式

<キーワード式>::=<キーワード定数>
|<変数参照>
|<関数呼出し>
|<ナル>

比較式

比較式は,二つまたは三つの値を比較して大小関係,前後関係,等値かどうかを判定し,結果として真または偽の値を返します。比較式は,レコードの検索や選択,データの正当性のチェックなどで頻繁に使われます。

形式

<比較式>::=<文字列比較式>
|<算術比較式>
|<日付比較式>
|<時刻比較式>
|<年月間隔比較式>
|<日時間隔比較式>
|<ポインタ比較式>
|<キーワード比較式>
<文字列比較式>::=<文字列式> <文字列比較演算子> <文字列式> [ <文字列比較演算子> <文字列式> ]
<算術比較式>::=<算術式> <算術比較演算子> <算術式> [ <算術比較演算子> <算術式> ]
<日付比較式>::=<日付式> <日付比較演算子> <日付式> [ <日付比較演算子> <日付式> ]
<時刻比較式>::=<時刻式> <時刻比較演算子> <時刻式> [ <時刻比較演算子> <時刻式> ]
<年月間隔比較式>::=<年月間隔式> <年月間隔比較演算子> <年月間隔式> [ <年月間隔比較演算子> <年月間隔式> ]
<日時間隔比較式>::=<日時間隔式> <日時間隔比較演算子> <日時間隔式> [ <日時間隔比較演算子> <日時間隔式> ]
<ポインタ比較式>::=<ポインタ式> <ポインタ比較演算子> <ポインタ式> [ <ポインタ比較演算子> <ポインタ式> ]
<キーワード比較式>::=<キーワード式> <等値比較演算子> <キーワード式>
<文字列比較演算子>::=<大小比較演算子>
|<辞書順比較演算子>
|<基本つづり比較演算子>
<等値比較演算子>::== | <> | >< |
<大小比較演算子>::=<等値比較演算子>
|< | > | <= | =< | | >= | => |
<辞書順比較演算子>::=<< | >> | <<= | =<< | ≦≦ | >>= | =>> | ≧≧
<基本つづり比較演算子>::=<=> |
<算術比較演算子>::=<大小比較演算子>
<日付比較演算子>::=<大小比較演算子>
<時刻比較演算子>::=<大小比較演算子>
<年月間隔比較演算子>::=<大小比較演算子>
<日時間隔比較演算子>::=<大小比較演算子>
<ポインタ比較演算子>::=<大小比較演算子>

比較対象のデータ型

大小比較演算子

辞書順比較演算子

基本つづり比較演算子

注意


論理式と論理値

論理式は,比較式などによる条件判定を組み合わせて,二つ以上の条件を同時に満たす(論理積),どれか一つの条件を満たす(論理和)などといった論理演算を表現します。論理式は,レコードを探すときの検索条件や選択条件,入力データの正当性をチェックする検査条件などで使います。論理式の基本要素は,関数呼出しなどの単純式および比較式です。

論理式の形式

<論理式>::=<論理項>
|<論理式> OR <論理項>
<論理項>::=<論理因子>
|<論理項> AND <論理因子>
<論理因子>::=[ NOT ] <論理一次子>
<論理一次子>::=<単純式>
|<比較式>
|( <式リスト> )

[個数]>0( [個数]が1以上)
[県]='大阪'OR[県]='兵庫'OR[県]='京都'( [県]が大阪か兵庫か京都)
#ISNULL([役職]) AND [給与]>250000( [役職]がなくて[給与]が 250000 以上)

論理演算子

論理値について


代入式

代入式は,代入演算子を用いて,左辺に右辺の値を設定するための式です。

形式

<代入式>::=<左辺> := <式>

[数量] := 100
$NAME := [名前]+'様'
$X := $Y := NULL

解説


式の入力

式入力ダイアログを使うと,式の構成要素を簡単に入力することができます。