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