170
Caché Basic リファレンス Version 5.1 2006-03-14 InterSystems Corporation 1 Memorial Drive Cambridge MA 02142 www.intersystems.com

Caché Basic リファレンス - InterSystems...記号 CachéBasicで使用される記号 CachéBasicで演算子などとして使用される文字の表です。記号の表 以下は、CachéBasicで使用されるリテラル記号の表です(この表には、言語の一部ではない形式

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • Caché Basic リファレンス

    Version 5.12006-03-14

    InterSystems Corporation 1 Memorial Drive Cambridge MA 02142 www.intersystems.com

  • Caché Basic リファレンス

    Caché Version 5.1 2006-03-14

    Copyright © 2006 InterSystems Corporation.

    All rights reserved.

    このドキュメントは、 Sun Microsystems、RenderX Inc.、 アドビ システムズ および ワールドワイド・ウェブ・コンソーシアム

    (www.w3c.org)のツールと情報を使用して、Adobe Portable Document Format (PDF)で作成およびフォーマットされました。

    主要ドキュメント開発ツールは、InterSystemsが構築したCaché と Javaを使用した特別目的のXML処理アプリケーションで

    す。

    Caché 製品とロゴは InterSystems Corporation の登録商標です。

    Ensemble 製品とロゴは InterSystems Corporation の登録商標です。

    InterSystems という名前とロゴは InterSystems Corporation の登録商標です

    このドキュメントは、インターシステムズ社(住所:One Memorial Drive, Cambridge, MA 02142)あるいはその子会社が所有す

    る企業秘密および秘密情報を含んでおり、インターシステムズ社の製品を稼動および維持するためにのみ提供される。こ

    の発行物のいかなる部分も他の目的のために使用してはならない。また、インターシステムズ社の書面による事前の同意

    がない限り、本発行物を、いかなる形式、いかなる手段で、その全てまたは一部を、再発行、複製、開示、送付、検索可能

    なシステムへの保存、あるいは人またはコンピュータ言語への翻訳はしてはならない。

    かかるプログラムと関連ドキュメントについて書かれているインターシステムズ社の標準ライセンス契約に記載されている

    範囲を除き、ここに記載された本ドキュメントとソフトウェアプルグラムの複製、使用、廃棄は禁じられている。インターシス

    テムズ社は、ソフトウェアライセンス契約に記載されている事項以外にかかるソフトウェアプログラムに関する説明と保証を

    するものではない。さらに、かかるソフトウェアに関する、あるいはかかるソフトウェアの使用から起こるいかなる損失、損害

    に対するインターシステムズ社の責任は、ソフトウェアライセンス契約にある事項に制限される。

    前述は、そのコンピュータソフトウェアの使用およびそれによって起こるインターシステムズ社の責任の範囲、制限に関する

    一般的な概略である。完全な参照情報は、インターシステムズ社の標準ライセンス契約に記され、そのコピーは要望によっ

    て入手することができる。

    インターシステムズ社は、本ドキュメントにある誤りに対する責任を放棄する。また、インターシステムズ社は、独自の裁量

    にて事前通知なしに、本ドキュメントに記載された製品および実行に対する代替と変更を行う権利を有する。

    Caché および InterSystems Caché、Caché SQL、 Caché ObjectScript および Caché Object は、インターシステムズ社の

    商標です。

    ここで使われている他の全てのブランドまたは製品名は、各社および各組織の商標または登録商標です。

    インターシステムズ社の製品に関するサポートやご質問は、以下にお問い合わせください:

    InterSystems ワールドワイド カスタマサポート

    +1 617 621-0700Tel:

    +1 617 374-9391Fax:

    [email protected]:

  • 目次

    記号 .......................................................................................................................... 1

    Caché Basic で使用される記号 ................................................................................ 1

    Caché Basic コマンド .................................................................................................... 5

    Call 文 ................................................................................................................. 5

    Const 文 .............................................................................................................. 6

    Continue 文 .......................................................................................................... 7

    Copy 文 ............................................................................................................... 7

    Dim 文 ................................................................................................................. 8

    Do...Loop 文 ......................................................................................................... 9

    Erase 文 ............................................................................................................. 10

    EraseArray 文 ..................................................................................................... 11

    EraseValue 文 ..................................................................................................... 12

    Exit 文 ............................................................................................................... 13

    For Each...Next 文 ............................................................................................... 14

    For...Next 文 ...................................................................................................... 16

    Function 文 ......................................................................................................... 18

    If...Then...Else 文 ................................................................................................ 20

    Merge 文 ............................................................................................................ 21

    On Error Goto 文 ................................................................................................ 22

    Option Explicit 文 ................................................................................................ 23

    New 文 ............................................................................................................... 24

    OpenId 文 ........................................................................................................... 24

    Print 文 .............................................................................................................. 25

    Randomize 文 ...................................................................................................... 26

    Rem 文 ............................................................................................................... 27

    Return 文 ........................................................................................................... 28

    Select Case 文 ..................................................................................................... 29

    Set 文 ................................................................................................................ 30

    Sub 文 ................................................................................................................ 31

    TCommit 文 ........................................................................................................ 33

    TRollback 文 ....................................................................................................... 33

    TStart 文 ............................................................................................................ 34

    While...Wend 文 .................................................................................................. 35

    With 文 .............................................................................................................. 36

    Caché Basic 関数 ....................................................................................................... 39

    Abs 関数 ............................................................................................................ 39

    Caché Basic リファレンス                                                                                                              iii

  • Asc 関数 ............................................................................................................ 39

    Atn 関数 ............................................................................................................ 40

    Case 関数 ........................................................................................................... 41

    Chr 関数 ............................................................................................................ 43

    Cos 関数 ............................................................................................................ 44

    Date 関数 ........................................................................................................... 45

    DateAdd 関数 ..................................................................................................... 45

    DateConvert 関数 ................................................................................................ 48

    DateDiff 関数 ...................................................................................................... 49

    DatePart 関数 ..................................................................................................... 52

    DateSerial 関数 ................................................................................................... 56

    DateTimeConvert 関数 ......................................................................................... 57

    Day 関数 ............................................................................................................ 59

    数学関数の算出 .................................................................................................. 60

    Exists 関数 ......................................................................................................... 62

    Exp 関数 ............................................................................................................ 63

    Int/Fix 関数 ........................................................................................................ 64

    Hex 関数 ............................................................................................................ 65

    Hour 関数 .......................................................................................................... 66

    Increment 関数 .................................................................................................... 67

    InStr 関数 ........................................................................................................... 68

    InStrRev 関数 ...................................................................................................... 70

    IsObject 関数 ...................................................................................................... 72

    Join 関数 ............................................................................................................ 73

    LCase 関数 ......................................................................................................... 74

    Left 関数 ............................................................................................................ 75

    Len 関数 ............................................................................................................ 76

    List 関数 ............................................................................................................ 77

    ListBuild 関数 ..................................................................................................... 79

    ListExists 関数 .................................................................................................... 81

    ListFind 関数 ...................................................................................................... 82

    ListGet 関数 ....................................................................................................... 83

    ListLength 関数 ................................................................................................... 84

    Lock 関数 ........................................................................................................... 85

    Log 関数 ............................................................................................................ 86

    Mid 関数 ............................................................................................................ 87

    Minute 関数 ........................................................................................................ 89

    Month 関数 ......................................................................................................... 90

    MonthName 関数 ................................................................................................. 91

    Now 関数 ............................................................................................................ 92

    iv                                                                                                              Caché Basic リファレンス

  • Oct 関数 ............................................................................................................ 93

    Piece 関数 .......................................................................................................... 94

    Replace 関数 ....................................................................................................... 95

    Right 関数 .......................................................................................................... 97

    Rnd 関数 ............................................................................................................ 98

    Round 関数 ......................................................................................................... 99

    Second 関数 ...................................................................................................... 100

    Sgn 関数 ........................................................................................................... 101

    Sin 関数 ............................................................................................................ 102

    Space 関数 ........................................................................................................ 103

    Split 関数 .......................................................................................................... 103

    Sqr 関数 ........................................................................................................... 105

    StrComp 関数 .................................................................................................... 106

    String 関数 ........................................................................................................ 107

    StrReverse 関数 ................................................................................................. 109

    Tan 関数 ........................................................................................................... 109

    Time 関数 ......................................................................................................... 110

    TimeConvert 関数 .............................................................................................. 111

    Timer 関数 ........................................................................................................ 112

    TimeSerial 関数 ................................................................................................. 113

    Traverse 関数 .................................................................................................... 114

    LTrim、RTrim、Trim 関数 .................................................................................... 116

    UCase 関数 ....................................................................................................... 116

    Unlock 関数 ...................................................................................................... 117

    Weekday 関数 ................................................................................................... 118

    WeekdayName 関数 ............................................................................................ 120

    Year 関数 ......................................................................................................... 121

    Caché Basic 演算子 .................................................................................................. 123

    Caché Basic 演算子 ............................................................................................ 123

    演算子の優先順位 ............................................................................................. 124

    演算子の要約 .................................................................................................... 125

    加算演算子 (+) .................................................................................................. 126

    減算演算子 (–) .................................................................................................. 127

    Mod 演算子 ...................................................................................................... 128

    乗算演算子 (*) .................................................................................................. 129

    除算演算子 (/) .................................................................................................. 129

    整数除算演算子 (\) ............................................................................................ 130

    指数演算子 (^) ................................................................................................... 131

    代入演算子 (=) .................................................................................................. 131

    比較演算子 ....................................................................................................... 132

    Caché Basic リファレンス                                                                                                               v

  • 連結演算子 (&) .................................................................................................. 133

    Is 演算子 .......................................................................................................... 134

    And 演算子 ....................................................................................................... 135

    BitAnd 演算子 ................................................................................................... 136

    Eqv 演算子 ....................................................................................................... 137

    BitEqv 演算子 ................................................................................................... 138

    Imp 演算子 ........................................................................................................ 139

    BitImp 演算子 .................................................................................................... 140

    Not 演算子 ....................................................................................................... 141

    BitNot 演算子 ................................................................................................... 142

    Or 演算子 ......................................................................................................... 143

    BitOr 演算子 ..................................................................................................... 144

    Xor 演算子 ....................................................................................................... 145

    BitXor 演算子 ................................................................................................... 146

    Caché Basic 定数 ..................................................................................................... 147

    Comparison 定数 ............................................................................................... 147

    Date Format 定数 ............................................................................................. 147

    Date/Time 定数 ................................................................................................ 148

    Node 定数 ........................................................................................................ 148

    String 定数 ....................................................................................................... 148

    Caché Basic オブジェクト ........................................................................................... 151

    Err Object ......................................................................................................... 151

    System オブジェクト ............................................................................................ 152

    Caché Basic 一般概要 .............................................................................................. 155

    用語集 ............................................................................................................. 155

    多次元データ・モデル ......................................................................................... 160

    予約語 ............................................................................................................. 164

    vi                                                                                                              Caché Basic リファレンス

  • 記号

    Caché Basic で使用される記号

    Caché Basic で演算子などとして使用される文字の表です。

    記号の表以下は、Caché Basic で使用されるリテラル記号の表です (この表には、言語の一部ではない形式

    規約を示す記号は含まれていません)。別途、Caché ObjectScript で使用される記号の表も用意さ

    れています。

    各記号の名前の後には、ASCII 10 進数コード値が続きます。

    名前と使用法記号

    空白 (タブ (9)、またはスペース (32)) : キーワード、識別子、および変数の間の

    1 つ以上の空白文字。

    [スペー

    ス]、または

    [タブ]

    引用符 (34) : 文字列リテラルを囲みます。"

    二重引用符 : 空の文字列を指定します。""

    パーセント記号 (37) : メソッドやデータ型などの識別子名の先頭で使用が許さ

    れている文字。

    %

    アンパサンド (38) : 文字を連結する演算子。

    Hex (&H) 関数および Oct (&O) 関数における数値の接頭語。

    &

    アポストロフィ (39) : 単一行用のコメント 文字。'

    括弧 (40,41) : プロシージャや関数のパラメータ・リストを囲みます。

    式を入れ子にするときに使用します。これにより、演算子の既定の優先順位が

    オーバーライドされます。

    配列添え字の指定に使用します。

    If、While、または 1 行の Case コマンドの評価式を囲みます。

    ( )

    アスタリスク (42) : 乗算演算子。*

    プラス記号 (43) : 加算演算子。+

    Caché Basic リファレンス                                                                                                               1

  • 名前と使用法記号

    コンマ (44) : プロシージャや関数のパラメータ・リスト内のパラメータを区切る

    ために使用します。

    配列内の添え字を区切るために使用します。

    Const コマンド、および Dim コマンドで、複数の割り当てを区切るために使用し

    ます。

    ,

    マイナス記号 (45) : 単項算術マイナス演算子。

    減算演算子。

    ピリオド (46) : 小数点を示す文字。

    オブジェクトのメソッドやプロパティの参照に使用する person.Nameなどのオ

    ブジェクト・ドット構文。

    .

    スラッシュ (47) : 除算演算子 (残余あり)。/

    コロン (58) : ラベル接尾辞。例 : LabelOne:。

    文を区切るための文字。1行にある複数の文を区切るために使用します。例 :

    Print a : Print b。

    Case 関数では、ケースと値を組み合わせるために使用します。

    :

    より小さい (60) : より小さい演算子。<

    以下 : 以下演算子。

    以上 : 以上演算子。>=

    アット記号 (64) : func@Routine(args) など関数を呼び出す構文。@

    文字 "E" (69, 101) : 指数演算子。E, e

    バックスラッシュ (92) : 整数除算演算子 (残余なし)。\

    キャレット (94) : グローバル変数名接頭語。(例) ^myglobal。

    指数演算子。

    ^

    2                                                                                                               Caché Basic リファレンス

    記号

  • 名前と使用法記号

    中括弧 (123,125) : プロシージャでコード・ブロックを区切るために使用する文

    字。

    { }

    Caché Basic リファレンス                                                                                                               3

    Caché Basic で使用される記号

  • Caché Basic コマンド

    Call 文

    制御を Sub プロシージャ、または Function プロシージャに渡します。

    [Call] name([argumentlist])

    引数

    Call 文の構文は、以下の部分で構成されています。

    Call はオプションのキーワードです。指定する場合は、argumentlist を

    括弧で囲む必要があります。(例) Call MyProc(0)

    Call

    呼び出すプロシージャの名前です。外部ルーチンでプロシージャを呼

    び出すには、name@routine(argumentlist) を指定します。

    name

    オプション — プロシージャに渡す、コンマで区切られた変数、配列、ま

    たは式のリストです。引数がない場合でも、括弧は必要です。

    argumentlist

    備考プロシージャを呼び出す際、Call キーワードを使用する必要はありません。しかし、Call キーワード

    を使用して引数が必要なプロシージャを呼び出す場合は、argumentlist を括弧で囲む必要がありま

    す。Call キーワードを省略する場合は、argumentlist を囲む括弧も省略する必要があります。Call

    構文を使用して内部関数またはユーザ定義関数を呼び出す場合、関数の返り値は破棄されます。

    例以下の例は Call 文の使用法を示しています。

    Call MyFunction("Hello World")

    Function MyFunction(text) Println textEnd Function

    Caché Basic リファレンス                                                                                                               5

  • Const 文

    リテラル値の代わりに使用する定数を宣言します。

    Const constname = expression

    引数

    Const 文の構文は、以下の部分で構成されています。

    定数の名前。変数の標準的な名前付け規約に従います。constname

    リテラルや、すべての算術演算子または論理演算子を組み合わせて使用

    できます (Is を除く)。

    expression

    備考一行に複数の定数宣言を続けて記述するには、それぞれの定数の代入をコンマで区切ります。

    定数宣言では、変数、ユーザ定義関数、内部 Caché Basic 関数 (Chr など) は使用できません。定

    義上、これらは定数にできません。Sub または Function プロシージャで宣言された定数は、そのプ

    ロシージャのローカル定数になります。プロシージャ外で宣言された定数は、宣言されたスクリプト

    全体に渡って定義されます。式を使用できるすべての場所で、定数を使用できます。

    例以下のコードは、Const 文の使用法を示しています。

    Const MyVar = 459

    ' Declare multiple constants on same line.Const MyStr = "Hello", MyNumber = 3.4567

    メモ定数はスクリプトを自己文書化することができ、修正も容易です。変数とは異なり、定数はスクリプト

    の実行中に誤って変更してしまうこともありません。

    関連項目

    • Dim 文

    • Function 文

    • Sub 文

    6                                                                                                               Caché Basic リファレンス

    Caché Basic コマンド

  • Continue 文

    FOR コマンド、または DO WHILE 文にジャンプし、条件を再評価してループします。

    Continue DoContinue For

    引数

    Continue Do 文と Continue For 文に、引数はありません。

    備考Continue Do 文または Continue For 文は For 文または Do While 文に続くコード・ブロック内で使

    用します。Continue Do 文または Continue For 文により、実行が For 文または Do While 文へ戻

    り、条件式が評価されます。また、その評価に基づいてコード・ブロックのループが再実行されます。

    例以下の例は、Continue 文の使用法を示しています。

    For i = 1 to 10 If i = 5 Then Continue For Println i End IfNext

    関連項目

    • Do...Loop 文

    • Exit 文

    • For Each...Next 文

    • For...Next 文

    Copy 文

    配列要素をソースからターゲットにコピーします。

    Copy target=source

    引数

    Copy 文には、以下のパラメータがあります。

    Caché Basic リファレンス                                                                                                               7

    Continue 文

  • コピー元の変数の名前。通常は配列。source

    ソースの内容のコピー先の変数名。target

    備考ターゲット変数のノードはすべてコピー操作の前に削除されます。Copy と Merge で唯一異なる点

    は、ターゲット・ノードの削除です。

    Erase source, target

    target(1) = "node 1"target(1,1) = "node 1,1"target(2) = "node 2"target(3,1) = "node 3,1"source(3,2) = "node 3,2"

    Copy target = source

    Println Exists(target(3,1)) 'not defined anymore, returns 0Println Exists(target(3,2)) 'does now exist, returns 1Println Exists(target(1)) 'not defined and has no subnodes, returns 0

    関連項目

    • Merge 文

    Dim 文

    変数を宣言します。

    Dim varname[, varname] . . .

    引数

    Dim 文の構文は、以下の部分で構成されています。

    変数名。変数の標準的な名前付け規約に従います。varname

    備考Dim で宣言するスクリプト・レベルの変数は、スクリプト内のいずれのプロシージャでも使用可能で

    す。プロシージャ・レベルでは、変数はプロシージャ内でのみ使用できます。

    初期設定されていない変数は、すべて長さがゼロの文字列 ("") として処理されます。

    8                                                                                                               Caché Basic リファレンス

    Caché Basic コマンド

  • 例以下の例は、Dim 文の使用法を示しています。

    Dim MyStr ' Declare one variableDim MyVar, MyNum ' Declare two variables

    メモCaché Basic では、配列の次元を指定する必要がないため、ReDim 文は実装されません。

    関連項目

    • Set 文

    Do...Loop 文

    条件が真である間、または真になるまで、文のブロックを繰り返します。

    Do [{While | Until} condition][statements][Exit Do][statements]Loop

    Or, you can use this syntax:

    Do[statements][Exit Do][statements]Loop [{While | Until} condition]

    引数

    Do...Loop 文の構文は、以下の部分で構成されています。

    真または偽の数値式または文字列式condition

    条件が真の間、または真になるまで繰り返される、単独もしくは複数の文statements

    備考Exit Do は、Do...Loop を終了するための補助的な手段であり、Do...Loop 制御構造内でのみ使用

    します。Exit Do 文は、その数に関係なく、Do...Loop 内の任意の場所に配置することができます。

    Exit Do は、条件の評価に使用されることが多く (例えば If...Then)、制御を Loop の直後の文に渡

    します。

    Caché Basic リファレンス                                                                                                               9

    Do...Loop 文

  • 入れ子になった Do...Loop 文で使用する場合、Exit Do 文は、入れ子のレベルが 1 つ上のループ

    へ制御を移動します。

    例以下の例は、Do...Loop 文の使用法を示しています。

    Do Until MyNum = 6 MyNum = Int (6 * Rnd + 1) ' Generate a random integer between 1 and 6 Println MyNumLoop

    Dim Check, CounterCheck = True: Counter = 0 ' Initialize variables.Do ' Outer loop. Do While Counter < 20 ' Inner loop. Counter = Counter + 1 ' Increment Counter. If Counter = 10 Then ' If condition is True... Check = False ' set value of flag to False. Exit Do ' Exit inner loop. End If LoopLoop Until Check = False ' Exit outer loop immediately.

    関連項目

    • Exit 文

    • For...Next 文

    • While...Wend 文

    Erase 文

    名前付きの変数を削除し、動的配列の格納領域の割り当てを取り消します。

    Erase varname

    引数

    Erase 文で使用する引数は、以下のとおりです。

    削除する変数の名前varname

    備考Erase 文は変数と関連しているすべてのノードを削除します。

    10                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • 例以下の例は、Erase 文の使用法を示しています。

    array = "root node"array("subnode") = "subnode"array("subnode", "subnode") = "subnode, subnode"Println Exists(array) 'returns 3; variable defined and has array elementsErase array Println Exists(array) 'returns 0

    関連項目

    • EraseArray 文

    • EraseValue 文

    EraseArray 文

    変数の配列要素を削除し、動的配列の格納領域の割り当てを取り消します。

    EraseArray varname

    引数

    EraseArray 文で使用する引数は、以下のとおりです。

    配列要素を削除する変数の名前varname

    備考EraseArray 文は変数の配列要素を削除しますが、ルート・ノードは削除しません。

    例以下の例は、EraseValue 文の使用法を示しています。

    array = "root node"array("subnode") = "subnode"array("subnode", "subnode") = "subnode, subnode"Println Exists(array) 'returns 3; variable defined and has array elementsEraseArray arrayPrintln Exists(array) 'returns 1

    関連項目

    • Erase 文

    • EraseValue 文

    Caché Basic リファレンス                                                                                                             11

    EraseArray 文

  • EraseValue 文

    変数のルート・ノードを削除します。

    EraseValue varname

    引数

    EraseValue 文で使用する引数は、以下のとおりです。

    ルート・ノードを削除する変数の名前varname

    備考EraseValue 文は変数のルート・ノードを削除しますが、配列要素は削除しません。

    例以下の例は、EraseValue 文の使用法を示しています。

    array = "root node"array("subnode") = "subnode"array("subnode", "subnode") = "subnode, subnode"Println Exists(array) 'returns 3; variable defined and has array elementsEraseValue arrayPrintln Exists(array) 'returns 2

    関連項目

    • Erase 文

    • EraseArray 文

    12                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • Exit 文

    Do...Loop、For...Next、Function、もしくは Sub コードのブロックを終了します。

    Exit Do

    Exit For

    Exit Function

    Exit Sub

    引数

    Exit 文の構文には、以下の形式があります。

    Do...Loop 文を終了します。これは、Do...Loop 文でのみ使用できま

    す。Exit DoはLoop文の後の文に制御を移動します。入れ子になっ

    た Do...Loop 文で使用する場合、Exit Do 文は、入れ子のレベルが

    1 つ上のループへ制御を移動します。

    Exit Do

    For ループを終了します。これは、For...Next または For Each...Next

    ループでのみ使用できます。Exit For は Next 文の後の文に制御を

    移動します。入れ子になった For ループで使用する場合、Exit For

    文は、入れ子のレベルが 1 つ上のループへ制御を移動します。

    Exit For

    この文を含む Function プロシージャを即時に終了します。Function

    を呼び出した文の後に続く文で実行を継続します。

    Exit Function

    この文を含む Sub プロシージャを即時に終了します。Sub を呼び出

    した文の後に続く文で実行を継続します。

    Exit Sub

    例以下の例は、Exit 文の使用法を示しています。

    Caché Basic リファレンス                                                                                                             13

    Exit 文

  • Sub RandomLoop Dim I, MyNum Do ' Set up infinite loop. For I = 1 To 1000 ' Loop 1000 times. MyNum = Int(Rnd * 100) ' Generate random numbers. Select Case MyNum ' Evaluate random number. Case 17: Print "Case 17" Exit For ' If 17, exit For...Next. Case 29: Print "Case 29" Exit Do ' If 29, exit Do...Loop. Case 54: Print "Case 54" Exit Sub ' If 54, exit Sub procedure. End Select Next LoopEnd Sub

    関連項目

    • Continue 文

    • Do...Loop 文

    • For Each...Next 文

    • For...Next 文

    • Function 文

    • Sub 文

    For Each...Next 文

    配列またはコレクションの各要素ごとに、一連の文を繰り返します。

    For Each element In group[statements][Exit For][statements]Next [element]

    引数

    For Each...Next 文の構文は、以下の部分で構成されています。

    14                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • コレクションまたは配列の要素の繰り返しに使用する変数。コレクションの場

    合は、要素にVariant変数、汎用オブジェクト変数、または特定のオブジェク

    ト変数のみを指定できます。配列の場合は、要素に Variant 変数のみを指

    定できます。

    element

    コレクションまたは配列のオブジェクトの名前。group

    グループの各項目に対して実行する単独または複数の文。statement

    備考group に 1 つでも要素があれば、For Each ブロックが始まります。一度ループが始まると、ループ

    内のすべての文がgroupの最初の要素に対して実行されます。groupにまだ要素がある限り、ルー

    プの文はそれぞれの要素に実行され続けます。groupにそれ以上要素が存在しない場合、ループ

    は終了し、Next 文の後に続く文で実行を継続します。

    Exit For は、終了するための補助的な手段であり、For Each...Next または For...Next 制御構造内

    でのみ使用できます。Exit For 文は、ループの任意の場所にいくつでも配置することができます。

    Exit For は、条件の評価に使用されることが多く (例えば If...Then)、制御を Next の直後の文に渡

    します。

    他の For Each...Next ループに、For Each...Next ループを 1 つ配置することで For Each...Next

    ループを入れ子にできます。ただし、各ループの要素は一意である必要があります。

    例以下の例は、For Each...Next 文の使用法を示しています。

    Erase ^RandomData

    ' Generate some random nodesFor i = 65 to 90 If Rnd(i) > .5 Then ^RandomData(Chr(i),"subnode")="data" Else ^RandomData(Chr(i))="data" End IfNext

    PrintLn "Traverse forwards"

    For each k1 in ^RandomData PrintLn k1 For each k2 in ^RandomData(k1) Print k1,vbTAB,k2 If Exists(^RandomData(k1,k2)) and vbHasValue Then Print " = ",^RandomData(k1,k2) End If PrintLn NextNext

    Caché Basic リファレンス                                                                                                             15

    For Each...Next 文

  • メモNext 文の要素を省略しても、含んでいるかのように実行が継続されます。Next 文が対応する For

    文より前にあると、エラーが発生します。

    関連項目

    • Do...Loop 文

    • Exit 文

    • For...Next 文

    • While...Wend 文

    For...Next 文

    指定した回数だけ一連の文を繰り返します。

    For counter = start To end [Step step][statements][Exit For][statements]Next

    引数

    For...Next 文の構文は、以下の部分で構成されています。

    ループ・カウンタに使用する数値変数。この変数には配列要素や、ユーザ

    定義型の要素は指定できません。

    counter

    カウンタの初期値。start

    カウンタの最終値。end

    ループで毎回カウンタに加算する値。指定されない場合、既定は 1 です。step

    For と Next 間に記述する 1 つまたは複数の文。これらの文は指定された

    回数だけ実行されます。

    statements

    備考step引数は、正または負の数になります。ループ処理は、step引数の値により、以下のようになりま

    す。

    16                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • 以下の場合、ループを実行する値

    counter = end負の数

    一度ループを開始して、ループ内のすべての文が実行されると、stepが counterに追加されます。

    この時点で、(最初のループ実行と同じ条件の評価に基づいて) ループ内の文が再度実行される

    か、またはループが終了して、Next 文の後に続く文で実行が継続します。

    Exit For は、終了するための補助的な手段であり、For Each...Next または For...Next 制御構造内

    でのみ使用できます。Exit For 文は、ループの任意の場所にいくつでも配置することができます。

    Exit For は、条件の評価に使用されることが多く (例えば If...Then)、制御を Next の直後の文に渡

    します。

    For...Next ループを別のループ内に配置することにより、For...Next ループを入れ子にすることが

    できます。各ループにカウンタとしての一意の変数名を与えます。適切な構文は、以下のとおりで

    す。

    For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 ' Some statements Next NextNext

    メモループ内のカウンタ値を変更すると、コードの理解やデバッグが難しくなる場合があります。

    関連項目

    • Do...Loop 文

    • Exit 文

    • For Each...Next 文

    • While...Wend 文

    Caché Basic リファレンス                                                                                                             17

    For...Next 文

  • Function 文

    Function プロシージャの本文を形成する、名前や引数、およびコードを宣言します。

    [Public | Private] Function name [(arglist)] [ As classname ][statements][name = expression][Exit Function][statements][name = expression]End Function

    引数

    Function 文の構文は、以下の部分で構成されます。

    すべてのスクリプト内の全プロシージャから参照できる Function プロシー

    ジャを指定します。

    Public

    宣言するスクリプト内の他のプロシージャのみがアクセス可能な Function

    プロシージャを指定します。

    Private

    Function の名前。変数の標準的な名前付け規約に従います。name

    Function プロシージャを呼び出すときに、Function プロシージャに渡す引

    数を表す変数のリスト。複数の変数を指定するときは、カンマ (,) で区切り

    ます。

    arglist

    返り値のクラス名。classname

    Function プロシージャの本文内で実行する一連の文。statements

    Function の返り値。expression

    arglist 引数は以下の構文と構成部で成り立っています。

    [ByVal | ByRef] varname[( )]

    引数が値渡しであることを示します。ByVal

    引数が参照渡しであることを示します。ByRef

    引数を示す変数の名前。変数の標準的な名前付け規約に従います。varname

    備考Function プロシージャはスクリプト内にある他のすべてのプロシージャから可視です。Function の

    ローカル変数値は、プロシージャの呼び出しが終わると破棄されます。

    18                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • 実行可能なすべてのコードはプロシージャ内に記述する必要があります。Function プロシージャを

    別の Function や Sub プロシージャ内で定義することはできません。

    Exit Function 文は、Function プロシージャを即時に終了させます。Function プロシージャを呼び

    出した文の後に続く文でプログラムの実行を継続します。Exit Function文はFunctionプロシージャ

    内の任意の場所にいくつでも指定できます。

    Sub プロシージャ同様、Function プロシージャは、引数を取り、一連の文を実行し、その引数の値

    を変更する、個別のプロシージャです。しかし、Subプロシージャとは異なり、関数によって返された

    値を使用したいとき、Sqr や Cos、Chr などの内部関数と同じ要領で、式の右側に Function プロ

    シージャを使用できます。

    式の中で、関数名を使用して Function プロシージャを呼び出し、続く括弧に引数リストを指定しま

    す。Function プロシージャの使用法に関する詳細は "Call" 文を参照してください。

    Function から値を返すには 2 通りの方法があります。Return 文で値を指定するか、関数名に値を

    代入します。この代入は、プロシージャ内の任意の場所にいくつでも指定できます。名前に値が代

    入されていない場合、このプロシージャは既定値の、長さが 0 の文字列 ("") を返します。Function

    内の名前に、オブジェクト参照が代入されていない場合、オブジェクト参照を返す関数は 0 の長さ

    の文字列 ("") を返します。

    Function プロシージャ内で使用する変数は、プロシージャ内で明示的に宣言するものと、そうでな

    いものの 2 つに分けられます。プロシージャ内で (Dim などを使用して) 明示的に宣言された変数

    は、常にそのプロシージャのローカル変数です。プロシージャ内で明示的に宣言せずに使用され

    ている変数も、そのプロシージャの外部のさらに上のレベルで明示的に宣言されていない限りは、

    ローカル変数となります。

    例以下の例は、返り値を代入する 2つの方法を示しています。まず、Return 文に "True" を指定する

    方法と、次に IsGreaterThan という名前の関数に "False" を指定する方法です。関数名への False

    の代入は、無効な値が検出されたことを示します。

    Function IsGreaterThan(lower, upper)If lower < upper Then Return TrueIsGreaterThan = FalseEnd Function

    メモFunction プロシージャは再帰的に使用することができます。つまり、タスクを実行するのにそのプロ

    シージャ自体を呼び出すことができます。しかし、再帰呼び出しを行うとスタックのオーバーフローを

    引き起こす場合があります。

    関連項目

    • Call 文

    • Dim 文

    Caché Basic リファレンス                                                                                                             19

    Function 文

  • • Return 文

    • Sub 文

    If...Then...Else 文

    文のグループを、式の値によって条件付で実行します。

    If condition Then statements [Else elsestatements ]

    Or, you can use the block form syntax:

    If condition Then[statements][ElseIf condition-n Then[elseifstatements]] . . .[Else[elsestatements]]End If

    引数

    If...Then...Else 文の構文は、以下の部分で構成されています。

    真または偽で評価される式。condition

    コロンで区切られた単独もしくは複数の文。条件が真の場合に

    実行されます。

    statements

    condition と同じです。condition-n

    関連する condition-n が真の場合に実行される単独もしくは複

    数の文。

    elseifstatements

    前の condition または condition-n の式が真の場合に実行され

    る単独もしくは複数の文。

    elsestatements

    備考短い単純な条件には単数行の形式 (最初の構文)を使用できます。しかし、ブロック形式 (2つ目の

    構文) は、単数行の形式よりも構造化が容易で柔軟性があり、多くの場合理解や、保守、デバッグ

    が簡単です。

    ブロックの If (2 つ目の構文) を実行する際、条件が評価されます。条件が真であれば、Then に続

    く文が実行されます。条件が偽の場合は、各 ElseIf (存在する場合) が順に評価されます。真の条

    件が見つかった場合、対応するThenに続く文が実行されます。ElseIf 文のいずれも真でない場合

    (または ElseIf 節が存在しない場合)、Else に続く文が実行されます。Then または Else 文の実行

    後、End If に続く文で実行が継続されます。

    20                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • Else と ElseIf 節はどちらもオプションです。ブロックの If 内には ElseIf 文はいくつでも記述できます

    が、Else 節の後には記述できません。ブロックの If 文は入れ子にできます。つまり、一方の中に入

    れることができます。

    Thenキーワードに続く文は、検証され、文がブロックの If であるか否か判断されます。Thenの後の

    同じ行でコメント以外が表示される場合、文は単数行の If 文として処理されます。

    ブロックの If 文は行で最初の文でなければなりません。ブロックの If は End If 文で終了する必要

    があります。

    メモ単数行の構文では、If...Then分岐の結果として、複数の文を実行することが可能ですが、それらは

    すべて同じ行になければならず、以下の文にあるように、コロンで区切る必要があります。

    If A > 10 Then A = A + 1 : B = B + A : C = C + B

    関連項目

    • Case 関数

    Merge 文

    配列要素をソースからターゲットにマージします。

    Merge target=source

    引数

    Merge 文には、以下のパラメータがあります。

    ターゲット変数にマージされる変数の名前。通常は配列。source

    ソースの内容のマージ先の変数名。target

    備考ソース変数のノードはターゲット変数にある対応するノードを上書きし、下位のソースすべては対応

    する下位ターゲットを上書きします。他のすべてのターゲット・ノードは変更されません。Copy と

    Merge の唯一の違いは、Copy がターゲット・ノードを削除するのに対して、Merge が削除しない点

    です。

    Caché Basic リファレンス                                                                                                             21

    Merge 文

  • Erase source, target

    target(1) = "node 1"target(1,1) = "node 1,1"target(2) = "node 2"target(3,1) = "node 3,1"source(3,2) = "node 3,2"

    Merge target=source

    Println Exists(target(3,1)) 'is still defined, returns 1Println Exists(target(3,2)) 'does now exist, returns 1

    関連項目

    • Copy 文

    On Error Goto 文

    エラー処理ルーチンを使用可能にし、プロシージャ内でルーチンの位置を指定します。

    On Error GoTo [ line | 0 ]

    引数

    On Error GoTo 文で使用する引数は、以下のとおりです。

    line 引数は任意の行ラベルですline

    備考要求されたline引数で指定した行で開始するエラー処理ルーチンを使用可能にします。実行時エ

    ラーが発生した場合、制御は指定された行に分岐して、エラー・ハンドラを有効にします。指定した

    行は On Error 文と同じプロシージャ内になければならず、そうでなければ、コンパイル時エラーが

    発生します。

    以前にエラー処理を有効にした場合、On Error GoTo 0 を使用して無効にしてください。

    エラー処理ルーチンはErr オブジェクトのNumber プロパティ値によって、エラーの原因を確認しま

    す。ルーチンは、他のエラーが発生する前もしくはエラーの原因となり得るプロシージャが呼び出さ

    れる前に、関連したプロパティ値を Err オブジェクトで検証または保存します。Err オブジェクトのプ

    ロパティ値は最も最近のエラーのみを反映します。Err.Number に関連したエラー・メッセージは、

    Err.Description に含まれます。

    22                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • 例以下の例は On Error GoTo 文の使用法を示しています。

    PrintLn ErrorTest(1)PrintLn ErrorTest(0)

    Function ErrorTest(Arg) On Error Goto Label return 1/ArgLabel: PrintLn "Error ", Err.Number, " ", Err.Description, " ", Err.Source Err.Clear return 0End Function

    メモエラー処理ルーチンは Sub プロシージャや、Function プロシージャではありません。行ラベルで

    マークされたコード・セクションです。

    関連項目

    • Err オブジェクト

    Option Explicit 文

    スクリプト・レベルで、そのスクリプトにあるすべての変数の明示宣言を強制します。

    Option Explicit

    引数

    なし

    備考Option Explicit 文を使用する場合は、すべてのプロシージャよりも前に置かなくてはなりません。

    また Dim 文を使用して、すべての変数を明確に宣言する必要があります。宣言されていない変数

    を使用しようとすると、エラーが発生します。

    例以下の例は、Option Explicit 文の使用法を示しています。

    Option Explicit ' Force explicit variable declaration.Dim MyVar ' Declare variable.MyInt = 10 ' Undeclared variable generates error.MyVar = 10 ' Declared variable does not generate error.

    Caché Basic リファレンス                                                                                                             23

    Option Explicit 文

  • メモOption Explicit を使用すると、既存の変数名を間違って入力したり、変数のスコープが明確でない

    場合にコード内で混乱したりすることのないようにできます。

    New 文

    オブジェクトの新規インスタンスを生成します。

    New object

    引数

    New 文で使用する引数は、以下のとおりです。

    新規インスタンスを生成するオブジェクト名object

    例以下の例は、New 文の使用法を示しています。

    person = New User.Person

    output = New %File("\PersonList.txt")

    関連項目

    • IsObject 関数

    • OpenId 文

    OpenId 文

    与えられた識別子に対する、オブジェクトの新規のインスタンスをオープンします。

    OpenId object

    引数

    OpenId 文で使用する引数は、以下のとおりです。

    新規インスタンスを生成するオブジェクト名object

    24                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • 例以下の例は、OpenId 文の使用法を示しています。

    person = OpenId User.Person(5012) 'Instantiates a person object with the Id of 5012

    関連項目

    • IsObject 関数

    • New 文

    Print 文

    現在のデバイスに文字列を記述します。

    Print exprPrintln expr

    引数

    評価され、現在のデバイスに記述される式。単一の式、またはコンマ区切りの式のリ

    ストです。

    expr

    概要Print 文は現在のデバイスに式 (または式のリスト) を記述するために使用します。Println 文はリスト

    の最後の式の記述後、自動的に vbCRLF (キャリッジ・リターン/改行) を追加する以外、Print と同

    一です。

    例以下の例は、文字列および文字列変数を使用した Print および Println コマンドの使用法を示して

    います。文字列内に引用符を含めるには、引用符を 2つ続けます。空の文字列 ("") の記述は、エ

    ラーなしで実行され、Println では空白行の挿入に使うことができます。未定義の変数は (この例で

    は z)、空の文字列と同様に扱われます。この変数名の大文字と小文字は区別されます。

    Caché Basic リファレンス                                                                                                             25

    Print 文

  • Set a="big "Set b="bad "Set c="bug"Print "Hello"Println " world!"Println ""Println "this is a quote ("") character"Println zPrintln a,bPrintln cPrint a,bPrint c

    以下の例は、数値式を使用した Print および Println コマンドの使用法を示しています。不要な記

    号と先頭と末尾の空白が削除され、数値はキャノニック形式に変換されます。その後、数式が評価

    されます。文字列として指定された数値は変換されずにリテラルとして渡されます。

    Set x="++007.9900"Set y=++007.9900Println 123456Println (3+3)*2Println 3+(3*2)Println +007.9900Println xPrintln y

    以下の例は、添字付きグローバル変数を使用した Print および Println コマンドの使用法を示して

    います。

    Set ^a(1)="fruit"Set ^a(1,1)="apple"Println "An ",^a(1,1)," is a ",^a(1)

    関連項目

    • Basic : Set コマンド

    • Caché ObjectScript : WRITE コマンド

    Randomize 文

    乱数ジェネレータを初期化します。

    Randomize [number]

    引数

    引数 number は、任意の有効な数値式です。

    26                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • 備考Randomize は number を使用して、Rnd 関数の乱数ジェネレータを初期化し、新規の seed 値を与

    えます。number を省略すると、システム・タイマーに返された値が新規の seed 値として使用されま

    す。

    Randomize が使用されない場合、Rnd 関数 (引数なし) が、最初に呼び出された際、同じ番号を

    seed として使用します。その後は、最後に生成された番号を seed 値として使用します。

    例以下の例は、Randomize 文の使用法を示しています。

    Dim MyValue, ResponseRandomize ' Initialize random-number generator.

    MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6.

    Println MyValue

    メモ乱数のシーケンスを繰り返すには、数値の引数で Randomize を使う直前に、負の引数で Rnd を呼

    び出します。number に同じ値を与えて Randomize を使用しても、前のシーケンスは繰り返しませ

    ん。

    関連項目

    • Rnd 関数

    Rem 文

    プログラムに解説を追加します。

    Rem commentor

    ' comment

    引数

    なし

    コメント引数は、追加するコメントのテキストです。Remキーワードの後のコメントの前にはスペースが

    必要です。

    Caché Basic リファレンス                                                                                                             27

    Rem 文

  • 備考構文のセクションに示されているとおり、Rem キーワードの代わりにアポストロフィ (') を使用できま

    す。Remキーワードが、行内で他の文の後に続く場合、コロンで文と区別する必要があります。しか

    しアポストロフィを使用するときは、文の後のコロンは必要ありません。

    例以下の例は、Rem 文の使用法を示しています。

    Dim MyStr1, MyStr2MyStr1 = "Hello" : Rem Comment after a statement separated by a colon.MyStr2 = "Goodbye" ' This is also a comment; no colon is needed.Rem Comment on a line with no code; no colon is needed.

    Return 文

    現在の関数を終了し、その関数から値を返します。

    Return expression

    引数

    Return 文の構文は、以下の部分で構成されています。

    任意の数値式または文字列式expression

    備考Return 文を使用して、関数の実行を停止し、式の値を返します。関数内でReturn 文が実行されな

    い場合、現在の関数を呼び出した式には、定義されていない値が割り当てられます。

    例以下の例は、Return 文の使用法を示しています。

    Function IsGreaterThan(lower, upper)If lower > upper Then Return FalseElseIf lower = upper Then Return FalseElse Return TrueEnd IfEnd Function

    28                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • 関連項目

    • Function 文

    Select Case 文

    式の値によって、文のグループの内 1 つを実行します。

    Select Case testexpression[Case expressionlist-n[statements-n]] . . .[Case Else elsestatements]End Select

    引数

    Select Case 文の構文は、以下の部分で構成されています。

    任意の数値式または文字列式。testexpression

    Caseを記述する場合は必要。単独または複数の式の区切られ

    たリスト。

    expressionlist-n

    testexpression が expressionlist-n のいずれかと一致している

    場合に実行される単独、または複数の文。

    statements-n

    testexpression が Case 節のいずれとも一致しない場合に実行

    する単独、または複数の文。Case Else 節と一連の

    elsestatements 節は 1 つだけ指定できます。

    elsestatements

    備考testexpression が Case expressionlist 式のいずれかと一致する場合、そのCase節に続く文は最長

    でその次の Case 節までに実行されるか、または最終節の End Select までに実行されます。制御

    は、その後End Selectに続く文に渡されます。testexpressionが 1つ以上のCase節の expressionlist

    式と一致する場合、最初に一致した Case 節の文のみが実行されます。

    他の Case セレクションで、testexpression と expressionlist が一致しない場合のために、Case Else

    節を使用して elsestatements を実行することを指定します。必須ではありませんが、予期しない

    testexpression 値に対処するためにも Select Case ブロックに Case Else 文があると便利です。Case

    expressionlist が testexpression と一致せず、Case Else 文が存在しない場合は、End Select の続

    く文で実行が継続されます。

    Select Case 文は入れ子にできます。入れ子になった Select Case 文には、それぞれ一致する End

    Select 文が必要です。

    Caché Basic リファレンス                                                                                                             29

    Select Case 文

  • 例以下の例は、Select Case 文の使用法を示しています。

    Dim Color, MyVarSub ChangeBackground (Color) MyVar = lcase (Color) Select Case MyVar Case "red" document.bgColor = "red" Case "green" document.bgColor = "green" Case "blue","azure" document.bgColor = "blue" Case Else Print "pick another color" End SelectEnd Sub

    関連項目

    • If...Then...Else 文

    Set 文

    変数またはプロパティに、オブジェクト参照を割り当てます。

    Set objectvar = objectexpression

    引数

    変数の名前。変数の標準的な名付け規約に従います。objectvar

    オブジェクト名、同じオブジェクト型の宣言済みの変数、または

    同じオブジェクト型のオブジェクトを返す関数またはメソッドで構

    成された式。

    objectexpression

    概要Set文は変数に値を割り当てるために使用します。値には、数、文字列、オブジェクト参照を指定で

    きます。変数は、ローカル変数またはグローバル変数にすることができ、添え字を付けることができ

    ます。

    一般的に、Set 文でオブジェクト参照を変数に割り当てる際は、その変数に対するオブジェクトのコ

    ピーは作成されません。代わりに、オブジェクトに対する参照が作成されます。1つ以上の変数で同

    じオブジェクトを参照できます。これらの変数はオブジェクトの (コピーではなく)参照であるため、オ

    ブジェクトでの変更はすべて、オブジェクトを参照する変数に反映されます。

    30                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • 例以下の例は、変数に文字列を割り当てる 2 つの Set 文を示しています。2 番目の Set 文では、文

    字列の構成に結合演算子を使用しています。

    Set a = "the quick brown fox"Println aSet b = "the "&"quick "&"brown "&"fox"Println b

    以下の例は、添え字付きのグローバル変数に文字列を割り当てる 2 つの Set 文を示しています。

    Set ^a(1)="fruit"Set ^a(1,1)="apple"Println "An ",^a(1,1)," is a ",^a(1)

    以下の例は、変数にオブジェクト参照を割り当てる方法を示しています。

    Set person = New User.Person()Println person

    関連項目

    • Basic : Dim 文

    • Caché ObjectScript : SET コマンド

    Sub 文

    Sub プロシージャの本文を形成する名前、引数、およびコードを宣言します。

    Sub name [(arglist)][statements][Exit Sub][statements]End Sub

    引数

    Sub 文の構文は、以下の部分で構成されています。

    Sub の名前。変数の標準的な名前付け規約に従います。name

    Subプロシージャを呼び出すときに、Subプロシージャに渡す引数を表す変

    数のリスト。複数の変数を指定するときはコンマで区切ります。

    arglist

    Sub プロシージャの本文内で実行する文のグループ。statements

    arglist 引数は以下の構文と構成部で成り立っています。

    Caché Basic リファレンス                                                                                                             31

    Sub 文

  • [ByVal | ByRef] varname[( )]

    引数が値渡しであることを示します。ByVal

    引数が参照渡しであることを示します。ByRef

    引数を示す変数の名前。変数の標準的な名前付け規約に従います。varname

    備考Sub プロシージャ内のローカル変数値は、プロシージャの呼び出しが終わると破棄されます。

    実行可能なすべてのコードはプロシージャ内に記述する必要があります。別の Sub や Function プ

    ロシージャ内で Sub プロシージャを定義することはできません。

    Exit Sub 文は、Sub プロシージャを即時に終了させます。Sub プロシージャを呼び出した文の後に

    続く文でプログラムの実行を継続します。Exit Sub 文は Sub プロシージャの任意の場所にいくつで

    も指定できます。

    Function プロシージャ同様、Sub プロシージャは、引数を取り、一連の文を実行し、その引数の値

    を変更する、個別のプロシージャです。しかし、値を返す Function プロシージャとは異なり、Sub プ

    ロシージャは式では使用できません。

    Subプロシージャを呼び出すときは、プロシージャ名に引数リストを付けて指定します。Subプロシー

    ジャの使用に関する詳細は "Call" 文を参照してください。

    Subプロシージャ内で使用する変数は、プロシージャ内で明示的に宣言するものと、そうでないもの

    の 2 つに分けられます。プロシージャ内で (Dim を使用して) 明示的に宣言された変数は、常にそ

    のプロシージャのローカル変数です。プロシージャ内で明示的に宣言せずに使用されている変数

    も、そのプロシージャの外部のさらに上のレベルで明示的に宣言されていない限りは、ローカル変

    数となります。

    メモSub プロシージャは再帰的に使用することができます。つまり、タスクを実行するのにそのプロシー

    ジャ自体を呼び出すことができます。しかし、再帰呼び出しを行うとスタックのオーバーフローを引き

    起こす場合があります。

    プロシージャ内で明示的に宣言されない変数をプロシージャは使用できますが、スクリプト・レベル

    で定義したものが同じ名前を持つ場合、名前の衝突が起こる場合もあります。プロシージャが別の

    プロシージャ、定数、または変数と同じ名前を持つ、宣言されていない変数を参照する場合、スクリ

    プト・レベルの名前を参照しているものとみなされます。このような衝突を避けるためにも、変数を明

    示的に宣言します。Option Explicit 文を使用すると、変数の宣言を強制的に行うことができます。

    関連項目

    • Call 文

    • Dim 文

    32                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • • Function 文

    TCommit 文

    トランザクションの正常終了を表します。

    TCommit

    引数

    TCommit 文には引数はありません。

    備考TCommit は、対応する TStart によって開始されたトランザクションの正常終了を表します。

    例以下の例は、TCommit 文の使用法を示しています。

    TStartIf StorePerson(personobject) Then TCommitElse TRollbackEnd If

    関連項目

    • TRollback 文

    • TStart 文

    TRollback 文

    トランザクションの異常終了を表します。

    TRollback

    引数

    TRollback 文には引数はありません。

    Caché Basic リファレンス                                                                                                             33

    TCommit 文

  • 備考TRollback は現在のトランザクションを終了し、ジャーナルされたすべてのデータベース値を、トラン

    ザクションの開始時に保持されていた値に復元します。

    例以下の例は、TRollback 文の使用法を示しています。

    TStartIf StorePerson(personobject) Then TCommitElse TRollbackEnd If

    関連項目

    • TCommit 文

    • TStart 文

    TStart 文

    トランザクションの開始を表します。

    TStart

    引数

    TStart 文には引数はありません。

    備考TStartは、トランザクションの開始を表します。TStartに続いてデータベース・オペレーションのジャー

    ナルが開始され、以降の TCommit 文や TRollback 文の実行が可能になります。

    トランザクション内で発行されたロックは、解除されたとしても、そのトランザクションが終了するまで

    は保持されます。

    例以下の例は、TStart 文の使用法を示しています。

    TStartIf StorePerson(personobject) Then TCommitElse TRollbackEnd If

    34                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • 関連項目

    • TCommit 文

    • TRollback 文

    While...Wend 文

    与えられた条件が真であれば、一連の文を実行します。

    While condition[statements]Wend

    引数

    While...Wend 文の構文は、以下の部分で構成されています。

    真または偽で評価される式。conditions

    条件が真の間に実行する、単独または複数の文。statements

    備考条件が真の場合、Wend 文が見つかるまで文内のすべての文が実行されます。制御がWhile 文に

    戻り、条件が再度チェックされます。条件が真のままであれば、プロセスが繰り返されます。真でな

    ければ、Wend 文の後の文から実行が再開されます。

    While...Wend ループはいずれのレベルでも入れ子にすることができます。各 Wend は最後に実行

    された While と対応します。

    例以下の例は、While...Wend 文の使用法を示しています。

    Dim CounterCounter = 0 ' Initialize variable.While Counter < 20 ' Test value of Counter. Counter = Counter + 1 ' Increment Counter. Print CounterWend ' End While loop when Counter > 19.

    メモDo...Loop 文は、ループを実行するために、さらに構造化された柔軟な方法を提供します。

    Caché Basic リファレンス                                                                                                             35

    While...Wend 文

  • 関連項目

    • Do...Loop 文

    • Exit 文

    • For Each...Next 文

    • For...Next 文

    With 文

    単独のオブジェクトで一連の文を実行します。

    With objectstatementsEnd With

    引数

    With 文には以下の引数が必要です。

    オブジェクトの名前またはオブジェクトを返す関数の名前object

    オブジェクトで実行する単独、または複数の文statements

    備考With文を使用すると、指定したオブジェクトで、オブジェクト名を再定義することなく、一連の文を実

    行できます。例えば、単独のオブジェクトで異なる複数のプロパティを変更するには、With 制御構

    造内にプロパティを割り当てる文を記述し、プロパティの割り当てごとにオブジェクトを参照する代わ

    りに一度オブジェクトを参照します。

    プロパティの操作はWith の重要な機能ですが、他の用途も考えられます。With ブロック内では正

    当なコードであれば、いずれも使用可能です。

    Withブロックを別のブロックに配置することにより、With文を入れ子にすることが可能です。しかし、

    外部 With ブロックのメンバが内部 With ブロックでマスクされているため、外部 With ブロックにあ

    るオブジェクトのメンバについては、内部With ブロック内では、完全修飾されたオブジェクト参照を

    指定する必要があります。

    例以下の例は、同じオブジェクトの複数のプロパティに値を割り当てるためのWith文の使用法を示し

    ています。

    36                                                                                                             Caché Basic リファレンス

    Caché Basic コマンド

  • With myPerson .City = "Cambridge" .State = "MA" .Street = "One Memorial Drive"End With

    メモWith ブロックの処理が始まると、object の変更はできません。結果として、単独のWith 文を使用し

    て、異なる複数のオブジェクトを処理することはできません。

    Caché Basic リファレンス                                                                                                             37

    With 文

  • Caché Basic 関数

    Abs 関数

    数字の絶対値を返します。

    Abs(number)

    引数

    引数numberは、任意の有効な数値式です。numberが、初期設定されていない変数か、数値以外

    の値の場合、Abs は 0 (ゼロ) を返します。

    備考数字の絶対値は、符号がなく、その数値の大きさを表します。例えば、Abs(-1) と Abs(1) はいずれ

    も 1 を返します。Abs では、number の符号と、先頭および末尾のゼロが削除されます。

    例以下の例は、Abs 関数を使用して数字の絶対値を計算します。

    Println Abs(0050.300) 'Returns 50.3Println Abs(-50.3) 'Returns 50.3Println Abs(+50.3) 'Returns 50.3Println Abs(0) 'Returns 0Println Abs(-0) 'Returns 0

    関連項目

    • Sgn 関数

    Asc 関数

    文字列の最初の文字と対応する ANSI 文字コードを返します。

    Asc(string)

    引数

    引数stringは、任意の有効な文字列式です。数は文字列式として処理されます。文字列に文字が

    含まれていない場合 (空の文字列)、-1 が返されます。

    Caché Basic リファレンス                                                                                                             39

  • 備考Asc 関数は文字列を引数として取り、対応する ANSI コードを返します。Chr 関数は ANSI コードを

    引数として取り、対応する文字を返します。

    Caché ObjectScript では $ASCII 関数が同じ処理を行います。

    例以下の例では、Asc は各文字列の最初の文字の ANSI 文字コードを返します。

    Println Asc("A") ' Returns 65Println Asc("a") ' Returns 97Println Asc("Apple") ' Returns 65Println Asc(">") ' Returns 62Println Asc(Chr(959+1)) ' Returns 960Println Asc(12345) ' Returns 49Println Asc("") ' Returns -1

    関連項目

    • Basic : Chr 関数

    • ObjectScript : $ASCII 関数

    Atn 関数

    数字のアークタンジェントを返します。

    Atn(n