OVLY_OUT

1. Syntax

1  OVLY_OUT ( overlay ,
1! 0
1 start
2  ,
1! length(literal)
1 length
3  ,
3? !Ctype
3  ,
1 pad
4  )
注: 最後に指定された引数の後のコンマは省略可能です。

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

出力レコードをストリングでオーバーレイします。ターゲット・フィールドの長さがリテラルの長さを超えている場合、ターゲット・フィールドは埋め込み文字を使用して指定した長さになるよう埋め込みが行われます。ターゲット・フィールドの 長さがリテラルの長さより短い場合、以下のことが起こります。
  • 文字オーバーレイは右側が切り捨てられ、エラーは起こりません。例えば、OVLY_OUT('ABCD',1,2) は、「AB」をオーバーレイします。
  • 数値オーバーレイの切り捨ては、エラーとみなされます。例えば、OVLY_OUT(500000,1,2,'B') は、指定された値を 2 バイトの 2 進数フィールドに収めることができないので、失敗します。
また、正常に実行されると、OUTPOS の値も更新され、出力レコード内でオーバーレイされたフィールドの終わりから 1 バイト先の位置になります。
Returns
単一のブランク。
overlay
結果がストリングになる式で、start および length で指定された出力レコードの該当部分にオーバーレイされます。FASTREXX 処理に適したものとなるには、1 つの リテラル・ストリング、1 つのシンボル、またはブランクで区切られたシンボルかリテラル・ストリング (あるいはその両方) のシーケンス でなければなりません。
リテラルの最初の文字がアンパーサンドで、それに続くリテラルが既存の文字変数、数値変数、または TALLY リテラルと一致する場合 (突き合わせでは大/小文字が区別されません)、タイプに応じて変数値に置換されます。例えば、タイプが文字で数値または TALLY 値が参照されている場合、リテラルは、先行ゼロなしの表示形式の数値になります。タイプが 2 進、パック、またはゾーンの場合、変数値は 2 進数、パック数値、またはゾーン数値に変換されます。
注:
  1. 文字変数を数値に変換するときに、変換エラーが発生することがあります。
  2. 変数名が検出されない場合、ストリングはリテラルに解釈されます。
start
ストリングのオーバーレイを開始する出力レコード内の位置 (バイト単位)。start を省略した場合、 ゼロを指定した場合、または現在の出力レコードの長さ より 1 大きい値を指定した場合、 フィールドは出力レコードの終わりに追加されます。start が現行の出力レコード長 より大きい場合、レコードには、現行レコード長から 指定された開始位置まで、指定されるかデフォルト設定された埋め込み文字が埋め込まれます。以下のように指定できます。
絶対位置
出力データ・セットの最大長以下の、負ではない整数である必要があります。デフォルト値は 0 です。
現行 INPOS からの相対位置
IPx または INx として指定する必要があります。負以外の整数になる必要があります。
現行 OUTPOS からの相対位置
OPx または ONx、あるいは Px または Nx として指定できます。負以外の整数になる必要があります。
length
出力レコードのターゲット・フィールドの長さ (バイト数)。デフォルトは、以下のとおりです。
文字フィールド
デフォルトはリテラルの長さです。値が 0 の場合、ターゲット・フィールド長が、ソース (リテラル) 長および残りのレコード長より大きいことを示します。特に、start と length の両方に 0 を指定している場合、リテラルの長さがターゲットの長さとして使用されます。
パック 10 進数
前の関数によって入力レコードから判断された、最後にパックされた長さの値にデフォルト設定されます。例えば、次のようになります。
if FLD(1,P) = 2 then
OVLY_OUT('5',1,,P)
FLD 関数によって判断された値を使用して、パック 10 進数の長さがデフォルト設定されます。前にパック 10 進数の長さが計算されていない場合、長さエラーが発生し、プロシージャーは終了します。
type
出力レコードに書き込まれるリテラルのデータ・タイプ。
B
2 進数。リテラル・ストリングは正または負の整数を表している必要があり、符号付きの 2 の補数形式の 2 進数として出力フィールドに保管され、ターゲット・フィールドでは右寄せされます。長さは 2、4、または 8 でなければならず、省略はできません。
C
文字。これは、デフォルトです。
P
パック 10 進数。リテラル・ストリングは正または負の整数を表している必要があり、設定済みの正 ('c'x) および負 ('d'x) の符号標識を使用した符号付きパック 10 進数として、ターゲット・フィールドに右寄せで保管されます。長さは 1 から 16 の間である必要があります。
Z
ゾーン 10 進数 (文字以外の末尾符号が付いた COBOL 外部 10 進数)。リテラル・ストリングは正または負の整数を表している必要があり、出力フィールドに符号付きのゾーン 10 進数として保管されます。長さは 1 から 31 の間である必要があります。
pad
埋め込み文字。デフォルトは、File Manager の「Processing Option (処理オプション)」パネルで設定した埋め込み文字です。現在の埋め込み設定が OFF である場合、デフォルトの埋め込み文字はブランクになります。B、P、または Z などの数値タイプでは、数値フィールドを右寄せするために事前充てん文字が必要な場合、埋め込み文字は使用されません。この事前充てん文字は、常に、フィールド・タイプで必要な先行ゼロになります。

出力レコードを入力レコードからのフィールドでオーバーレイするための関数については FLD_OUT を参照してください。

例 1

出力レコードの列 1 と列 2 をアスタリスクに設定します。

  OVLY_OUT('**',1,2)

例 2

2 バイトのパック 10 進値 2 を出力レコードの終わりに追加します。

  OVLY_OUT(2,0,2,P)

例 3

入力レコードでリテラルを検索し、該当するリテラルの下位 2 バイトを出力レコード内の新規リテラルでオーバーレイします。

  If FLD_CO(1,,C,'AABB') Then
   OVLY_OUT('CC',IP2,2)