# 結合ファイル分解

結合して転送されたファイルを分解して別々のファイルに出力できます。ファイルに出力するときは、結合したときの情報と指定したパラメーターに基づき、コード変換などを行いながら分解されます。

## 結合ファイル分解プログラム

### プログラム名

XRBREAK

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

           a              b
    [UNIT=xxxxxx][,ABDISP=KEEP|DELETE]

a.ユニット名

  出力先ファイルのユニット名を指定します（省略可）。

  XRCRD定義カードの「ユニット名」を省略した場合、ここで指定したユニット名がXRCRD定義カードに設定されます。

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

b.異常時のファイル保持

  結合ファイルの分解中にエラーが発生した場合、出力ファイルの削除を行わず、エラー発生時点までの出力ファイルを保持するかどうかを指定します（省略可）。

  KEEP

    : 分解中にエラーが発生して中断した場合、エラー発生時点までの出力ファイルを保持します。

  DELETE

    : 分解中にエラーが発生して中断した場合、出力ファイルを削除します。

  省略すると、"DELETE"が設定されます。

  注意

  この項目の指定にかかわらず、出力先のファイルが区分編成の場合、出力中だったメンバーは削除されます。

### XRSYSIN定義カード

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

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

定義カードの形式

    GAIJIFILE=外字テーブル使用
    OPLSELECT=操作ログ出力選択 (*1)

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

### XRCRD定義カード

分解するファイルとその出力先を指定するための定義カードは以下のとおりです。

定義カードの形式

                      a                                    b
    {SEQNO=99999[-99999]|TGTFILE="xxxxx･･･xxx"} ,{DD=xxxxxxxx|VOL=xxxxxxxx}
                      c                                d
    [,SPACE=(xxx,(9999,9999,9999))][,RECFM={F|V},LRECL=99999,BLKSIZE=99999]
                      e                       f          g          h
    [,CODESET={0|A|B|C|D|E|F|G|H|V|W|X}][,SHIFT={Y|N}][,REP][,TABCHG={1|2}]
            i           j             k
    [,UNIT=xxxxxx][,RLSE={Y|N}][,CATLG={Y|N}]

= 備考 =

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

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

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

定義カードの入力内容

a.ファイルの指定方法

  結合ファイルの中のどのファイルを分解するかを指定します（省略不可）。

  SEQNO

    : 結合ファイルの何番目のファイルを分解するかを指定します。

    “1”～“65535”の範囲で指定します。

  TGTFILE

    : 結合ファイルの中のファイル名を指定します。ファイル名は「"」（ダブルクォーテーション）で囲ってください。結合ファイルの中に存在するすべてのファイルを分解するには、「TGTFILE=*」と指定します。

  注意

  区分データ・セット（PDS）で“TGTFILE”を指定する場合は、メンバー名まで指定してください。

b.出力先の指定

  出力先をDD名、またはボリューム通番で指定します（省略不可）。

  DD

    : 出力先のDD名を指定します。順編成ファイルおよび区分データ・セット（PDS）のみ指定できます。指定したDD名のDDステートメントでは、既存のデータ・セットを指定してください。

    分解するファイルを範囲で指定または全件で指定している場合は、出力先を指定できません。

  VOL

    : 出力先データ・セットを作成するボリューム通番を指定します。

c.スペース

  新規に出力先のファイルを作成するときのスペース容量を指定します（省略可）。「CYL|TRK,（初期値,増分量,ディレクトリーブロック数）」の形式で指定します。

  CYL

    : シリンダ数で指定します。

  TRK

    : トラック数で指定します。

  スペース容量は、以下の優先順位に従って決定されます。

  1) 「出力先の指定」のDD名に指定した値

  2) この項目で指定した値

  3) 結合ファイル内に保持されている値

  4) 以下のデフォルト値

  出力先のファイルが順編成になる場合 | : CYL（5,3）
  出力先のファイルが区分編成になる場合 | : CYL（5,3,50）

  注意

  - 「出力先の指定」にDD名を指定する場合、「スペース」を指定するとエラーになります。

  - 出力先が順編成ファイルの場合、ディレクトリーブロック数の指定は無効です。

  - HULFT for XSPで「入力ファイル属性取得」に“AUTO”を指定して作成した結合ファイルを分解する際、分解時にディレクトリーブロック数を指定していない場合は、機種間の差分を吸収します。

    このため、分解時には、結合ファイル作成時に保持されたディレクトリーブロック数の4倍の値を自動的に設定し、分解を行います。

