MSM から Caché への変換ガイド

MSM から Caché への変
換ガイド
Version 5.1
2006-03-14
InterSystems Corporation 1 Memorial Drive Cambridge MA 02142 www.intersystems.com
MSM から Caché への変換ガイド
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 ワールドワイド カスタマサポート
Tel:
+1 617 621-0700
Fax:
+1 617 374-9391
Email:
[email protected]
目次
はじめに .................................................................................................................... 1
概要 .................................................................................................................... 1
1 始めに .................................................................................................................... 3
1.1 ハードウェア要件の定義 .................................................................................... 3
1.2 ネットワーキング要件の定義 ............................................................................... 3
1.2.1 MSM と Caché の混在するネットワーク ......................................................... 4
1.2.2 同じマシンでの Caché と MSM の実行 ........................................................ 5
1.2.3 ネットワーク上での一意の $JOB 値の保証 ................................................... 5
1.3 Caché のインストール ........................................................................................ 5
1.3.1 Caché ライセンス・キーのインストール .......................................................... 6
2 Caché データベースとネームスペースの生成 ................................................................. 7
2.1 物理データベース・ボリュームの生成 ................................................................... 7
2.2 ネームスペース構成を生成する .......................................................................... 8
2.2.1 CACHETEMP データベース ...................................................................... 9
3 MSM グローバルの変換 ........................................................................................... 11
3.1 選択されたグローバルの変換 ........................................................................... 11
3.2 MSM 文字列照合の保持 .................................................................................. 11
3.3 Caché での NULL 添え字サポートの有効化 ........................................................ 12
3.4 データベースによるグローバルの変換 ................................................................ 13
4 MSM アプリケーションの変換 ..................................................................................... 15
4.1 MSM ルーチンの移植 ..................................................................................... 16
4.2 MSM 言語互換モード ...................................................................................... 16
4.3 MSM 実装固有の特殊関数と機能の処理 ............................................................ 18
4.3.1 MSM-XCALL 関数 ................................................................................ 19
4.3.2 %OS および $ZOS 経由の OS 関数 ........................................................... 20
4.3.3 ZWINTERM 呼び出しの変換 ................................................................... 20
4.3.4 MSM プリプロセッサ指示語 ...................................................................... 20
4.3.5 グローバルおよびルーチンに対する拡張参照 ............................................. 21
4.3.6 Caché での EOF (ファイルの終わり) 状況の処理 ......................................... 22
5 Caché へのアプリケーションの接続 ............................................................................. 23
5.1 接続ツール .................................................................................................... 23
5.1.1 MSM アクティベイト ................................................................................. 23
5.1.2 MSM-SQL、KB-SQL、および M/SQL ........................................................ 24
5.1.3 MSM-PDQWeb ...................................................................................... 25
5.1.4 MSM-Workstation .................................................................................. 25
MSM から Caché への変換ガイド iii
5.2 ターミナル・サーバ .......................................................................................... 26
5.2.1 TELNET ターミナル・サーバおよび LAT ターミナル・サーバ ......................... 26
5.2.2 シリアル・ポート拡張ボード ....................................................................... 27
5.2.3 MSM ターミナル・デバイスの特性の Cache OPEN/USE プロトコルへの変換 ..... 28
6 Caché システム管理 ................................................................................................. 31
6.1 Caché の構成 ................................................................................................. 31
6.2 デバイスの構成 .............................................................................................. 32
6.3 Caché バックアップの自動化 ............................................................................. 32
6.4 Caché ジャーナリング ...................................................................................... 33
6.4.1 シャドウ・システム・ジャーナリング .............................................................. 34
6.4.2 MSM から Caché へのシャドウイングと切り替え ............................................ 35
A: MSM と Caché ユーティリティ・カタログ ....................................................................... 37
B: M 言語の違い ....................................................................................................... 51
B.1 コマンド ........................................................................................................ 51
B.2 演算子 ......................................................................................................... 55
B.3 構造化システム変数 ....................................................................................... 55
B.4 関数 ............................................................................................................. 55
B.5 プリプロセッサ指示語 ...................................................................................... 58
B.6 特殊変数 ...................................................................................................... 60
C: システム・アーキテクチャの比較 ............................................................................... 63
iv MSM から Caché への変換ガイド
はじめに
あるデータベースから別のデータベースに移行する場合はいつでも、考慮すべき多数の事項があ
ります。決定すべき事項は、どれだけのディスク容量を必要とするかといった簡単なものから、アプリ
ケーションが動作するようにするには、どの実装固有の言語機能をコード内で変更する必要がある
かといった複雑なものまでさまざまです。
このドキュメントでは、これらの問題すべてを取り上げます。ハードウェア要件から、データの移行、
システム管理まで、さまざまな項目について解説します。
この変換ガイドは、さまざまな Caché コンポーネントの使用方法を実際に解説するものではなく、従
うべき指針を提供することを目的としているため、Caché ドキュメントにできるだけ精通しておくことを
お勧めします。次のリファレンスは、Caché に習熟する上で役立つ包括的なソースとなります。Caché
(http://www.intersystems.com/cache/index.html) および MSM (http://mtechnology.intersys.com/mproducts/index.html) の最新情報については、InterSystems の Web サイトを参照してく
ださい。
さらに詳細な情報については、必要に応じて InterSystems のアカウント・マネージャおよびセール
ス・エンジニアにお問い合わせいただくこともできます。
概要
MSM から Caché への移行には、いくつかの手順が含まれます。このプロジェクトでの成功は、主に
移行の各側面を注意深く計画することにかかっています。以下の点に注意してください。
1. 適切なハードウェアの選択と Caché のインストール
•
アプリケーションとユーザの負荷に適した層構造を定義する
•
最善のパフォーマンスを得るために、最適なディスク構成を選択する
2. 個別のサーバまたはネットワーク化されたサーバ上でのデータベースの分散
•
負荷分散の方法として、データ分散を設計する
3. MSM ボリューム・グループの変換
•
UCI および/またはボリューム・グループでグローバルを変換する、または、
•
グローバルを個別に変換する
4. アプリケーションの変換
•
ルーチンを Caché に移動する
•
実装固有の M 言語機能と構文を処理する
•
Caché にアプリケーションを接続する
MSM から Caché への変換ガイド 1
はじめに
•
Caché からオペレーティング・システムへ呼び出しする、またはその逆を実行する
5. ソリッドな Caché システム・オペレーションの作成
•
正しいバックアップ方法を選択する
•
システム・セキュリティの実装
•
ユーザを管理する
6. スタッフのトレーニング
•
オペレーティング・システムと Caché の両方のシステム・オペレーションを学習する
•
InterSystems のトレーニング・プログラムに参加する
•
組織内でスタッフを教育する
注意:
このドキュメントのすべての情報は、それが発行された日付の時点で正確であると
みなされています。Caché 5 への移行に使用される方法のほとんどは、Caché の将
来のバージョンにも適用可能ですが、いくつかの違いが生じる場合があります。この
ドキュメントで提案されている方法がどのように変更される必要があるかを知るため
に、今後の Caché ドキュメントを注意深く参照する必要があります。
コードが提供されている場合、例としての目的のみであり、サポートや保証の対象と
はなりません。ここで参照されているコードを自由に使用することができますが、そ
の使用に伴うすべての責任とリスクをユーザ自身が負うことになります。このドキュメ
ントに関するご意見、ご提案をお待ちしております。
2 MSM から Caché への変換ガイド
1
始めに
1.1 ハードウェア要件の定義
このプロジェクトを開始する前に、ハードウェアが予想されるユーザの負荷の要件を満たすことを確
認する必要があります。ハードウェア関連の決定事項は、ほとんどの場合プロセス・カウントの合計
に基づいています。最初に、オペレーティング・システムのドキュメントを参照して、このプロセス・カ
ウント合計に基づく推奨されるハードウェア構成を確認します。特に、CPU、メモリ、スワップ領域の
要件に注意してください。これらのオペレーティング・システムの要件に加えて、Caché では特に、グ
ローバル、ルーチン、ネットワーク・バッファなどの様々なシステム構造を格納するための共有メモリ
が必要になります。
ご使用のプラットフォームのバージョンの Caché インストール・ガイドを参照して、Caché でのメモリ
の使用方法および適切なメモリ構成の計算方法を理解するようにしてください。
移行プロセスの一環として、ハードウェア・プラットフォームを変更する場合があります。Caché では
SMP と複数ディスク構成を最適に使用できるため、Caché の移行は、より強力なハードウェア・プラッ
トフォームに移行する良い機会となります。このような場合は、アプリケーションが新しいハードウェア
構成でどのような位置を占めるか、注意深く考慮する必要があります。
現在サポートされる Caché プラットフォームの最新のリストについては、次のインターシステムズの
Web サイトで、現在および将来の Caché 製品のページを参照してください。
http://www.intersystems.co.jp/cache/technology/2current-prodlist.html
1.2 ネットワーキング要件の定義
Caché 5 ネットワーキングは、以下のメッセージ・フォーマット・プロトコルをサポートします。
MSM から Caché への変換ガイド 3
始めに
•
エンタープライズ・キャッシュ・プロトコル (ECP)
•
分散キャッシュ・プロトコル (DCP)
•
分散データ処理 (DDP)
•
DTM-NetBIOS (DTM クライアント/Caché サーバ構成のみ)
以下のいずれかの通信プロトコル上で使用します。
•
Raw Ethernet
•
TCP/IP (UDP と TCP の両方)
•
NetBIOS
•
NetBEUI
ネットワーク構成をセットアップするには、構成マネージャ・ユーティリティを使用します。構成マネー
ジャの [詳細] タブの [ネットワーク] には、ネットワークの調整可能な起動パラメータがあり、リモート・
ジョブやネットワーク・ハードニングを有効にできます。
Caché でサポートされるネットワーク・プロトコルに関する詳細は、"Caché 分散データ管理ガイド" を
参照してください。DDP に関する役立つ情報が、"Caché 4.x と Windows 2000 間での DDP 設定
方法" に収められています。Caché システム管理に関する詳細は、"Caché システム管理ガイド" を
参照してください。
1.2.1 MSM と Caché の混在するネットワーク
MSM と Caché のピアツーピア・ネットワーキングは、Raw Ethernet 上で DDP を使用することで実行
できます。この方法では、MSM は Caché に対してクライアントとしてもサーバとしても動作します。変
換プロセスのある段階で、システムに接続する Caché レベルのネットワーキングを持つ、MSM を実
行するマシンと Caché を実行するマシンがあれば便利なことがあります。
混在するネットワークを計画する場合は、次の制限に注意してください。
•
MSM は DCP または ECP ネットワーキングをサポートしません。
•
Caché は、Open MUMPS Interconnect (OMI) プロトコルをサポートしません。
•
Caché と MSM 間のネットワーク上でルーチンを共有できません。
•
Caché は RVG (Remote Volume Group) をサポートしません。Caché 間の接続には、ECP の使
用をお勧めします。ECP は、MSM の RVG のより高性能なバージョンであるといえます。
•
MSM と Caché 間の DDP ネットワーク上で文字列照合グローバルを共有することはできません
(詳細は、 “MSM 文字列照合の保持” のセクションを参照してください)。
•
DDP 上で 8 KB データベースにアクセスすると、DDP は 255 文字以上を含む添え字のある
ノードを含むグローバルへのアクセスをサポートしないため、問題が発生する場合があります。
4 MSM から Caché への変換ガイド
Caché のインストール
1.2.2 同じマシンでの Caché と MSM の実行
Caché と MSM を同じマシン上にインストールして実行できます。同じマシン上で、Caché と MSM
間で DDP ネットワーキングを使用する場合、2 つの別々のイーサネット・カードが必要になります
("Caché システム管理ガイド" の “複数の Caché インスタンスの構成” を参照してください)。
Caché と MSM の両方で、Windows NT 上で接続サービスを同時に実行する場合は、以下を実行
します。
•
Telnet の場合は、システムのどちらかの Telnet ポート番号を変更します。既定では、Caché と
MSM はどちらもポート 23 を使用します。
•
LAT サービスの場合は、Caché と MSM の両方が一意のサービス名を使用していることを確認
します。
•
シリアル・ポート・サービスの場合は、MSM と Caché が一意の COM ポート範囲を使用してい
ることを確認します。
Telnet、LAT、およびシリアル・ポート・サービスに関する詳細は、 “ターミナル・サーバ” を参照して
ください。
1.2.3 ネットワーク上での一意の $JOB 値の保証
MSM ネットワーキングでは、ネットワーク上で一意の $JOB 値を確実に持つよう設定できますが、
Caché ではできません。Caché は各 Caché プロセスのオペレーティング・システムからプロセス ID
(PID) を取得するため、異なるマシンのクライアント・プロセスが同じ $JOB 値を持つようになることが
考えられます。アプリケーションで複数のクライアントから同じサーバに対して $JOB でインデックス
されたグローバルを設定する場合、次のオプションを実行して問題を解決できます。
•
プロセスが実行されている Caché ノードを返す $ZU(110) を、$JOB と結合し、一意の識別子を
保証します。これは MSM の $SYS と類似した機能です。
•
$JOB でインデックスされたグローバルを、各クライアントにローカルに格納します (これは通常
どのシステムでも使用できる良い方法です)。
•
添え字レベルのグローバル・マッピングを使用して、グローバルを異なった方法で分散します。
1.3 Caché のインストール
Caché のインストールの手順は、ホスト・オペレーティング・システムにより異なります。以下の概略で
はいくつかの重要な情報を提供していますが、詳細はご使用のプラットフォームのバージョンの
"Caché インストール・ガイド" を参照してください。
MSM から Caché への変換ガイド 5
始めに
Caché をインストールする前に、以下の要件を満たしていることを確認します。
•
マシンのシステム特権 (使用しているオペレーティング・システムによって、Administrator、root、
または system のいずれか)
•
コア製品のインストール用に、約 200 MB の空き容量
•
使用する OS 用に構成された TCP/IP (Caché では、TCP/IP プロトコルが Caché GUI ユーティ
リティをサーバに接続するのに使用されるため、スタンドアロン構成の場合でもマシンに TCP/IP
プロトコルがインストールされている必要があります)
•
Caché の製品機能を有効にするためインターシステムズから提供されるライセンス・キー (推奨)
1.3.1 Caché ライセンス・キーのインストール
製品の初期インストール時に Caché ライセンスを設定していない場合は、構成マネージャ (PC クラ
イアントにインストールされています) の Caché ライセンス・ウィザードを使用するか、vi、emacs、edit
などのホスト・ベースのエディタを使用して設定できます。ライセンス情報は、Caché マネージャの
ディレクトリにある cache.key という ASCII ファイルに格納されています。Caché ライセンス・キーは
大文字と小文字を区別します。ライセンスが適切に入力されないと、Caché はシングル・ユーザ・モー
ドで起動します。すべてのフィールドに入力する必要があります。
Windows プラットフォームでは、インストール時にライセンス・キーが検出されていない場合は、イン
ストール・プログラムによりライセンス・キーの入力を求められます。UNIX または VMS では、インス
トール・プログラムでライセンスを求めるプロンプトが表示されない場合は、ホストベースのエディタ
か、Caché を実行する PC クライアント上ではライセンス・ウィザードを使用して、ライセンスを手動で
入力する必要があります。どちらの場合も、情報はライセンスの証書に示される通りに、正確に入力
する必要があります。
マルチサーバ・システム用のライセンスを購入している場合、1 つ以上のライセンス・マネージャを設
定し、キーで認証される Caché ライセンス・ユニットを割り当てる必要があります。
MSM では、ライセンスが同時ユーザのブロックで購入されますが、Caché ライセンスは通常、各同
時ユーザに対して購入されます。例えば、17 ユーザの Caché ライセンスを購入できますが、これは
MSM では不可能です。Caché では多数の異なるライセンス・タイプが利用可能ですが、詳細はイン
ターシステムズの担当のアカウント・マネージャにお問い合わせください。
ライセンスのインストールと設定方法に関する詳細は、ご使用のプラットフォームのバージョンの
"Caché インストール・ガイド" を参照してください。
6 MSM から Caché への変換ガイド
2
Caché データベースとネームスペース
の生成
Caché データベースを生成してそのデータにアクセスするには、構成マネージャ・ウィザードを使用
します。最初に物理データベース・ボリュームを生成して、次にそのデータベースに新規または既存
のネームスペースを割り当てます。
2.1 物理データベース・ボリュームの生成
Caché データベースは、2 KB ブロック・サイズまたは 8 KB ブロック・サイズのどちらかの形式になり
ます。(パフォーマンス上および ECP ネットワーキング上の理由により) MSM データベースを 8 KB
のデータベース形式に変換することを強くお勧めします。
Caché の物理データベースは、CACHE.DAT という名前のプライマリ・データベース・ボリュームと、
CACHE.EXT という名前の最大 7 つのセカンダリ・データベース・ボリュームで構成されます (ただ
し、8 KB データベース形式の出現と、データベース・サイズ制限の緩和により、この .EXT 機能は
めったに使用されなくなりました)。これらのファイルは論理的に互いにリンクされ、各ファイルのサイ
ズは合計 32 テラバイトまで可能です (ホスト・オペレーティング・システムでこの大きさのファイルが
サポートされている場合)。任意の 1 台のシステムは、15,998 個のデータベース・ボリュームを含む
ことができます (これらのうち少なくとも 3 つはシステム・データベースである必要があります)。1 つ
以上の論理的にリンクされたデータベース・ボリュームは、集合的にデータベースと呼ばれ、プライ
マリ・ボリュームのディレクトリ名によって参照されます。
データベースを生成するにあたり、次の重要な点に注意してください。
•
任意のディレクトリ内で、どちらの種類の (.DAT または .EXT) データベース・ボリュームも、1 つ
しか存在できません。
MSM から Caché への変換ガイド 7
Caché データベースとネームスペースの生成
•
複数のボリューム・セットを生成する場合は、プライマリ・ボリュームを最初に生成し、次にセカン
ダリ・ボリュームを一度に 1 つずつ追加します。
•
できるだけ大きなデータベース・ボリュームを作成すると、オペレーティング・システム・レベルで
断片化の問題に対処するのに役立ちます。
•
別のシステムに物理的に存在するデータベースを参照できます。これを実行するには、まず、2
つのシステム間で構成された実行中の Caché ネットワークが必要です。
•
現在のところ、データベース名は物理位置にマップされていますが、内部的にすべて大文字に
変換され、句読点の使用は許可されません。
データベースの生成、編集、削除に関する詳細は、"Caché システム管理ガイド" を参照してくださ
い。
2.2 ネームスペース構成を生成する
通常は Caché のデータベース内ではなく、仮想環境であるネームスペース内で作業をすることにな
ります。
Caché ネームスペースと、MSM UCI の概念の違いを理解しておくことは重要です。単純に言うと、
ネームスペースは MSM UCI とその関連する変換テーブルにほぼ相当します。この変換テーブル
は、% グローバルと % ルーチンのロケーションを暗黙的に含みます。既定では、すべての % グロー
バルと % ルーチンは CACHESYS、CACHELIB、または CACHETEMP データベース内に存在しま
すが、ネームスペース・マッピングが最初に正しく設定されれば、選択するどのデータベース内にで
も含めることができます。
注意:
Caché のアップグレード中、CACHESYS、CACHELIB、および CACHETEMP デー
タベースは、グローバルおよび/またはルーチンを削除したものになるか、または新
しいバージョンで完全に置き換えられます。
そのため、単純に任意のユーザの記述した % ルーチンを Caché マネージャにロー
ドすることは、危険であるとみなされます。Caché マネージャ・データベースを使用
することの影響を完全に理解しているのでない限り、ネームスペース・マッピングを
定義して % ルーチンとグローバルを別の場所に格納するか、またはアプリケーショ
ン固有のグローバルおよびルーチンに対して % を使用しない名前を使用するよう
にアプリケーションを変更する方が、はるかに安全です。
Caché では、MSM とは異なり、% グローバルとルーチンの概念は名前付け規約のみであり、ハード
‘マッピング’ の含みはありません。MSM アプリケーションから拡張グローバル参照を処理する方法
のヒントについては、 “MSM グローバルの変換” の章を参照してください。
8 MSM から Caché への変換ガイド
ネームスペース構成を生成する
データベースが定義されたら、それらをネームスペース構成に追加します。ネームスペース・マッピ
ングにより、1 つの論理的な位置からすべてのデータベースのデータにアクセスできるようになりま
す。Caché ネームスペースは、構成マネージャのネームスペース・ウィザードによって作成されます。
ネームスペースについて次の点を理解しておくと役に立ちます。
•
ネームスペースを使用すると、システムの 1 つのデータベースに対する以前の 16 ギガバイトの
物理制限から開放されます。
•
グローバルを異なるデータベースにマッピングすることは、マシン上の付加を分散する上で効
果的な方法です。最適な入出力パフォーマンスを得るために、常に異なるデータベースのレイ
アウトを考慮する必要があります。
•
^%CD ユーティリティを使用すると、ネームスペースをリストして変更できます (プロンプトで疑問
符を入力するとすべての利用可能なネームスペースがリストされます)。Caché ネームスペース
の移動に関する詳細は、 “ネームスペースの変更方法” を参照してください。
•
^%NSP または ^%GXLINFO を実行することで、アクティブなネームスペース・マッピングを表示で
きます。
•
データベースと同様、ネームスペースの名前は現在内部的にすべて大文字に変換されます。
2.2.1 CACHETEMP データベース
このデータベースは、より高度なパフォーマンスを実現し、一時的なグローバルのクリーンアップを
容易にするために設計された特殊な特性を持ちます。
CACHETEMP データベースは、再起動時にシステムにより自動的に削除されます。データベース
は主に一時的な作業ファイルに対して使用されるため、システムはそのデータベースに対して記述
される予定のデータベース・ブロックをできるだけ長くメモリに保持しようとします。データ・ブロックは、
バッファ・プール内でクリーンなバッファが長時間の停止状態になった場合にのみ、ディスクにフラッ
シュされます。この機能はシステムの負荷を軽減し、高度なパフォーマンスとスケーラビリティにつな
がります。
CACHETEMP とその利点を活用するには、関連するグローバルのグローバル・マッピングを構成し
(可能な場合はワイルドカードを使用して)、CACHETEMP データベースを指定するようにしてくださ
い。
MSM から Caché への変換ガイド 9
3
MSM グローバルの変換
Caché は、MSM データの変換にいくつかのメカニズムを提供します。
3.1 選択されたグローバルの変換
Caché では、データベース全体ではなく、個別のグローバルまたはグローバルのグループに対して
次のような変換方法を備えています。
•
MSM と Caché の間にネットワークを設定します (これについて役立つ情報が"Caché 4.x と
Windows 2000 間での DDP 設定方法" に収められています)。MERGE コマンドか ^%GCOPY
を使用して、MSM データベースから Caché データベースにグローバルを移動します。
•
%GS または %FGS を使用して、個別の MSM グローバルまたはグループの MSM グローバルを
MSM 形式で保存します。
-
%GS 形式のグローバル保存には、Caché エクスプローラまたは ^%GI を使用してデータをイ
ンポートします。グローバルに制御文字が含まれる場合は特に、ANSI ^%GS エントリ・ポイン
トを使用する方がより信頼性が高くなります。
-
%FGS 形式のグローバル保存には、^%GIFMSM を使用してデータをインポートします。
3.2 MSM 文字列照合の保持
既定では、Caché は Latin 1 サブセットの Unicode 照合を使用します。Latin 1 サブセットは、MSM
の既定の数値照合順序と同じ照合ルールに従います。Caché の Unicode 照合はこの形式と後方
互換性があるため、数値で照合された MSM グローバルを変換するために事前準備をする必要は
MSM から Caché への変換ガイド 11
MSM グローバルの変換
ありません。ただし、Caché からDDP 上の文字列照合グローバルを参照することはできないため、
文字列照合を使用した MSM グローバルを変換するには、Caché を事前に準備する必要がありま
す。
例えば、^XYZ という文字列照合グローバルを変換する必要があるとします。この変換を実行するに
は、以下のいくつかの方法があります。
1. ^%GCREATE ユーティリティを使用して ^XYZ グローバルを作成します。このオプションはすべ
ての MSM グローバルを文字列照合タイプで変換するのでない限り、推奨されません。
•
適切なネームスペースに変換します。
•
^%GCREATE を起動して、グローバル照合順を尋ねるプロンプトが表示された場合、タイプ
129 (文字列照合) を選択します。
•
“選択されたグローバルの変換” で前述した方法で変換します。
2. 文字照合を使用する変換を実行するプロセスの特性を変更します。
•
以下のコマンドを発行します。
Set x=$ZU(23,1,129)
•
“選択されたグローバルの変換” で前述した方法で変換します。
3.3 Caché での NULL 添え字サポートの有効化
既定では、Caché はグローバル・データ内で NULL 添え字の使用を許可しません。アプリケーショ
ンとデータを変更して、NULL 添え字が使用されないようにすることを強くお勧めします。
NULL 添え字を含む MSM グローバルを変更するには、次の 2 つの方法があります。
•
対話的に NULL 添え字サポートを有効にするには、次のようにします。
-
発行するプロセスのみの場合は、次のコマンドを実行します。
Set x=$ZU(68,1,1)
-
システム内のプロセスすべての場合は、次のコマンドを実行します。
Set x=$ZU(69,1,1)
•
“選択されたグローバルの変換” で前述した方法で変換します。
Caché を起動するごとにすべてのプロセスに対して NULL 添え字サポートを有効にするには、
次のようにします。
12 MSM から Caché への変換ガイド
データベースによるグローバルの変換
-
以下の 2 つの方法のどちらかを選択します。
•
構成マネージャの [言語の詳細] タブで、NULL 添え字を有効にします。
•
次のコード行を ^ZSTU または SYSTEM ^%ZSTART のどちらかに追加します。
Set x=$ZU(69,1,1)
-
Caché の再起動
-
“選択されたグローバルの変換” で前述した方法で変換します。
3.4 データベースによるグローバルの変換
特定のボリューム・グループまたは UCI 内のすべてのグローバルを一度に変換する場合は、個別
のグローバルまたはグローバルのグループを変換するのではなく、全体をまとめて変換することを推
奨します。UCI 全体またはボリューム・グループを一度に変換することで、プロセスがより高速になる
だけでなく、エラーが発生するリスクが大幅に削減されます。
1. 以下の互換性のない MSM グローバルが、すでに変換されていることを確認してください。
•
文字列照合を使用している MSM グローバルは、前述の “MSM 文字列照合の保持” で
説明した方法で変換する必要があります。
•
NULL 添え字を含む MSM グローバルは、前述の “Caché での NULL 添え字サポートの
有効化” で説明した方法で変換する必要があります。
2. MSM データベースをバックアップします。
3. MSM データベース上で ^VALIDATE を実行し、物理的な整合性を確実にします。
4. ブロック型転送モードで変換する場合は、^RECOVER を実行して、マップ・ブロックに割り当て
済みとマークされたままになっている未使用のブロックがないことを確認します (グローバルがグ
ローバル・ディレクトリ・ブロックから削除されていても、^RECOVER が実行されていない
と、%MSMCVT はこのデータを有効なグローバル・データであるとみなして、それを Cache デー
タに変換します)。
5. MSM データベース上で ^OLC を実行し、グローバルの効率を最大化します。これにより、変換
の全体的なパフォーマンスが向上します。
6. MSM システムまたはユーザ定義のスクラッチ・グローバルをすべて削除します。
7. MSM をシャットダウンするか、データベースをマウント解除して、変換されるデータベースがア
クティブでないようにします。
MSM から Caché への変換ガイド 13
MSM グローバルの変換
8. バイナリ・モード FTP、ネットワーク・コピー、またはテープのいずれかを使用して、MSM データ
ベースを Caché をホストするマシン上に移動します。このデータベースはどのディレクトリに入
れてもかまいません。
9. Caché システム上で構成可能な最大数のグローバル・バッファを構成して、その後 Caché を起
動します。
10. ローカルの宛先データベースとネームスペースが準備ができていることを確認します ( “ネーム
スペース構成を生成する” で説明した手順に従います)。
11. 新しいネームスペースから、^%MSMCVT ユーティリティを実行します。プロンプトで、MSM デー
タベースのパスとファイル名を入力します。変換を実行すると、データベースは、現在のネーム
スペースにある Caché データベースに変換されます。
12. 複数の MSM データベースから 1 つの Caché ネームスペースにデータをインポートする場合
は、各データベースに対して 1 回ずつ、同じネームスペースから繰り返しユーティリティを実行
します。
14 MSM から Caché への変換ガイド
4
MSM アプリケーションの変換
Caché の MSM 言語互換モードにより、より少ない変更で MSM アプリケーションを実行できるとして
も、MSM 固有言語機能をネイティブの Caché コードに変換することを強くお勧めします。変換は、
Caché ObjectScript などの、Caché 固有の機能を活用する上での最初のステップとなります。
ルーチンでの操作が、Caché ではわずかに異なります。
MSM のアプローチ :
•
プログラマがルーチン・ソース・コードで作業し、それを (暗黙的にまたは明示的に) ZSave しま
す。コードは、それがどのように変更されたかに関わらず、暗黙的にオブジェクト・コードにコン
パイルされます。
•
ソースとオブジェクト・コードの両方がルーチン・ブロック上のディスクに共に格納されます。
•
実行時に、オブジェクト・コードはバッファ・プールの汎用バッファにロードされます。
Caché のアプローチ:
•
プログラマは INT (中間) コードか MAC (マクロ) コード、または INC (インクルード) コードで作
業します。これらは、ルーチン名の拡張子になります (A123.mac など)。
Caché で MSM ソースに相当するものは、INT コードです。マクロ・コードは、埋め込み SQL を
直接コードに挿入する時など、マクロ文を埋め込む場合に便利です。
•
プログラマは Caché スタジオを使用してルーチンを編集しますが、ルーチンでは OBJ オブジェ
クト・コードファイルを生成するのに明示的なコンパイルを必要とします (MSM p-code に相当)。
MAC コードを Caché でコンパイルすると、自動的に INT コードと OBJ コードが生成されます。
また、INT コードをコンパイルすると、自動的に OBJ コードが生成されます。
•
すべてのコードはグローバル (^rMAC、^rINV、^rOBJ、および ^ROUTINE) に格納されます。
•
実行時に、OBJ コードのみが、主なグローバル・バッファ・プールから分けられた特殊ルーチン・
バッファにロードされます。これにより、明らかな利点がもたらされます。
MSM から Caché への変換ガイド 15
MSM アプリケーションの変換
4.1 MSM ルーチンの移植
以下の手順を使用して、サイズが 32 KB 以下の MSM ルーチンを移行します。
•
^%RS ユーティリティを使用して、MSM ルーチンを MSM 形式で保存します。
•
Caché エクスプローラまたは宛先のネームスペースの ^%RI を使用して、コードを Caché にリス
トアします。エクスプローラを使用して、[ルーチン] タブの [フォーマットのインポート] が [MSM]
であることを確認します。構文チェックとルーチン・コンパイルを無効にします。
•
宛先のネームスペースから、^%RCOMPIL を使用して Caché 内でコードをリコンパイルし、構文
エラーをチェックします。どのルーチンが <SYNTAX> エラーを生成しているかが分かれ
ば、"Caché ObjectScript リファレンス" を参照して、Caché の言語構文に精通するようにしてく
ださい。
MSM では現在のスタックとパーティションのサイズで許可される限り可能な大きさのルーチンをサ
ポートしますが (200 KB までテスト済み)、Caché ルーチンは 32 KB より小さいサイズにコンパイル
する必要があります。MSM の ^%RSIZE ユーティリティを使用して、Caché にインポートする前にルー
チン・サイズをチェックできます。ルーチンの大きさを計算するには、^%RSIZE で報告されるテキスト・
ブロックの数を、1 KB で乗算します。
32 KB 以上の MSM ルーチンは、次の 2 つの方法のいずれかで処理できます。
•
まず MSM 内のルーチンを分割し、32 KB を超えるルーチンが存在しないようにし、その後
Caché にインポートします。
•
まずルーチンを Caché にインポートします。その際、構文チェックとコンパイルのオプションをオ
フにします。Caché にインポートしたら、ルーチンを分割し、^%RCOMPIL を使用してそれらをコ
ンパイルします。
P-code としてのみ格納されている MSM ルーチン (Caché ではオブジェクト・コードとして知られて
います) を移行することはできません。P-code としてのみ提供されるルーチンを移行する必要があ
る場合は、作業を進める前に、アプリケーションのサプライヤに連絡して、ルーチンのソース・コード
を取得する必要があります。
4.2 MSM 言語互換モード
Caché は、移植された MSM ルーチンで作業する場合、MSM 言語モードで操作します。言語モー
ドは、各ルーチンごとに個別に設定されます。ある言語モードでコンパイルされたルーチンは、別の
モードでコンパイルされたルーチンを呼び出したり、呼び出されたりします。したがって、例えば MSM
モードのルーチンが Caché モードのルーチンを呼び出し、この Caché ルーチンが別の MSM モー
ドのルーチンを呼び出すことができます。
16 MSM から Caché への変換ガイド
MSM 言語互換モード
言語モードを切り替えるには、$ZU (55,モード) を使用します。モードは言語モードの数字です。関
連する設定は以下の通りです。
•
MSM モードへの切り替え :
Set x=$ZU(55,8)
•
ネイティブ Caché モードへの切り替え :
Set x=$ZU(55,0)
•
現在の言語モードを返す :
Set x=$ZU(55)
MSM アプリケーションを正しい言語モードでコンパイルすると、システムで使用するアプリケーション
や言語モードに関係なく、あらゆる Caché システムにインストールされ、実行できます。言語モード
処理の大半は、実行時ではなくコンパイル時に行います。その結果、MSM のような言語モードを使
用しても、Caché の固有言語モードと同様に、高性能に動作できます。
各プロセスの既定のモードは、ネイティブ Caché モードです。特定のプロセスの種類に対するこの
既定のモードを変更するには、^%ZSTART ルーチン内で適切な行タグを変更する必要があります。
これらのモードのいずれかで、ユーザ自身のコマンド、関数、特殊変数を追加して、MSM の
%ZZCMNDS、%ZZFUNCS、および %ZZSVARS MSM ルーチンを変換できます。現在の言語モード
によっては、対応する Caché ルーチンがこれらの追加された機能に対して検索されます。
コマンド
関数
変数
元の (ネイティブ
MSM) ルーチン
%ZZCMNDS
%ZZFUNCS
%ZZSVARS
ネイティブ Caché
モードのルーチン
^%ZLANGC00
^%ZLANGF00
^%ZLANGV00
MSM モードのルーチ
ン
^%ZLANGC008
^%ZLANGF008
^%ZLANGV008
これらのルーチンに入力する行タグは、新しいコマンド、関数、または特殊変数の名前となります。
入力される行タグは、‘Z’ で始まり、すべて大文字である必要があります。コマンド、関数、または特
殊変数を実際に実行する際は、大文字と小文字が区別されます。
•
以下に示すように、^%ZLANGC* にコードを追加すると、ZSS のような新しいコマンドが作成され
ます。
%ZLANGC008
ZSS
; do a System Status
Do ^%SS
Quit
MSM から Caché への変換ガイド 17
MSM アプリケーションの変換
•
以下に示すように、^%ZLANGF* にコードを追加すると、$ZRTN(X) のような新しい関数が作成
されます。
%ZLANGF008
ZRTN(x)
; find out what routine a process is currently running
Quit $Print($View(-1,x),"^",6)
•
以下に示すように、^%ZLANGV* にコードを追加すると、$ZTIME のような新しい特殊変数が作
成されます。
%ZLANGV008
ZTIME
; return the current time
Do INT^%T
Quit %TIM
上記で定義されたルーチンを呼び出すカスタム・コードの例を、以下に示します。
MyRtn
; Call the code added to the ^%ZLANG* routines
;
New pid,rtn,x
Set x=$ZU(55,8)
; Change to MSM mode
ZSS
Read !,"Enter a process ID: ",pid
Set rtn=$ZRTN(pid)
If rtn="" Set rtn="no routine"
Write !,"At "_$ZTIME_", process #"_pid_" was running "_rtn_"."
Set x=$ZU(55,0)
; Return to native mode
Quit
4.3 MSM 実装固有の特殊関数と機能の処理
MSM の非標準関数と機能は、変換で最も複雑な部分です。次の点に注意してください。
•
ZUSE のような多くの MSM コマンド、$ZOS などの関数、および $SYSTEM などの特殊変数は、
Caché とは異なった方法で処理する必要があります。
•
MSM のメモリ構造にアクセスする VIEW コマンドまたは $VIEW 関数は、削除するか変更する
必要があります。
•
MSM ユーティリティに対する参照は、すべて変換する必要がある場合があります。
•
Caché は、hex 演算子 # をサポートしません。ただし、$ZHEX に対するサポートは同じなので、
この関数はしかるべき位置で使用されるべきです。
•
Caché はプリンタ・ニーモニックをサポートしません。
•
^%RHANGE ユーティリティは、単純な構文の変更を行うために使用される場合もありますが、
ルーチンに対する無差別な修正はコードに対して望まない変更をもたらす場合があるため、こ
の方法は注意して使用する必要があります。大部分のコードの変更は、プログラマにより対話
的に実行される必要があります。
18 MSM から Caché への変換ガイド
MSM 実装固有の特殊関数と機能の処理
MSM から Caché への変換に必要な作業を大まかに理解するために役立つ、いくつかの推奨され
るアクションを以下に示します。
•
•
すべての MSM ルーチンを Caché にロードし、%RCOMPIL を実行して構文エラーを分析しま
す。
-
ほとんどのオープンで使用されているコマンドは、ここに表示される必要があります。
-
外部の空白文字は一般的な問題です。MSM でルーチンのコンパイルが成功しても、Caché
が外部の空白文字のためにコンパイル時に <SYNTAX> エラーを生成するという場合があ
ります。空白文字の問題は、プログラマによって対話的に修正されるのが最善です。この例
として、QUIT コマンドとセミコロンの間の 2 つ未満の空白があります。
-
ルーチン内での重複する行タグの名前は、Caché ではサポートされていません。そのような
ルーチンをコンパイルすると、<LABELREDEF> エラーが生成されます。それらの行タグの
どちらかを削除するか変更する必要があります。その上で、同じアプリケーション・ロジック
を維持するために必要な変更を行ってください。
%RFIND を使用して以下の文字列を検索します。
-
$V (View)
-
$Z (一般的にシステム関数)
-
^%
-
^[
-
^|
-
^ ( ; ‘^’ と ‘(‘ (SPACE 演算子) の間の空白に注意してください。
-
O 51、O 52、O 53 または O 54 (名前ではなく、オープン数)
MSM コマンド、関数、演算子、プリプロセッサ指示語、特殊変数、構造化システム変数、およびそれ
らに相当する Caché 機能のリストについては、付録の “MSM と Caché ユーティリティ・カタログ”
を参照してください。
4.3.1 MSM-XCALL 関数
XCALL 関数は、C や Assembler などの外部プログラムの使用を許可し、M から呼び出されるよう
にします。後方互換性のサポートのため、MSM は ZCALL インタフェースもサポートしています。
XCALL と ZCALL は、概念と実装の点で Caché の $ZF() 呼び出しインタフェースに似ています。
XCALL 関数および ZCALL 関数は、Caché $ZF() 関数に変換される必要があります。
Caché はコールイン・インタフェースもサポートしており、C プログラム内から Caché コードの実行を
可能にします。詳細は “MSM アクティベイト” のセクションを参照してください。
MSM から Caché への変換ガイド 19
MSM アプリケーションの変換
Caché の呼び出しインタフェースに関する詳細は、"Caché ObjectScript の使用法" を参照してくだ
さい。
4.3.2 %OS および $ZOS 経由の OS 関数
MSM の %OS ユーティリティおよび $ZOS 関数により、多数の OS 関連関数が M 内から実行できる
ようになります。Caché には、%OS または $ZOS に直接対応するものはありませんが、$ZF(-1)、$ZF(2)、または OS コマンドへのパイプ (OPEN コマンドへの "Q" パラメータを使用した) によって、希望
する OS 関数を容易に実行できます。
一般的に、ファイル関連の演算 ($ZOS で使用されるように) はすべて、%Library.File クラスへのメ
ソッド呼び出しで置き換える必要があります。例えば、以下のようにファイルを削除します。
Set status=##class(%Library.File).Delete("filename")
Caché の %CLI ユーティリティを使用すると、Caché プログラマ・プロンプトから OS コマンドを実行で
きます。Windows プラットフォームでは、これらのコマンドがユーザ入力を予期していた場合、コマン
ドはハングします。詳細は、"Caché ObjectScript の使用法" の “Caché からオペレーティング・シ
ステム・コマンドの発行” を参照してください。
4.3.3 ZWINTERM 呼び出しの変換
MSM では、ポップアップ・ウィンドウを使用して ZWINTERM インタフェース経由のメッセージを表示
できます。Caché では、これと同じ文字ベースのウィンドウ機能を得るのに、次のいくつかのオプショ
ンがあります。
•
ニーモニック空間を使用して、ポップアップ・ウィンドウを作成します。
•
$ZF(-1) 関数を使用して、オペレーティング・システム・レベルのコマンドを発行し、新しいターミ
ナル・ウィンドウを開きます。
•
MSM を Caché へのネットワーク・クライアントとして維持し、既存の文字ウィンドウ機能が使用で
きるようにします。これは、Caché への移行が進行中である場合に、短期的な目標として良い方
法です。
4.3.4 MSM プリプロセッサ指示語
MSM および Caché はどちらも、プリプロセッサ指示語を使用してマクロの定義、マクロ・ライブラリの
定義、他のルーチンからのソース・コードの組み込みなどのタスクを実行できるようにするメカニズム
を備えています。
Caché は指示語を .MAC および .INC コードとして格納します。MSM グローバル ^ZMSMMAC お
よび ^ZMSMSRC は、それぞれプリプロセッサ指示語とソース・コードを格納しますが、Caché では
^rMAC および ^ROUTINE グローバルがそれに相当します。
20 MSM から Caché への変換ガイド
MSM 実装固有の特殊関数と機能の処理
MSM と Caché は概念的によく似た機能を備えていますが、構文はこれらの 2 つのシステム間で異
なっています。例えば、MSM ではマクロの仮パラメータ・リストを構築するのに、次の 2 つのメカニズ
ムのどちらかを使用できます。
•
引数の仮名として、$1、$2、...$N のような列挙変数を使用
#define copyright() Copyright $1-$2
•
引数の仮名として、英数字を使用
#define copyright(from,to) Copyright from-to
Caché では、マクロのプリプロセスに対して列挙変数の使用をサポートしていません。代わりに、英
数字名を参照する Caché メソッドを採用する必要があります。上記の MSM の例は、Caché では次
のようになります。
#define copyright(%var1,%var2) "Copyright ",%var1,"-",%var2
Caché での仮パラメータ・リストの引数は、% 記号で始まる必要があります。Caché は MSM の $0 変
数をサポートしていません。この変数は任意のマクロに渡された引数の数字を格納します。
MSM と Caché は、アプリケーション内からマクロが参照される方法においても異なります。上記のマ
クロ定義を使用して、MSM では以下の 2 つのメソッドのどちらかを使用して copyright マクロを参照
できます。
•
括弧で囲まれたパラメータ・リスト内に引数を渡す
%%copyright(1997,1998)
•
コンマで区切られたリストとして引数を渡す
#%copyright 1997,1998
Caché では、マクロを参照するための %% および #% 構文はサポートされていません。次の構文を使
用して copyright マクロを呼び出します。
$$$copyright(1997,1998)
4.3.5 グローバルおよびルーチンに対する拡張参照
前述したように、Caché は実際の物理データベース・ボリュームからデータにアクセスするのに、ネー
ムスペースに依存しています。ご使用のアプリケーション内から Caché のネームスペースを採用す
ることを強くお勧めします。ただし、アプリケーションのすべてのハード・コード化した拡張参照を変
更することは、短期的な目標として難しい場合があります。
Caché は以下のいくつかの拡張参照形式をサポートします。
グローバルの場合:
MSM から Caché への変換ガイド 21
MSM アプリケーションの変換
^["namespace"]global
^["namespace",""]global
(this is useful if piecing apart an MSM UVI/VOL string)
^["directory","system"]global
^|"namespace"|global
^|"^system^directory"|global
ルーチンの場合:
DO ^|"namespace"|routine
DO ^|"^system^directory"|routine
JOB ^routine["namespace"]
JOB ^routine["namespace",""]
JOB ^routine["directory","system"]
JOB ^routine["^system^directory"]
グローバルとルーチンの既定の位置として CACHESYS データベースを使用する MGR という名前
の Caché ネームスペースを作成する必要が生じる場合があります。MGR がシステム・グローバルと
ルーチンを含むことを予期する拡張参照は、修正の必要はありません。
4.3.6 Caché での EOF (ファイルの終わり) 状況の処理
MSM では特殊変数 $ZC を使用して、最後にデバイスがアクセスしたときからの状況情報を格納し
ます。特に、MSM アプリケーションは、READ コマンドがシーケンシャル・ファイルの終わりに到達し
たかどうかを確認するのに、$ZC を広く使用します (この場合 $ZC は 1 を返します)。Caché では、
MSM とは異なり、この状況では <ENDOFFILE> エラーがトリガされます。Caché での EOF 状況を
処理するには、アプリケーション内で $ZTRAP を使用してカスタム・エラー・トラップを作成する必要
があります。
Caché では、$ZC (MSM 言語互換モードで使用されている場合) 特殊変数や $ZEOF (ネイティブ
Caché 言語モードの場合) 特殊変数もサポートされます。
22 MSM から Caché への変換ガイド
5
Caché へのアプリケーションの接続
5.1 接続ツール
アプリケーションの性質により、ユーザ・インターフェイスをデータベースに接続するさまざまなツー
ルを使用している場合があります。
•
MSM アクティベイト
•
MSM-SQL、KB-SQL、および M/SQL
•
MSM-PDQWeb
•
MSM-Workstation
5.1.1 MSM アクティベイト
MSM アクティベイトでは、M 関数の呼び出し、XECUTE コマンドの実行、または以下のいずれかの
メソッドによる MSM Server 上での低レベルの演算の実行が可能になります。
•
C から呼び出し可能な Windows DLL
•
ActiveX コントロールまたは COM オブジェクト
•
さまざまな UNIX プラットフォームからの C ライブラリ
•
一連の Java クラスと関連する Java Bean
選択する接続メソッドに関係なく、クライアントはすべて TCP/IP を介して MSM Server 上で待ち受
けているプロセスに接続します。
MSM アクティベイトのサーバ・コードは、Caché に移植されているため、クライアント側のアプリケー
ションを変更することなく、MSM アクティベイト・アプリケーションを Caché に対して実行できます。
MSM から Caché への変換ガイド 23
Caché へのアプリケーションの接続
•
Caché オブジェクトでは、C++、任意の Active X クライアント (Visual Basic、PowerBuilder、Delphi
など)、または任意の Java ベースのツール (J++、Visual Café、JBuilder など) を含む、多数の異
なるアプローチを使用できます。
•
Caché ダイレクトは、概念的に MSM アクティベイトの Active X コンポーネントと非常によく似て
いますが、OCX (Visual Basic、PowerBuilder、Delphi など) を処理できるすべてのツールの使
用を可能にします。
Caché ダイレクト・コントロール (VISM.OCX) では、PowerBuilder ビジュアル・オブジェクトや
Visual Basic フォームなどの、いくつかのコンテナの使用が必要になります。このため、PowerBuilder の非ビジュアル・オブジェクトでは、Caché ダイレクト・コントロールを使用できません。た
だし、Caché ダイレクトの将来のバージョンでは、Caché ダイレクトが Active X オートメーション・
サーバとして記述されるようになります。
•
Caché コールイン・インタフェースは、MSM アクティベイトのコールイン・インタフェースとよく似
ており、すべてのプラットフォーム上で C プログラムから Caché にアクセスできるようにします。
Caché インストール・ディレクトリの source/cache サブディレクトリにある ccallin.h ファイルは
(Caché インストール中にコールイン・オプションを選択した後)、Caché のコールイン・インタフェー
スに必要な関数定義を提供します。このファイルは C プログラムに含まれている必要がありま
す。同じく source/cache サブディレクトリにある ccallin.c ファイルには、ccallin.h で定義される
主要なコールイン関数を示すサンプルの C プログラムが含まれています。
5.1.2 MSM-SQL、KB-SQL、および M/SQL
リレーショナル・アクセスを行う場合、以下の 2 つの MSM のリレーショナル環境のうちの 1 つを選
択しています。
•
MSM-SQL (以前のバージョンの KB-SQL の名前を変更したバージョン)
•
InterSystems M/SQL (FDBMS とも呼ばれる)
データ・ディクショナリを含むグローバルが、すでに MSM から Caché に移行されているため、Caché
システム上で、直接、リレーショナル環境を MSM から Caché SQL または M/SQL for Caché Version
F.17 に変換できます。
•
KB SQL については、InterSystems のアカウント・マネージャに、データ・ディクショナリ・コンバー
タの最新バージョンへのアクセス方法についてお問い合わせください。これは、^SQL ディクショ
ナリ・グローバルをとり、テーブル・マッピングを Caché オブジェクト・クラス定義に変換します。こ
れらの定義は、自動的にデータをリレーショナル・テーブルとして公開します。
•
M/SQL FDBMS については、Caché の DBMS に変換するために 2 つの手順を実行する必要
があります。これらの手順は、FDBMS オブジェクトを含む任意のネームスペースから実行する
必要があります。
-
必要な DBMS 変換の手順を実行するには、^%msql ユーティリティのシステム管理メニュー・
オプションにある、変換マネージャを使用します。
24 MSM から Caché への変換ガイド
接続ツール
-
次のコマンドを実行して、すべての DBMS オブジェクトを再コンパイルします。
Do all^%mcompil
-
F からの CDL エクスポート・ユーティリティを実行する
データ・ディクショナリが F.17 またはそれ以降のバージョンの Caché に変換した後、これらの F デー
タ・ディクショナリを、Caché オブジェクトと高度に統合された最新の Caché SQL に変換する必要が
ある場合があります。
ODBC 接続では、MSM と Caché は同様に機能しますが、通常は、より向上した全体的なリレーショ
ナル・パフォーマンスと低い実行コストを実現します。ODBC に関する詳細は、"Caché SQL の使用
法" を参照してください。
MSM-SQL および KB-SQL データ・ディクショナリの変換方法の詳細は、InterSystems アカウント・
マネージャにお問い合わせください。
M/SQL for MSM を使用してアプリケーションを実装している場合は、M/SQL フォームから Caché
の移行に関する詳細情報について、アカウント・マネージャまたは WRC にお問い合わせください。
5.1.3 MSM-PDQWeb
MSM-PDQWeb は、Web サーバを MSM サーバと接続します。それにより、要求が Web から MSM
に送信されるよう処理され、MSM は静的または動的に生成された HTML の形で応答します。MSMPDQWeb は、目的と実装の両面で InterSystems の WebLink テクノロジとよく似ています。このテク
ノロジは、現在では Caché Server Pages (CSP) に代わりました。WebLink は、InterSystems により積
極的に拡張されていません。
PDQWeb および WebLink は Caché に集約され、アプリケーションが、どちらのテクノロジでも変更
せずにまたはごくわずかな変更で実行できるよう記述されることを可能にしました。この集約により、
次の 2 つの最も頻繁に求められてきた PDQWeb の強化機能が MSM ユーザに提供されます。
•
ステート認識接続のサポート (現在使用可能なステートレス接続に加えて)。
•
より広範な種類の Web サーバのサポート。
Caché で PDQWeb アプリケーションを実行するには、いくつかの重要な手順に従う必要があります。
ご使用の Web サーバ・プラットフォームにより、手順は異なります。この変換プロセスに関する詳細
は、"Caché WebLink ガイド" を参照してください。
CSP はブラウザ・ベースのアプリケーションを構築する際の優先的なアプローチとして推奨されてお
り、可能な限り WebLink の代わりに使用されるべきです。
5.1.4 MSM-Workstation
GUI 開発ツールの分野では、InterSystems と Micronetics の方法は大きく異なっていました。
Micronetics は自社のインタラクティブな開発環境に焦点を当てているのに対し、InterSystems は
MSM から Caché への変換ガイド 25
Caché へのアプリケーションの接続
Visual Basic および Delphi などの大量に出回っている GUI 開発ツールを活用することに重点を置
いていました。
現在使用している MSM-Workstation アプリケーションの代わりに、Caché オブジェクト・テクノロジを
使用することを強くお勧めします。Caché オブジェクトでは、いかなる業界標準 GUI または Web 開
発ツールでも、すべての GUI 開発プロジェクトに使用できます。業界標準のツールと組み合わせた
Caché オブジェクトの使用により、急速な業界の変化に、より効果的に対応できます。
Caché では、現時点で次のようないくつかの MSM-Workstasion の主な機能を提供しています。
•
グラフィカルなデバッグ環境
•
グラフィカルなルーチン・エディタ
•
シングル・ユーザ・システムにはロイヤルティなしのライセンス
Caché では、MDC で定義された M/WAPI 標準をサポートしていません。
詳細は、InterSystems の営業員にお問い合わせください。
5.2 ターミナル・サーバ
5.2.1 TELNET ターミナル・サーバおよび LAT ターミナル・サーバ
Caché では、ターミナル・サーバを、ターミナルをご使用のアプリケーションに接続する方法としてサ
ポートしています。これらのターミナルは、Caché の組み込みターミナル機能を使用して、TELNET
または LAT を介して接続できます。TELNET および LAT 接続は、構成マネージャにより構成され
ます。
Windows 環境では、特定の物理ターミナル・サーバ・ポートを特定のターミナル・デバイスと連携さ
せる標準的な方法はありません。これは、$IO を使用して特定のユーザまたはデバイスを識別する
MSM アプリケーションに変更の必要がある場合があることを意味します。この問題を解決するには、
いくつかの方法があります。
•
個別のターミナルまたはグループのターミナルを特定の $ZIO 値と連携させる。
-
その名前がターミナルの対応するサーバまたはドメイン名とポートで構成される Caché ユー
ザ・アカウントを作成して (User Accounts ユーティリティを使用して)、特定のターミナルを
識別する。
-
このターミナル情報は、ご使用のアプリケーションの $ZIO 特殊変数内で利用可能です。
この場合、アプリケーション内で、$IO 特殊変数への多くの参照を、$ZIO 変数または他の
アプリケーション定義変数に変更する必要が生じます。
-
このターミナル・デバイスを、User Accounts ユーティリティを使用して特定のルーチンと連
携させることもできます。
26 MSM から Caché への変換ガイド
ターミナル・サーバ
•
ダム・ターミナルのアンサーバック機能を使用して、一意の ID を取得する。例えば、DEC VT420
では、アンサーバックを Setup\Comm\Answerback 内で設定して、$character(5) を持つ文字列
を取得します。
•
ご使用のターミナル・サーバで利用可能な場合は、telnet を使用してセッションとポートの情報
を報告できます。ターミナル・サーバにこの情報について照会し、ターミナル・サーバが返すデー
タを解析するよう、NT または Caché レベルで、スクリプト記述をする必要が生じる場合もありま
す。
連携したターミナルの設定方法に関する詳細は、"Caché システム管理ガイド" を参照してください。
Caché の TELNET サービスおよび LAT サービスは、Windows 95 または 98 のプラットフォームで
は稼動しません。この機能は、NT、2000、XP など、他の Windows プラットフォームで使用する必要
があります。LAT は、これらの Windows プラットフォームでのみCaché により直接サポートされます。
Windows 以外のプラットフォームでの LAT のサポートについては、サードパーティ製品を使用する
必要がある場合があります。
負荷分散アルゴリズムは、MSM と Caché とで大きな違いがあります。MSM LAT Service Rating
(LATSR) は、任意のサーバの現在のプロセス負荷と最大のプロセス負荷に基づいて計算されます。
Caché LATSR は、システム・マネージャにより定義された特定の数字をとり、それをシステムの現在
の CPU 負荷で乗算し、システム・マネージャにより設定された数字よりも高いまたは低い数字を生
成します。
Caché LATSR は既定では 1 に設定されます。そのため、MSM と Caché アプリケーション/計算サー
バを同じ LAT サービスを使用するようにして同じ環境で接続すると、すべてのユーザが MSM サー
バにログインするようになってしまいます。
この状況を回避するには、Caché LATSR レベルを、MSM サーバの LATSR の既知の範囲に基づ
いて、より適切な数字に増やします。
5.2.2 シリアル・ポート拡張ボード
Caché for Windows では、ボードが Windows NT 用のサポートされるドライバを含む限り、Digi
International 社製のインテリジェント・シリアル・ポート拡張ボードをすべてサポートします。Digi ボー
ドを Caché で使用する前に、[COM ポートの自動スタート] ボックスがチェックされていることを確認
する必要があります。このオプションは System Configuration ユーティリティの [ターミナル] タブに
あります。このオプションを有効にするには、Caché を再起動する必要があります。これにより、ユー
ザ・ログインを許可する指定されたポート上で待ち受ける、指定されたポート上の COM ポート・リス
ナ・ルーチンが起動されます。
MSM とは異なり、Caché デバイスは動的に使用でき、システム・セットアップであらかじめ定義される
必要はありません。
MSM から Caché への変換ガイド 27
Caché へのアプリケーションの接続
5.2.3 MSM ターミナル・デバイスの特性の Cache OPEN/USE プロトコルへ
の変換
ビット位
置
10 進数値
MSM 名
Cache での機能 (名前)
31-28
N/A
Reserved
***N/A***
27
1.3E+08
Pass-All Flow
デバイスでサポートされている場合はイメージ・
モードで有効です。
26
6.7E+07
Prompted Read
/FLUSH または "F" プロトコル (フラッシュ) の一
部です。
25
3.4E+07
Type Ahead
/FLUSH または "F" プロトコル (フラッシュ) を参
照してください。
24
1.7E+07
ZUSE
Cache では ZUSE は利用できません。
23
8388608
Pass All
/IMAGE または "I" プロトコル (イメージ・モード)
を参照してください。
22
4194304
No <XOFF>
Cache では OS 設定を使用します。
21
2097152
<CTRL_O>
OS で制御されます。
20
1048576
Control Character
直接の相互関係はありません。
19
524288
Empty Line
Delete
Cache ではサポートされません。
18
262144
Data Length
OS で制御されます。
17
131072
$X および $Y
Update
/XYTABLE または "Y\name\" プロトコル ($X/$Y
アクション・モード) で制御されます。
16
65536
Type of CRT
/CRT または "C" および "P" プロトコル (CRT
ターミナル/プリンタ・デバイス) を参照してくださ
い。
15
32768
Interrupt
Cache ではサポートされません。
14
16384
Lowercase
/TRANSLATE または "K" プロトコル (入出力変
換モード) で制御されます。
13
8192
Line Feed
デバイス・サブタイプの構成内で制御されます。
12
4096
<TAB> Control
デバイス・サブタイプの構成内で制御されます。
28 MSM から Caché への変換ガイド
ターミナル・サーバ
ビット位
置
10 進数値
MSM 名
Cache での機能 (名前)
11
2048
Line Carrier
Windows でのみサポートされます。$ZA および
COMMCTRL を参照してください。
10
1024
Printer
/CRT または "C" および "P" プロトコル (CRT
ターミナル/プリンタ・デバイス) を参照してくださ
い。
9
512
Connect
Windows でのみサポートされます。COMMCTRL
を参照してください。
8
256
Logon
Windows でのみサポートされます。COMMCTRL
を参照してください。
7
128
Cursor Position
Cache ではサポートされません。
6
64
Escape
Cache ではサポートされません。
5
32
<CTRL_S>
OS で制御されます。
4
16
<CTRL_O>
OS で制御されます。
3
8
Modem Control
Windows でのみサポートされます。COMMCTRL
を参照してください。
2
4
CRT
/CRT または "C" および "P" プロトコル (CRT
ターミナル/プリンタ・デバイス) を参照してくださ
い。
1
2
Output Only
Cache では直接サポートされません。Windows
では COMMCTRL を参照してください。
0
1
Echo
/ECHO または "S" プロトコル (Secret Input) を
参照してください。
MSM から Caché への変換ガイド 29
6
Caché システム管理
6.1 Caché の構成
Caché の構成は、構成マネージャで実行します。Caché システム管理ガイドには、マネージャの使
用方法の詳細な情報や、各パラメータの最小値および最大値の情報が含まれています。または、
選択したユーティリティの特定のフィールドで <F1> を押して、Caché のオンライン・ヘルプにアクセ
スすることもできます。
基本的なシステム構成のヒント:
•
ユーザ・プロセスの最大数が、Caché ライセンスのプロセス・カウントの合計と等しいことを確認
します (アクセスするユーザの数を少なく設定するのでない限り)。
•
アプリケーションでより大きい値が要求されるのでない限り、パーティション・サイズを適切なサイ
ズ (既定は 1 MB) に保ちます。この値を過剰に設定すると、メモリとスワップ領域が効率的に使
用されなくなります。Caché パーティションはサイズが固定されており、MSM パーティションのよ
うに拡張または縮小することはありません。Caché には %PARTSIZ に相当するユーティリティが
ないため、パーティション・サイズを動的に変更することはできません。
•
多くの場合、グローバル・バッファおよびルーチン・バッファの数を増やすのが、パフォーマンス
を向上させる最善で最短の方法です。
MSM ユーティリティおよびそれらに相当する Caché 機能のリストについては、付録の “MSM と
Caché ユーティリティ・カタログ” を参照してください。
MSM から Caché への変換ガイド 31
Caché システム管理
6.2 デバイスの構成
ほとんどの場合、デバイスはまずオペレーティング・システム・レベルでセットアップする必要がありま
す。OS レベルで構成すると、Caché 内ですぐにこれらのデバイスを使用できるようになります。これ
らのデバイスに対してニーモニック名または数値エイリアスを設定する必要がある場合は、それらを
構成マネージャで定義します。これらの Caché レベルのデバイス構成は、cache.cpf ファイルに格
納されます。Caché を起動するたびに、システムは cache.cpf ファイルを読み込み、CACHESYS
データベース内でシステム・レベル・グローバルを再生成します。
デバイスの構成のヒント:
•
Caché には一連の予約された、組み込みのデバイス番号があり、それらは通常 MSM とは異な
ります。詳細は、"Caché 入出力デバイス・ガイド" を参照してください。
•
デバイスに対して、SUN などのニーモニック名、または 100 などの数値エイリアス (MSM システ
ムでも共通) でアクセスする場合は、Caché のデバイス・テーブルにデバイスを入力するだけで
済みます。
•
ニーモニック名は ^%IS という文字ベースのユーティリティで使用されます。このユーティリティは
^INTEGRIT および ^%G などのユーティリティにより使用されます。
•
数値エイリアスは Caché の OPEN、USE、および CLOSE コマンドにより直接使用されます。エ
イリアスの使用は、MSM のようなデバイス処理に最適な方法です。
•
ニーモニック名または数値エイリアスを使用する必要がない場合でも、^%IS ユーティリティまた
は OPEN、USE、CLOSE コマンドを使用してデバイスにアクセスできます。例えば、/dev/rmt0
がシステム上で有効なデバイスであれば、コマンド OPEN "/dev/rmt0":"R" は有効になります。
•
パイプは、マシン上でプリンタや他のデバイスにアクセスする非常に有効な方法です。パイプの
セットアップと使用に関する詳細は、"Caché 入出力デバイス・ガイド" を参照してください。
•
Caché の SPOOL デバイスを使用する場合は、^SPOOL グローバルを分離した場所に格納し、
それが開発環境でスペースを取らないようにすることをお勧めします。その後、このグローバル
はネームスペース構成を使用して参照できます。
Caché でのデバイスの構成に関する詳細は、"Caché システム管理ガイド" を参照してください。
6.3 Caché バックアップの自動化
Caché のバックアップとリストアは、実働システム上で実行するよう設計されています。バックアップ
は、システム全体においても、各データベース単位でも、または個別のグローバルとルーチンに対
しても実行できます。OS レベルでの Caché バックアップの自動化を実行する上で、いくつかの考慮
事項があります。次の 4 つの推奨する方法があります。
32 MSM から Caché への変換ガイド
Caché ジャーナリング
1. OS スケジューラは、Caché のバックアップ API 内で呼び出され、Caché の並行バックアップを
実行します。完全バックアップ、累積バックアップ、インクリメンタル・バックアップを含む、Caché
のバックアップ方法のいずれも、この API を通して利用可能です。この方法は実際の自動化
バックアップにお勧めします。
2. Caché は OS スクリプトにより停止でき、その後 OS レベル・バックアップを実行できます。
3. Caché のデータベースは、OS レベル・バックアップが実行されている間、フリーズする場合があ
ります。
4. OS レベル・バックアップでは、実際の Caché データベースの完全バックアップを実行できます。
この方法を使用する場合、物理的整合性を維持するため、完全バックアップの後すぐに有効な
累積バックアップも実行する必要があります。このとき、累積バックアップの自動化のために
Caché バックアップ API を呼び出すことができます。このプロシージャの手順は、以下の通りで
す。
•
事前バックアップ・コマンドとして、次のインクリメンタル・ビットマップを消去します。
Set x=$$CLRINC^DBACK(1)
•
実働システム上で OS バックアップを実行します。
•
バックアップ後のコマンドとして、次のように累積バックアップを実行します。
Set x=$$BACKUP^DBACK(Arg1,Arg2,...Arg10)
このオプションでは、OS レベル・バックアップでバックアップの実行中にファイルの変更が許可
されている必要があります。OS バックアップ・ソフトウェアを注意して選んでください。
システム・バックアップのリストアは、^BACKUP と呼ばれる文字ベースのユーティリティで実行されま
す。基本的なバックアップ・タイプとその実行方法に関する詳細は、"Caché システム管理ガイド" を
参照してください。
6.4 Caché ジャーナリング
Caché でのジャーナリングは、MSM でのジャーナリングの方法とよく似ています。システム障害後、
システムを可能な限り最新の状態に戻すには、バックアップと組み合わせて使用するのが最適な方
法です。ジャーナリングは、アプリケーション・トランザクションの追跡にも使用されます。
ほとんどのジャーナリング・タスクには、コントロール・パネルの [ジャーナリング] タブからアクセスで
きます。これには、ジャーナリングの開始と停止などの基本的なタスクや、ジャーナル・シャドウ・クラ
イアントおよびサーバの管理などが含まれます。ジャーナル・ファイル名は、デフォルトで、システム
管理者のディレクトリにある journal サブディレクトリ内の現在の日付形式 (yyyymmdd.num) を使用
します。ジャーナル・ファイル名に接頭語を追加することもできますが、それ以外のジャーナル・ファ
イル名の編集は許可されていません。
MSM から Caché への変換ガイド 33
Caché システム管理
ビフォー・イメージ・ジャーナル (BIJ) に相当する Caché の機能は、ライト・イメージ・ジャーナル (WIJ)
と呼ばれます。これは、Caché システム上で自動的に有効になります。これは、\cachesys\mgr ディ
レクトリにある cache.wij という単一のファイル (安定したボリューム・グループごとに個別の BIJ ファ
イルを持つ MSM のようではなく) で構成されます。ファイルのサイズは固定されておらず、必要に応
じて変更されたブロックを収容するために拡張します。
アフター・イメージ・ジャーナルも自動的に有効化されます。MSM とは異なり、Caché ジャーナル・
ファイルは必要に応じて作成され、事前に定義される必要はありません。Caché が再起動されるた
びに、新しいジャーナル・ファイルが作成されます。ジャーナル・ファイルが自動的に削除される "経
過時間" は、構成マネージャで変更可能なシステム設定で決定されます。
ジャーナリングのヒント:
•
プロセスでは、^%NOJRN の ENABLE と DISABLE 行タグを使用して、そのプロセスに対する
ジャーナリングを有効または無効にできます。
•
[すべてのグローバルをジャーナルする] オプションは、切実な必要がない限り使用しないでく
ださい。このオプションを選択すると、データベース内のすべてのグローバルがジャーナルされ
ます。そのため、非常に大きなサイズのジャーナル・ファイルが作成され、シャドウ・システム・
ジャーナリングが使用されている場合は、システムのパフォーマンスが低下し、ネットワーク・トラ
フィックが増大する場合があります。システムの再起動時に消去できる一時グローバルは、決し
てジャーナルしないでください。
•
バックアップごとにジャーナル・ファイルを切り替えることをお勧めします。このプロセスは自動化
できます。
•
シャドウ・システム・ジャーナリング構成では、拡張グローバル参照が使用されていない限り、グ
ローバル READ はローカル・バージョンのグローバルにのみアクセスします。
6.4.1 シャドウ・システム・ジャーナリング
Caché シャドウ・システム・ジャーナリングは概念的に MSM のクロス・システム・ジャーナリングとよく
似ていますが、Caché シャドウ・システム・ジャーナリングはより機能性に優れています。例えば、
Caché では次の 2 つのデータ転送モードが使用可能です。
1. 高速 (以前はブロック・モード) モード
•
シャドウは、データ・サーバに接続し、実際のジャーナル・フラット・ファイルを取得します。
•
取得されたトランザクションは、オプションでシャドウ・マシンに適用されます。冗長なジャー
ナル・ファイルを維持するには、取得されたトランザクションを適用しないよう選択することを
お勧めします。
•
一度に多くのトランザクションがバイナリ・ジャーナル・ブロックにより取得されるため、ブロッ
ク・モードはレコード・モードより高速になる可能性が高くなります。
•
適用されたトランザクションは、オプションでシャドウ・マシンのローカル・ジャーナル・ファイ
ルでログインされます。
34 MSM から Caché への変換ガイド
Caché ジャーナリング
2. 互換 (以前はレコード・モード) モード
•
シャドウは、TCP 経由でデータベース・サーバに接続し、パッケージ化された文字列を使
用してトランザクションを取得します。
•
取得されたトランザクションは、適用される前にプログラム的にスキャンされます。スキャンの
際、次の情報にアクセスします。
-
現在のレコードのアドレス
-
SET または KILL などのトランザクション・タイプ
-
存在する場合、関連するグローバル
-
グローバルが設定する新規値
•
トランザクションがパッケージ化された文字列により取得されるため、レコード・モードはブ
ロック・モードより低速になる可能性が高くなります。
•
適用されたトランザクションは、オプションでシャドウ・マシンのローカル・ジャーナル・ファイ
ルでログインされます。
•
レコード型転送モードのシャドウイングは、異なるエンディアン・システムをリンクする場合
(Intel および Sun など) に採用できます。これとは異なり、ブロック型転送モードのシャドウ
イングでは、転送は同じエンディアン・タイプに限定されます。
転送と配信のメカニズムは、MSM と Caché 間で異なります。MSM は DDP 経由の "push" メカニズ
ムを利用します。このメカニズムでは、個別の SET や KILL が通常のクロス・システム更新としてシャ
ドウ・サーバに適用されます。Caché は、プライマリ・サーバからシャドウ・サーバへ、TCP/IP 経由で
データを取り込みます。
Caché のネイティブ TCP の使用には、シャドウイング・パフォーマンスの向上や WAN サポートの容
易なセットアップなど、さまざまな利点があります。インターネット上のシャドウイングなどの拡張機能
や、各プライマリ・サーバに複数のシャドウ・サーバを定義する機能も利用可能です。
6.4.2 MSM から Caché へのシャドウイングと切り替え
MSM クロス・システム・ジャーナリングがシンプルな DDP クロス・システム SET および KILL (拡張グ
ローバル参照を使用して) により実装されており、Caché で DDP がサポートされる場合は、MSM
サーバから Caché サーバへのシャドウイングが可能です。これは、稼動中のシステムで最小限のダ
ウン・タイムで切り替えを準備する際、非常に役立ちます。
例えば、MSM プライマリ/シャドウの組み合わせを Caché の同等の機能で置き換える場合の次の
手順を考慮します。
1. MSM シャドウをオフラインにして、バックアップし、ジャーナリングを有効にします (またはすで
に有効になっている場合は、ジャーナル・スペースを切り替えます)。
2. Caché サーバにバックアップをリストアします。
MSM から Caché への変換ガイド 35
Caché システム管理
3. MSM UCI を Caché データベースに変換します (前の章を参照してください)。
4. Caché と MSM 間でDDP を構成し、MSM で Caché データベースを表示できるようにします。
5. MSM シャドウ上でクロス・システム・ジャーナリングを構成し、Caché プライマリの適切なデータ
ベースを指定するようにします。
6. MSM シャドウ上でクロス・システム・ジャーナリングを有効にします。
Caché プライマリに更新が送信されるようになります。もちろん Caché シャドウを作成して (上記の
#3 で作成された元の Caché データベースを使用して)、Caché プライマリに接続することもできま
す。
システムが安定し、日付と時刻の切り替えが設定されたら、MSM プライマリ・サーバへのすべてのア
クセスを無効にし、Caché プライマリにすべての更新がフィルタされるようにし、MSM サーバをシャッ
トダウンします (安全を確保するため)。その後、ユーザに対して、古い MSM プライマリの代わりに新
しい Caché プライマリへのアクセスを許可します。最後の手順は、サーバやクライアント構成で IP
アドレスを変更するのと同じくらい簡単です。
この方法を使用すると、ダウンタイムの合計が数分に短縮されます。
36 MSM から Caché への変換ガイド
A
MSM と Caché ユーティリティ・カタログ
この付録では、MSM コマンド、関数、演算子、プリプロセッサ指示語、特殊変数、構造化システム変
数、およびそれらに相当する Caché 機能のリストを提供します。ここで記載される Caché 機能の多
くは、より新しいツールでは廃止されたり、旧式とみなされたりしていることに注意してください。それ
らの機能は、従来のコードを移植したときに最も直接的に代用となる機能を提供するために示され
ています。ここで示されるユーティリティの多くに関するドキュメントは、 “Caché の旧ドキュメント集に
ついて” の "Caché ナレッジ・ベース" にあります。
%ACTJOB
Caché での機能 : 完全に対応するものはありません
目的 : システム内のすべてのジョブ番号の ^ で区切られたリストを得られます。
メモ : Caché では、以下のコードを使用します。
Set (j,p)=""
For{
Set j=$Open(^$Job(j))
;$Open(^$JOB(j)) is recommended over $ZJOB(j)
Quit:j=""
Set p=p_j_"^"}
%CHKSUM
Caché での機能 : $ZCRC
目的 : 1 つ以上のルーチンのチェックサム (ASCII 総和) を計算します。
%D
Caché での機能: %D
目的 : 現在 $HOROLOG に格納されている日付を表示します。
MSM から Caché への変換ガイド 37
MSM と Caché ユーティリティ・カタログ
メモ : MSM の %D は DD-MMM-YY の形式で日付を報告しますが、Caché は MMM-DDYY の形式を使用します。Caché で MSM の %D 出力と同様の表示形式にするには、
$ZDATE($HOROLOG,2) を使用します。
%DEBUG
Caché での機能 : 完全に対応するものはありません
目的 : 機能をデバッグするインタラクティブ・プログラムを起動します。
メモ : BREAK および ZBREAK の詳細は、"Caché ObjectScript リファレンス" を参照して
ください。
%DEVUSE
Caché での機能 : 完全に対応するものはありません
目的 : すべてのオープンされているデバイスと、各デバイスを所有するジョブの数のリスト
を表示します。
メモ : Caché では、TTYFREE を使用して、予約済みの TTY デバイスとそれらを所有する
プロセスを確認します。すべてのプロセスと、それらがオープンしたデバイスを確認するに
は、%SS を使用してください。
%DH
Caché での機能: %DX
目的 : 10 進数を 16 進数へ変換します。
%DI
Caché での機能: %DATE
目的 : 日付を外部形式 (8-SEP-97 など) から内部 HOROLOG 形式に変換します。
メモ : Caché では、INT 行タグを使用して %DATE をプログラム的に呼び出せます。
%DO
Caché での機能 : $ZDATE($H_Value)
目的 : 日付を内部 $HOROLOG 形式から外部形式に変換します。
%ECHO
Caché での機能 : 完全に対応するものはありません
目的 : プログラムがターミナルで文字エコーを制御できるようにします。ECHO をオンまた
はオフに切り替えるエントリ・ポイントが提供されます。
38 MSM から Caché への変換ガイド
MSM と Caché ユーティリティ・カタログ
メモ : Caché では、Caché ターミナル入出力の Secret-Mode 機能を使用します。例えば、
Caché プログラムでユーザの入力を非表示にするには、次を実行します。
Use 0:(:"s")
Read rec
%EDP
Caché での機能 : 使用できません
目的 : マクロ検索、拡張、およびパラメータ置換を実行します。
%EDP1
Caché での機能 : 使用できません
目的 : 指示語を処理します。補足的なエントリ・ポイントを持ちます。
%ER
Caché での機能 : %ER
目的 : %ET ルーチンでトラップされたエラー情報を表示します。
%ERRCODE
Caché での機能 : 使用できません
目的 : データベース固有のエラー・コードの説明を表示します。
%ET
Caché での機能 : %ET、%ETN
目的 : エラー・トラップ・ルーチン
メモ : Caché の %ET(%ETN) ルーチンはより機能性に優れています。
%FGR
Caché での機能 : %GIF、%GIFMSM
目的 : 高速グローバル・リストア (ブロック形式) を実行します。
メモ : %FGS 形式のグローバル保存の Caché へのインポートには、^%GIFMSM を使用しま
す。
%FGS
Caché での機能 : %GOF
目的 : 高速グローバル保存 (ブロック形式) を実行します。
MSM から Caché への変換ガイド 39
MSM と Caché ユーティリティ・カタログ
%FL
Caché での機能 : %RFIRST、GUI
目的 : 選択したルーチンのコードの先頭行を表示します。
%FLIST
Caché での機能 : 使用できません
目的 : ホスト・ファイル・システムに格納されたファイルをリストします。
%GCH
Caché での機能 : %GDISP、PROTECT、GUI
目的 : グローバルの属性を表示および変更します。
%GCHANGE
Caché での機能 : %GCHANGE
目的 : 1 つ以上のグローバル内のある文字列のすべての出現箇所を変更します。
%GCMP
Caché での機能 : %GCMP
目的 : 同じネームスペースまたは異なるネームスペース内の 2 つのグローバルを比較し
ます。
%GCOPY
Caché での機能 : %GCOPY、MERGE
目的 : あるネームスペースから別のネームスペースへ、1 つ以上のグローバルをコピーし
ます。ネームスペースは、同じマシンとリモート・マシンのどちらにあってもかまいません。
%GD
Caché での機能 : %GD、GUI
目的 : 現在のネームスペースのグローバル・ディレクトリを表示します。
%GDE
Caché での機能 : %GDISP、GUI
目的 : 拡張グローバル・ディレクトリを表示します。
40 MSM から Caché への変換ガイド
MSM と Caché ユーティリティ・カタログ
%GDEL
Caché での機能 : 使用できません
目的 : ネームスペースから、1 つ以上のグローバルを削除します。
%GE
Caché での機能 : INTEGRIT、BLKDIST
目的 : グローバルの効率を表示します。
%GEDIT
Caché での機能 : GUI グローバル・ビューア
目的 : グローバル・ファイルのすべてまたは選択した部分を編集できるようにします。
%GL
Caché での機能 : %G、GUI
目的 : グローバル・ファイルのすべてまたは選択した部分をリストします。
%GR
Caché での機能 : %GI、%GIGEN、%GIF、GUI
目的 : デバイスからグローバルをリストアし、それらの名前の変更を可能にします。
メモ : Caché では、インポート時のグローバルの名前は変更できません。
%GS
Caché での機能 : %GO、%GOGEN、%GOF、GUI
目的 : 1 つ以上のグローバルのすべてまたは選択した部分をデバイスに保存します。
%GSE
Caché での機能 : GUI グローバル検索
目的 : 1 つ以上のグローバルで、1 つ以上のユーザ指定の文字列を検索します。
%GSEL
Caché での機能 : %GSET
目的 : 現在のネームスペースからの 1 つ以上のグローバルの選択を可能にします。
%GSIZE
Caché での機能 : %GSIZE
MSM から Caché への変換ガイド 41
MSM と Caché ユーティリティ・カタログ
目的 : 1 つ以上のグローバルのサイズを表示します。
%GUCI
Caché での機能 : %DIR
目的 : 現在の UCI の 3 文字の名前と内部 UCI 番号を返します。
メモ : Caché の %DIR は現在のネームスペースとデフォルトのグローバル・ディレクトリを報
告します。
%HD
Caché での機能 : %XD
目的 : 16 進数を 10 進数へ変換します。
%HELP
Caché での機能 : 完全に対応するものはありません
目的 : 文字ベースのユーティリティのオンライン・ヘルプを提供します。
メモ : Caché では、任意の文字ベースのユーティリティのプロンプトで、‘?’ を入力すると、
オンライン・ヘルプを表示できます。
%HL
Caché での機能 : %PRIO
目的 : 現在のジョブの優先度を高から低または低から高に変更できるようにします。
メモ : Caché の %PRIO ユーティリティは LOW、NORMAL、HIGH 行タグを使用して呼び
出します。
%HOSTCMD
Caché での機能 : ^%CLI
目的 : M プログラム内から、ホスト・オペレーティング・システム・コマンドを発行できるよう
にします。
メモ : $ZF(-1,"CMD")
%INDEX
Caché での機能 : 使用できません
目的 : 1 つ以上のルーチンの相互参照のリストと、オプションとして、選択されたルーチン
の構造化プログラムのリストを提供します。
42 MSM から Caché への変換ガイド
MSM と Caché ユーティリティ・カタログ
%LOGON
Caché での機能 : %CD、ZN、$ZU(5)
目的 : ある UCI から別の UCI への切り替えを可能にします。
%MDMP
Caché での機能 : 使用できません
目的 : 選択されたメモリ位置または VIEW バッファに対して、16 進数形式、文字形式、ま
たはその両方の形式の表示を提供します。
%MFUNC
Caché での機能 : ^%math
目的 : E、PI、SIN、および COS を含む数学関数を提供します。
メモ : ^%math は適切な行タグで呼び出される必要があります。ソース・コードを参照してく
ださい。
%MODESET
Caché での機能 : 使用できません
目的 : ルーチン行の最大長などの、環境モード・フラグの変更を可能にします。
%MTCHK
Caché での機能 : 使用できません
目的 : 磁気テープ・ドライブの状態を問い合わせることができるようにします。
%NEWED
Caché での機能 : %RD
目的 : 指定された日付範囲の間に、プログラム・エディタによりファイルされたルーチンを
リストします。
%OS
Caché での機能 : 完全に対応するものはありません
目的 : オペレーティング・システム固有のタスクを実行します。
%PARTSIZ
Caché での機能 : 使用できません
目的 : 現在のジョブのパーティション・サイズを動的に変更できるようにします。
MSM から Caché への変換ガイド 43
MSM と Caché ユーティリティ・カタログ
%RCHANGE
Caché での機能 : %RCHANGE
目的 : 1 つ以上のルーチン内のある文字列のすべての出現箇所を変更します。
%RCMP
Caché での機能 : %RCMP、GUI
目的 : 現在のネームスペース内または異なるネームスペース間の 2 つのルーチンを比較
します。
%RCOPY
Caché での機能 : %RCOPY
目的 : ある UCI から別の UCI へルーチンをコピーします。
メモ: Caché の %RCOPY では、別のネームスペースへルーチンをコピーすることはできま
せん。このユーティリティは、現在のネームスペース内のルーチンの名前を変更します。
GUI
%RD
Caché での機能 : %RD
目的 : 現在のネームスペースのルーチン・ディレクトリを表示します。
%RDEL
Caché での機能 : %RDELETE
目的 : 現在のネームスペースから、1 つ以上のルーチンを削除します。
%RELOAD
Caché での機能 : %RCOMPIL
目的 : ネームスペース内で、1 つ以上のルーチンを再コンパイルします。
%RPRT
Caché での機能 : %RD、GUI
目的 : 現在のネームスペース内に格納されている 1 つ以上のルーチンのリストを印刷しま
す。
%RR
Caché での機能 : %RI、%RIMF、%urload、GUI
44 MSM から Caché への変換ガイド
MSM と Caché ユーティリティ・カタログ
目的 : 外部デバイスからすべてのルーチンまたは選択されたルーチンをリストアし、それら
の名前の変更を可能にします。
メモ : Caché では、インポート時のルーチンの名前の変更はできません。
%RS
Caché での機能 : %RO、%ROMF、%urprint、GUI
目的 : 1 つ以上のルーチンが外部デバイス上で保存されるようにします。
%RSAND
Caché での機能 : %RFIND、GUI
目的 : 1 つ以上のルーチンで、1 つ以上の文字列の出現箇所を検索します。
メモ : MSM とは異なり、Caché で 1 つ以上の文字列が指定された場合は、各文字列が
ルーチン内のどこかに存在すると考えられます。MSM では、すべての文字列が同じ行に
存在する必要があります。
%RSE
Caché での機能 : %RFIND、GUI
目的 : 1 つ以上のルーチンで、1 つ以上の文字列の出現箇所を検索します。1 つ以上の
文字列が指定された場合、それらの文字列のいずれか 1 つが見つかると、検索条件は満
たされます。
%RSEL
Caché での機能 : %RSET
目的 : 現在のネームスペースからの 1 つ以上のルーチンの選択を可能にします。
%RSIZE
Caché での機能 : %RD、$$^%ROUOBJ(…)、GUI
目的 : 選択したルーチンで使用されるブロック数を表示します。
%SBP
Caché での機能 : 使用できません
目的 : シーケンシャル・ブロック・プロセッサ・デバイスの、現在の状態、ブロック位置、およ
びバッファ・オフセットを表示します。
%SDEV
Caché での機能 : %IS
MSM から Caché への変換ガイド 45
MSM と Caché ユーティリティ・カタログ
目的 : デバイスの選択とオープン、および OPEN パラメータの指定を可能にします。
%SI
Caché での機能 : %SS、GUI
目的 : システム関連のプロセスの状態を含む、一般的なシステム情報を表示します。
%SP
Caché での機能 : %FREECNT、GUI
目的 : ボリューム・グループ内のディスク容量の合計、および空き容量を表示します。
%SQRT
Caché での機能 : sqr^%math
目的 : 数の平方根のおおよその値を計算します。
%SS
Caché での機能 : %SS $V(-1,PID)、GUI
目的 : 現在システムでアクティブな各ジョブの状態情報を表示します。
%T
Caché での機能 : %T
目的 : $HOROLOG に格納されている時刻を HH:MM 形式で表示します。
メモ : Caché では、INT タグを使用してプログラム的に時刻を取得します。
%TI
Caché での機能 : %TI
目的 : 外部形式の時刻値 (1:05 P.M. など) を内部 $HOROLOG 形式に変換します。
メモ : Caché では、INT タグを使用してプログラム的に $HOROLOG 値を取得します。
%TO
Caché での機能 : $ZTIME
目的 : 時刻値を内部 $HOROLOG 形式から外部形式に変換します。
%TRANS
Caché での機能 : 使用できません
46 MSM から Caché への変換ガイド
MSM と Caché ユーティリティ・カタログ
目的 : ルーチンとグローバルをマシン間で移動できるようにします。ルーチンとグローバル
が適切に移動されるようにするために必要な制御 (チェックサム) すべても含みます。
%UTL
Caché での機能 : ^UTIL、GUI
目的 : 実行する関数の種類に基づいて、ほとんどの MSM ユーティリティを起動する方法
を提供します。
%VIDEO
Caché での機能 : 使用できません
目的 : ユーザが PC コンソール・ビデオ・バッファのコンテンツを変更できるようにします
(MSM-PC/PLUS および MSM for Windows のみ)。
%XMIT
Caché での機能 : 使用できません
目的 : システム上の他のポートとの通信を可能にします。これは情報をマシン間で転送す
る場合に便利です。
%ZSTIME
Caché での機能 : %RD
目的 : 1 つ以上のルーチンの最後に保存された時刻を表示します。
APIMGR
Caché での機能 : 完全に対応するものはありません
目的 : MSM アクティベイト管理ユーティリティ
メモ : Caché では、Caché Direct クライアントおよびサーバ管理ユーティリティを使用しま
す。
BCS
Caché での機能 : BROADCAS、$ZU(9)、$ZU(94)、GUI
目的 : 他のターミナルまたはプロセス ID にメッセージを同報通信します。
BIJ
Caché での機能 : GUI
目的 : 変更前イメージ・ジャーナリング (ライト・イメージ・ジャーナリング) を管理します。
MSM から Caché への変換ガイド 47
MSM と Caché ユーティリティ・カタログ
DBMAINT
Caché での機能 : MSU、MOUNT、DISMOUNT など、GUI
目的 : データベースのメンテナンスを実行します。
GLBPLACE
Caché での機能 : %GCREATE
目的 : 新規グローバルを作成します。
JOBEXAM
Caché での機能 : JOBEXAM、GUI
目的 : プロセスの詳細情報を表示します。
JRNL
Caché での機能 :JRNSTART、JRNSTOP、JRNDUMP、JRNSWTCH、JRNRESTO、%NOJRN、
GUI
目的 : 変更後イメージ・ジャーナリング (フラット・ファイル・ジャーナリング) を管理します。
KILLJOB
Caché での機能 : RESJOB、$ZU(4)、GUI
目的 : ジョブを終了します。
LOCKTAB
Caché での機能 : LOCKTAB、GUI
目的 : システム内のすべてのアクティブなロックを表示します。
OLB
Caché での機能 : BACKUP、GUI
目的 : データベースの並行バックアップを実行します。
OLC
Caché での機能 : GCOMPACT、GUI
目的 : オンライン圧縮を実行します。
PEEK
Caché での機能 : 使用できません
48 MSM から Caché への変換ガイド
MSM と Caché ユーティリティ・カタログ
目的: 他のターミナル・デバイスの動作を監視します。
RECOVLCK
Caché での機能 : LOCKTAB、GUI
目的: ロックを回復します。
SETBAUD
Caché での機能 : 使用できません
目的 : ターミナルのデータ・ビットの数、ストップ・ビットの数、パリティ、およびボー・レート
などの、ターミナル属性を一時的に変更します。
SSD
Caché での機能 : SHUTDOWN、ZSHUTDOWN、%ZSTOP
目的 : システム・シャットダウン・ユーティリティ
STU
Caché での機能 : STU、ZSTU、%ZSTART
目的 : システム起動ユーティリティ
SYSGEN
Caché での機能 : GUI
目的 : システム構成を生成します。
UCIMGR
Caché での機能 : GUI
目的 : UCI 構成を管理します。
VALIDATE
Caché での機能 :INTEGRIT、CHECKPNT、CHECKMAP、GUI
目的 : データベースの物理的整合性を検査します。
VERIFY
Caché での機能: VALIDATE を参照してください
目的 : データベースの物理的整合性を検証します。
MSM から Caché への変換ガイド 49
MSM と Caché ユーティリティ・カタログ
XCALLMGR
Caché での機能 : 使用できません
目的 : XCALL 関数を管理します。
50 MSM から Caché への変換ガイド
B
M 言語の違い
MSM とネイティブ Caché モード間で異なる言語機能のみを以下に示します。
MSM では多数の言語機能のさまざまな省略形が許可されますが、Caché では、Caché ObjectScript
リファレンス で記述される省略名のみが許可されます。
B.1 コマンド
BREAK
Caché での機能 : BREAK、ZBREAK
目的 : デバッガを起動します。
メモ : ? はインタラクティブなデバッガではサポートされません。
ZGO は Caché ではサポートされません。代わりに GO を使用してください。
CLOSE
Caché での機能 : CLOSE
目的 : デバイスをクローズします。
メモ : MSM のような数値デバイスに対して数値エイリアスを定義すると、Caché ではその
デバイスをサポートします。OPEN を参照してください。
DO
Caché での機能 : DO
目的 : ルーチンまたはコード・ブロックを実行します。
MSM から Caché への変換ガイド 51
M 言語の違い
メモ : 角括弧 ( [] ) はルーチンではサポートされません。代わりに垂直バー ( || ) を使用し
てください。また、MSM の UCI 値と VOL 値は、それぞれネームスペースとシステム値に
変更する必要があります。または、ルーチンの拡張リファレンスを削除して、ネームスペー
ス・ルーチン・マッピングを使用します (推奨)。
JOB
Caché での機能 : $ZCHILD、JOB
目的 : 新規のバックグラウンド・プロセスを生成します。
メモ : Caché では、ジョブ起動プロセスの PID を返すのに $ZCHILD を使用します。MSM
では $ZB を使用します。
新規のパーティション・サイズを指定するための JOB コマンドの使用 [JOB:(:PartitionSize)]
は、UNIX 用の Caché でのみサポートされています。Windows に対しては、$ZF(-2) を使
用して、新規のパーティションを持つ外部 Caché ジョブを生成します。例えば、次のコード
は Windows NT 上で、%SYS ネームスペース内で 1024 KB のパーティション・サイズを持
つ ^Test を実行します (デフォルトのインストール・ディレクトリを想定しています)。
Set x=$zf(-2, "c:\cachesys\bin\cache -s..\mgr -b 1024 -U %SYS ^^Test")
NEW
Caché での機能 : NEW
目的 : 1 つ以上のローカル変数をスタックします。
メモ : Caché では、NEW コマンドの引数として $TEST や $ZREFERENCE は許可してい
ません。
OPEN
Caché での機能 : OPEN
目的 : デバイスを開きます。
メモ : Caché 内のデバイスは、そのデバイスのシステム構成ユーティリティで数値エイリア
スが指定されていない限り、OS レベルのデバイス名 (/dev/tty3a など) に対応します。MSM
のデバイス構造をエミュレートするには、数値エイリアスを使用する必要があります。
TRESTART
Caché での機能 : 実装されていません
目的 : 現在のトランザクションを再開します。
TSTART
Caché での機能 : TSTART
52 MSM から Caché への変換ガイド
コマンド
目的 : トランザクションの開始を表します。
メモ : Caché は再開変数やトランザクション・パラメータをサポートしていません。
USE
Caché での機能 : USE
目的 : デバイスを使用し、この現在のデバイスに対して $IO を設定します。
メモ : MSM のような数値デバイスに対して数値エイリアスを定義すると、Caché ではその
デバイスをサポートします。OPEN を参照してください。
VIEW
Caché での機能 : VIEW
目的 : ディスク内のブロックの読み込みや書き込み、メモリ内に場所の書き込みを行いま
す。
メモ : VIEW コマンドは Caché のディスクおよびメモリ構造に従う必要があります。詳細は
ドキュメントを参照してください。
WRITE
Caché での機能 : WRITE
目的 : 現在のデバイスに出力を送信します。
メモ : ニーモニック空間を Caché 用に再記述する必要があります。
ZCALL
Caché での機能 : $ZF
目的 : 外部プロシージャを呼び出します。
ZFLUSH
Caché での機能 : 実装されていません
目的 : 内部ディスク・バッファ・キャッシュから、すべてのディスク・ブロックをフラッシュしま
す。
ZGO
Caché での機能 : GO
目的 : BREAK コマンドの後で、プログラムの実行を再開します。
MSM から Caché への変換ガイド 53
M 言語の違い
ZHOROLOG
Caché での機能 : $ZU(71,$H 値)
目的 : 現在のプロセスに日付と時刻を設定します。
メモ : Caché の $ZU(71) は、時刻ではなく、新しい日付値のみを許可します。
ZMSM
Caché での機能 : 完全に対応するものはありません
目的 : ルーチン内およびルーチン間での一連のプログラムの実行をトレースします。
メモ : Caché では、以下を実行してみてください。
For i=0:1:$stack(-1) Do
. Write !,"Context level:",i,?25,"Context type:",$stack(i)
. Write !,?5,"Current place:",$stack(i,"place")
. Write !,?5,"Current source:",$stack(i,"mcode")
Quit
ZNEW
Caché での機能 : 実装されていません
目的 : NEW コマンドと似ていますが、サブルーチンが明示的または暗黙的に終了した後、
変数が永続的になります。
ZQUIT
Caché での機能 : ZQUIT
目的 : $ZTRAP により指定された次に高いエラー処理ルーチンに制御を渡します。
メモ : Caché は、終了するエラー・トラップ・レベルの数を表す引数が指定されていない限
り、すべてのスタックを消去します。
ZSETOBJ
Caché での機能 : SET
目的 : 変数にオブジェクト参照を割り当てます。
メモ : Caché ObjectScript では、以下のようなネイティブ SET コマンドを使用します。
Set var=Car.Make
ZUSE
Caché での機能 : $ZU(9)、$ZU(94)
目的 : すべてのデバイス (使用中の場合も含む) に対する書き込みアクセスを許可します。
同報通信を参照してください。
54 MSM から Caché への変換ガイド
演算子
B.2 演算子
#
Caché での機能 : $ZHEX
目的 : 数値を 16 進数から 10 進数に変換します。
B.3 構造化システム変数
^$DEVICE
Caché での機能 : 実装されていません
目的 : デバイスの存在、操作上の特性、および可用性に関する情報を提供します。
B.4 関数
$ORDER
Caché での機能 : $ORDER
目的 : 任意の変数と同じレベルの次の添え字を返します。ローカル変数のリストのループ
もパーティション内で設定されます。
メモ : このループ機能は 2 つのプラットフォーム間で異なります。例えば、次のような変数
セットがあると仮定します。
%=1, %USER="mikel", var=123.
MSM コード
Write $Order()
; this returns "%"
Write $Order(%)
; this returns "%USER"
Write $Order(%USER)
; this returns "var"
Caché コード
Write $Order(@(""))
; this returns "%"
Write $Order(%)
; this returns "%USER"
Write $Order(%USER)
; this returns "var"
MSM から Caché への変換ガイド 55
M 言語の違い
$VIEW
Caché での機能 : $VIEW
目的 : メモリ位置のコンテンツを返します。
$ZASCII
Caché での機能 : 使用できません
目的 : 指定された文字の Unicode 文字コードを返します。
$ZBN
Caché での機能 : 使用できません
目的 : ルーチンまたはグローバルの開始のブロック番号を返すか、ディスク・ブロックの割
り当てまたは割り当て解除を行います。
$ZBname
Caché での機能 : $ZBIT<name>
目的 : ビット文字列で論理演算を実行するために使用される関数の集合。
$ZCALL
Caché での機能 : $ZF
目的 : 外部プロシージャを呼び出し、値を返します。
メモ : Caché の $ZF では、関数名が二重引用符で囲まれている必要があるのに対し (例
: [$ZF("MyFunction")])、MSM の $ZCALL ではその必要がありません (例 :
[$ZCALL(MyFunction)])。
$ZCHAR
Caché での機能 : 使用できません
目的 : Unicode 文字コードのリストに基づいて、文字列を返します。
$ZCRC
Caché での機能 : $ZCRC
目的 : 計算されたチェックサムまたは冗長巡回検査を返します。
メモ : Caché では、Type 引数が必要です。
Caché では、32 ビット CRC 計算はサポートされません。
56 MSM から Caché への変換ガイド
関数
$ZCREATEOBJECT
Caché での機能 : SET
目的 : 新規にインスタンス化されたオブジェクトへのオブジェクト参照を返します。
メモ : Caché ObjectScript では、以下のようなネイティブ SET コマンドを使用します。
Set var=##class(Car).%New()
$ZDATE
Caché での機能 : $ZDATE
目的 : $HOROLOG 日付に基づいて、外部の日付値を返します。
メモ : Caché は、0 未満および 2980013 を超える $H 値に対して、<VALUE OUT OF
RANGE> エラーを返します。MSM では範囲外の日付に対して M エラーは生成されませ
んが、0 未満および 94598 を超える $H 値に対して日付が無効であることが報告されます。
$ZDEVICE
Caché での機能 : 完全に対応するものはありません
目的 : 内部デバイス ID に基づいて、実際のデバイス名が返されます。
メモ : Caché の連携ターミナルの使用により、特殊変数 $ZIO には、ターミナル・サーバ・
アドレスと仮想ポート番号を含むTELNET および LAT ターミナル情報が含まれます。詳細
は、"Caché システム管理ガイド" を参照してください。
$ZGETOBJECT
Caché での機能 : SET
目的 : データベース・オブジェクトを取得し、インスタンス化されたオブジェクトへのオブジェ
クト参照を返します。
メモ : Caché ObjectScript では、以下のようなネイティブ SET コマンドを使用します。
Set var=##class(Car).%Open(OREF)
$ZHL
Caché での機能 : $ZDATE、$ZTIME、$ZDT
目的 : $HOROLOG 日付に基づいて、外部の日付または時刻値を返します。
メモ : 日付の変換には $ZDATE、時刻の変換には $ZTIME を使用します。また、両方を
変換するには $ZDT を使用します。
$ZOBJREFERENCE
Caché での機能 : 使用できません
MSM から Caché への変換ガイド 57
M 言語の違い
目的 : 式がオブジェクトを参照しているかどうか、および 2 つの式が同じオブジェクトを参
照しているかどうかを識別します。
$ZOS
Caché での機能 : $ZF(-1)、$ZSEARCH、OPEN、^%CLI
目的 : M 内から、一般的に使用されるホスト OS 関数を呼び出します。
$ZPOSITION
Caché での機能 : 使用できません
目的 : 出力デバイスでフィールドに収まる文字列の位置の数を返します。
$ZUCI
Caché での機能 : 完全に対応するものはありません
目的 : UCI 内部番号または外部名を返します。
メモ : Caché では、現在のネームスペースを返すのに $ZNSPACE または $ZU(5) を使用
します。
$ZVERIFY
Caché での機能 : 完全に対応するものはありません
目的 : データベースの論理構造内で、存在する場合は、エラー文字列を返します。
メモ : Caché では、データベース・ラベルの検証に $ZU(36)、データベースのヘッダ情報
の検証に $ZU(37) を使用します。
$ZWIDTH
Caché での機能 : 使用できません
目的 : 文字列が出力デバイス上で表示された場合に、その文字列が占める幅を返します。
B.5 プリプロセッサ指示語
#comment
Caché での機能 : 完全に対応するものはありません
目的 : 生成されたコードに対し、マクロを含む事前拡張コード行のコメントとしての挿入を
有効にします。
58 MSM から Caché への変換ガイド
プリプロセッサ指示語
メモ : Caché では、#show を使用して、生成された .INT コード内での .INC コードからの
コメントの挿入を可能にできます。
#defarray
Caché での機能 : 使用できません
目的 : 配列の参照に使用されるマクロを定義します。
#deflabel
Caché での機能 : 使用できません
目的 : 一意のローカル・ラベルまたはローカル変数を定義し、接頭語が直接使用されてい
るのでない限り、ルーチン内で一意であることが保証されます。
#include
Caché での機能 : #include
目的 : 任意のルーチン内にソース・コードを含めます。
メモ : Caché では、#include は .INC コードの参照にのみ使用できます。
#library
Caché での機能 : 使用できません
目的 : ライブラリ・ファイルへのパスを指定します。
#makelib
Caché での機能 : 使用できません
目的 : マクロ・ライブラリを生成します。
#nocomment
Caché での機能 : 完全に対応するものはありません
目的 : 未処理のソース・コード行のコメントとしての挿入を停止します。
メモ : Caché では、#noshow を使用して、生成された .INT コード内で .INC コードからの
コメントを除外できます。
#noroutine
Caché での機能 : 使用できません
目的 : M ルーチンが生成されないようにします。
MSM から Caché への変換ガイド 59
M 言語の違い
#prefix
Caché での機能 : 使用できません
目的 : マクロ参照を識別するのに使用される接頭語を定義します。
#routine
Caché での機能 : 使用できません
目的 : 生成されるルーチンの名前を指定します。
#undefine
Caché での機能 : #undef
目的 : マクロ定義を削除します。
メモ : Caché では、すべての #undefine 文を #undef に変更する必要があります。
#updlib
Caché での機能 : 使用できません
目的 : マクロ・ライブラリを更新します。
#x
Caché での機能 : 使用できません
目的 : プリプロセス中に M コードを実行します。
B.6 特殊変数
$DEVICE
Caché での機能 : $DEVICE
目的 : 最後の入出力処理が成功したかどうかを示します。
メモ : Caché では、プログラム的に $DEVICE を $ZU(96,,5,"String") に変更しない限り、
入出力処理が成功したことを示す NULL 文字列が常に返されます。例えば、次の Caché
コードは $DEVICE を "Read Timed Out" と同等に設定します。
If $za\2#2
Set x=$ZU(96,5,"Read Timed Out")
$ECODE
Caché での機能 : $ECODE
60 MSM から Caché への変換ガイド
特殊変数
目的 : アプリケーションで発生したエラーのリストを返します。
メモ : MSM と Caché の $ECODE は概念的には同じですが、Caché では、ZSYNTAX、
ZNOROUTINE、ZDISKHARD などの Caché 固有のエラー文字列を使用します。
$IO
Caché での機能 : $IO
目的 : 現在アクティブなデバイスを含みます。
メモ : MSM は $IO を内部デバイス番号として表示しますが、Caché ではデバイスの種類
のヘッダと共に、実際のデバイス名を使用します。例えば、Caché ではプリンタは以下のよ
うになります。
|PRN|\\salesserver\printer1
MSM のようなデバイスでは、System Configuration ウィザードを使用して、デバイスの数値
エイリアスを作成する必要があります。
$JOB
Caché での機能 : $JOB
目的 : 現在のプロセスのジョブ番号を含みます。
メモ : Caché の $JOB 値は OS レベルでプロセスの PID (プロセス識別) 番号に対応する
のに対し、MSM の $JOB 値は MSM 固有の番号になります。
$PRINCIPAL
Caché での機能 : $PRINCIPAL
目的 : ジョブの主デバイスを含みます。
メモ : MSM は $PRINCIPAL を内部デバイス番号として表示しますが、Caché ではデバイ
スの種類のヘッダと共に、実際のデバイス名を使用します。例えば、Caché ではユーザ・ロ
グインは以下のようになります。
|TNT|192.9.204.64:1097|316
この場合、|TNT| は TELNET デバイスを指定し、192.9.204.64 は TERMINAL サーバ IP、
1097 は仮想ポート番号、316 は OS レベルのプロセス ID を表します。
$SYSTEM
Caché での機能 : 完全に対応するものはありません
目的 : MSM は次の 3 つの情報を返すのに $SYS を使用します。M ユーザ・グループ番
号 (43)、MSM ライセンスからのシリアル番号、および現在の M インスタンスの固有の番号
です。
MSM から Caché への変換ガイド 61
M 言語の違い
メモ : 関連する関数 :
$ZU(110) は Caché をホストするマシンのホスト名を返します。
$ZU(200.3) は Caché の注文番号を返します。
$ZU(200,4) は Caché のシリアル番号を返します。
$ZU(200,8) は顧客名を返します。
$TRESTART
Caché での機能 : 実装されていません
目的 : トランザクション開始以降に発生したトランザクションの再開の数を示します。
$ZB
Caché での機能: $ZB、$ZCHILD
目的 : 現在のデバイスに関するデバイス固有の情報を返します。JOB コマンドとあわせて
使用されたときMSM の $ZB はジョブ起動プロセスの PID を返します。
メモ : Caché でこの機能を使用するには、$ZCHILD を使用します。
$ZC
Caché での機能 : 実装されていません
目的 : 現在のデバイスに関するデバイス固有の情報を含みます。
メモ : Caché では、コンテキストによっては、$ZC は $ZCHILD 特殊変数と $ZCYC 関数の
両方を表すのに使用されます。
$ZERROR
Caché での機能 : $ZERROR
目的 : アプリケーションまたはプログラマにより、最近生成されたエラー・メッセージのテキ
ストを含みます。
メモ : Caché では、Caché 固有のエラー・テキストが報告されます。これには、MSM のエ
ラー・テキストに対応するものとしないものがあります。
$ZLEVEL
Caché での機能 : 完全に対応するものはありません
目的 : 現在の入れ子レベルを示す番号を含みます。
メモ : $STACK を使用します。
62 MSM から Caché への変換ガイド
C
システム・アーキテクチャの比較
パラメータ
MSM (最大) 値
Caché (最大) 値
データベース・ファイル
名
任意の有効なファイル名
CACHE.DAT / CACHE.EXT
データベース・サイズ
16 GB
32 TB
ルーチン・ソース・コード
のサイズ
スタックおよびパーティションの
サイズに応じ、最小 200 KB。
ソース・コードに制限はありませ
んが、オブジェクト・コードのサイ
ズは 32 KB までに制限されま
す。
小数点以下の数値の精
度
15 桁
17 桁
ユーザ・パーティション・
サイズ
16 MB
16 MB
フレームスタック・サイ
ズ
256 KB
64 KB
バッファ・サイズ
グローバル・バッファとルーチン・
バッファ共に 1 KB
グローバル : 2 KB および 8 KB
ルーチン : 32 KB(64 KB Unicode)
MSM から Caché への変換ガイド 63
システム・アーキテクチャの比較
パラメータ
MSM (最大) 値
Caché (最大) 値
バッファ数
2047 MB (1 KB のバッファ)
32 GB+ (2 KB と 8 KB のグロー
バル・バッファ)
MSM はグローバル・バッファと
ルーチン・バッファの両方に単一
のバッファ・プールを使用し、構
成されたメモリ・プール内に収ま
るだけのバッファを許可します。
ルーチン・バッファに制限はあり
ません。
ローカル変数、グロー
バル、およびルーチン
の名前の長さ
8 文字
31 文字
添え字の長さ
グローバル : 255 バイト
255/512 バイト
ローカル変数 :システム式スタッ
クのサイズ (下のメモを参照して
ください)
8 KB のデータベースでは、
Caché は最大 255 文字までの
添え字の長さがサポートされ、
すべての添え字の合計長は 512
文字までになります。
グローバル: 127
グローバル: 127
ローカル変数 :システム式スタッ
クのサイズ (下のメモを参照して
ください)
ローカル変数: 129
グローバル : 511 バイト
グローバル変数とローカル変数
共に 32 KB
添え字レベルの数
データ長
ローカル変数 : システム式ス
タックのサイズ (下のメモを参照
してください)
MSM では、MSM のシステム式スタックが処理できる最長の添え字
の長さ、最大の添え字レベル数、また最長のローカル変数のデー
タ長が許可されます。これらの値は、通常 Caché では低くなります
が、使用可能なデータ長だけは Caché での方が長くなります。
64 MSM から Caché への変換ガイド