DRS (ディスク・レコード走査)

目的
ディスクのデータの検索を行います。
使用上の注意
この機能を使用して、ユーザーの検索基準に合致するデータを含んでいる物理ディスク・レコードを探し出します。走査範囲は、トラックの範囲として指定する必要があります。
特定のストリングまたはファイルの終わりレコードを探して検索することができます。検索ストリングは 50 文字までで、以下のものが許されます。
  • 文字ストリング。このストリングにはブランクまたはコンマを入れることはできません。大/小文字の区別は無視されます。
  • 引用符で囲まれた文字ストリング。このストリングには、ブランクおよびコンマを入れることができ、完全に一致しなければなりません (大/小文字の区別を含む)。
  • 16 進数ストリング。例えば、X'04'。

File Manager は、マッチングするレコードをすべて 16 進ダンプ形式で印刷し、端末上にレコードの所在位置とストリングの位置をリストします。

オプション
レコード長を指定して、検索の前に物理レコードを非ブロック化します。検索は、レコードのキーまたはデータの部分に適用することができます。データの中のあらゆる場所、ユーザーが指定する位置、または指定された相対位置に限り、検索を要求することができます。
以下のように、種々の SET 処理オプションを使用して、 印刷出力を制御することができます。
  • SET PRINTOUT は、印刷出力の宛先を定義します。PRINTOUT=SYSOUT に設定した場合、PB (印刷ブラウズ) 機能を使用して、累積出力をブラウズすることができます。
  • SET RECLIMIT は、印刷される各レコードのバイト数を制御します。
  • 印刷出力の形式は、SET PAGESIZE、SET PRINTLEN および SET PRTTRANS の設定値によっても異なります。
  • SET DUMP を使用して、ダンプ形式を指定します。
関連機能
DP
物理ディスク・レコードを印刷します。
FCH
データを検索または変更します。
1. Syntax

1 DRS
1 INPUT=ddname
1 DSNAME=dsname?VOLSER=volser
1 VOLSER=volser
2? BEGIN=begin
2? END=end
2 SCANTYPE=scantype
2? RECSIZE=recsize
1! SCANPOS=1
1 SCANPOS=scanpos
3? SCANARG=scanarg
begin
以下のいずれかの形式による開始位置。
cylhd
終わりの 2 桁はヘッドを表し、その他の桁はシリンダーを表しています (CKD)。
Rnnnnnn
トラック番号を表しています (CKD)。
*
データ・セットの最初のトラック (デフォルト)。

SET CYLHD 処理オプションの値に応じて、絶対ディスク位置またはデータ・セット内の相対ディスク位置を指定します。

ddname
DD または TSO ALLOC ステートメントを参照します。
dsname
ディスク・データ・セット名。
end
次のいずれかの形式での終了位置。
cylhd
終わりの 2 桁はヘッドを表し、その他の桁はシリンダーを表しています (CKD)。
Rnnnnnn
トラック番号を表しています (CKD)。
Nnnnnnnn
処理すべきトラック数 (CKD)。
*
データ・セットの最後のトラック (デフォルト)。

SET CYLHD 処理オプションの値に応じて、絶対ディスク位置またはデータ・セット内の相対ディスク位置を指定します。

recsize
それぞれの物理レコードを論理レコードに非ブロック化するときに使用する論理レコード・サイズ。最大は 65 535 です。物理ブロック・サイズは必ずしも recsize の倍数である必要はありません。
scanarg
検索するストリング。ストリングは 50 文字までで、以下のものが許されます。
  • 文字ストリング。このストリングにはブランクまたはコンマを入れることはできません。大/小文字の区別は無視されます。
  • 引用符で囲まれた文字ストリング。このストリングには、ブランクおよびコンマを入れることができます。ストリングは完全に一致しなければなりません (大/小文字の区別を含む)。
  • 「X」と、その後に引用符で囲まれた 16 進数ストリング (X'C1C2')、または、引用符で囲まれた 16 進数ストリングと、その後に「X」('C1C2'X)。

scanarg パラメーターは、scantype が E でなければ、必須です。

scanpos
レコード内で検索が開始されるオフセット (バイト位置)。デフォルトは 1です。
scantype
次のいずれか:
D
scanpos で指定したレコード内の位置のみ でデータ・フィールドを走査します。
DP
scanpos で指定したレコードの位置から開始 して データ・フィールドを走査します。
K
scanpos で指定したレコードの位置のみ で 「Key (キー)」フィールドを走査します (CKD ディスクのみ)。
KP
scanpos で指定したレコードの位置から開始 して、 「Key (キー)」フィールドを走査します (CKD ディスクのみ)。
E
ファイルの終わりレコードを走査します。
volser
非カタログ・データ・セットのボリューム通し番号。
//DRS JOB (acct),'name'  Disk Record Scan
//*
//FMBAT    PROC
//FMBAT    EXEC PGM=FILEMGR
//STEPLIB  DD DSN=FMN.SFMNMOD1,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//         PEND
//*
//DELETE   EXEC PGM=IEFBR14
//SYSUT2   DD DSN=FMNUSER.TEMP.SEARCH.FILE,
//            DISP=(MOD,DELETE),
//            UNIT=SYSALLDA,
//            SPACE=(TRK,(3,1),RLSE),
//            RECFM=FB,LRECL=80,BLKSIZE=24000
//*
//MAKEFILE EXEC PGM=IEBGENER
//SYSIN    DD *
/*
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD *
Andrew Apple
Ted Dexter
Grant Smith
Keith Sampson
Graham Prestcott
John Laws
Bill McCork
Liz Childs
/*
//SYSUT2   DD DSN=FMNUSER.TEMP.SEARCH.FILE,
//            DISP=(,CATLG),
//            UNIT=SYSALLDA,
//            SPACE=(TRK,(3,1),RLSE),
//            RECFM=FB,LRECL=80,BLKSIZE=24000
//*
//FILEMGR  EXEC FMBAT
//SYSPRINT DD SYSOUT=*
//DISK     DD DSN=FMNUSER.TEMP.SEARCH.FILE,
//            DISP=SHR
//SYSIN    DD *
$$FILEM DRS INPUT=DISK,BEGIN=*,END=*,
$$FILEM  SCANTYPE=DP,SCANARG='Laws'
$$FILEM EOJ
/*