# 複数集信ファイル編集

複数集信の場合、ディスク容量不足などの理由で集信ファイルにデータを蓄積できない状態が発生すると、集信ファイルに蓄積途中のデータを残したまま終了します。その場合、集信ファイルと複数集信情報ファイルの整合性をとる必要があります。また、何らかの理由で再度データを受信する場合、前回分のデータの後に追加書きされるため、受信する前に前回分のデータを削除しなければなりません。

このような場合、複数集信ファイル編集プログラム（XRSTORE）を使用して、集信ファイルの整合性を簡単に確保できます。また、複数集信情報ファイルの内容をリストに表示したり、指定したホスト名、日付、時刻に該当するデータを集信ファイルから抽出することもできます。

## 複数集信ファイル編集プログラム

### プログラム名

XRSTORE

### 実行（EXECステートメント）パラメーター

                a
    [{EXT|REPAIR|LIST|CLEAR}]

a.編集方法
  EXT

    : 指定したホスト名、日付、時刻に該当するデータを複数集信ファイルから抽出し、出力ファイルに書き出します。

  REPAIR

    : 複数集信ファイルのマージ処理に失敗した場合に、複数集信情報ファイルの情報にしたがって複数集信ファイルの修復を行います。

  LIST

    : 複数集信情報ファイルの記述内容一覧をリストに出力します。

  CLEAR

    : 複数集信情報ファイルおよび複数集信ファイルの初期化を行います。

  省略すると、“EXT”が設定されます。

### XRSYSIN定義カード

HULFTシステムの動作環境を設定します。設定内容の詳細は、以下を参照してください。

HULFT10 for zOS アドミニストレーション マニュアル : 各項目の説明

定義カードの形式

    OPLSELECT=操作ログ出力選択(*1)
    DATEFMT=日付形式

*1 | : | 操作ログ出力機能を使用する場合は、操作ログ関連の設定が必要です。詳細は「操作ログの動作設定」を参照してください。

### XRCRD定義カード

複数集信ファイルを編集するための定義カードの形式は以下のとおりです。

定義カードの形式

                a                       b               c
    [HOST=xxxxxxxx...xxx][,YMD=date1[-date2]][,TIME=hhmmss1[-hhmmss2]]
           d
    [{,MOD|REP}]

= 備考 =

定義カードが2行にまたがる場合は、以下のいずれかの方法で定義カードを記述してください。

- 1行目は71カラム目まで記述した後、72カラム目に「-」（ハイフン）を記述する。2行目は1カラム目から記述する。

- パラメーターの後の「,」（カンマ）まで記述した後、半角スペースを空けた上で71カラム目までに「-」（ハイフン）を記述する。

定義カードの入力内容

a.ホスト名

  抽出対象のホスト名を指定します（省略可）。

  英大文字で始まる50バイト以内の英数字で指定します。

  「日付」の指定を省略する場合は、必ず指定してください。

b.日付

  抽出対象の日付を指定します（省略可）。

  8バイトの数字で指定します。

  日付はシステム動作環境設定の日付形式（DATEFMT）で設定した形式で指定します。

  日付は以下のいずれかの形式で指定します。

  - YMD=date1

  - YMD=date1-date2

  「YMD=date1-date2」で指定する場合は、「date1<date2」である必要があります。

  「YMD=date1」で指定すると「date1」のデータが抽出されます。

  「YMD=date1-date2」で指定すると「date1」から「date2」までのデータが抽出されます。指定した「date1」、「date2」も抽出の対象に含まれます。

  「ホスト名」の指定を省略する場合は、必ず指定してください。

c.時刻

  抽出対象の時刻を指定します（省略可）。

  6バイトの数字で指定します。

  時刻は以下のいずれかの形式で指定します。

  - TIME=hhmmss1

  - TIME=hhmmss1-hhmmss2

  「TIME=hhmmss1-hhmmss2」で指定する場合は、「hhmmss1<hhmmss2」である必要があります。

  「TIME=hhmmss1」で指定すると「hhmmss1」のデータが抽出されます。

  「TIME=hhmmss1-hhmmss2」で指定すると「hhmmss1」から「hhmmss2」までのデータが抽出されます。指定した「hhmmss1」、「hhmmss2」も抽出の対象に含まれます。

  「日付」を省略し、「時刻」のみ指定した場合、複数集信編集プログラム（XRSTORE）を実行した日が日付として自動的に設定されます。

d.出力モード

  出力ファイルへの出力モードを選択します（省略可）。

  MOD

    : 出力ファイルに追加書きで出力します。追加書きは、複数集信ファイルと同じ属性が設定されているファイルに対して行われます。

  REP

    : 出力ファイルに上書きで出力します。

  省略すると、“REP”が設定されます。

### 入出力ファイルの形式

