Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

VIEW (ObjectScript)

データベース・ブロックの読み取りや書き込み、メモリ内のデータの変更を行います。

Synopsis

VIEW:pc viewargument
V:pc viewargument

viewargument は以下のいずれかになります。

block
offset:mode:length:newvalue

引数

引数 説明
pc オプション — 後置条件式
block 整数として指定されるブロック位置。
offset バイト単位で表される、mode で指定されたメモリ領域内のベース・アドレスからのオフセット。
mode 修正されるデータを計算するために使用される、ベース・アドレスを含むメモリ領域。
length 修正されるデータの長さ。
newvalue メモリの場所に格納される置き換え値。

概要

VIEW コマンドは、データベース・ブロックの読み取りや書き込み、メモリ内の場所への書き込みを行います。VIEW には以下の 2 つの引数形式があります。

  • VIEW block は、InterSystems IRIS データベースとメモリ間でデータを移動させます。

  • VIEWoffset:mode:length:newvalue は、offsetmode、および length で指定されるメモリ位置に newvalue を配置します。

$VIEW 関数を使用して、メモリ内のデータを調べることができます。

Note:

VIEW コマンドは使用しないことをお勧めします。どのような環境で使用されても、メモリ構造を破壊する可能性があります。

VIEW の使用には注意が必要

VIEW コマンドの使用には注意が必要です。これは通常、デバッグや InterSystems IRIS データベース、InterSystems IRIS システム情報の修復に使用されます。VIEW の使用法を誤ると、メモリや InterSystems IRIS データベースは、簡単に破壊されます。

VIEW の使用の制限

VIEW コマンドは、制限付きのシステム機能です。呼び出されるコードが IRISSYS データベース内にあるので、コマンドは保護されます。詳細は、"特別な機能" を参照してください。

引数

pc

オプションの後置条件式。InterSystems IRIS は、後置条件式が True (0 以外の数値に評価される) の場合にコマンドを実行します。InterSystems IRIS は、後置条件式が False (0 に評価される) の場合はコマンドを実行しません。詳細は、"ObjectScript の使用法" の "コマンド後置条件式" を参照してください。

block

整数として指定されるブロック位置。block が正の整数の場合、VIEW はその番号ブロックを表示バッファに読み取ります。block が負の整数の場合、VIEW は現在の表示バッファのブロックをそのブロック・アドレスに書き込みます。blockoffset:mode:length:newvalue 引数は、相互排他的です。

ブロックが既にメモリ・バッファ内にある場合は、バッファ内の現在のコンテンツがコピーされます。

ブロック位置 0 は有効な位置ではありません。VIEW 0 を指定しようとすると、<BLOCKNUMBER> エラーが返されます。

offset

バイト単位で表される、mode で指定されたメモリ領域内のベース・アドレスからのオフセット。

mode

修正されるデータを計算するために使用される、ベース・アドレスを含むメモリ領域。可能な値に関する説明は、"メモリ内のデータの修正" を参照してください。

length

修正されるデータの長さ。

バイト数を整数 1 ~ 4 または 1 ~ 8 で指定します。文字 C または P を使用して、現在のプラットフォームのアドレス・フィールド (ポインタ) のサイズを指定することもできます。

newvalue が文字列を定義している場合は、1 からカウントされる負の整数でバイト数を指定します。newvalue の長さがこの数を上回る場合、InterSystems IRIS は超えた分の文字を無視します。newvalue の長さがこの数を下回る場合、InterSystems IRIS は与えられた文字を保存し、残り部分のメモリ位置は変更されません。

逆順でバイト値を保管 (最低位バイトを最低アドレスに置く) するためには、文字 O を長さを示す数字に追加し、両方を二重引用符で囲みます。

newvalue

メモリの場所に格納される置き換え値

以下の例は、InterSystems IRIS データベースの 6 番目のブロックを表示バッファに読み取ります。

   VIEW 6

以下の例は、おそらくデータが修正された後に、表示バッファを InterSystems IRIS データベースの元の 6 番目のブロックに書き込みます。

   VIEW -6

以下の例は、文字列 " WXYZ" を表示バッファのオフセット ADDR から 4 バイト目にコピーします。$VIEW(ADDR,0,-4) 式の結果は、値 "WXYZ" になります。

   VIEW ADDR:0:-4:"WXYZ"

表示バッファ

データベース・バッファの読み取り、および書き込みに使用された場合、VIEW コマンドは、表示バッファ (デバイス 63) で使用されます。表示バッファは、特殊なメモリ領域です。 VIEW 操作を実行する前に、開いておく必要があります。

表示バッファを (OPEN コマンドを使用して) 開くときは、その表示バッファに関連付けられる InterSystems IRIS データベース (IRIS.DAT) を指定します。VIEW コマンドを使用して、次に InterSystems IRIS データベースから個々のブロックを表示バッファに読み取ることができます。

