式の要素:変数,項目参照,関数,演算子など

を構成する要素である項目参照,変数参照,演算子などについて解説します。


目次
定数
変数
項目参照
オブジェクト参照
関数呼出し
演算子

定数


変数

DBProには,いろいろな場面での値の保存場所として,次のような変数が用意されています。

通常の変数DPLや式中で,一時的な値を格納します。通常の変数とシステム変数とは,変数参照として式中に書くことができます。
システム変数DPLステートメントのさまざまな実行結果を保持します。
カーソル変数DPL中でファイルやレコードに対するポインタを保持します。オープンステートメントなどで値が設定され,クローズステートメントなどで未設定の状態に戻ります。
ファイル内変数表ファイル中に,レコードや項目とは関係がない独立した値を保存しておくことができます。ファイル内変数は,項目参照の形で参照します。

通常の変数

通常の変数は,DPLプログラムの中で必要になったときにいつでも代入ステートメントの左辺に書いて値を設定し,同じDPLプログラム中でその変数の値を参照することができます。あらかじめ変数の有効範囲を宣言して使うこともできます。また,DPLプログラム中でなくとも,<式リスト> を書ける場面において,代入式の左辺に書いて値を設定し,その値を同じ <式リスト> 中で参照することができます。

変数名
変数名は,ドル記号 $ の後に <通常識別子> を付けて命名します。<通常識別子> は英字,仮名,漢字,下線,数字で構成される名前で,先頭が数字であってはいけません。
 例:
$Variable
$回数
変数の型
DBProでは,変数は特定の型をもちません。一つの同じ変数にどんな型の値でも代入することができます。変数の型は,そのつど,代入される右辺の値と同じ型になります。式や関数の引数に変数を使用する場合は,そのとき変数に設定されている型が有効になり,式や引数の型に適していない場合はエラーとなります。
 例:
同じ変数に,異なる型の内容を記憶します。
 $X := 'ABC' ← 変数 $X に文字列を記憶している。
 $X := 10.5 ← その後,同じ変数に数値を記憶することができる。このとき,直前までの文字列 'ABC' は捨てられます。
他の変数に,異なる型の内容を記憶します。
 $X := 'ABC'
 $Y := DATE '93.12.1'
 $Y := $X ← 変数 $Yは,文字列型として扱われる。
ローカル変数とグローバル変数
DBProの変数は特に宣言しなくても必要になった時点でいつでも利用できますが,DPLプログラム中で利用する変数はあらかじめ変数宣言ステートメントで宣言してから利用することもできます。
ローカル変数 LOCALステートメントにより宣言するか,または宣言されずに使用された変数は,ローカル変数になります。ローカル変数は,それを宣言する位置により有効範囲が異なります。
  • 構造ステートメントや手続き宣言ステートメントのブロックの外で宣言した場合,および宣言せずに使った場合は,宣言した位置または最初に使った位置以降からそのDPLプログラムが終了するまで有効です。
  • 構造ステートメントや手続き宣言ステートメントのブロックの内側で宣言した場合,その変数は宣言したブロック内でのみ有効です。
グローバル変数 GLOBALステートメントにより宣言された変数は,グローバル変数になります。グローバル変数は,最初に宣言されたときから DBPro を終了するまで有効で,他の DPLプログラムから変数の値を参照したり変更することができます。他の DPLプログラムで同じ変数を参照したり変更する場合は,その DPLプログラムでも同じ変数名を GLOBALステートメントで宣言します。

システム変数

システム変数は,DPLステートメントを実行したときなどに DBProシステムが値を設定する変数です。DPL 中でシステム変数の内容を参照したり,システム変数の内容を変更することができます。システム変数の内容を変更した場合も,その変数に関連する処理が行なわれると,システム変数の値はその処理に応じてシステムにより再設定されます。

システム変数名
システム変数名は,ドル記号二つ $$ で始まります。利用者が新しい変数を宣言したり,名前を変更することはできません。
システム変数の種類
システム変数には以下があります。
$$CMDSTATEコマンドステートメントが正常に実行できたかどうかの結果が整数値で設定されます。正常に終了した場合はゼロが保証されます。ゼロ以外はなんらかのエラーが起こったことを示します。コマンドステートメントごとにどのようなエラーが起こり得るかが決まっています。詳細は $$CMDSTATE 一覧を参照してください。
$$OLDSTATEコマンドステートメント実行直前のいろいろな状態が設定されます。設定される内容はコマンドステートメントごとに異なります。この値をパラメータにして同じコマンドステートメントを実行すると元の状態に戻すことができます。
$$RETURN手続き中の RETURNステートメントのパラメータに書かれた式の値が設定されます。RETURN ステートメントに式が書かれていない場合はナルになります。
$$CNTALL最新の項目集計ステートメントの結果の総件数の値が設定されます。常に数値型です。
$$CNT最新の項目集計ステートメントの結果の有効件数の値が設定されます。常に数値型です。
$$TOTAL最新の項目集計ステートメントの結果の合計の値が設定されます。
$$MEAN最新の項目集計ステートメントの結果の平均の値が設定されます。
$$MAX最新の項目集計ステートメントの結果の最大の値が設定されます。
$$MIN最新の項目集計ステートメントの結果の最小の値が設定されます。
$$STDEV最新の項目集計ステートメントの結果の標準偏差の値が設定されます。常に実数型です。
$$BUTTONダイアログステートメントで表示された各種ダイアログで,[OK],[キャンセル] など,どのボタンが押されたかが次の整数値で設定されます。
 1
[OK]ボタンが押されました
 2
[キャンセル]ボタンが押されました
 3
[はい]ボタンが押されました
 4
