相対位置の指定
相対位置は、サポートされる関数の start 引数の整数の代わりとして、<type><offset> の形式の特殊文字ストリングを使用して指定します。相対位置は、以下の方法で指定できます。
- IPx
- 開始位置は、現行の INPOS (<type> の中の「I」で示す) から取られ、x で指定された正 (<type> の中の「P」で示す) のバイト数だけオフセットされます。例えば、現行の INPOS が 20 で、IP5 の start 引数を指定した場合、開始位置は 25 となります。
- INx
- 開始位置は、現行の INPOS から取られ、x で指定された負 (<type> の「N」で示す) のバイト数だけオフセットされます。例えば、現行の INPOS が 20 で、IN5 の start 引数を指定した場合、開始位置は 15 となります。
- OPx
- 開始位置は、現行の OUTPOS (<type> の「O」で示す) から取られ、x で指定された正のバイト数だけオフセットされます。例えば、現行の OUTPOS が 20 で、OP5 の start 引数を指定した場合、開始位置は 25 となります。
- ONx
- 開始位置は、現行の OUTPOS から取られ、x で指定された負のバイト数だけオフセットされます。例えば、現行の OUTPOS が 20 で、ON5 の start 引数を指定した場合、開始位置は 15 となります。
開始引数のターゲットが入力レコードであることが明白な 場合、IPx および INx は、Px または Nx に省略できます。
引数のターゲットが出力レコードであることが明白な場合、OPx および ONx は、Px または Nx に省略できます。
引数のターゲットが変数であることが明白な場合、IPx、INx、OPx、ONx を使用して、現在の相対変数位置を示すことができます。これらは、Px または Nx に省略できます。
例えば、FLD(start_column,length,type)
は入力レコードから読み取るので、start_column を IP5 と指定しても P5 と指定しても同じ結果が得られます。一方、OUTPOS の現行値を使用して入力レコードの start_column を指定したい場合には、完全な <type>、つまり OP5 と指定する必要があります。