$ZSEEK (ObjectScript)
構文
$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