uCosminexus Batch Job Execution Server 使用の手引(Windows(R)用)

[目次][用語][索引][前へ][次へ]

3.14.8 bjexu_ismutおよびbjexu_ismut64(索引順編成ファイルの作成および削除,索引順編成ファイルと順編成ファイルの複写,変換および併合)

<この項の構成>
(1) 機能
(2) 入出力構成
(3) ジョブ定義XMLファイル
(4) bjexu_ismutおよびbjexu_ismut64制御文
(5) 使用例

(1) 機能

索引順編成ファイルの作成および削除,索引順編成ファイルと順編成ファイルの複写,変換および併合ができる。

(a) ファイルの作成(DEFINE文)

索引順編成ファイルを作成する。

(b) 索引順編成ファイルおよび順編成ファイルの複写,変換および併合(REPRO文)

ファイルの複写とは,同じ編成のファイルにデータを入れることである。ファイルの変換とは,編成の異なるファイルにデータを入れることである。また,ファイルの併合とは,2つのファイルを1つのファイルにすることである。REPRO文の機能の共通の内容について説明する。個別の内容については,(c)〜(e)の説明を参照のこと。

入出力ファイルの組み合わせと操作内容を次の表に示す。

表3-43 入出力ファイルの組み合わせと操作内容

入力 出力
ファイル編成 レコード種別 索引順編成ファイル 順編成ファイル
固定長レコード 可変長レコード 固定長レコード 可変長レコード
索引順編成ファイル 固定長
レコード
× ×
可変長
レコード
× ×
順編成ファイル 固定長
レコード
× ×
可変長
レコード
× ×

(凡例)
◎:複写と併合ができる。
○:変換と併合ができる。
×:指定できない。

(c) ファイルの複写

索引順編成ファイル中のデータを,同じ編成の索引順編成ファイル用に複写する。または,順編成ファイル中のデータを,同じ編成の順編成ファイル用に複写する。複写範囲も指定できる。

索引順編成ファイルの複写では,複写先ファイルのレコード格納順は複写元ファイルで指定しているキーの順序になる。

注※1 複写元ファイルと複写先ファイルはファイル編成が同じものを指定する。

注※2 複写範囲を指定する。複写範囲を指定するオペランドには,次の表に示すものがある。

表3-44 複写範囲を指定するオペランド

入力ファイル 開始位置の指定 終了位置の指定
索引順編成ファイル FROMKEY TOKEY
SKIP COUNT
順編成ファイル SKIP COUNT

  • 索引順編成ファイルの場合,複写先のファイルをあらかじめ作成しておく必要がある。
  • レコード単位で複写しているため,複写範囲を指定しない複写であればISAMが提供するユティリティコマンドを使用した方が処理時間を短くできる。

(d) ファイルの変換

複写元ファイルのファイル編成を変えて,複写先ファイルに複写する。変換範囲も指定できる。

注※
変換範囲を指定する。変換範囲を指定するオペランドには,次のものがある。

表3-45 変換範囲を指定するオペランド

変換元ファイル 開始位置の指定 終了位置の指定
索引順編成ファイル FROMKEY TOKEY
SKIP COUNT
順編成ファイル SKIP COUNT

  • 索引順編成ファイルの場合,変換先のファイルをあらかじめ作成しておく必要がある。
  • 順編成ファイルを索引順編成ファイルに変換する場合,変換元ファイルのレコード順で出力される。索引順編成ファイルに変換する場合,変換先ファイルに指定できる最大レコード長は65,503バイトである。
  • 索引順編成ファイルを順編成ファイルに変換する場合,変換先ファイルに指定できる最大レコード長は65,535バイトである。
  • レコード単位で変換しているため,変換範囲を指定しない変換であればISAMが提供するユティリティコマンドを使用した方が処理時間を短くできる。

(e) ファイルの併合

ファイルの併合とは,併合元ファイルと併合先ファイル(併合先ファイルにもレコードが入っている)を合わせて1つのファイルにすることである。併合元ファイルには,索引順編成ファイルおよび順編成ファイルのどちらかを指定できる。

併合元ファイルの併合範囲を指定できる。また,索引順編成ファイルへの併合では,入力レコードと出力先のレコードのキー状態によって併合方法を指定できる。併合方法を指定するオペランドと機能を次の表に示す。

表3-46 併合方法を指定するオペランドと機能

オペランド 機能
REPLACE 同一キーを持ったレコードが入力された場合,レコードを置き換える。
NOREPLACE 同一キーを持ったレコードが入力された場合,処理を中止する。
IGNORE 同一キーを持ったレコードが入力された場合,キーが重複するレコードは出力しないで以降の処理を続行する。

注※
併合元ファイルの併合範囲を指定する。併合範囲を指定するオペランドには,次のものがある。

表3-47 併合範囲を指定するオペランド

併合元ファイル 開始位置の指定 終了位置の指定
索引順編成ファイル FROMKEY TOKEY
SKIP COUNT
順編成ファイル SKIP COUNT

索引順編成ファイルの場合,併合先のファイルをあらかじめ作成しておく必要がある。
順編成ファイルに併合する場合,併合先ファイルを定義するDD要素でDISP="MOD"を指定する。
順編成ファイルを索引順編成ファイルに併合する場合,併合元ファイルのレコード順で出力される。
順編成ファイルに併合する場合,併合先ファイルに指定できる最大レコード長は65,535バイトである。
索引順編成ファイルに併合する場合,併合先ファイルに指定できる最大レコード長は65,503バイトである。
併合する場合,併合処理中に障害が発生したときに備えて,あらかじめバックアップを取得することを推奨する。併合処理中に障害が発生すると,ファイル操作ユティリティは終了コード8で終了するため,バックアップから回復できる。

(f) ファイルの削除(DELETE文)

索引順編成ファイルを削除する。

(2) 入出力構成

bjexu_ismutおよびbjexu_ismut64の入出力構成を次の図に示す。

図3-41 bjexu_ismutおよびbjexu_ismut64の入出力構成

[図データ]

(a) 索引順編成ファイルを作成する場合
  1. 入力
    • 入力ファイル
      ファイルの作成のため,入力ファイルはない。
    • 制御文(SYSIN)
      bjexu_ismutおよびbjexu_ismut64の処理内容を次の制御文で指定する。制御文は,(b)の制御文も含めて指定した順に実行される。
      ・DEFINE文
  2. 出力
    • 出力ファイル
      新しく作成するファイル。
    • メッセージ(SYSPRINT)
      bjexu_ismutおよびbjexu_ismut64が出力するメッセージの出力先。
(b) 索引順編成ファイル,順編成ファイルを複写,変換および併合する場合
  1. 入力
    • 入力ファイル
      複写,変換または併合の入力元となるファイル。
      順編成ファイルの場合は,連結して複数のファイルを指定できる。
    • 制御文(SYSIN)
      bjexu_ismutおよびbjexu_ismut64の処理内容を次の制御文で指定する。制御文は,(a)の制御文も含めて指定した順に実行される。
      ・INPFILE文
      ・OUTFILE文
      ・REPRO文
  2. 出力
    • 出力ファイル
      複写,変換または併合の出力先となるファイル。出力先ファイルは,指定によっては同じ形式で2つのファイルに出力できる。
    • メッセージ(SYSPRINT)
      bjexu_ismutおよびbjexu_ismut64が出力するメッセージの出力先。