d.出力ファイル形式

  出力先のファイルの形式を指定します（省略可）。

  RECFM

    : 出力先のファイルのレコード形式を指定します。

    F: 固定長

    V: 可変長

    省略すると、HULFT for Mainframe以外で結合されたファイルは固定長に、HULFT for Mainframeで結合されたファイルは、結合されたファイルのレコード形式を使用します。

  LRECL

    : 出力先データ・セットのレコード長を指定します。

    レコード形式（RECFM）が“F（固定長）”の場合は、“1”～“32760”の範囲で指定します。

    レコード形式（RECFM）が“V（可変長）”の場合は、“5”～“32756”の範囲で指定します。

    省略すると、結合されたファイルのレコード長を使用します。ただし、ファイルタイプが“F（フォーマット形式）”または“M（マルチフォーマット形式）”のファイルを分解する場合は、フォーマット情報から自動生成されます。

    また、可変長のレコード形式の場合は「レコード長＋4」の値となります。

  BLKSIZE

    : 出力先データ・セットのブロック長を指定します。

    レコード形式（RECFM）が“F（固定長）”の場合は、レコード長の整数倍で指定します。

    レコード形式（RECFM）が“V（可変長）”の場合は、「レコード長+4」より大きな値で指定します。

    省略すると、結合されたファイルのブロック長を使用します。

  注意

  「出力先の指定」にDD名を指定する場合、「出力ファイル形式」を指定するとエラーになります。

e.EBCDICセット

  分解するときに使用する、自ホストのEBCDIC系コードセットを指定します（省略可）。

  0

    : 自動

  A

    : EBCDICカナ文字

  B

    : EBCDIC英小文字

  C

    : EBCDIC-ASCII

  D

    : EBCDIC-ASPEN

  E

    : IBM英小文字

  F

    : IBM英小文字拡張

  G

    : NECカナ文字

  H

    : IBMカナ文字拡張

  V

    : ユーザーテーブル1

  W

    : ユーザーテーブル2

  X

    : ユーザーテーブル3

  省略すると“0（自動）”が設定されます。

f.シフトコードの扱い

  コード変換時のシフトコードの扱いを指定します（省略可）。

  Y

    : シフトコードを付加します。

  N

    : シフトコードを付加しません。

  省略すると“Y（付加する）”が設定されます。

g.出力モード

  出力先のファイルに上書きする場合に指定します（省略可）。

  分解するファイル名と同名のファイルが同一ボリューム上に存在する場合、出力先のファイルを新規に作成できません。同名のファイルに上書きで出力する場合に“REP”を指定します。

  注意

  「出力先の指定」にDD名を指定する場合、「出力モード」指定の有無にかかわらず上書きされます。

h.タブの変換処理

  タブの変換処理を指定します（省略可）。

  1

    : ASCIIのタブをEBCDICのスペースに変換します。

  2

    : ASCIIのタブをEBCDICのタブに変換します。

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

  注意

  EBCDICユーザーテーブルが登録されている場合、「EBCDICセット」に以下のいずれかの値を指定すると、「タブの変換処理」を指定しても無効となり、EBCDICユーザーテーブルに登録した内容で変換されます。

  - V（ユーザーテーブル1）

  - W（ユーザーテーブル2）

  - X（ユーザーテーブル3）

i.ユニット名

  出力先のファイルのユニット名を指定します（省略可）。

  省略すると、実行（EXECステートメント）パラメーターで指定した「ユニット名」が設定されます。

j.未使用域

  新規に作成した出力先のファイルに存在する未使用域を解放するかどうかを指定します（省略可）。

  Y

    : 未使用域を解放する。

  N

    : 未使用域を解放しない。

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

  注意

  - 「出力先の指定」にDD名を指定する場合、「未使用域」を指定するとエラーになります。

  - 区分データ・セット（PDS）を出力する際は、“N”を指定してください。省略または“Y”を指定した場合、出力ファイルが容量オーバーになる可能性があります。

k.カタログ有無

  出力ファイルをカタログするかどうかを指定します（省略可）。

  Y

    : カタログする。

  N

    : カタログしない。

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

  なお、“C”を指定した場合、“Y”の指定と同様にカタログします。

  注意

  「出力先の指定」にDD名を指定する場合、「出力ファイル形式」を指定するとエラーになります。

注意点

- 結合ファイル名または出力先ファイル名

  - 定義カードの行をまたがって指定する場合は、71カラム目まで記述し、ファイル名の途中までを「"」（ダブルクォーテーション）で囲み、その後に「-」（ハイフン）を記述します。継続行は途中からのファイル名を「"」（ダブルクォーテーション）で囲み、1カラム目から記述してください。また、英小文字ではなく英大文字を指定してください。

  - 結合ファイル名にマルチバイトコードが含まれている場合、ファイルを分解するときにエラーとなります。

