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?

M 言語の違い

MSM とネイティブ Caché モード間で異なる言語機能のみを以下に示します。

MSM では多数の言語機能のさまざまな省略形が許可されますが、Caché では、Caché ObjectScript リファレンス で記述される省略名のみが許可されます。

コマンド

BREAK

Caché での機能 : BREAKZBREAK

目的 : デバッガを起動します。

メモ : インタラクティブなデバッガではサポートされません。

ZGO は Caché ではサポートされません。代わりに引数のない GOTO を使用してください。

CLOSE

Caché での機能 : CLOSE

目的 : デバイスを閉じます。

メモ : MSM のような数値デバイスに対して数値エイリアスを定義すると、Caché ではそのデバイスをサポートします。OPEN の説明を参照してください。

DO

Caché での機能 : DO

目的 : ルーチンまたはコード・ブロックを実行します。

メモ : 角括弧 ( [] ) はルーチンではサポートされません。代わりに垂直バー ( || ) を使用してください。 また、MSM の UCI 値と VOL 値は、それぞれネームスペースとシステム値に変更する必要があります。または、ルーチンの拡張リファレンスを削除して、ネームスペース・ルーチン・マッピングを使用します (推奨)。

JOB

Caché での機能 : $ZCHILDJOB

目的 : 新規のバックグラウンド・プロセスを生成します。

メモ : ジョブ起動プロセスの PID を返すには、MSM では $ZB を使用しますが、Caché では $ZCHILD を使用します。

新規のパーティション・サイズを指定するための 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")

MSM ジョブと Caché ジョブの相違点は以下のとおりです。

  • Caché (または DSM-DDP システム) に対してジョブを起動する場合、パラメータを渡すことはできません。ネットワーク内で渡されるパラメータは、MSMV3 回線オプションのみです。渡される値をいずれかのシステムのグローバルに設定し、JOB されたプロセスでこれらの値を取得する必要があります。

  • MSM から Caché に対してジョブ起動する場合、既定のデータベースでのみジョブを開始できます。つまり、キャッシュでジョブを開始する MSM の JOB コマンドにネームスペースを指定できません。開始後、Caché システムのジョブは、具体的に (ZNAMESPACE を) マッピングを使用するネームスペースに変更する必要があります。

NEW

Caché での機能 : NEW

目的 : 1 つ以上のローカル変数をスタックします。

メモ : Caché では、NEW コマンドの引数として $TEST や $ZREFERENCE は許可していません。

OPEN

Caché での機能 : OPEN

目的 : デバイスを開きます。

メモ : Caché でのデバイスは、そのデバイスのシステム構成ユーティリティで数値エイリアスが指定されていない限り、OS レベルのデバイス名 (/dev/tty3a など) に対応します。 MSM のデバイス構造をエミュレートするには、数値エイリアスを使用する必要があります。

TRESTART

Caché での機能 : 実装されていません。

目的 : 現在のトランザクションを再開します。

TSTART

Caché での機能 : TSTART

目的 : トランザクションの開始を表します。

メモ : Caché は、再開変数やトランザクション・パラメータをサポートしていません。

USE

Caché での機能 : USE

目的 : デバイスを使用し、$IO をこの現在のデバイスに設定します。

メモ : MSM のような数値デバイスに対して数値エイリアスを定義すると、Caché ではそのデバイスをサポートします。OPEN の説明を参照してください。

VIEW

Caché での機能 : VIEW

目的 : ディスク内のブロックの読み取りや書き込み、メモリ内に場所の書き込みを行います。

メモ : VIEW コマンドは Caché のディスク構造およびメモリ構造に従う必要があります。詳細は該当のドキュメントを参照してください。

WRITE

Caché での機能 : WRITE

目的 : 現在のデバイスに出力を送信します。

メモ : ニーモニック空間を Caché 用に再記述する必要があります。

ZCALL

Caché での機能 : $ZF

目的 : 外部プロシージャを呼び出します。

ZFLUSH

Caché での機能 : 実装されていません。

目的 : 内部ディスクのバッファ・キャッシュから、すべてのディスク・ブロックをフラッシュします。