(c) 索引順編成ファイルを削除する場合
  1. 入力
    • 入力ファイル
      削除するファイル。
    • 制御文(SYSIN)
      bjexu_ismutおよびbjexu_ismut64の処理内容を次の制御文で指定する。制御文は,(b)の制御文も含めて指定した順に実行される。
      ・DELETE文
  2. 出力
    • 出力ファイル
      ファイルの削除のため,出力ファイルはない。
    • メッセージ(SYSPRINT)
      bjexu_ismutおよびbjexu_ismut64が出力するメッセージの出力先。
(d) 終了コード

bjexu_ismutおよびbjexu_ismut64の終了コードを次の表に示す。

表3-48 bjexu_ismutおよびbjexu_ismut64の終了コード

終了コード 意味
0 正常に処理を終了した。
4 エラーが発生したが無視して続行した。詳細については,出力されたメッセージを参照のこと。
8 コマンド処理中にエラーが発生した。エラーの発生したコマンドの処理を終了し,ジョブステップを終了する。出力処理中にエラーが発生しているので,出力ファイルの内容は保証されない。必要であればあらかじめ出力ファイルのバックアップを取っておくこと。詳細については,出力されたメッセージを参照のこと。
12 次のような回復できないエラーが発生したため,コマンド処理を実行しないでジョブステップを終了する。
  • 制御文の指定誤り
  • 制御文(SYSIN)や入出力ファイルのオープンエラー

注※ 文法的に正しいが,要求された処理を実行できなかった場合,終了コードは4になる。例えば,DELETE文で指定したファイルがないためにファイルの削除ができなかった場合がある。


(3) ジョブ定義XMLファイル

bjexu_ismutおよびbjexu_ismut64を実行する場合は,次に示すEXEC要素とDD要素の指定が必要である。

(a) EXEC要素
(b) SYSPRINTのDD要素

bjexu_ismutおよびbjexu_ismut64が発行するメッセージの出力先を指定する。DD連結指定はできない。出力先には,SYSOUTデータファイルや恒久ファイルを指定できる。

SYSPRINTが使用できない状態の場合,どこにも経過メッセージは出力されない。メッセージの詳細については,「10. メッセージと終了コード」を参照のこと。

(c) 入力ファイルのDD要素

複写,変換および併合の元となる入力ファイルを指定する。

索引順編成ファイルの場合,ファイル拡張子を除いたファイル名を指定する。また,ジョブ定義XMLファイルに,TYPE="FILE",DISP="OLD"またはDISP="SHR"を指定する。また,第2,第3オペランドでDELETEを指定してはならない。指定したファイル名と一致するファイルがある場合は,ジョブステップ終了時にそのファイルは削除される。指定したファイル名に一致するファイルがない場合は,ジョブステップ終了時に警告メッセージが出力されるが,終了コードには反映されない。

DISP="SHR"を指定すると,ファイルを占有しない指定でオープンする(ISAMのopen関数でISMANULOCKを指定)。このため,DISP="SHR"を指定した複数のジョブで同じファイルを同時に入力できる。

順編成ファイルの場合,複数のファイルを連結して指定できる。このとき,各ファイルの属性は一致させる必要がある。

ファイルの属性が一致しているかどうかはチェックされない。固定長順編成ファイルの場合に,ファイルサイズがレコード長の整数倍でないときはエラーになる。このため,入力ファイルを連結している場合,各ファイルのファイルサイズを確認すること。指定できるDISPオペランドを次の表に示す。

表3-49 入力ファイルの編成とDISPオペランドの関係

入力ファイル編成 DISPオペランド
OLD NEW RNW MOD SHR
索引順編成ファイル
順編成ファイル

(凡例)
○:指定できる。
−:指定できない。ただし,指定してもエラーにはならない。指定に従ってファイルが生成される。

注※ DD要素でDISP="SHR"を指定すると,ISAMファイルを占有しない指定でオープンする。ただし,RENAMEを指定したときは,ファイルを占有する指定でオープンする。


(d) 出力ファイルのDD要素

索引順編成ファイルを作成する場合,新しく作成するファイルの出力先となる出力ファイルを指定する。DD連結指定はできない。

索引順編成ファイルおよび順編成ファイルを操作する場合,複写,変換または併合の出力先となる出力ファイルを指定する。DD連結指定はできない。

順編成ファイルに出力する場合は,出力ファイルのDD要素にディレクトリを指定できる。ディレクトリを指定する場合,入力ファイルと同じ名称のファイルに出力する。すでに入力ファイルと同じ名称のファイルがある場合は,エラーとなる。

索引順編成ファイルに出力する場合,ファイル拡張子を除いたファイル名を指定し,ジョブ定義XMLファイルのDD要素では,TYPE="FILE",DISP="OLD"を指定する。DISP="NEW","RNW"または"MOD"を指定した場合,バッチジョブ実行システムは指定されたパス名に従ってファイルを作成する。しかし,bjexu_ismutおよびbjexu_ismut64からは索引順編成ファイルとして使用できない。また,第2,第3オペランドでDELETEを指定してはならない。指定したファイル名と一致するファイルがある場合は,ジョブステップ終了時にそのファイルは削除される。指定したファイル名に一致するファイルがない場合は,ジョブステップ終了時に警告メッセージが出力されるが,終了コードには反映されない。

バッチジョブ実行システムでは,ジョブ定義XMLファイルに指定することで,索引順編成ファイルを作成できない。複写または変換をする場合,REPRO文を実行する前に,ISAMユティリティやDEFINE文で索引順編成ファイルを作成しておく必要がある。

順編成ファイルに併合する場合は,ジョブ定義XMLファイルのDD要素でDISP="MOD"を指定する。それ以外を指定した場合,複写または変換になり,出力ファイルにあったレコードは,削除される。

COPYDDオペランドを指定することで,複写または変換を行う出力先として2つの異なる出力先を登録できる。この場合,COPYDDオペランドで指定するファイルは,OUTDDオペランドで指定したファイルと同じ形式である必要がある。異なる形式の場合は処理されないでエラーとなる。併合の場合にCOPYDDオペランドを指定したときは,処理しないでエラーとなる。

入力ファイルと出力ファイル(OUTDDオペランドおよびCOPYDDオペランドの指定)には,すべて異なるファイルを指定すること。同じファイルを指定した場合は解析エラーとなる。

出力ファイル編成とDD要素の関係を次の表に示す。

表3-50 出力ファイル編成とDD要素の関係

出力ファイル編成 DSNオペランド DISPオペランド
ファイル ディレクトリ OLD NEW RNW MOD SHR
索引順編成ファイル ×
順編成ファイル

(凡例)
○:指定できる。
×:指定できない。指定するとエラーとなる。
−:指定できない。ただし,指定してもエラーにはならない。

