原子的(分割できないものとして)に、1つの数値をグローバル変数に追加(インクリメント)します。増分が原子的(アトミック)であることに注意してください、しかし、トランザクション内(TSTART/ TCOMMIT)を除き、式の評価はありません。関数はローカル変数でも動作しますが、それがACID動作を提供しない(する必要がある)こととしてローカル変数のためにはそれはど利点はありません。
$INCREMENT関数のフォーマット:
$INCREMENT(glvn[,numexpr])
$I, $INCR, $INCREMENT, $ZINCR, と $ZINCREMENT は、完全な関数名が有効な同義語と見なされます。
$INCREMENT() は、インクリメント後に glvn の値を返します。
特に指定されない場合、numexpr はデフォルトは1です。そうでなければ、$INCREMENT() は、"glvn" 引数の前に "numexpr" 引数を評価します。
numexpr は、負の値が可能です。
算術演算を実行するので、$INCREMENT() は、数値としてglvnを扱います。インクリメントする前に、あたかもそれが暗黙の$GET() の最初の引数のように、$INCREMENTは glvnを扱います。glvnの値は未定義$ INCREMENTは、それが数値ゼロ(0)(とそれを扱うことを意味空の文字列を、持っているとしてそれを扱う場合は、glvnは、リモートノード上に存在するグローバル変数であり、GT.CMを介してアクセスされている場合でも、 GNPサーバ)。
もし$INCREMENT() がトランザクション($TLevelがゼロ以外)の内部で発生した場合、または、glvnがローカル変数を参照する場合、それは、SET glvn=$GET(glvn)+numexpr と同等です。
もし$INCREMENT() がトランザクション($TLevelがゼロ)の外側で発生し、かつ、glvnがグローバル変数を参照する場合、関数は、原子性、一貫性、分離操作として実行される、SET glvn=$GET(glvn)+numexpr として機能します。それが glvnのインクリメントの原始性, 一貫性, 分離性を開始する前に、$INCREMENT() はnumexpr の評価を行うことに注意してください。もし glvnを含む領域がジャーナルされている場合、$INCREMENT()も耐久性があります。BG、MM(OpenVMSのみ)のみとGT.CM GNPのアクセス方法は、グローバル変数(glvn)を含む領域のためにサポートされています。 GT.CM OMIとGT.CM DDPのアクセスメソッドは、この操作をサポートしていません、そして、現在そのようなサポートを追加する計画はありません。
$INCREMENT() は、NOISOLATION を持つグローバル変数をサポートしません( VIEW "NOISOLATION" コマンドを介して)、そして、そのような変数上での $INCREMENT() は、GTM-E-GVINCRISOLATION ランタイムエラーでトリガします。
ネイキッド参照は、glvn および/または numexprコンポーネントでグローバル変数(間接指定の有無)の使用法の影響を受けます。 "glvn" の前方にある "numexpr" の評価は、$INCREMENTの後に、ネイキッド参照のの値を決定します。もし glvn または numexpr のどちらかが間接指定を含んでいる場合は、$INCREMENTは、次のようにネイキッド参照をセットします:
もし glvn がグローバルである場合は、glvn、または、
もし glvn がローカルである場合、"numexpr" で最後のグローバル参照、または、
もし glvn も numexpr のどちらも任意のグローバル参照を持っていない場合、影響が無い。