This Question and Answer Set includes the following topics:
  • サポート
  • プログラミング
  • 一般

  • 一般
    Question:
    Caché Basic は Windows プラットフォームでのみ作動するのですか?
    Answer:
    いいえ。Caché Basic は完全にプラットフォーム独立で、Caché が実行するすべてのプラットフォームで作動します。Caché Basic は、Caché ObjectScript と同じ方法で Caché カーネルに組み込まれており、Microsoft Scripting Host などのすべての外部スクリプト・エンジンには依存していません。
    Question:
    Caché Basic は Caché ObjectScript よりも遅い?
    Answer:
    いいえ。Caché Basic ソースは Caché ObjectScript と同じオブジェクト・コードにコンパイルされているので、Caché Basic の性能は Caché ObjectScript の性能とまったく同じです。
    Question:
    Caché Basic は、Basic のどの種類を基にしているのですか?
    Answer:
    Caché Basic の構文は、Microsoft VBScript を基にしています。しかし、Caché Basic はサーバ・サイドのスクリプト言語で、データベースに高度に統合されているので、Microsoft VBScript の実装と Caché Basic の実装には多くの相違点があります。例えば、Caché Basic には MsgBoxInputBox 機能はありませんが、グローバル、リストなどの Caché 特有のデータタイプと直接動作する能力など、多くの拡張機能があります。
    Question:
    Caché Basic を導入したということは、インターシステムズが Caché ObjectScript のサポートを中止する計画があるという意味ですか?
    Answer:
    いいえ。Caché Basic が目指しているのは、Caché ObjectScript に取って代わることではなく、Microsoft Visual Basic などの Basic 実装に既に精通している開発者が、より容易に Caché を利用できるようにすることです。Caché ObjectScript と Caché Basic は両方ともサポートされ、永久に共存します。
    Question:
    “学習が容易になる” という点以外に、目標としていることはありますか?
    Answer:
    はい。Caché Basic の導入により、Caché を使用している企業は、以下のような多くの利点を得ることができでしょう。
    プログラミング
    Question:
    “Caché Basic シェル” はありますか?
    Answer:
    いいえ。しかし、独自のものを自由に実装することはできます。Caché Basic シェルの例は、インターシステムズにお問い合わせください。
    Question:
    Caché Basic では、どのようにグローバルを扱うのですか?
    Answer:
    以下の構文を使用して、グローバルに直接参照することができます。
    Caché Basic 構文要素
    構文要素 説明
    ^Global(index)="Value" Println ^Global(index) グローバルへの直接アクセス
    Exists(^a(1)) 値が定義されている場合
    Traverse(^a("")) 次の、または前の添え字に移動
    EraseValueEraseArrayMergeLockUnlockIncrement() その他の関数
    Question:
    ListPiece などの Caché 特有の構造は、どのように扱うのですか?
    Answer:
    Caché Basic には、ListPiece のサポートに対する、多くの拡張機能があります。以下はその例です。
    l = ListBuild("blue","red")
    Println List(l,1)
    
    p = "blue^red"
    noOfItems = Len(p,"^") 
    Println Piece(p,"^",1)
    
    Question:
    Caché Basic には、$Order 関数と類似した関数はありますか?
    Answer:
    Traverse() 関数が、Caché ObjectScript の $Order と同じ機能を提供します。
    i = Traverse(^MyData(""))
    While (i <> "")
        Println ^MyData(i)
        i = Traverse(^MyData(i))
    Wend
    
    Question:
    Caché Basic では、どのようにオブジェクトを扱うのですか?
    Answer:
    Caché Basic とオブジェクトのクイック・リファレンス
    Caché Basic 構文 オブジェクト参照
    "Basic.Human".ClassMethod() クラス・メソッドの呼び出し
    obj.Report() インスタンス・メソッド/プロパティ
    Me.Name="Anton" 現在のオブジェクト・プロパティ/メソッド
    obj=New Basic.Human() 新規オブジェクトの生成
    obj=OpenId Basic.Human(1) オブジェクト・インスタンスのオープン
    Question:
    Caché Basic での、%this.Method()..Method() に類似した関数は何でしょうか?
    Answer:
    Me.Method()
    Question:
    Caché Basic では、どのように SQL を扱うのですか?
    Answer:
    以下のように、ダイナミック・クエリ・オブジェクトを使用します。
    result = New %ResultSet()
    result.Prepare("SELECT Name,Age FROM Basic.Human WHERE Age<?")
    result.Execute(Arg1)
    
    While (result.Next())
        Println result.Data("Name") & ", " & result.Data("Age")
    Wend
    
    Question:
    Caché Basic では、どのようにファイルを扱うのですか?
    Answer:
    以下のように、%File オブジェクトを使用します。
        file = New %File("c:\test.txt")
        file.Open("WSN")    
        file.WriteLine("This is a test")    
        file.Close()
    
    Question:
    Caché Basic では、どのようにエラーをトラップしますか?
    Answer:
    以下のように、On Error Goto 文を使用します。
    Function ErrorTest(Arg1)
      On Error Goto errorhandler
      return 1/Arg1
    
    errorhandler:
      PrintLn "Error ", Err.Number, " ", Err.Description, " ", Err.Source
      Err.Clear
      return 0
    
    End Function
    
    Question:
    Caché Basic では、なぜ <UNDEFINED> エラーが発生しないのでしょうか?
    Answer:
    Basic では、各変数は既定で空文字列です。 したがって未定義の変数、または関数を参照すると、<UNDEFINED> エラーの代わりに “” が返されます。
    未定義の変数、または関数を不注意で参照することを防ぐため、Option Explicit 文を使用します。
    Question:
    Caché Basic から Caché ObjectScript プログラムを呼び出したり、またその逆を行うことはできますか?
    Answer:
    はい。記述されている言語に関わらず、メソッドや関数/プロシージャを呼び出すことができます。
    Caché ObjectScript では、以下の通りです。
     do Procedure^BasicRoutine()
     do ##class(MyClass).BasicClassMethod()
    
    Caché Basic では、以下の通りです。
    Procedure@ObjectScriptRoutine()
    "MyClass".ObjectScriptMethod()
    
    Question:
    Caché Basic で SQL トリガを作成することはできますか?
    Answer:
    いいえ。Caché 5 ではできません。しかしこの機能は、将来のリリースで提供できるように計画されています。
    Question:
    Caché Basic から、$ZU 関数を呼び出すことはできますか?
    Answer:
    直接、$ZU 関数を呼び出すことはできません。Caché ObjectScript で記述された複数のクラス・メソッドでラッパ・クラスを生成し、次に Caché Basic で、これらのクラス・メソッドを呼び出します。
    Question:
    なぜ、プロシージャの範囲外でローカルを変数を見ることができないのでしょうか。
    Answer:
    これは適切な動作です。Basic 言語が、この機能を定義しています。すべての変数の範囲は、それが定義されたプロシージャ、または関数に制限されています。%myvar など、% で開始する変数名は、例外です。
    Question:
    $H 形式から、または $H 形式に日付値と時刻値を変換するには、どのようにすればいいのでしょうか?
    Answer:
    利用できる変換関数は、DateConvert()TimeConvert()、および DateTimeConvert() です。以下はその例です。
    myDate = "07/15/2002"
    println DateConvert(myDate, vbToInternal)   ' returns $H format
    myHDate = 59000
    println DateConvert(myHDate, vbToExternal)
    
    Question:
    Caché Basic で間接演算を使用することはできますか?
    Answer:
    できません。
    サポート
    Question:
    Caché Basic でバグを発見しました。どうすればよいでしょうか?
    Answer:
    バグの詳細を、インターシステムズのサポート窓口 までご連絡ください。
    Question:
    Caché Basic に組み込んでほしい機能があります。インターシステムズは、そのような要求に応えていただけるのでしょうか?
    Answer:
    Caché Basic は準備が整っていますが、機能の拡張に関しては改善の余地があります。あなたのアイデアを インターシステムズのサポート窓口 までお送りください。送っていただいたアイデアが価値あるものなら、インターシステムズはその機能を将来のバージョン組み込むように検討します。
    Question:
    このドキュメントに対して意見と提案があります。どうすればよいでしょうか?
    Answer:
    ご意見、ご要望は、インターシステムズのサポート窓口 までお送りください。