ZGO

Caché での機能 : 引数のない GOTO

目的 : BREAK コマンドの後で、プログラムの実行を再開します。

ZHOROLOG

Caché での機能 : %SYSTEM.ProcessOpens in a new tab FixedDate()Opens in a new tab メソッド。

目的 : 現在のプロセスに日付と時刻を設定します。

メモ : Caché の FixedDate() メソッドは、時刻ではなく、新しい日付値のみを許可します。

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

目的 : 変数にオブジェクト参照を割り当てます。

メモ : ObjectScript では、以下のようなネイティブ SET コマンドを使用します。

Set var=Car.Make
ZUSE

Caché での機能 : %Library.DeviceOpens in a new tab Broadcast()Opens in a new tab メソッドまたは %SYSTEM.ProcessOpens in a new tab Broadcast()Opens in a new tab メソッド。

目的 : すべてのデバイス (使用中の場合も含む) に対する書き込みアクセスを許可します。同報通信の説明を参照してください。

演算子

#

Caché での機能 : $ZHEX

目的 : 数値を 16 進数から 10 進数に変換します。

構造化システム変数

^$DEVICE

Caché での機能 : 実装されていません。

目的 : デバイスの存在、操作上の特性、および可用性に関する情報を提供します。

関数

$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"
$VIEW

Caché での機能 : $VIEW

目的 : メモリ位置のコンテンツを返します。

$ZASCII

Caché での機能 : $ASCII

目的 : 指定された文字の Unicode 文字コードを返します。

$ZBN

Caché での機能 : ありません。

目的 : ルーチンまたはグローバルの開始のブロック番号を返すか、ディスク・ブロックの割り当てまたは割り当て解除を行います。

$ZBname

Caché での機能 : $ZBIT<name>

目的 : ビット文字列に対する論理演算の実行で使用する関数の集合。

$ZCALL

Caché での機能 : $ZF

目的 : 外部プロシージャを呼び出し、値を返します。

メモ : Caché の $ZF では関数名を二重引用符で囲む必要がありますが (例 : [$ZF("MyFunction")])、MSM の $ZCALL ではその必要がありません (例 : [$ZCALL(MyFunction)])。

$ZCHAR

Caché での機能 : ありません。

目的 : Unicode 文字コードのリストに基づいて、文字列を返します。

$ZCRC

Caché での機能 : $ZCRC

目的 : 計算されたチェックサムまたは冗長巡回検査を返します。

$ZCREATEOBJECT

Caché での機能 : SET

目的 : 新規にインスタンス化されたオブジェクトへのオブジェクト参照を返します。

メモ : 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 に基づいて、実際のデバイス名が返されます。

メモ : ターミナル・デバイスでは、特殊変数 $ZIO に TELNET ポート番号とホスト IP アドレス、または LAT サーバ名とポート名が格納されます。ターミナル・デバイスの使用法の詳細は、"Caché 入出力デバイス・ガイド" で "入出力デバイスとコマンド" および "ターミナル入出力" の章を参照してください。

$ZGETOBJECT

Caché での機能 : SET

目的 : データベース・オブジェクトを取得し、インスタンス化したそのオブジェクトへのオブジェクト参照を返します。

メモ : ObjectScript では、以下のようなネイティブ SET コマンドを使用します。

Set var=##class(Car).%Open(OREF)
$ZHL

Caché での機能 : $ZDATE$ZTIME$ZDATETIME

目的 : $HOROLOG 日付に基づいて、外部の日付値または時刻値を返します。

メモ : 日付の変換には $ZDATE、時刻の変換には $ZTIME を使用します。また、両方を変換するには $ZDATETIME を使用します。

$ZOBJREFERENCE

Caché での機能 : ありません。

目的 : 式がオブジェクトを参照しているかどうか、および 2 つの式が同じオブジェクトを参照しているかどうかを識別します。

$ZOS

Caché での機能 : $ZF(-1)$ZSEARCHOPEN

目的 : M 内から、一般的に使用されるホスト OS 関数を呼び出します。