注※ 指定するとファイルが割り当てられるが,ISAMファイルとしては使用できない。


(e) SYSINのDD要素

bjexu_ismutまたはbjexu_ismut64制御文を指定する。または,この制御文が記述されたファイルのパスを指定する。DD連結指定はできない。

(f) 索引順編成ファイルの指定

索引順編成ファイルを使用するバッチジョブ間の排他制御は,バッチジョブ実行システムの排他制御機能を使用する。そのため,バッチジョブで使用する索引順編成ファイルは,ジョブ定義XMLファイルのDD要素のDSNオペランドでファイル拡張子を除いたファイル名を指定し,DISP="OLD"を指定する必要がある。指定したファイル名と同じ名称の索引順編成以外のファイルがある場合,そのファイルも排他制御の対象になる。バッチジョブ実行システムは,索引順編成ファイルを作成または再作成しないため,DISP="NEW",DISP="RNW"およびDISP="MOD"オペランドを指定しないこと。また,第2,第3オペランドにDELETEを指定しないこと。指定したファイル名と一致するファイルがある場合は,ジョブステップ終了時にそのファイルは削除される。指定したファイル名に一致するファイルがない場合は,ジョブステップ終了時に警告メッセージが出力される。ただし,終了コードには影響しない。

bjexu_ismutまたはbjexu_ismut64プログラムでは,同時にISAMの排他制御も使用する。この排他制御によって,索引順編成ファイルを使用する端末からの操作,およびバッチジョブ実行システムの環境以外からのジョブ実行によるファイルの同時アクセスを防止する。

(4) bjexu_ismutおよびbjexu_ismut64制御文

bjexu_ismutおよびbjexu_ismut64制御文と機能を次の表に示す。

表3-51 bjexu_ismutおよびbjexu_ismut64制御文と機能

制御文名 機能
DEFINE文 作成する索引順編成ファイルの形式を指定する。
INPFILE文 入力ファイルのファイル形式を指定する。
OUTFILE文 出力ファイルのファイル形式を指定する。
REPRO文 ファイルの複写,変換または併合の実行開始を指定する。
DELETE文 削除するファイルを指定する。
SET文 変更する終了コードを指定する。

DEFINE文,DELETE文およびSET文は,単独または複数で指定できる。

INPFILE文,OUTFILE文,REPRO文は,この順で連続して指定する。INPFILE文とOUTFILE文は,省略できない。

INPFILE文,OUTFILE文,REPRO文を1組とし,DEFINE文,DELETE文,およびSET文と組み合わせて指定することもできる。

INPFILE文とOUTFILE文で指定できる組み合わせと処理内容の対応の詳細については,「(1) 機能」の「表3-43」を参照のこと。

(a) DEFINE文
●形式
 
[記号] △1 DEFINE △1
 
 
ISAM
,DD=DD名
,ISKEY=(キー長,キー位置[,{C|I|L}])
,ISRECFM={F|V}
,ISRECL=(レコード長[,最小レコード長])
 
●オペランド

ISAM
索引順編成ファイルを作成することを指定する。主キーファイルだけを作成する。副キーファイルは,作成できない。ISKEYオペランド,ISRECFMオペランドおよびISRECLオペランドで定義する情報以外は,次に示す内容で定義される。

表3-52 ISAMファイルの定義情報と内容

ISAM ファイルの定義情報 内容
障害発生時のデータファイル内容保証 保証しない
主キーのキー順序 昇順となる
主キーの重複キー許可 認めない
主キーの重複キー順序保証 保証する
主キーの圧縮レベル 圧縮なし
主キーのスパース文字許可 認めない

DD=DD名
  • DD名〜<環境変数名>((1〜31文字))
    作成するファイルのファイルパス名を定義したDD名を指定する。

ISKEY=(キー長,キー位置[,{C|I|L}])
索引順編成ファイルのキー長,相対キー位置およびキー属性を指定する。
なお,キー位置とキー長の合計は,ISRECL属性で指定するレコード長(固定長順編成ファイルの場合)または最小レコード長(可変長順編成ファイルの場合)以下にする必要がある。
  • キー長〜<整数>((1〜255))
    キー属性に応じて,次に示すように指定する。
    C(文字型)の場合:1〜255の範囲
    I(2バイト整数型)の場合:2
    L(4バイト整数型)の場合:4
  • キー位置〜<整数>((0〜65502))
    ISRECFM属性で指定するレコード種別に応じて,次に示すように指定する。
    ISRECFM=Fの場合:0〜(ISRECL属性で指定するレコード長−1)の範囲
    ISRECFM=Vの場合:0〜(ISRECL属性で指定する最小レコード長−1)の範囲
  • {C|I|L}
    キー属性を次に示すどれかのパラメータで指定する。
    C:文字型
    I:2バイト整数型
    L:4バイト整数型

ISRECFM={F|V}
索引順編成ファイルを作成する場合のレコード種別を指定する。
  • F
    レコード種別が固定長であることを示す。
  • V
    レコード種別が可変長であることを示す。

ISRECL=(レコード長[,最小レコード長])
索引順編成ファイルを作成する場合に,索引順編成ファイルのレコード長を指定する。
ISRECFM属性にVを指定した場合は,最小レコード長も指定する必要がある。
ISRECFM属性にFを指定した場合は,最小レコード長を指定しないこと。指定しても無効となる。
  • レコード長〜<整数>((1〜65503バイト))
    索引順編成ファイルのレコード長を指定する。
  • 最小レコード長〜<整数>((1〜65503バイト))
    索引順編成ファイルの最小レコード長を指定する。なお,最小レコード長≦レコード長にする必要がある。
●注意事項
(b) INPFILE文
●形式
 
[記号] △1 INPFILE △1
 
 
FILEORG=ファイル形式〜((I|X|F|V))[,RECLEN=レコード長][,CHKEMPTY]
 
●オペランド

FILEORG=ファイル形式
REPRO文で使用する入力ファイルのファイル形式を指定する。
  • ファイル形式〜((I|X|F|V))
    I:固定長索引順編成ファイルであることを示す。
    X:可変長索引順編成ファイルであることを示す。
    F:固定長順編成ファイル(COBOLまたはアプリケーションなどで作成したファイル,ファイルサイズがレコード長の整数倍であるバイナリファイル)であることを示す。
    V:可変長順編成ファイル(COBOLで作成したファイル)であることを示す。

RECLEN=レコード長
入力ファイルのファイル形式に固定長順編成ファイルを指定した場合,レコード長を指定する。
  • レコード長〜<符号なし整数>((1〜65535バイト))
    レコード長を指定する。固定長順編成ファイルを指定した場合は,必ず指定する。その他の形式のときは指定しないこと。指定した場合はエラーとなる。
    ファイルサイズがレコード長の整数倍でないときはエラーとなる。

CHKEMPTY
入力が可変長順編成ファイルのとき,レコード数が0件のファイルであればエラーにすることを指定する。省略すると,入力ファイルのレコード数が0件であってもエラーにしないで,レコード数が0件の出力ファイルを作成する。
入力ファイルが可変長順編成ファイル以外のときは,指定できない。指定すると,エラーとなる。
●注意事項
(c) OUTFILE文
●形式
 
