入力レコードの相対的位置付け
File Manager では、FASTREXX プログラムが入力レコードを検索して、結果の正常な検索位置を使用し、位置指定されたストリングからの固定オフセットで他のテストを実行できます。また、このタスクは、完全な REXX で REXX 変数および FASTREXX 以外の機能を使用して実行できます。ただし、FASTREXX で相対的位置付けを使用して行ったほうが、より効率的に実行できます。
File Manager は、内部の 現在位置
を入力バッファーで維持し、REXX 変数 INPOS の値を設定します。(注: REXX 変数を FASTREXX で使用することはできません。)
入力バッファーで現在位置を設定するには、関数 FLD_CO (フィールド包含) を使用します。検索操作が正常に行われると、現在位置は位置指定されたストリングの先頭バイトに設定されます。
FASTREXX 関数で入力または出力バッファーの位置が必要な場合は、いつでも入力バッファーの位置を参照できます。この位置は、正の位置に調整することも (例えば、P7 は現在位置に 7 バイトを加算したもの)、負の位置に調整することも (例えば、N2 は現在位置から 2 バイト減算したもの) できます。
例
%%DBG* (任意の先頭 2 文字と任意の後続文字が可能) などの名前でプログラムを実行する JCL ライブラリーのすべてのメンバーを印刷します。これがインプリメントされる方法は、JCL レコードに「EXEC PGM=」が含まれているか検査してから、「DBG」のプログラム名を相対位置で検査します。
FASTREXX:
If FLD_CO(1, 0, C, " EXEC ") ,
& FLD_CO(P4, 0, C, " PGM=") ,
& FLD(P7,3) = "DBG" Then
RETURN PROCESS MEMBERREXX:
P = Pos( " EXEC ", INREC, 1 )
If P = 0 Then RETURN
P = Pos( " PGM=", INREC, P )
If P = 0 Then RETURN
If Substr( INREC, P+7, 3 ) = "DBG" Then
RETURN PROCESS MEMBERDFSORT:
(実行できません。)