VAR_OUT

1. Syntax

1  VAR_OUT ( name ,
1! 1
1 i_start
2  ,
1! 0
1 i_length
3  ,
1! 0
1 o_start
4  ,
1! i_length
1 o_length
5  ,
5?  pad
5  )

(FASTREXX プロシージャーで使用できます。)

注: 最後に指定された引数の後のコンマは省略可能です。

出力レコードを変数からのフィールドでオーバーレイします。出力レコードをリテラルでオーバーレイするための関数については OVLY_OUT を参照してください。ターゲット・フィールドの長さがソース・フィールド長を超過している場合、ソース・フィールドは pad 文字を使用して、指定した長さになるまで埋め込まれます。ターゲット・フィールド長がソース・フィールドより短い場合、ソース・フィールドの右側が切り捨てられます。また、正常に実行されると、OUTPOS の値も更新され、出力レコード内でオーバーレイされたフィールドの終わりから 1 バイト先の位置になります。

Returns
単一のブランク。
name
1 文字から 256 文字の変数 ID。変数名の突き合わせでは、大/小文字が区別されません。名前が検出されない場合、変数が作成され、現在の入力レコードを基に設定されます。
i_start
コピーされるフィールドの読み取りを開始する変数内の位置 (バイト単位)。以下のように指定できます。
絶対位置
正の整数である必要があります。デフォルト値は 1 です。
現行 INPOS からの相対位置
IPx または INx、または Px または Nx、または OPx または ONx として指定できます。正の整数になる必要があります。
i_length
ソース・フィールドの長さ (バイト数)。負でない整数でなければなりません。デフォルトは 0 です。i_length を省略するかゼロを指定した場合、i_start の位置から、変数の残りの部分が使用されます。このことは、現行の変数の終わりを超えてソース・フィールドが読み取られることになる値を指定した場合にも適用されます。
o_start
コピーされるフィールドのオーバーレイを開始する出力レコード内の位置 (バイト単位)。o_start を省略するかゼロを指定した場合、 フィールドは出力レコードの終わりに追加されます。o_start が現行の出力レコード長より大きい場合、レコードには現行レコード長から指定された start 位置まで、指定されるかデフォルト設定された pad 文字が埋め込まれます。以下のように指定できます。
絶対位置
正の整数である必要があります。デフォルト値は 1 です。
現行 INPOS からの相対位置
IPx または INx、または Px または Nx、または OPx または ONx として指定できます。正の整数になる必要があります。
現行 OUTPOS からの相対位置
OPx または ONx、あるいは Px または Nx として指定できます。正の整数になる必要があります。
o_length
ターゲット・フィールドの長さ (バイト数)。ソース・フィールドの 長さ (i_length) にデフォルト設定されます。値が 0 の場合、ターゲット・フィールド長は、i_length と残りの出力レコード長のうち、大きい方の値になります。0 が o_starto_length の両方に指定 された場合、i_length がターゲット長として使用されます。
pad
埋め込み文字。デフォルトは、File Manager システムの「Processing Options (処理オプション)」パネルで設定した埋め込み文字 (オンラインで処理している場合) か、または SET 機能で指定した埋め込み文字 (バッチ実行している場合) です。現在の埋め込み設定が OFF であるか、指定されていないと、デフォルトの埋め込み文字はブランクになります。

例 1

変数の桁 1 と 2 の文字を出力レコードの桁 3 と 4 にコピーします。

VAR_OUT(MYVAR,1,2,3,2)

例 2

変数の桁 11 と 12 の文字を出力レコードの終わりに追加し、2 つのブランクを加えます。
VAR_OUT(MYVAR,11,2,0,4,' ')

例 3

変数内で文字「AA」を検索し、これが検出された場合は、出力レコードの終わりにコピーします (OUTPOS がまだ出力レコードの終わりに設定されていると想定した場合)。

IF TESTC(MYVAR,'CU','AA') Then
/* when successful, updates variable position  to 12 */
 VAR_OUT(MYVAR,N2,2,P0,2)
/* copies from variable position - 2, appends to end of output record */