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

$ZSEEK (ObjectScript)

現在のシーケンシャル・ファイルに新しいオフセットを確立します。

Synopsis

$ZSEEK(offset,mode)

引数

引数 説明
offset 現在のファイルのオフセット (文字数単位)。整数で指定します。ゼロ、正の整数、または負の整数を指定できます。
mode オプション — オフセットの相対位置を決定する整数値。0 = 先頭、1 = 現在位置、2 = 末尾。既定は 0 です。

概要

$ZSEEK は、現在のデバイスに新しい offset を設定します。現在のデバイスは、シーケンシャル・ファイルである必要があります。現在のデバイスがシーケンシャル・ファイルではない場合、$ZSEEK は <FUNCTION> エラーを発行します。

mode 引数は、offset の基点にするポイント (先頭、現在位置、または末尾) を決定します。

$ZSEEK は、オフセットを実行した後にファイル内での現在位置を返します。引数なしの $ZSEEK は、オフセットを実行せずにファイル内での現在位置を返します。

$ZSEEK は、デバイスがシーケンシャル・ファイルの場合にのみ使用できます。ターミナルから、または開いているシーケンシャル・ファイルがない場合に $ZSEEK を呼び出すと、<FUNCTION> エラーが返されます。現在のデバイスを特に設定していない場合、$ZSEEK はデバイスが主デバイスであると見なします。

$ZIO 特殊変数は、現在のファイルのパス名を含みます。$ZPOS 特殊変数は、現在のファイル位置を含みます。これは、$ZSEEK(0,1) または $ZSEEK() (引数なし) で返される値と同じです。

引数

offset

mode によって設定されたポイントからのオフセット (文字数)。これは位置ではなくオフセットです。したがって、ファイルの先頭からのオフセット 0 は、位置 1 (ファイルの開始) になります。オフセット 1 は位置 2 で、ファイルの 2 番目の文字になります。

オフセットは、ファイルの末尾より後の位置にすることができます。$ZSEEK は、指定したオフセットに対して空白を入力します。

mode が 1 または 2 の場合、オフセットを負の数字にすることができます。ファイルの先頭より前の位置になる負の数字を指定すると、<FUNCTION> エラーが返されます。

mode

有効な値は、以下のとおりです。

意味
0 オフセットは、ファイルの最初を基準とします (絶対位置)
1 オフセットは、現在の位置を基準とします
2 オフセットは、ファイルの最後を基準とします

mode 値を指定しない場合、$ZSEEK はモード値を 0 であると想定します。

以下の Windows の例では、シーケンシャル・ファイルを開いて "AAA" を書き込み、$ZSEEK(10) で、ファイルの先頭から 10 文字の位置にオフセットを設定します (7 個の空白を入力します)。続いて、その位置に "BBB" を書き込んでから、引数なしの $ZSEEK() によって、ファイルの先頭からの結果のオフセット (この場合は 13) を返します。

  SET $TEST=0
  SET myfile="C:\InterSystems\IRIS\mgr\user\zseektestfile.txt"
  OPEN myfile:("WNS"):10
    IF $TEST=0 {WRITE "OPEN failed" RETURN}
  USE myfile
  WRITE "AAA"
  SET rtn=$ZSEEK(10) 
  WRITE "BBB"
  SET rtnend=$ZSEEK()
  CLOSE myfile
  WRITE "set offset:",rtn," end position:",rtnend

以下の Windows の例では、シーケンシャル・ファイルに文字 "A" を 10 回書き込み、そのたびに、文字間に挿入する空白スペースを増やします。ここでは、$ZPOS を使用して、現在のファイル位置を判断しています。

  SET $TEST=0
  SET myfile="C:\InterSystems\IRIS\mgr\user\zseektestfile2.txt"
  OPEN myfile:("WNS"):10
    IF $TEST=0 {WRITE "OPEN failed" RETURN}
  USE myfile
  FOR i=1:1:10 {WRITE "A" SET rtn=$ZSEEK($ZPOS+i,0)}
  CLOSE myfile

関連項目

FeedbackOpens in a new tab