| DD名 | ファイル編成 | レコード長およびブロック長 | レコード形式
--- | --- | --- | --- | ---
複数集信情報ファイル | XRINF | 順編成 | レコード長110バイト ブロック長110バイト | 固定長ブロック化形式
複数集信ファイル | XRIN | 順編成 | 任意 | 任意
出力ファイル | XROUT | 順編成 | 複数集信ファイルと同じ | 複数集信ファイルと同じ

- パラメーターとDD名の組み合わせ

  パラメーター | XRINF | XRIN | XROUT
  --- | --- | --- | ---
  EXT | 複数集信情報ファイル | 複数集信ファイル | 出力ファイル
  REPAIR | 複数集信情報ファイル | 複数集信ファイル | 修復後の複数集信ファイル
  LIST | 複数集信情報ファイル | 未指定 | 未指定
  CLEAR | 複数集信情報ファイル | 未指定 | 複数集信ファイル

### 複数集信情報ファイルフォーマットの内容

項目名 | バイト数 | 備考
--- | --- | ---
配信元ホスト名 | X | 8 | 配信元ホスト名
配信日 | 9 | 8 | YYYYMMDD
配信時刻 | 9 | 8 | HHMMSSmm
レコード開始位置1 | P | 5 | 集信ファイルに格納した該当レコードの開始位置
レコード終了位置1 | P | 5 | 集信ファイルに格納した該当レコードの終了位置
配信元ホスト名 | X | 50 | 配信元ホスト名
レコード開始位置2(*1) | P | 10 | 集信ファイルに格納した該当レコードの開始位置
レコード終了位置2(*1) | P | 10 | 集信ファイルに格納した該当レコードの終了位置

X | : | キャラクター
P | : | パック
9 | : | サイン無外部10進数

*1 | : | レコード開始位置1およびレコード終了位置1と同じ内容が格納されます。

### 複数集信情報ファイルのデータセット名と創成ボリューム通番

データセット名 | 集信ファイル名.CNTL
創成ボリューム通番 | 集信ファイルと同じボリューム通番

### JCL例

JCL例1

以下に、複数集信ファイルから抽出する場合のJCL例を示します。

    //XRSTORE  JOB  CLASS=A,MSGCLASS=B
    //XRSTORE  EXEC PGM=XRSTORE,PARM='EXT'
    //STEPLIB  DD   DSN=HULFT.LOAD,DISP=SHR
    //XRSYSIN  DD   DSN=HULFT.PARMLIB(HULPRM),DISP=SHR
    //XRINF    DD   DSN=HULFT.RCV.CNTL,DISP=SHR,UNIT=SYSDA,VOL=SER=HUL001
    //XRIN     DD   DSN=HULFT.RCV,DISP=SHR,UNIT=SYSDA,VOL=SER=HUL001
    //XROUT    DD   DSN=HULFT.INF.FILE,DISP=(NEW,KEEP,DELETE),UNIT=SYSDA,
    //             VOL=SER=HUL001,SPACE=(TRK,(5,1),RLSE)
    //XRPRINT  DD   SYSOUT=*
    //XRCRD    DD   *
    HOST=ZOS,REP
    //

DD名 | 項目名 | 説明
--- | --- | ---
STEPLIB | HULFT.LOAD | HULFTロードモジュールライブラリー
XRSYSIN | HULFT.PARMLIB(HULPRM) | システム動作環境設定ファイル
XRINF | HULFT.RCV.CNTL | 複数集信情報ファイル
XRIN | HULFT.RCV | 複数集信ファイル
XROUT | HULFT.INF.FILE | 出力ファイル

パラメーター名 | 項目名 | 説明
--- | --- | ---
UNIT | SYSDA | UNIT
VOL=SER | HUL001 | ボリューム名

JCL例2

以下に、複数集信情報ファイルをリスト表示する場合のJCL例を示します。

    //XRSTORE  JOB  CLASS=A,MSGCLASS=B
    //XRSTORE  EXEC PGM=XRSTORE,PARM='LIST'
    //STEPLIB  DD   DSN=HULFT.LOAD,DISP=SHR
    //XRSYSIN  DD   DSN=HULFT.PARMLIB(HULPRM),DISP=SHR
    //XRINF    DD   DSN=HULFT.RCV.CNTL,DISP=SHR,UNIT=SYSDA,VOL=SER=HUL001
    //XRPRINT  DD   SYSOUT=*
    //

DD名 | 項目名 | 説明
--- | --- | ---
STEPLIB | HULFT.LOAD | HULFTロードモジュールライブラリー
XRSYSIN | HULFT.PARMLIB(HULPRM) | システム動作環境設定ファイル
XRINF | HULFT.RCV.CNTL | 複数集信情報ファイル

### リスト例

      HOST-NAME                                             DATE       TIME       START-POINT         RECORD-COUNT
      MVS-ST                                             2015/12/01  15:18:55                   1                  77
      HP-02                                              2015/12/01  16:45:00                  78                 100
      WINDOWS-XP99                                       2015/12/01  16:51:00                 178                 270