Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Caché Basic に関するよくある質問

This question and answer set includes the following topics:

一般

Question:

Caché Basic は Windows プラットフォームでのみ作動するのですか?

Answer:

いいえ。Caché Basic は完全にプラットフォーム独立で、Caché が実行するすべてのプラットフォームで作動します。Caché Basic は、ObjectScript と同じ方法で Caché カーネルに組み込まれており、Microsoft Scripting Host などのすべての外部スクリプト・エンジンには依存していません。

Question:

Caché Basic は ObjectScript よりも遅いのでしょうか?

Answer:

いいえ。Caché Basic ソースは ObjectScript と同じオブジェクト・コードにコンパイルされているので、Caché Basic の性能は ObjectScript の性能とまったく同じです。

Question:

Caché Basic は、Basic のどの種類を基にしているのですか?

Answer:

Caché Basic の構文は、Microsoft VBScript を基にしています。しかし、Caché Basic はサーバ・サイドのスクリプト言語で、データベースに高度に統合されているので、Microsoft VBScript の実装と Caché Basic の実装には多くの相違点があります。例えば、Caché Basic には MsgBoxInputBox 機能はありませんが、グローバル、リストなどの Caché 特有のデータ・タイプと直接動作する能力など、多くの拡張機能があります。

Question:

Caché Basic を導入したということは、インターシステムズが ObjectScript のサポートを中止する計画があるという意味ですか?

Answer:

いいえ。Caché Basic が目指しているのは、ObjectScript に取って代わることではなく、Microsoft Visual Basic などの Basic 実装に既に精通している開発者が、より容易に Caché を利用できるようにすることです。ObjectScript と Caché Basic は両方ともサポートされ、永久に共存します。

Question:

"学習が容易になる" という点以外に、目標としていることはありますか?

Answer:

はい。Caché Basic の導入により、Caché を使用している企業は、以下のような多くの利点を得ることができるでしょう。

  • 新規開発者の雇用や教育の簡素化

  • Caché で開発されたアプリケーションの販売促進。エンド・ユーザは、皆様のアプリケーションを使用し、拡張するために新しい言語を学習する必要はありません。

  • Caché での VB や ASP アプリケーションのビジネス・ロジックの再集結。VB クライアント・サイド、または中間層から、高性能と高度なスケーラビリティを実現しながら、既存のアプリケーションのビジネス・ロジックを Caché に移行することができます。CSP と Caché Basic の組み合わせにより、ASP (Active Server Pages) アプリケーションの移行が便利になります。

  • 興味深いリソースへのアクセス。VB のソース・コード・アーカイブを参照することで、Caché 開発者は、価値のある興味深い多くのコード・サンプル (ゲームなど) を見ることができます。http://www.planet-source-code.comOpens in a new tabhttp://www.vbcode.comOpens in a new tab などから始めてみるとよいでしょう。

プログラミング

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() 関数が、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 から ObjectScript プログラムを呼び出したり、またその逆を行うことはできますか?

Answer:

はい。記述されている言語にかかわらず、メソッドや関数/プロシージャを呼び出すことができます。

ObjectScript では以下のようになります。

 do Procedure^BasicRoutine()
 do ##class(MyClass).BasicClassMethod()

Caché Basic では、以下のとおりです。

Procedure@ObjectScriptRoutine()
"MyClass".ObjectScriptMethod()
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:

バグの詳細を、インターシステムズのサポート窓口Opens in a new tabまでご連絡ください。

Question:

Caché Basic に組み込んでほしい機能があります。インターシステムズは、そのような要求に応えていただけるのでしょうか?

Answer:

あなたのアイデアを、インターシステムズのサポート窓口Opens in a new tabまでお送りください。

FeedbackOpens in a new tab