ブロックを表示バッファに読み取った後、$VIEW 関数を使用してデータを調べることができます。または、VIEW コマンドを使用して、データを修正できます。データを修正した場合は、もう一度 VIEW コマンドを使用して、修正済みのブロックを InterSystems IRIS データベースに書き込むことができます。

InterSystems IRIS データベースでのデータの読み取りや書き込み

VIEW を使用して、InterSystems IRIS データベースのデータ・ブロックを読み取ったり書き込んだりする前に、まず、OPEN コマンドを使用して表示バッファを開きます。

  1. 表示バッファを開きます。表示バッファは、デバイス番号 63 として指定されています。したがって、コマンドは以下のとおりです。

       OPEN 63:location

    location には、表示バッファに関連付けられる IRIS.DAT ファイルを含むネームスペースを指定します。location は、実装タイプごとに異なります。OPEN 63 コマンドは、InterSystems IRIS データベースで使用されるブロック・サイズと等しいサイズのシステム・メモリの領域を割り当てることによって、表示バッファを作成します。

  2. VIEW block 形式を使用して、関連付けられた InterSystems IRIS データベースからブロックを読み取ります。block には、正の整数を指定します。例えば以下のようになります。

       VIEW 4

    この例では、InterSystems IRIS データベースの 4 番目のブロックを表示バッファに読み取ります。表示バッファのサイズは、InterSystems IRIS データベースで使用されるブロック・サイズと等しいので、表示バッファには、一度に 1 ブロックしか含めることができません。後に続くブロックを読み取るときには、毎回新しいブロックが現在のブロックを上書きします。InterSystems IRIS データベースからいずれのブロックを読み取るかを決定するには、ファイルの構造に精通していなければなりません。

  3. $VIEW 関数でブロックのデータを検証するか、VIEW コマンドでデータを修正します。

  4. 表示バッファのデータの変更を行った場合は、それを InterSystems IRIS データベースに書き込みます。データを書き込むには、VIEW block 形式を使用しますが、block には、負の整数を指定します。ブロック番号は通常、表示バッファ内の現在のブロック番号と一致しますが、必ずしもその必要はありません。指定されたブロック番号によって、表示バッファ内のブロックで置き換える (上書きする) ファイル内のブロックが識別されます。例えば、VIEW -5 の場合、InterSystems IRIS データベースの 5 番目のブロックが表示バッファの現在のブロックと置き換えられます。

  5. CLOSE 63 を使用して、表示バッファを閉じます。

InterSystems IRIS データベース間でのブロック転送

表示バッファを開いても、InterSystems IRIS は自動的に既存のブロックを消去しません。したがって、以下の手順で、InterSystems IRIS データベースから他の InterSystems IRIS データベースにデータ・ブロックを転送することができます。

  1. OPEN 63 を使用して、最初の InterSystems IRIS データベースが含まれるネームスペースを指定します。

  2. VIEW を使用して、ファイルから目的のブロックを表示バッファに読み取ります。

  3. 必要に応じて、VIEW を使用して表示バッファ内のデータを修正します。

  4. OPEN 63 を再び使用して、2 番目の InterSystems IRIS データベースが含まれるネームスペースを指定します。

  5. VIEW を使用して、表示バッファから 2 番目の InterSystems IRIS データベースにブロックを書き込みます。

  6. CLOSE 63 を使用して表示バッファを閉じます。

メモリ内のデータの修正

InterSystems IRIS データベースからのデータの読み取りや書き込み以外に、VIEW コマンドは、表示バッファ内、または他のシステム・メモリ領域のメモリ内にあるデータを修正することができます。

データを修正するには、以下の形式を使用します。

VIEWoffset:mode:length:newvalue

4 つの引数すべてが必須です。

メモリ内の指定した場所に新しい値を格納することで、データを修正します。この場所は、mode で示されたベース・アドレスからのバイト・オフセットで指定されます。length 引数で、影響を受けるメモリの大きさを指定できます。

mode で利用可能な値は、以下のテーブルのとおりです。

モード メモリ管理領域 ベース・アドレス
n>0 プロセス n のアドレス空間。n は、そのプロセスに対する $JOB の値、プロセス ID (PID)。 0
0 表示バッファ 表示バッファの開始位置
-1 プロセスのパーティション パーティションの開始位置
-2 システム・テーブル システム・テーブルの開始位置
-3 プロセスのアドレス空間 0
-6 インターシステムズ用に確保  
-7 整合性の確認ユーティリティによってのみ使用 特殊。"高可用性ガイド" を参照してください。

関連項目

FeedbackOpens in a new tab