- スペース

  「出力先の指定」にDD名を指定する場合、「スペース」は指定できません。

- 出力ファイル形式

  - 「出力先の指定」にDD名を指定する場合、「出力ファイル形式」は指定できません。

  - 以下のいずれかの製品において、ファイルタイプに“B（バイナリー形式）”を指定して結合されたファイルを分解する場合、「出力先の指定」の指定により「出力ファイル形式」の省略が可能かどうかが異なります。

    - HULFT for Windows

    - HULFT for UNIX

    - HULFT for Linux

    「出力先の指定」の指定内容 | 「出力ファイル形式」の省略可否
    --- | ---
    DD名 | 省略可
    ボリューム通番 | 省略不可

  - 以下のいずれかの製品において、ファイルタイプに“T（テキスト形式）”または“B（バイナリー形式）”を指定して結合されたファイルを分解する場合、分解するファイルが範囲指定されていると、結合ファイルで保持している情報は使用しません。

    - HULFT for Windows

    - HULFT for UNIX

    - HULFT for Linux

  - 非ブロック化形式のレコードへの出力はサポートしておりません。

- EBCDICセット

  - 「EBCDICセット」に以下のいずれかを指定する場合は、あらかじめEBCDICユーザーテーブルを設定しておく必要があります。

    - V（ユーザーテーブル1）

    - W（ユーザーテーブル2）

    - X（ユーザーテーブル3）

    EBCDICユーザーテーブルの設定に関する詳細は、以下を参照してください。

    HULFT10 for zOS アドミニストレーション マニュアル : EBCDICユーザーテーブルの設定について

    なお、上記のいずれかを指定するには、条件があります。また、指定可能な条件であっても、配信するとエラーになる場合があります。詳細は、以下を参照してください。

    HULFT10 コード変換 マニュアル : EBCDICユーザーテーブルが利用できる組み合わせ

  - 結合されているファイルの転送コードセットが「UTF-8」の場合、以下のいずれかを指定すると、エラーになります。

    - V（ユーザテーブル1）

    - W（ユーザテーブル2）

    - X（ユーザテーブル3）

  - EBCDICセットを省略した場合、またはEBCDICセットに“0”を指定した場合、EBCDICセットには、”F（IBM英小文字拡張）”が自動的に設定されます。

  - EBCDICセットの“D（EBCDIC-ASPEN）”および“G（NECカナ文字）”は非推奨です。“D（EBCDIC-ASPEN）”または“G（NECカナ文字）”を指定すると、変換できなくなる可能性があります。その他のコードセットをご利用ください。

    詳細は、以下を参照してください。

    HULFT10 新機能・非互換説明書 : EBCDICセットの「NECカナ文字」および「ASPEN」

- SMSで管理された環境での分解

  SMSで管理された環境での分解は、サポートしていません。

### 結合ファイルの形式

DD名 | XRJOIN
ファイル編成 | 順編成ファイル
レコード長 | 1024バイト
レコード形式 | 固定長ブロック化形式

### JCL例