[記号] △1 OUTFILE △1
 
 
FILEORG=ファイル形式〜((I|X|F|V))[,RECLEN=レコード長][,MINLEN=最小レコード長]
 
●オペランド

FILEORG=ファイル形式
REPRO文で使用する出力ファイルのファイル形式を指定する。
  • ファイル形式〜((I|X|F|V))
    I:固定長索引順編成ファイルであることを示す。
    X:可変長索引順編成ファイルであることを示す。
    F:固定長順編成ファイル(COBOLまたはアプリケーションなどで作成したファイル,ファイルサイズがレコード長の整数倍であるバイナリファイル)であることを示す。
    V:可変長順編成ファイル(COBOLで作成したファイル)であることを示す。

RECLEN=レコード長
出力ファイルに固定長順編成ファイルまたは可変長順編成ファイルを指定した場合,レコード長を指定する。
  • レコード長〜<符号なし整数>((1〜65535バイト))
    レコード長を指定する。固定長順編成ファイルの場合はレコード長を,可変長順編成ファイルの場合は,最大レコード長を指定する。索引順編成ファイルの場合は指定しないこと。指定した場合はエラーとなる。
固定長順編成ファイルの場合
次に示すレコード長の出力ファイルとなる。
  • RECLENオペランドの指定値が出力ファイルのレコード長になる。
  • RECLENオペランドを省略すると,INPFILE文のRECLENオペランドの指定値を仮定する。
可変長順編成ファイルの場合
出力ファイルのレコード長は,入力ファイルの形式によって次のとおりになる。
  • 入力が可変長順編成ファイルのとき
    可変長順編成ファイルから新規に作成した可変長順編成ファイルへ複写するときは,ヘッダ情報の内容を複写し,RECLENオペランドを省略すると最大レコード長の内容を引き継ぐ。RECLENオペランドの指定があれば,指定された値を最大レコード長に設定する。既存ファイルの場合は,最大レコード長を変更しない。
  • 入力が可変長索引順編成ファイルのとき
    可変長索引順編成ファイルから新規に作成した可変長順編成ファイルへ変換するときは,RECLENオペランドを省略すると,最大レコード長として65535を仮定する。RECLENオペランドの指定があれば,指定された値を最大レコード長に設定する。既存ファイルの場合は,最大レコード長を変更しない。

MINLEN=最小レコード長
出力ファイルに可変長順編成ファイルを指定したとき,最小レコード長を指定する。このオペランドを指定すると,最小レコード長より短いレコードを出力しようとしたときにエラーになるので,キーデータなど必須の情報が含まれていることをチェックできる。
  • 最小レコード長〜<符号なし整数>((1〜65535バイト))
    最小レコード長を指定する。固定長順編成ファイルや索引順編成ファイルの場合は指定しないこと。指定した場合はエラーとなる。

入力が可変長順編成ファイルのとき
可変長順編成ファイルから新規に作成した可変長順編成ファイルへ複写するときは,ヘッダ情報の内容を複写し,MINLENオペランドを省略すると最小レコード長の内容を引き継ぐ。MINLENの指定があれば,指定された値を最小レコード長に設定する。既存ファイルの場合は,最小レコード長を変更しない。

入力が可変長索引順編成ファイルのとき
可変長索引順編成ファイルから新規に作成した可変長順編成ファイルへ変換するときは,MINLENオペランドを省略すると,最小レコード長に1を設定する。MINLENオペランドの指定があれば,指定された値を最小レコード長に設定する。既存ファイルの場合は,最小レコード長を変更しない。
●注意事項
(d) REPRO文
●形式
 
[記号] △1 REPRO △1
 
 
INDD=DD名
,OUTDD=DD名
[,COPYDD=DD名]
[,KEY=キー番号]
[,REPLACE|NOREPLACE|IGNORE]
[,FROMKEY=キー|SKIP=レコード数]
[,TOKEY=キー|COUNT=レコード数]
 
●オペランド

INDD=DD名
  • DD名〜<環境変数名>((1〜31文字))
    入力ファイルのファイルパス名を定義したDD名を指定する。

OUTDD=DD名
  • DD名〜<環境変数名>((1〜31文字))
    出力ファイルのファイルパス名を定義したDD名を指定する。入力ファイルと同じファイルを指定できない。指定するとエラーとなる。
    出力ファイルが順編成ファイルの場合,出力先のディレクトリパス名を定義したDD名を指定できる。この場合,入力ファイルと同名のファイルを作成する。入力ファイルがあるディレクトリは指定できない。指定するとエラーとなる。

COPYDD=DD名
  • DD名〜<環境変数名>((1〜31文字))
    同時に2つのファイルに出力する場合,出力ファイルのファイルパス名を定義したDD名を指定する。複写または変換する場合に指定できる。併合の場合に指定するとエラーとなる。また,DISP="MOD"を指定した場合は,出力ファイルの指定に関係なく,エラーとなる。
    出力ファイルが順編成ファイルの場合,出力先のディレクトリパス名を定義したDD名を指定できる。入力ファイルと同じ名称のファイルがあるディレクトリは指定できない。指定するとエラーとなる。
    OUTDDオペランドとともに指定する。INDDオペランドおよびOUTDDオペランドと異なる出力先を指定すること。同じ出力先を指定するとエラーとなる。

KEY=キー番号
  • キー番号〜<整数><<1>>((1〜99))
    入力ファイルが索引順編成ファイルの場合,読み込みに使用するキー番号を指定する。キー番号は,ISAMのユティリティコマンドであるisinfoコマンドで表示されるキーファイル情報に対応する番号で,先頭を1とした通し番号である。省略した場合は1が仮定され,主キーが選択される。
    重複を許可するキーを指定した場合,レコードの読み込み順序は,ISAMのときと同じである。詳細については,マニュアル「索引順編成ファイル管理 ISAM」を参照のこと。
    キー番号は,ファイル拡張子".Knn"の番号nnとは対応しないことがあるので,注意が必要である。
    入力ファイルが順編成ファイルのときに指定すると,エラーとなる。

REPLACE|NOREPLACE|IGNORE
索引順編成ファイルへ併合する場合に併合先の主キー定義で比較して,入力レコードと同じキー値の出力レコードが存在したときの扱いを指定する。
重複を許可しない副キーに対して重複したキーのレコードを追加しようとした場合,IGNORE以外を指定したときは,エラーとなり処理を中止する。
  • REPLACE
    索引順編成ファイルに併合する場合に,入力レコードの主キーと出力レコードの主キーが一致するときは,出力レコードを置き換える。一致しないときは,出力ファイルへレコードを挿入または追加する。
  • NOREPLACE
    索引順編成ファイルに併合する場合に,入力レコードのキーと出力レコードのキーが一致するときは,併合処理を中止する。
  • IGNORE
    索引順編成ファイルに併合する場合に,入力レコードのキーと出力レコードのキーが一致するときは,キーが重複するレコードを出力しないで以降の処理を続行する。
    主キーが重複する場合または重複を許可しない副キーが重複した場合,キーが重複するレコードを出力しないで処理を続行する。

