This Question and Answer Set includes the following topics:
Caché Basic は Windows プラットフォームでのみ作動するのですか?
いいえ。Caché Basic は完全にプラットフォーム独立で、Caché が実行するすべてのプラットフォームで作動します。Caché Basic は、Caché ObjectScript と同じ方法で Caché カーネルに組み込まれており、
Microsoft Scripting Host などのすべての外部スクリプト・エンジンには依存していません。
Caché Basic は Caché ObjectScript よりも遅い?
いいえ。Caché Basic ソースは Caché ObjectScript と同じオブジェクト・コードにコンパイルされているので、Caché Basic の性能は Caché ObjectScript の性能とまったく同じです。
Caché Basic は、Basic のどの種類を基にしているのですか?
Caché Basic の構文は、Microsoft VBScript を基にしています。しかし、Caché Basic はサーバ・サイドのスクリプト言語で、データベースに高度に統合されているので、Microsoft VBScript の実装と Caché Basic の実装には多くの相違点があります。例えば、Caché Basic には
MsgBox や
InputBox 機能はありませんが、グローバル、リストなどの Caché 特有のデータタイプと直接動作する能力など、多くの拡張機能があります。
Caché Basic を導入したということは、インターシステムズが Caché ObjectScript のサポートを中止する計画があるという意味ですか?
いいえ。Caché Basic が目指しているのは、Caché ObjectScript に取って代わることではなく、Microsoft Visual Basic などの Basic 実装に既に精通している開発者が、より容易に Caché を利用できるようにすることです。Caché ObjectScript と Caché Basic は両方ともサポートされ、永久に共存します。
学習が容易になる という点以外に、目標としていることはありますか?
はい。Caché Basic の導入により、Caché を使用している企業は、以下のような多くの利点を得ることができでしょう。
-
-
Caché で開発されたアプリケーションの販売促進。エンド・ユーザは、皆様のアプリケーションを使用し、拡張するために新しい言語を学習する必要はありません。
-
Caché での VB や ASP アプリケーションのビジネス・ロジックの再集結。VB クライアント・サイド、または中間層から、高性能と高度なスケーラビリティを実現しながら、既存のアプリケーションのビジネス・ロジックを Caché に移行することができます。CSP と Caché Basic の組み合わせにより、ASP (Active Server Pages) アプリケーションの移行が便利になります。
-
いいえ。しかし、独自のものを自由に実装することはできます。Caché Basic シェルの例は、インターシステムズにお問い合わせください。
Caché Basic では、どのようにグローバルを扱うのですか?
以下の構文を使用して、グローバルに直接参照することができます。
Caché Basic 構文要素
l = ListBuild("blue","red")
Println List(l,1)
p = "blue^red"
noOfItems = Len(p,"^")
Println Piece(p,"^",1)
Caché Basic には、
$Order 関数と類似した関数はありますか?
i = Traverse(^MyData(""))
While (i <> "")
Println ^MyData(i)
i = Traverse(^MyData(i))
Wend
Caché Basic では、どのようにオブジェクトを扱うのですか?
Caché Basic とオブジェクトのクイック・リファレンス
Caché Basic 構文 |
オブジェクト参照 |
"Basic.Human".ClassMethod() |
クラス・メソッドの呼び出し |
obj.Report() |
インスタンス・メソッド/プロパティ |
Me.Name="Anton" |
現在のオブジェクト・プロパティ/メソッド |
obj=New Basic.Human() |
新規オブジェクトの生成 |
obj=OpenId Basic.Human(1) |
オブジェクト・インスタンスのオープン |
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 では、どのようにエラーをトラップしますか?
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> エラーの代わりに
が返されます。
Caché Basic から Caché ObjectScript プログラムを呼び出したり、またその逆を行うことはできますか?
はい。記述されている言語に関わらず、メソッドや関数/プロシージャを呼び出すことができます。
Caché ObjectScript では、以下の通りです。
do Procedure^BasicRoutine()
do ##class(MyClass).BasicClassMethod()
Procedure@ObjectScriptRoutine()
"MyClass".ObjectScriptMethod()
Caché Basic で SQL トリガを作成することはできますか?
いいえ。Caché 5 ではできません。しかしこの機能は、将来のリリースで提供できるように計画されています。
Caché Basic から、
$ZU 関数を呼び出すことはできますか?
直接、
$ZU 関数を呼び出すことはできません。Caché ObjectScript で記述された複数のクラス・メソッドでラッパ・クラスを生成し、次に Caché Basic で、これらのクラス・メソッドを呼び出します。
なぜ、プロシージャの範囲外でローカルを変数を見ることができないのでしょうか。
これは適切な動作です。Basic 言語が、この機能を定義しています。すべての変数の範囲は、それが定義されたプロシージャ、または関数に制限されています。
%myvar など、
% で開始する変数名は、例外です。
$H 形式から、または $H 形式に日付値と時刻値を変換するには、どのようにすればいいのでしょうか?
myDate = "07/15/2002"
println DateConvert(myDate, vbToInternal) ' returns $H format
myHDate = 59000
println DateConvert(myHDate, vbToExternal)
Caché Basic で間接演算を使用することはできますか?
Caché Basic でバグを発見しました。どうすればよいでしょうか?
Caché Basic に組み込んでほしい機能があります。インターシステムズは、そのような要求に応えていただけるのでしょうか?
Caché Basic は準備が整っていますが、機能の拡張に関しては改善の余地があります。あなたのアイデアを
インターシステムズのサポート窓口 までお送りください。送っていただいたアイデアが価値あるものなら、インターシステムズはその機能を将来のバージョン組み込むように検討します。
このドキュメントに対して意見と提案があります。どうすればよいでしょうか?