- JCL例1

  以下に、出力先にDD名を指定した場合のJCL例を示します。

      //XRBREAK  JOB  CLASS=A,MSGCLASS=B
      //XRBREAK  EXEC PGM=XRBREAK,REGION=4096K
      //STEPLIB  DD   DSN=HULFT.LOAD,DISP=SHR
      //XRSYSIN  DD   DSN=HULFT.PARMLIB(HULPRM),DISP=SHR
      [//XREXTLIB DD  DSN=HULFT.LOAD,DISP=SHR]
      //XROUT    DD   DSN=HULFT.DATA(DATA1),DISP=(OLD,KEEP)
      //XRJOIN   DD   DSN=HULFT.JOIN.FILE,DISP=SHR
      //XRPRINT  DD   SYSOUT=*
      //SYSOUT   DD   SYSOUT=*
      //XRCRD    DD   *
      TGTFILE="HULFT.TXT",DD=XROUT
      //

  DD名 | 項目名 | 説明
  --- | --- | ---
  STEPLIB | HULFT.LOAD | HULFTロードモジュールライブラリー
  XRSYSIN | HULFT.PARMLIB(HULPRM) | システム動作環境設定ファイル
  XREXTLIB | HULFT.LOAD | HULFTロードモジュールライブラリー(*1)
  XROUT | HULFT.DATA(DATA1) | 出力先ファイル
  XRJOIN | HULFT.JOIN.FILE | 結合ファイル

  *1 | : | 分解時に外字コードを外字テーブルで変換させるときに、外字テーブルが格納されているライブラリーを付加します。外字テーブルの詳細は、以下を参照してください。 HULFT10 for zOS アドミニストレーション マニュアル : 外字テーブルについて

- JCL例2

  以下に、出力先にボリューム通番を指定した場合のJCL例を示します。

      //XRBREAK  JOB  CLASS=A,MSGCLASS=B
      //XRBREAK  EXEC PGM=XRBREAK,REGION=4096K
      //STEPLIB  DD   DSN=HULFT.LOAD,DISP=SHR
      //XRSYSIN  DD   DSN=HULFT.PARMLIB(HULPRM),DISP=SHR
      [//XREXTLIB DD  DSN=HULFT.LOAD,DISP=SHR]
      //XRJOIN   DD   DSN=HULFT.JOIN.FILE,DISP=SHR
      //XRPRINT  DD   SYSOUT=*
      //SYSOUT   DD   SYSOUT=*
      //XRCRD    DD   *
      SEQNO=0001-0012,RECFM=F,LRECL=256,BLKSIZE=2560,CODESET=A,SHIFT=N,      -
      VOL=WRKX01
      //

  DD名 | 項目名 | 説明
  --- | --- | ---
  STEPLIB | HULFT.LOAD | HULFTロードモジュールライブラリー
  XRSYSIN | HULFT.PARMLIB(HULPRM) | システム動作環境設定ファイル
  XREXTLIB | HULFT.LOAD | HULFTロードモジュールライブラリー(*1)
  XRJOIN | HULFT.JOIN.FILE | 結合ファイル

  *1 | : | 分解時に外字コードを外字テーブルで変換させるときに、外字テーブルが格納されているライブラリーを付加します。外字テーブルの詳細は、以下を参照してください。 HULFT10 for zOS アドミニストレーション マニュアル : 外字テーブルについて

### ファイル命名規約

分解時に出力ファイル名を省略した場合は、結合ファイルの作成機種により、以下の規則に従ってファイルが自動生成されます。

- 結合ファイルの作成機種がWindowsの場合

  結合ファイル作成時の入力ファイル名がMainframeの命名規約に沿っている場合、そのまま出力ファイル名として使用されます。

  Mainframeの命名規約に沿っていない場合、以下の表の規則に従って結合ファイル作成時の入力ファイル名から出力ファイル名が作成されます。

  結合ファイル作成時の入力ファイル名 | 出力ファイル名
  --- | ---
  c:\test1\test\test3.txt | TEST3.TXT
  ..\test1\test2\TEST3.TXT | TEST3.TXT
  test1.test2.test3.txt | TEST1.TEST2.TEST3.TXT

- 結合ファイルの作成機種がUNIXまたはLinuxの場合

  結合ファイル作成時の入力ファイル名がMainframeの命名規約に沿っている場合、そのまま出力ファイル名として使用されます。

  Mainframeの命名規約に沿っていない場合、以下の表の規則に従って結合ファイル作成時の入力ファイル名から出力ファイル名が作成されます。

  結合ファイル作成時の入力ファイル名 | 出力ファイル名
  --- | ---
  /test1/test2/test3.txt | TEST3.TXT
  ../test1/test2/TEST3.TXT | TEST3.TXT
  test1.test2.test3.txt | TEST1.TEST2.TEST3.TXT

- 結合ファイルの作成機種がIBMiの場合

  以下の表の規則に従って結合ファイル作成時の入力ファイル名から出力ファイル名が作成されます。

  結合ファイル作成時の入力ファイル名 | 出力ファイル名
  --- | ---
  MYLIB/TXT(TEST) | TXT(TEST)

  = 備考 =

  出力ファイルは区分データ・セット（PDS）となります。

- 結合ファイルの作成機種がMainframeの場合

  以下のように、結合ファイル作成時の入力ファイル名がそのまま出力ファイル名として使用されます。

  ファイル編成 | 結合ファイル作成時の入力ファイル名 | 出力ファイル名
  --- | --- | ---
  順編成ファイル | TEST1.TEST2.TEST3.TXT | TEST1.TEST2.TEST3.TXT
  区分データ・セット（PDS） | TEST1.TEST2.TXT(TEST3) | TEST1.TEST2.TXT(TEST3)

注意

ファイル名（メンバー名を含む）がMainframeの命名規約に沿っていない場合は、「HUL」に順序番号（00001～65535）を付与したデータ・セット名になります。

以下に、結合ファイルの作成がHULFT for IBMiの場合の例を示します。

例）

  結合ファイル作成時の入力ファイル名 | 出力ファイル名
  --- | ---
  MYLIB/TXT_1(TEST) | HUL00001.DATA

  HULFT for IBMiで結合されたファイルに「_」があるため、データ・セット名として使用できません。

  そのため、「HUL00001.DATA」という名前の順編成ファイルが自動生成されます。