FROMKEY=キー|SKIP=レコード数
入力ファイル中の複写,変換または併合処理の開始位置を指定する。省略すると先頭から処理する。
  • FROMKEY=キー
    入力が索引順編成ファイルの場合に指定できる。複写,変換または併合処理を開始するレコードのキーを指定する。指定したキーと一致するレコードがない場合,それより大きい最小キーを持つレコードから処理する。
キー
文字型の場合 〜<引用文字列>((1〜255バイト))
2バイト整数型の場合 〜<整数>((-32768〜32767))
4バイト整数型の場合 〜<整数>((-2147483647〜2147483647))
KEYオペランドで指定したキー番号に対応したレコードのキーを指定する。
キー属性が文字型と整数型の場合に指定できる。ファイルに定義されているキー属性に合わせてキーの値を指定する。指定したキーとキー属性が異なると,エラーとなる。また,読み込みで指定したキー番号の定義が合成キーの場合は,指定できない。指定すると,エラーとなる。
キー属性が文字型の場合,引用文字列で指定する。整数を指定するとエラーとなる。指定した文字列とレコードのキーは上位バイトから比較する。指定した文字列がファイルに定義されているキーの長さより短い場合,指定した文字列を含む最小キーを持つレコードから処理する。指定した文字列がファイルに定義されているキーの長さよりも長いと,エラーとなる。
例 文字型のキーを指定したときの処理対象
オペランドで指定した文字列とファイルのキーは上位バイトから比較する。
・FROMKEY='ABC'を指定
・ファイルのキー(8バイト)
 上位→下位
 'ABAAAAAA'     ← 処理されない
 'ABCAAAAA'     ← 処理対象
 'ABCBBBBB'     ← 処理対象
 'ABDAAAAA'     ← 処理対象
 
キー属性が2バイトの整数型の場合は,-32768〜32767の範囲で指定する。範囲外の値を指定すると,エラーとなる。また,引用文字列を指定するとエラーとなる。
キー属性が4バイトの整数型の場合は,-2147483647〜2147483647の範囲で指定する。-2147483647より小さい値を指定すると,-2147483647を仮定する。また,2147483647より大きい値を指定すると,2147483647を仮定する。引用文字列を指定するとエラーとなる。
  • SKIP=レコード数
    REPRO文で指定できる,すべての形式の入力ファイルに指定できる。複写,変換または併合処理を開始する前に,入力したレコードの先頭からスキップするレコード数を指定する。なお,複数の入力ファイルを指定した場合は,最初に指定したファイルからスキップする。最初のファイルのレコードがすべてスキップの対象となった場合,2番目に指定したファイルが引き続きスキップの対象となる。
レコード数〜<符号なし整数>((0〜2147483647))
スキップするレコード数を示す。省略した場合は,すべてのレコードが入力の対象になる。
入力レコードの件数より大きい数を指定した場合は,出力レコードの件数は0件となる。
2147483647より大きい値を指定すると,2147483647を仮定する。

TOKEY=キー|COUNT=レコード数
入力ファイル中の複写,変換または併合処理の終了位置を指定する。省略すると最後まで処理する。
開始位置≦終了位置の関係が成り立つように指定する。
  • TOKEY=キー
    入力が索引順編成ファイルの場合に指定できる。複写,変換または併合処理を終了するレコードのキーを指定する。指定したキーと一致するレコードがない場合,それより小さい最大キーを持つレコードまで処理をする。
    合成キーは,指定できない。
キー
文字型の場合 〜<引用文字列>((1〜255バイト))
2バイト整数型の場合 〜<整数>((-32768〜32767))
4バイト整数型の場合 〜<整数>((-2147483647〜2147483647))
読み込みで指定したキー番号の定義に従ったキーの値を示す。
キー属性が文字型と整数型の場合に指定できる。ファイルに定義されているキー属性に合わせてキーの値を指定する。指定したキーとキー属性が異なると,エラーとなる。また,読み込みで指定したキー番号の定義が合成キーのときは,指定できない。指定すると,エラーとなる。
キー属性が文字型の場合,引用文字列で指定する。整数を指定するとエラーとなる。指定した文字列とレコードのキーは上位バイトから比較する。指定した文字列が,定義されているキーの長さより短いときは,指定した文字列を含む最大キーを持つレコードまで処理する。指定した文字列がファイルに定義されているキーの長さよりも長いと,エラーとなる。
例 文字型のキーを指定したときの処理対象
オペランドで指定した文字列とファイルのキーは上位バイトから比較する。
・TOKEY='ABC'を指定
・ファイルのキー(8バイト)
 上位→下位
 'ABAAAAAA'     ← 処理対象
 'ABCAAAAA'     ← 処理対象
 'ABCBBBBB'     ← 処理対象
 'ABDAAAAA'     ← 処理されない
 
キー属性が2バイトの整数型のときは,-32768〜32767の範囲で指定する。範囲外の値を指定すると,エラーとなる。また,引用文字列を指定するとエラーとなる。
キー属性が4バイトの整数型の場合は,-2147483647〜2147483647の範囲で指定する。-2147483647より小さい値を指定すると,-2147483647を仮定する。また,2147483647より大きい値を指定すると,2147483647を仮定する。引用文字列を指定するとエラーとなる。
  • COUNT=レコード数
    REPRO文で指定できるすべての形式の入力ファイルに指定できる。複写,変換または併合処理を終了するまでのレコード数を指定する。
レコード数〜<符号なし整数>((1〜2147483647))
複写,変換または併合処理を終了するまでのレコード数を示す。省略した場合は,すべてのレコードが入力の対象になる。入力レコードの件数より大きい数を指定した場合は,すべてのレコードが入力の対象になる。
2147483647より大きい値を指定すると,2147483647を仮定する。
●注意事項
(e) DELETE文
●形式
 
[記号] △1 DELETE △1
 
 
ISAM,DD=DD名
 
●オペランド

ISAM
索引順編成ファイルを削除することを指定する。
削除対象のファイルが存在しないときはエラーになるが,処理を続行する。

DD=DD名
  • DD名〜<環境変数名>((1〜31文字))
    削除するファイルのファイルパス名を定義したDD名を指定する。
●注意事項
(f) SET文
●形式
 
[記号] △1 SET △1
 
 
[MAXCC | LASTCC]=終了コード
 

制御文で指定した機能の実行時の終了コードを変更するときに指定する。ただし,制御文で文法解析エラー発生時には,終了コードを変更できない。

直前の制御文の実行時にエラーがあっても,後続の制御文を実行したいときに指定する。例えば,直前の制御文で終了コード12になっても,終了コードを0に変更すると後続の制御文を実行できる。

●オペランド

[MAXCC | LASTCC]=終了コード

(5) 使用例

(a) ファイルの複写

索引順編成ファイルを部分的に複写する例を次に示す。

<例1>複写元の索引順編成ファイルから先頭の5レコードをスキップし,そこから100レコード分を新規作成ファイルに複写する。また,複写先を2か所にする。