[いいえ]ボタンが押されました
 5
[継続]ボタンが押されました
 6
[中止]ボタンが押されました
$$INPUTSTR種別が「入力」または「パスワード」であるダイアログステートメントの実行時に,入力された文字列が設定されます。
$$CHECK種別が「チェック」であるダイアログステートメントの実行時に,チェックボックスのオン/オフ状態が整数値で設定されます。
$$OPTION種別が「オプション」であるダイアログステートメントの実行時に,選ばれたオプションボタンの番号が整数値で設定されます。
$$FILENAME種別が「ファイル」であるダイアログステートメントの実行時に,入力されたファイル名文字列が設定されます。また,オープンステートメントなどのファイルを操作するステートメントを実行したときに,対象となったファイル名が設定されます。いずれの場合もファイル名は絶対パス名で設定されます。
$$OBJECTカード手続きの ONブロックに制御が移ったとき,その対象となったオブジェクト名が設定されます。また,カードのボタンオブジェクトから実行されたDPLでは,実行開始時にそのボタンオブジェクト名が設定されています。

変数参照

カーソル変数

DPL中での「カーソル」とは,特定のファイルや編集ウィンドウ,そしてその中の特定のレコードを指し示す特殊なデータのことです。カーソル変数は,カーソルの値を保持し,DPLステートメントの処理対象となるファイル,ウィンドウ,レコードを指定するために利用されます。

ファイル内変数

DBPro V4 から表ファイルの中にレコードや項目とは独立した値を保存しておくことができるようになりました。詳しくは,「表:ファイル内変数」を参照してください。


項目参照

式の中でレコードの特定の項目の値を参照するときは,その項目名を書きます。式が評価されるときに対象レコードのその項目の値が演算の対象になります。
ファイル内変数を参照するときも項目参照とまったく同じ形式で,そのファイル内変数名を書きます。

形式

<項目参照>::=[ [ <表修飾子> ] . ] <項目名>
|<カーソル名> . <項目名>
|[ [ <表修飾子> ] . ] <ファイル内変数名>
|<カーソル名> . <ファイル内変数名>
<表修飾子>::=<表名>
|" <表名> " | ' <表名> ' | ` <表名> `
<表名>::=(表ファイル名の拡張子を除いた部分)
<項目名>::=<通常識別子> | <区切り識別子>
<ファイル内変数名>::=<通常識別子> | <区切り識別子>
<通常識別子>::=(英字,仮名,漢字,下線で始まる英仮名漢字下線数字列)
<区切り識別子>::=[ <角括弧を除く文字列> ]
|" <二重引用符および角括弧を除く文字列> "
<カーソル名>::=@ <通常識別子>
|@@

[項目名]
A(英字や仮名漢字だけであって,DBProのキーワードでもない場合は角括弧でくくらなくてもよいが,くくった方が安全)
[100](数字で始まる項目名)
[A-1](特殊文字を含む項目名)
マスタ表.[商品名] (<表修飾子> 付きの項目参照)

項目名の区切り

<表修飾子> 付き項目名

ファイル内変数の参照


オブジェクト参照

オブジェクト参照は,DPL中の式でカードの式オブジェクトデータオブジェクトの値を引用したり,値を設定したりするために書くオブジェクト名のことです。カードの式オブジェクトで他の式オブジェクトやデータオブジェクトを参照するためにも用います。→カード:オブジェクト


関数呼出し

式では,あらかじめ用意された組込み関数による値を利用できます。組込み関数は,関数呼出しの引数として書くいくつかの値に対して,複雑な計算,特殊な計算,あるいは普通には利用者から見られない情報を取り出して一つの関数値を返します。


演算子

演算子には次の種類があります。これらは,それぞれのデータ型に対する演算を指定します。

代入演算子
代入演算子  :=      右辺の値を左辺に代入する。
→代入式

文字列演算子
連結演算子  + ||    左右の文字列を連結する。
差分演算子  左辺から右辺の文字列を取り除く。
→文字列式

算術演算子
加法演算子        加算を行なう。
減算を行なう。
乗法演算子  * ×乗算を行なう (乗算演算子)。
/ ÷除算を行なう (除算演算子)。
MOD左辺を右辺で割った余りを計算する (剰余演算子)。
単項演算子  何もしない。
正負の符号を反転する。
時間隔演算子 二つの日付,時刻の間隔を求める。
→算術式日付式時刻式年月間隔式日時間隔式

大小比較演算子
等号演算子        左右が等しければ真,異なれば偽。
不等号演算子 <> >< ≠不等号 左右が異なれば真,等しければ偽。
未満演算子  左辺が小さいとき真,そうでなければ偽。
超演算子   左辺が大きいとき真,そうでなければ偽。
以下演算子  <= =< ≦左辺が小さいか等しいとき真,そうでなければ偽。
以上演算子  >= => ≧左辺が大きいか等しいとき真,そうでなければ偽。
→比較式

辞書順比較演算子
正順演算子  <<      左辺が前のときに真,そうでなければ偽。
逆順演算子  >>左辺が後のときに真,そうでなければ偽。
以前演算子  <<= =<< ≦≦左辺が前か等しいときに真,そうでなければ偽。
以後演算子  >>= =>> ≧≧左辺が後か等しいときに真,そうでなければ偽。
→比較式

基本つづり比較演算子
類似演算子  <=> ≒   基本つづりが等しいとき真,そうでなければ偽。
→比較式

論理演算子
論理和    OR      左が真なら真,そうでなくて右が真なら真,そうでなければ偽。
論理積    AND左が偽なら偽,そうでなくて右が偽なら偽,そうでなければ真。
論理否定   NOT値が真なら偽,偽なら真。
→論理式