$ZPOSITION

Caché での機能 : ありません。

目的 : 出力デバイスでフィールドに収めることができる文字列の位置の数を返します。

$ZUCI

Caché での機能 : 完全に対応するものはありません。

目的 : UCI 内部番号または外部名を返します。

メモ : Caché で現在のネームスペースを返すには、$ZNSPACE または $NAMESPACE を使用します。

$ZVERIFY

Caché での機能 : ありません。

目的 : データベースの論理構造にエラーがある場合は、そのエラー文字列を返します。

$ZWIDTH

Caché での機能 : ありません。

目的 : 出力デバイスに文字列を表示したときにその文字列が占める幅を返します。

プリプロセッサ指示文

#comment

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 ルーチンが生成されないようにします。

#prefix

Caché での機能 : ありません。

目的 : マクロ参照の識別に使用する接頭語を定義します。

#routine

Caché での機能 : ありません。

目的 : 生成されるルーチンの名前を指定します。

#undefine

Caché での機能 : #undef

目的 : マクロ定義を削除します。

メモ : Caché では、すべての #undefine 文を #undef に変更する必要があります。

#updlib

Caché での機能 : ありません。

目的 : マクロ・ライブラリを更新します。

#x

Caché での機能 : ありません。

目的 : プリプロセス中に M コードを実行します。

特殊変数

$DEVICE

Caché での機能 : $DEVICE

目的 : 最後の入出力処理が成功したかどうかを示します。

メモ : Caché では、入出力処理が成功したことを示す NULL 文字列が必ず返されます。SET コマンドを使用すれば、$DEVICE に値を置くことができます。慣例により、この値は "standard_error,user_error,explanatory_text" の形式で 1 つの文字列として入出力処理の結果を説明します。

$ECODE

Caché での機能 : $ECODE

目的 : アプリケーションで発生したエラーのリストを返します。

メモ : MSM と Caché の $ECODE は概念的には同じですが、Caché では、ZSYNTAX、ZNOROUTINE、ZDISKHARD などの Caché 固有のエラー文字列を使用します。

$IO

Caché での機能 : $IO

目的 : 現在アクティブなデバイスを含みます。

メモ : MSM では $IO で内部デバイス番号を表現しますが、Caché では、デバイスの種類を示すヘッダを伴った実際のデバイス名を $IO として使用します。例えば、Caché ではプリンタは以下のようになります。

|PRN|\\salesserver\printer1

MSM のようなデバイスでは、System Configuration ウィザードを使用して、デバイスの数値エイリアスを作成する必要があります。

$JOB

Caché での機能 : $JOB

目的 : 現在のプロセスのジョブ番号を含みます。

メモ : Caché の $JOB 値は OS レベルでプロセスの PID (プロセス識別) 番号に対応するのに対し、MSM の $JOB 値は MSM 固有の番号になります。

$PRINCIPAL

Caché での機能 : $PRINCIPAL

目的 : ジョブの主デバイスを含みます。

メモ : MSM では $PRINCIPAL で内部デバイス番号を表現しますが、Caché では、デバイスの種類を示すヘッダを伴った実際のデバイス名を $PRINCIPAL として使用します。 例えば、Caché ではユーザ・ログインは以下のようになります。

|TNT|192.9.204.64:1097|316

この場合、|TNT| は TELNET デバイスを指定し、192.9.204.64 は TERMINAL サーバ IP、1097 は仮想ポート番号、316 は OS レベルのプロセス ID を表します。

$SYSTEM

Caché での機能 : 完全に対応するものはありません。

目的 : MSM では $SYSTEM を使用して、M ユーザ・グループ番号 (43)、MSM ライセンスのシリアル番号、および現在の M インスタンスの固有の番号を返します。

メモ : Caché のライセンス情報には、%SYSTEM.LicenseOpens in a new tab クラスのメソッドを通じてアクセスできます。

これらのメソッドは、特殊な $SYSTEM オブジェクトに実装されており、$SYSTEM.License.Method() 構文を使用することによりアクセスできます。

$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 を使用します。

FeedbackOpens in a new tab