なお,索引順編成ファイルは使用するキーによって入力するレコードの順序が異なる。次の図に,使用するキーの順に入力するレコードの配置のイメージを示す。物理的なレコードの位置は示していないことに注意すること。

図3-42 索引順編成ファイルの一部を複写

[図データ]

 
<?xml version="1.0" encoding="Shift_JIS" ?>
<HitachiBatchJobExec version="1.3" os="windows" >
 <JOB NAME="SAMPLE1" >
  <STEP NAME="STEP0001" >
   <EXEC PGM="bjexu_ismut" />                                     :(1)
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT1" TYPE="FILE" DSN="file1" DISP="OLD" />        :(2)
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="OLD" />        :(3)
   <DD NAME="SYSUT3" TYPE="FILE" DSN="file3" DISP="OLD" />        :(4)
   <DD NAME="SYSIN" TYPE="DATA" >
    <![CDATA[
!
       DEFINE ISAM,                                               :(5)
             DD=SYSUT2,                                           :(6)
             ISRECL=(100),                                        :(7)
             ISRECFM=F,                                           :(8)
             ISKEY=(5,0,C)                                        :(9)
       DEFINE ISAM,                                               :(10)
             DD=SYSUT3,                                           :(11)
             ISRECL=(100),                                        :(12)
             ISRECFM=F,                                           :(13)
             ISKEY=(5,0,C)                                        :(14)
       INPFILE FILEORG=I                                          :(15)
       OUTFILE FILEORG=I                                          :(16)
       REPRO KEY=1,                                               :(17)
             INDD=SYSUT1,                                         :(18)
             OUTDD=SYSUT2,                                        :(19)
             COPYDD=SYSUT3,                                       :(20)
             SKIP=5,                                              :(21)
             COUNT=100                                            :(22)
!
    ]]>
   </DD>
  </STEP>
 </JOB> 
</HitachiBatchJobExec>
 

(1)bjexu_ismutプログラムを実行する。

(2)入力ファイルを定義する。

(3)新たに作成する索引順編成ファイルを定義する。このファイルを出力ファイルとして使用する。

(4)新たに作成する索引順編成ファイルを定義する。もう1つの出力ファイルとして使用する。

(5)DEFINE文で索引順編成ファイルを作成する。

(6)DDオペランドに,新たに作成する索引順編成ファイルのファイルパス名を定義したDD名を指定する。

(7)ISRECLオペランドにレコード長を指定する。

(8)ISRECFMオペランドに作成する索引順編成ファイルのレコード種別を指定する。ISRECFM=Fは,固定長であることを示す。

(9)ISKEYオペランドに主キーのキー長,相対キー位置およびキー属性を指定する。ISKEY=(5,0,C)は,キー長が5バイト,相対キー位置が0,キー属性が文字型であることを示す。

(10)DEFINE文で索引順編成ファイルを作成する。

(11)DDオペランドに,新たに作成する索引順編成ファイルのファイルパス名を定義したDD名を指定する。

(12)ISRECLオペランドにレコード長を指定する。

(13)ISRECFMオペランドに作成する索引順編成ファイルのレコード種別を指定する。ISRECFM=Fは,固定長であることを示す。

(14)ISKEYオペランドに主キーのキー長,相対キー位置およびキー属性を指定する。ISKEY=(5,0,C)は,キー長が5バイト,相対キー位置が0,キー属性が文字型であることを示す。

(15)入力ファイル形式を指定する。FILEORG=Iは固定長索引順編成ファイルであることを示す。

(16)出力ファイル形式を指定する。FILEORG=Iは固定長索引順編成ファイルであることを示す。

(17)REPRO文でファイルを複写する。入力ファイルが索引順編成ファイルの場合,KEYオペランドに入力ファイルで使用するキーを指定する。KEY=1は主キーファイル(ファイル拡張子".K01")を使用することを示す。このファイルの主キーは,キー長が2バイト,相対キー位置が0で,キー属性は文字型と定義してある。

(18)INDDオペランドに入力ファイルを定義したDD名を指定する。

(19)OUTDDオペランドに出力ファイルを定義したDD名を指定する。

(20)COPYDDオペランドは,もう1つの出力ファイルを定義したDD名を指定する。

(21)SKIPオペランドに複写元のレコードの先頭からスキップするレコード数を指定する。

(22)COUNTオペランドに複写するレコード数を指定する。

<例2>複写元ファイルで主キーが"2C"から"2F"までのレコードを新規作成ファイルに複写する。

図3-43 索引順編成ファイルで特定の主キーであるレコードを複写

[図データ]

 
<?xml version="1.0" encoding="Shift_JIS" ?>
<HitachiBatchJobExec version="1.3" os="windows" >
 <JOB NAME="SAMPLE2" >
  <STEP NAME="STEP0001" >
   <EXEC PGM="bjexu_ismut" />
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT1" TYPE="FILE" DSN="file1" DISP="OLD" />        :(1)
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="OLD" />        :(2)
   <DD NAME="SYSIN" TYPE="DATA" >
   <![CDATA[
!
       DEFINE ISAM,                                               :(3)
             DD=SYSUT2,                                           :(4)
             ISRECL=(100),                                        :(5)
             ISRECFM=F,                                           :(6)
             ISKEY=(2,0,C)                                        :(7)
       INPFILE FILEORG=I                                          :(8)
       OUTFILE FILEORG=I                                          :(9)
       REPRO KEY=1,                                               :(10)
             INDD=SYSUT1,                                         :(11)
             OUTDD=SYSUT2,                                        :(12)
             FROMKEY='2C',                                        :(13)
             TOKEY='2F'                                           :(14)
!
    ]]>
   </DD>
  </STEP>
 </JOB>
</HitachiBatchJobExec>
 

(1)入力ファイルを定義する。

(2)新たに作成する索引順編成ファイルを定義する。このファイルを出力ファイルとして使用する。

(3)DEFINE文で索引順編成ファイルを作成する。

(4)DDオペランドに,新たに作成する索引順編成ファイルのファイルパス名を定義したDD名を指定する。

(5)ISRECLオペランドにレコード長を指定する。

(6)ISRECFMオペランドに作成する索引順編成ファイルのレコード種別を指定する。ISRECFM=Fは,固定長であることを示す。

(7)ISKEYオペランドに主キーのキー長,相対キー位置およびキー属性を指定する。ISKEY=(2,0,C)は,キー長が2バイト,相対キー位置が0,キー属性が文字型であることを示す。

(8)入力ファイル形式を指定する。FILEORG=Iは固定長索引順編成ファイルであることを示す。

(9)出力ファイル形式を指定する。FILEORG=Iは固定長索引順編成ファイルであることを示す。

(10)REPRO文でファイルを複写する。入力ファイルが索引順編成ファイルの場合,KEYオペランドに入力ファイルで使用するキーを指定する。KEY=1は主キーファイル(ファイル拡張子".K01")を使用することを示す。このファイルの主キーは,キー長が2バイト,相対キー位置が0で,キー属性は文字型と定義してある。

(11)INDDオペランドに入力ファイルを定義したDD名を指定する。

(12)OUTDDオペランドに出力ファイルを定義したDD名を指定する。

(13)FROMKEYオペランドに複写を開始するレコードのキーの値を指定する。

(14)TOKEYオペランドに複写を終了するレコードのキーの値を指定する。
(b) ファイルの併合

索引順編成ファイルの併合の例を次の図に示す。

ファイルの併合は,レコードを複写する点ではファイルの複写と同じだが,併合先の出力ファイルにすでにレコードがある点が異なる。ファイルの併合の例では,次の処理を実施している。

  1. 併合途中のエラー発生によるファイル破壊に備えて,バックアップを取得する。
  2. ファイルの併合を実行する。
  3. エラー(リターンコード8)が発生した場合は,バックアップからファイルを回復する。
  4. バックアップ用のファイルを削除する。

複写元と併合先のファイルで主キーが重複するレコードがある場合,複写元のレコードに置き換えるには,REPRO文でREPLACEオペランドを指定する。

なお,索引順編成ファイルでは,キーの順に処理され,新たにレコードを追加する場合には,レコード削除後に残る無効レコード(空き領域)を使用することがある。このため,レコードの物理的な位置は不定となる。

図3-44 索引順編成ファイルで特定の主キーのレコードを複写

[図データ]

 
<?xml version="1.0" encoding="Shift_JIS" ?>
<HitachiBatchJobExec version="1.3" os="windows" >
 <JOB NAME="SAMPLE3" >
  <STEP NAME="STEP0000" >
   <EXEC PGM="*" >
    <![CDATA[! iscpy %DDN_SYSUT2% %DDN_SYSUT2B% !]]>               :(1)
   </EXEC>
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="OLD" />
   <DD NAME="SYSUT2B" TYPE="FILE" DSN="file2B" DISP="OLD" />
  </STEP>
  <STEP NAME="STEP0001" >
   <EXEC PGM="bjexu_ismut" />
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT1" TYPE="FILE" DSN="file1" DISP="OLD" />
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="OLD" />
   <DD NAME="SYSIN" TYPE="DATA" >
    <![CDATA[
!
       INPFILE FILEORG=I
       OUTFILE FILEORG=I
       REPRO INDD=SYSUT1,OUTDD=SYSUT2,                             :(2)
             REPLACE                                               :(3)
!
    ]]>
   </DD>
  </STEP>
  <STEP NAME="STEP0002" >
   <EXEC COND="8,NE,STEP0001" PGM="*" >                            :(4)
    <![CDATA[! iscpy %DDN_SYSUT2B% %DDN_SYSUT2% !]]>               :(5)
   </EXEC>
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="OLD" />
   <DD NAME="SYSUT2B" TYPE="FILE" DSN="file2B" DISP="OLD" />
  </STEP>
  <STEP NAME="STEP0003" >
   <EXEC PGM="bjexu_ismut" />
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT2B" TYPE="FILE" DSN="file2B" DISP="OLD" />
   <DD NAME="SYSIN" TYPE="DATA" >
    <![CDATA[
!
       DELETE ISAM,DD=SYSUT2B                                      :(6)
!
    ]]>
   </DD>
  </STEP>
 </JOB>
</HitachiBatchJobExec>
 

(1)ISAMのユティリティコマンドで,バックアップ用に索引順編成ファイルを複写する。ISAMについての詳細は,マニュアル「索引順編成ファイル管理 ISAM」を参照のこと。

(2)REPRO文を実行する。出力ファイルには既存のレコードがあるため,ファイルの併合を実施する。

(3)REPLACE指定がある場合,同じ主キーのレコードが出力先にあると,そのレコードを置き換える。

(4)先行のbjexu_ismutのジョブステップでリターンコード8のエラーが発生した場合は,ファイル回復のジョブステップを実行する。

(5)ISAMのユティリティコマンドで,バックアップ用の索引順編成ファイルから複写して回復する。

(6)バックアップ用の索引順編成ファイルを削除する。

注 この例では,複写するレコードを指定するオペランドが省略されているため,主キーの順にすべてのレコードが複写される。
(c) ファイルの変換

可変長索引順編成ファイルを可変長順編成ファイルに変換する例を次に示す。

<例1>入力元の可変長索引順編成ファイルからキー順にデータを読み込み,出力先へ書き込んでいる。

図3-45 可変長索引順編成ファイルを可変長順編成ファイルに変換

[図データ]

 
<?xml version="1.0" encoding="Shift_JIS" ?>
<HitachiBatchJobExec version="1.3" os="windows" >
 <JOB NAME="SAMPLE4" >
  <STEP NAME="STEP0001" >
   <EXEC PGM="bjexu_ismut" />
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT1" TYPE="FILE" DSN="file1" DISP="OLD" />
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="NEW" />
   <DD NAME="SYSIN" TYPE="DATA" >
    <![CDATA[
!
       INPFILE FILEORG=X                                         :(1)
       OUTFILE FILEORG=V,RECLEN=300                              :(2)
       REPRO INDD=SYSUT1,                                        :(3)
             OUTDD=SYSUT2                                        :(4)
!
    ]]>
   </DD>
  </STEP>
 </JOB>
</HitachiBatchJobExec>
 

(1)入力ファイル形式を指定する。FILEORG=Xは可変長索引順編成ファイルであることを示す。

(2)出力ファイル形式を指定する。FILEORG=Vは可変長順編成ファイルであることを示す。RECLENオペランドには最大レコード長を指定する。

(3)REPRO文でファイルの変換および複写を実行する。INDDオペランドに入力ファイルを定義したDD名を指定する。

(4)OUTDDオペランドに出力ファイルを定義したDD名を指定する。出力するレコードは,入力ファイルのレコード長で出力される。

注 この例では,複写するレコードを指定するオペランドが省略されているため,主キーの順にすべてのレコードを変換し,複写する。

順編成ファイルを索引順編成ファイルに変換する例を次に示す。

<例2>ISAMライブラリの64ビット版のbjexu_ismut64プログラムを指定して,入力元の固定長順編成ファイルからデータを読み込み,出力先へ書き込んでいる。

図3-46 固定長順編成ファイルを固定長索引順編成ファイルに変換

[図データ]

 
<?xml version="1.0" encoding="Shift_JIS" ?>
<HitachiBatchJobExec version="1.3" os="windows" >
 <JOB NAME="SAMPLE5" >
  <STEP NAME="STEP0001" >
   <EXEC PGM="bjexu_ismut64" />                                 :(1)
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT1" TYPE="FILE" DSN="file1" DISP="OLD" />
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="OLD" />
   <DD NAME="SYSIN" TYPE="DATA" >
    <![CDATA[ 
! 
       INPFILE FILEORG=F,RECLEN=80                               :(2)
       OUTFILE FILEORG=I                                         :(3)
       REPRO INDD=SYSUT1,                                        :(4)
             OUTDD=SYSUT2                                        :(5)
! 
    ]]>
   </DD>
  </STEP>
 </JOB>
</HitachiBatchJobExec>
 

(1)ISAMライブラリの64ビット版のbjexu_ismut64プログラムを指定する。

(2)入力ファイル形式を指定する。FILEORG=Fは固定長順編成ファイルであることを示す。RECLEN=80は,レコード長が80バイトであることを示す。

(3)出力ファイル形式を指定する。FILEORG=Iは固定長索引順編成ファイルであることを示す。

(4)REPRO文でファイルの変換を実行する。INDDオペランドに入力ファイルを定義したDD名を指定する。

(5)OUTDDオペランドに出力ファイルを定義したDD名を指定する。出力するレコードは,入力ファイルのレコード長で出力される。
(d) ファイルの削除

索引順編成ファイルを作り直す例を次に示す。

<例1>
既存の索引順編成ファイルを削除したあと,同じ索引順編成ファイルを再作成する。
なお,削除対象のファイルがなかった場合,それまでのエラーを無視する。このため,それまでに実行した制御文の終了コードのうち最大の値は0にしておく。
<?xml version="1.0" encoding="Shift_JIS" ?>
<HitachiBatchJobExec version="1.3" os="windows" >
 <JOB NAME="SAMPLE6" >
  <STEP NAME="STEP0001" >
   <EXEC PGM="bjexu_ismut" />
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT1" TYPE="FILE" DSN="file1" DISP="OLD" />       :(1)
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="OLD" />       :(1)
   <DD NAME="SYSIN" TYPE="DATA" >
    <![CDATA[
!
       DELETE ISAM,DD=SYSUT1                                     :(2)
       DELETE ISAM,DD=SYSUT2                                     :(2)
       SET MAXCC=0                                               :(3)
       DEFINE ISAM,                                              :(4)
              DD=SYSUT1,
              ISRECL=(100),
              ISRECFM=F,
              ISKEY=(5,0,C)
       DEFINE ISAM,                                              :(4)
              DD=SYSUT2,
              ISRECL=(100),
              ISRECFM=F,
              ISKEY=(5,0,C)
!
    ]]>
   </DD>
  </STEP>
 </JOB>
</HitachiBatchJobExec>

(1)削除する索引順編成ファイルを定義する。

(2)索引順編成ファイルの削除を行う。

(3)現在までに実行した終了コードのうち最大の値を0とし,それまでのエラーを無視する。

(4)索引順編成ファイルを作成する。

<例2>
既存の索引順編成ファイルを削除したあと,同じ索引順編成ファイルを再作成する。
なお,再作成するファイルがすでになかった場合,DELETE文のエラーを無視する。このため,直前に実行した制御文の終了コードは0にしておく。
<?xml version="1.0" encoding="Shift_JIS" ?>
<HitachiBatchJobExec version="1.3" os="windows" >
 <JOB NAME="SAMPLE7" >
  <STEP NAME="STEP0001" >
   <EXEC PGM="bjexu_ismut" />
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT1" TYPE="FILE" DSN="file1" DISP="OLD" />       :(1)
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="OLD" />       :(1)
   <DD NAME="SYSIN" TYPE="DATA" >
    <![CDATA[
!
       DELETE ISAM,DD=SYSUT1                                     :(2)
       DELETE ISAM,DD=SYSUT2                                     :(3)
       SET LASTCC=0                                              :(4)
       DEFINE ISAM,                                              :(5)
              DD=SYSUT1,
              ISRECL=(100),
              ISRECFM=F,
              ISKEY=(5,0,C)
!
    ]]>
   </DD>
  </STEP>
 </JOB>
</HitachiBatchJobExec>

(1)削除する索引順編成ファイルを定義する。

(2)(3)索引順編成ファイルの削除を行う。

(4)直前に実行した(3)の終了コードの値を0にする。
それ以前に実行された制御文の終了コードは変更しない。
例2では,(2)の終了コードが4のとき,最大の終了コードは4になる。

(5)索引順編成ファイルを作成する。
(e) 入力の索引順編成ファイルを複数ジョブで共用

JOB0001とJOB0002で,入力の索引順編成ファイルを共用することで,排他/共用ロック確保待ちになることなく同時に実行できるようになる。このため,入力ファイルを指定するDD要素でDISP="SHR"を指定する。

<JOB:JOB0001>
<?xml version="1.0" encoding="Shift_JIS" ?>
<HitachiBatchJobExec version="1.3" os="windows" >
 <JOB NAME="JOB0001" >
  <STEP NAME="S1" >
   <EXEC PGM="bjexu_ismut" />                             
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT1" TYPE="FILE" DSN="file1" DISP="SHR" />        :(1)
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file2" DISP="OLD" />        :(2)
   <DD NAME="SYSIN" TYPE="DATA" >
    <![CDATA[
!
       INPFILE FILEORG=I                                          :(3)
       OUTFILE FILEORG=I                                          :(4)
       REPRO KEY=1,
             INDD=SYSUT1,                                         :(5)
             OUTDD=SYSUT2                                         :(6)
!
    ]]>
   </DD>
  </STEP>
 </JOB> 
</HitachiBatchJobExec>

(1)DD要素SYSUT1でファイルfile1を共用使用するためにDISP="SHR"を指定

(2)DD要素SYSUT2でファイルfile2を排他使用するためにDISP="OLD"を指定

(3)INPFILE文で,入力が索引順編成ファイルであることを指定

(4)OUTFILE文で,出力が索引順編成ファイルであることを指定

(5)INDD文で入力ファイルとしてSYSUT1を指定

(6)OUTDD文で出力ファイルとしてSYSUT2を指定

<JOB:JOB0002>
<?xml version="1.0" encoding="Shift_JIS" ?>
<HitachiBatchJobExec version="1.3" os="windows" >
 <JOB NAME="JOB0002" >
  <STEP NAME="S1" >
   <EXEC PGM="bjexu_ismut" />                             
   <DD NAME="SYSPRINT" TYPE="SYSOUT" SYSOUT="A" />
   <DD NAME="SYSUT1" TYPE="FILE" DSN="file1" DISP="SHR" />        :(1)
   <DD NAME="SYSUT2" TYPE="FILE" DSN="file3" DISP="OLD" />        :(2)
   <DD NAME="SYSIN" TYPE="DATA" >
    <![CDATA[
!
       INPFILE FILEORG=I                                          :(3)
       OUTFILE FILEORG=I                                          :(4)
       REPRO KEY=1,
             INDD=SYSUT1,                                         :(5)
             OUTDD=SYSUT2                                         :(6)
!
    ]]>
   </DD>
  </STEP>
 </JOB> 
</HitachiBatchJobExec>

(1)DD要素SYSUT1でファイルfile1を共用使用するためにDISP="SHR"を指定

(2)DD要素SYSUT2でファイルfile3を排他使用するためにDISP="OLD"を指定

(3)INPFILE文で,入力が索引順編成ファイルであることを指定

(4)OUTFILE文で,出力が索引順編成ファイルであることを指定

(5)INDD文で入力ファイルとしてSYSUT1を指定

(6)OUTDD文で出力ファイルとしてSYSUT2を指定
[図データ]