DSEB (データ・セット編集バッチ) -- batch only
- 目的
- ディスク・データ・セット・レコードを更新します。
- 使用上の注意
- この機能を使用して、単一順次ディスク・データ・セット、単一 VSAM データ・セット、PDS の 1 つ以上のメンバー、MQ キュー、または CICS® リソースの中の論理レコードを更新します。圧縮非 VSAM 拡張形式データ・セット (圧縮 PSE データ・セット) では DSEB を使用できません。次のものを使用して、処理するレコードを選択できます。
- メンバー名の選択基準
- 作成日の選択基準
- 最終変更日の選択基準
- ユーザー ID の選択基準
データ・セットの最初のレコードが読み取られた後に、File Manager は、PROC パラメーターで指定されている REXX プロシージャーを呼び出します。これ以降、レコードの処理は REXX プロシージャーが制御します。この制御には、現行アクティブ・レコードの更新、および更新される次のレコードへのアクセスが含まれます。データ・セットの中を順次に移動する必要はありません。その代わりに、REXX プロシージャーでは、UP、DOWN、BOTTOM および TOP コマンドを使用して、別のレコードへ位置決めすることができます。レコードの内容を変更した後、別のレコードへ位置決めする前に、変更したレコードを更新する必要があります。そうしないと、変更内容は消失してしまいます。
REXX が必要なプロシージャーの場合、レコードが読み取られた後、その内容は、2 つの File Manager 定義の REXX 変数である、INREC および OUTREC に渡されます。この 2 つの変数の内容は、当初は同一です。INREC 変数は、参照変数として使用されることを意図したものです。この変数に対して行われた変更は、すべて File Manager によって無視されます。OUTREC 変数は、exec によって更新することができます。
DSEB を使用してレコードを追加したり、削除したりはできません。レコードを追加したり、削除する必要がある場合は、File Manager データ・セット・コピー機能のどれかを使用する必要があります。さらに、DSEB を使用してデータ・セットの中のレコードの長さを変更できません。REXX プロシージャーが OUTREC または出力レコード (FASTREXX) の中のデータの長さを増大させる場合は、レコードが更新される前に、データはその元の長さに切り捨てられます。REXX プロシージャーが OUTREC または出力レコード (FASTREXX) の中のデータの長さを削減する場合は、PAD 処理オプションの中で指定されている埋め込み値を使用して、データがその元の長さになるように埋め込みが行われます。埋め込み値が指定されていない場合は、レコードの内容がどうなるかは予測できません。
- パフォーマンス上のヒント
- DSEB は、一定タスクを実行するには最も効率的な機能ではない場合があります。パフォーマンスが重要な操作の場合、最初に DSC、DSP、DSU、または FCH などの別のユーティリティーの使用を検討してください。
DSU は、DSEB に最も似ているユーティリティーです。ただし、DSU はファイルを上から下に 1 回通過するだけです。
- DSEB は、FASTREXX 向けにサポートされている REXX 構文に準拠している限り、FASTREXX の下で実行できます。
- DSEB 限定の File Manager REXX コマンドの UP() は効率が良くない可能性があります。現行レコードに先行するレコードを再処理する必要がある DSEB 操作のパフォーマンスが重要な場合、TOP() コマンドを使用して再書き込みする方法を検討し、データに対するそれぞれの前方
パス
でより多くの処理を試行してください。
- DSEB は、一定タスクを実行するには最も効率的な機能ではない場合があります。パフォーマンスが重要な操作の場合、最初に DSC、DSP、DSU、または FCH などの別のユーティリティーの使用を検討してください。
- オプション
- PROC オプションを指定するときに、REXX プロシージャーを設定することになります。詳しくは、下記の proc パラメーターを参照してください。
- 戻りコード
- DSEB 機能からのデフォルトの戻りコードには、変更された以下の意味があります。
- 1
- 1 つ以上のメンバーが更新されませんでした。
- 2
- 変更に失敗しました (例えば、キー変更が無効である場合など)。
- 4
- レコードは更新されず、NOUPDATE=NO となります。
- 4
- 処理するメンバーが存在しなかったため、レコードは処理されませんでした。
- 4
- 入力が空であったため、レコードは処理されませんでした。
- 4
- 入力が ISPF パック・データ形式であり、「PACK=STOP」 オプションが指定されていたため、 レコードは処理されませんでした。
- 8
- レコードの処理中に REXX 非構文エラーが検出されました。
- 16
- プログラム・オブジェクトが指定されていました。これはサポートされていません。
- 16
- データ・セットまたはメンバーが使用中です。
- 16
- データ・セットまたはメンバーのオープン・エラー。
- 16
- データ・セットが見つかりませんでした。
- 16
- その他の入出力エラーが発生しました。
- 16
- ストレージ不足です。
- 16
- DSEB が異常終了しました。
- 16
- 処理を停止するその他の重大なエラーが発生しました。
注: インストール時に、戻りコードをカスタマイズすることができます。上に示したもの以外の戻りコードを受け取った場合には、ご使用のサイトでこの機能用に戻りコードをカスタマイズしている可能性があります。バッチの戻りコードが ABENDCC 値以上であると、File Manager が 999 異常終了を発行する場合もあります。詳しくは、File Manager システム管理者にお問い合わせください。 - 関連機能
- DSG
- テスト・データをデータ・セットに書き込みます。
- DSU
- ディスク・データ・セット・レコードを更新します。
- INPUT=ddname
- 入力データ・セット用の DD ステートメントまたは TSO ALLOC ステートメントに対する参照を定義します。デフォルトは
DDIN
です。 - DSNIN=dsname
- 入力データ・セットの名前を定義します。DD ステートメントが指定されている場合は、使用されません。名前に、小括弧で囲んだメンバー名を含めることができます。ここでメンバーを指定する場合は、関連する Member パラメーターを空にする必要があります。このデータ・セットは、以下のようにさらに詳細に記述できます。
- VOLSERIN=volser
- 非カタログ・データ・セットのボリューム通し番号。
- rt:applid:rname
- データ・セット名の代わりに CICS® リソースを指定できます。パラメーターの意味は、以下のとおりです。
- rt
- リソース・タイプ。有効な値は、以下のとおりです。
- FI
- CICS® ファイル。
- TD
- 一時データ・キュー用。
- TS
- 一時ストレージ・キュー用。
- applid
- VTAM® システムの CICS® applid。
- rname
- リソースの名前。
- IGNLEN
- 処理するレコードの選択時に、File Manager が長さの不一致を無視するかどうかを指定します。
- NO
- 長さの不一致を無視しません。テンプレート中の突き合わせ構造の長さより短いレコードは、処理に選択されません。
- YES
- 長さの不一致を無視するには、このオプションを使用します。
- NOUPDATE
- ユーティリティーの実行時にデータ・セットの更新を行わないように指定できます。
- NO
- データの更新が行われます。
- YES
- データ・セットを入力専用として強制的に割り振ります。UPDATE() 関数は無視されます。
- MEMBER=member1
- PDS の中の単一メンバーの名前、または PDS の中の 1 つ以上のメンバーを表すメンバー名のパターン。入力データ・セットが PDS(E) の場合、このパラメーターを指定するか、ddname の DD ステートメントにメンバー名を指定するか、MEMSTART キーワードおよび MEMEND キーワードを使用してメンバー名の範囲を指定する必要があります。
メンバー名パターンは、メンバー名に有効な任意の文字と 2 つの特殊パターン文字 (アスタリスク (*) およびパーセント記号 (%)) から構成することができます。
- *
- 任意の数の文字を表します。必要な数のアスタリスクを、メンバー名パターンの任意の場所に使用することができます。例えば、
*d*
というメンバー名パターンを入力すると、PDS の中で、名前に「d」が含まれているすべてのメンバーが処理されます。 - %
- 単一文字を表すプレースホルダー文字。パーセント記号は、メンバー名パターンの任意の場所に必要な数だけ指定できます。例えば、メンバー名パターンとして
%%%%
を入力すれば、名前の長さが 4 文字である、PDS 内のすべてのメンバーが処理されます。
データ・セットが PDS でない場合、member1 は無視されます。
- MEMSTART=startstring
- コピーに含めるメンバー名の範囲の始まりを指定するのに使用されます。MEMSTART が指定されたが MEMEND は省略された場合、PDS(E) 内の startstring 値以降の全メンバーが組み込まれます。startstring では、MEMBER キーワードの member1 パラメーターに関して、ワイルドカードを含め、同じ値を持つことができます。
- MEMEND=endstring
- コピーに含めるメンバー名の範囲の終わりを指定するのに使用されます。MEMEND が指定されたが MEMSTART は省略された場合、PDS(E) 内の endstring 値までの全メンバーが組み込まれます。endstring では、MEMBER キーワードの member1 パラメーターに関して、ワイルドカードを含め、同じ値を持つことができます。
- XMEMBERS
- MEMSTART、MEMEND、および MEMBER オプションを使用して、処理するライブラリー・メンバーから除外し、それ以外が選択される方法を提供します。
- xmem_filter
- 処理から除外する 1 つ以上のメンバーを識別するメンバー名フィルター。フィルターには、複数のメンバーを表すメンバー名パターンを指定できます。
小文字を含むメンバー名フィルターを指定するには、
c'string'
形式で文字ストリングを使用します。フィルター値は、x'hex-digits'
形式で 16 進ストリングとして指定することもできます。
- CREATED=created
- メンバーが作成された日付 (YYYY/MM/DD 形式)。
入力データ・セットが PDS(E) の場合、このパラメーターを指定するか、CRESTART キーワードおよび CREEND キーワードを使用して作成日の範囲を指定する必要があります。
日付の範囲を示すために最終文字としてアスタリスク (*) を指定したり、日付の選択を示すために単一文字の代わりに % 記号を指定することができます。
データ・セットが PDS でない場合、created は無視されます。
- CRESTART=crestart
- コピーに含める作成日の範囲の始まり (YYYY/MM/DD 形式)。
CRESTART は指定されているが CREEND が省略されている場合、crestart 値から先の PDS(E) のすべてのメンバーが含まれます。
省略するか、完全な日付を入力しないか、最後の文字としてアスタリスク (*) を指定すると、crestart の指定されていない部分はデフォルトで右側に寄せられて次のようになります。- DD
- = 01
- MM
- = 01
- YYYY
- = 0000
- CREEND=creend
- コピーに含める作成日の範囲の終わり (YYYY/MM/DD 形式)。省略するか、完全な日付を入力しないか、最後の文字としてアスタリスク (*) を指定すると、creend の指定されていない部分はデフォルトで右側に寄せられて次のようになります。
- DD
- = 31
- MM
- = 12
- YYYY
- = 9999
- CHANGED=changed
- メンバーが最後に変更された日付 (YYYY/MM/DD 形式)。
入力データ・セットが PDS(E) の場合、このパラメーターを指定するか、CHGSTART キーワードおよび CHGEND キーワードを使用して変更日の範囲を指定できます。
日付の範囲を示すために最終文字としてアスタリスク (*) を指定したり、日付の選択を示すために単一文字の代わりに % 記号を指定することができます。
データ・セットが PDS でない場合、changed は無視されます。
- CHGSTART=chgstart
- コピーに含める変更日の範囲の始まり (YYYY/MM/DD 形式)。
CHGSTART は指定されているが CHGEND が省略 されている場合、chgstart 値から先の PDS(E) のすべてのメンバーが含まれます。
省略するか、完全な日付を入力しないか、最後の文字としてアスタリスク (*) を指定すると、chgstart の指定されていない部分はデフォルトで右側に寄せられて次のようになります。- DD
- = 01
- MM
- = 01
- YYYY
- = 0000
- CHGEND=chgend
- コピーに含める変更日の範囲の終わり (YYYY/MM/DD 形式)。省略するか、完全な日付を入力しないか、最後の文字としてアスタリスク (*) を指定すると、chgend の指定されていない部分はデフォルトで右側に寄せられて次のようになります。
- DD
- = 31
- MM
- = 12
- YYYY
- = 9999
- USERID=userid
- メンバーを最後に更新した TSO ユーザー ID。
入力データ・セットが PDS(E) の場合、このパラメーターを指定するか、UIDSTART キーワードおよび UIDEND キーワードを使用してユーザー ID の範囲を指定する必要があります。
アスタリスクおよび % 記号を使用して総称ユーザー ID を入力できます。
データ・セットが PDS でない場合、userid は無視されます。
- UIDSTART=uidstart
- コピーに含めるユーザー ID の範囲の始まり。
UIDSTART は指定されているが UIDEND が省略されている場合、uidstart 値から先の PDS(E) のすべてのメンバーが含まれます。
省略するか、完全な 7 文字のユーザー ID を入力しないか、最後の文字としてアスタリスク (*) を指定すると、File Manager はアスタリスクを置き換えて、uidstart の指定されていない部分を右側に寄せて低い値 (X'00') を埋め込みます。
- UIDEND=uidend
- コピーに含めるユーザー ID の範囲の終わり。
このフィールドを省略すると、デフォルトで高い値 (X'FF') になります。
7 文字未満を指定すると (最後の文字としてアスタリスクを指定せずに)、File Manager は uidstart を右側に寄せて低い値 (X'00') を埋め込みます。最後の文字としてアスタリスク (*) を指定すると、File Manager はアスタリスクを置き換えて、uidend の指定されていない部分に高い値 (X'FF') を埋め込みます。
- POSITION=skip
- データ・セットの始めから数えたスキップされる論理レコード数。デフォルトは 0です。
- KEY=key (VSAM のみ)
- KSDS レコードのキー、または RRDS レコードのスロット番号。キーの最大長は 30 文字です。key 以上のキー値またはスロット値を持つ最初のレコードが最初に印刷されるレコードになります。key および skip 値を省略すると、 データ・セットの最初のレコードから印刷が開始されます。
キーに小文字、ブランク、またはコンマが入っている場合には、キーを引用符で囲みます。キーは、16 進形式でも指定可能です (例えば X'C1C2C3')。
- PACK
- 入力データが ISPF パック・データ形式であるかどうかをFile Manager が検出するかどうかを判別します。
- STOP
- デフォルトです。入力データが ISPF パック・データ形式であるかどうかを File Manager が検出し、この形式であると、処理を停止します。
- 続行
- 入力データが ISPF パック・データ形式であるかどうかを File Manager は検出せず、処理を続行します。
- USEIOXIN
- 入力データ・セットを処理するために、ユーザー I/O 出口を呼び出すかどうかを指定します。
- NO
- デフォルトです。ユーザー I/O 出口を呼び出しません。
- YES
- 入力データ・セットを処理するために、ユーザー I/O 出口を呼び出します。このオプションは、File Manager 用にサイトのカスタマイズを行ったユーザーが、そのサイト・ベースでユーザー I/O 出口を許可した場合にのみ使用できます。
- IOXIN
- 入力データ・セットに使用するユーザー I/O 出口の名前を指定します。出口を記述するために使用できるプログラミング言語に制限はありません。STEPLIB/ISPLLIB 連結またはその拡張機能 (LINKLIST、LPA など) で、File Manager に出口を指定する必要があります。
- sysexit
- デフォルトです。USEIOXIN=YES を指定し、ユーザー I/O 出口名を指定しない場合、File Manager はインストール時のカスタマイズ・オプションで提供される出口の名前を使用します。USEIOXIN が YES に設定され、インストール・デフォルトが指定されていない場合は、IOXIN=ioxname を指定する必要があります。注: オンライン・パネルでバッチ処理を選択した場合、生成される JCL ステートメントは「Set System Processing Options (システム処理オプションの設定)」パネルで提供されているデフォルト名を使用します。
- ioxname
- STEPLIB 連結で File Manager に提供されたデータ・セットの PDS(E) メンバーの名前。
- PROC=proc
- 各レコードが更新される前にそのレコードを処理するために使用したい REXX プロシージャーのメンバー名、またはプロシージャーがインラインであることを示すアスタリスク (*)。PDS メンバー名を指定する場合は、そのメンバーを含んでいる PDS を識別する FMNEXEC DD 名を定義する必要があります。* を指定した場合は、プロシージャーは、現行機能の制御ステートメントの直後に続く SYSIN から読み取られます。インライン・プロシージャーは、1 から 2 桁目にスラッシュと正符号 (/+) が入っているレコードによって終了されます。
REXX プロシージャーを使用して、レコードが更新される前にそれらのレコードを処理すること について詳しくは、File Manager 処理の拡張を参照してください。
- テンプレート処理
- 入力データ・セット内のレコード構造を記述するために使用するテンプレートを定義し (ただし、テンプレートが存在する場合のみ)、File Manager がこのテンプレートをどのように処理するかを定義します。
- TINPUT=ddname
- 入力データのレコード構造が記述されているコピーブックまたはテンプレートが入ったデータ・セットの DD または TSO ALLOC ステートメントに対する参照を定義します。デフォルトは、TDDIN です。
連結 DD を指定した場合は、メンバー名 (member) を指定する必要があります。
- TINMEM=member
- コピーブックまたはテンプレート・メンバーが DD ステートメントで指定されていない場合に、TINPUT パラメーターによって識別されるデータ・セットのコピーブックまたはテンプレート・メンバーの名前。TCIN パラメーターが指定されている場合、このパラメーターを指定することはできません。
- TCIN=tcin(member)
- 入力データのレコード構造が記述されているコピーブックまたはテンプレートの PDS およびメンバーの名前。注: DSEB および DSU にテンプレートを指定すると、そのテンプレートは無視されます (TABL または SNGL 形式を指定する REXX 外部関数 (PRINT) への呼び出しは除く)。
- OFFSETIN
- テンプレートの 01 フィールドの長さ、およびフィールドの開始位置 (01 フィールドはその中で、指定された値に応じて調整される)。
- 値
- 対応するフィールド ID に適用されるオフセット値 (-32760 から 32760 の範囲でなければなりません)。フィールド ID が指定されず、ALL が指定されていない場合は、値がテンプレートの最初のレベル 01 フィールドに適用されます。
- ALL
- テンプレートに複数のレコード構造がある場合は、このキーワードによって、対応する value がテンプレート内の すべてのレベル 01 に適用されます。注: ALL の値を指定した後で、個々のレイアウトについてこの値を指定変更することもできます。 それには、後から value と fieldname の組み合わせを指定します。
- fieldname
- value が適用されるレベル 01 フィールドの名前。デフォルトは、テンプレート内の最初のレベル 01 フィールドです。
- Copybook 処理
- COBOL オプション
- 次のオプションは、COBOL コピーブックをテンプレートにコンパイルするために使用します。
- DBCS=YES
- DBCS コンパイラー・オプションを使用します。
- DBCS=NO
- NODBCS コンパイラー・オプションを使用します。
DBCS および NODBCS コンパイラー・オプションの効果の詳細については、IBM COBOL Programming Guide for OS/390 & VM を参照してください。
- CDPC=NO
- COBOL SPECIAL-NAMES パラグラフ「Decimal-point is comma (小数点はコンマ)」を使用しません。
- CDPC = YES
- COBOL SPECIAL-NAMES パラグラフ「Decimal-point is comma (小数点はコンマ)」を使用します。
- CAE=NO
- COBOL コンパイル・オプション ARITH(EXTEND) を使用しません。
- CAE = YES
- COBOL コンパイル・オプション ARITH(EXTEND) を使用します。
- MIXED = NO
- フィールド名は大文字でテンプレートに保管されます。
- MIXED = YES
- フィールド名は COBOL コピーブックでコーディングされているとおりに、元の大/小文字でテンプレートに保管されます。
- RFROM1 RTO1 … RFROM5 RTO5
-
COBOL REPLACE コンパイラー指示ステートメントの「From (検索)」および「To (置換)」疑似テキスト文字ストリングの最大 5 つの対。
COBOL コピーブックをテンプレートにコンパイルする前に、COBOL コピーブックに除去する文字または他の文字と置き換えたい文字が含まれている場合には、この置換オプションを使用します。
例えば、コピーブックに、コンパイル前に除去したいコロン文字 (:) が含まれている場合は、「
'==:=='
」を operand1 として、さらに「'====='
」を operand2 として指定してください。COBOL REPLACE の「From (検索)」および「To (置換)」のストリングの指定について詳しくは、IBM COBOL Language Reference を参照してください。
- CBLMAXRC
- コピーブックをコンパイルするために、許容できる最大の戻りコードを設定します。指定したレベルを超える戻りコードによって機能は停止します。デフォルトは、4 です。注: COMPMAXRC パラメーターは引き続きサポートされますが、代わりに CBLMAXRC パラメーターを使用することが推奨されています。COMPMAXRC パラメーターを指定すると、それが言語の MAXRC よりも優先されます。
- CBLLIBS
- SYSLIB 連結リスト内で指定されるデータ・セット名 (10 個まで) のリストを指定できます。これらのデータ・セットは、コンパイル用に COPY または INCLUDE メンバーに指定された順序で検索されます。
- dsname
- 処理されるデータ・セット名の名前。総称名マスクは使用できません。
- CBLADDOP
- COBOL コピーブックのコンパイル時に CBL ステートメントに組み込まれる追加の COBOL コンパイラー・オプション。
- PL/I オプション
- 以下のオプションを使用して、PL/I コピーブックをテンプレートにコンパイルします。
- BIN63=YES
- LIMITS(FIXEDBIN(63)) コンパイラー・オプションを使用します。
- BIN63=NO
- LIMITS(FIXEDBIN(31)) コンパイラー・オプションを使用します。
- DEC31=YES
- LIMITS(FIXEDDEC(31)) コンパイラー・オプションを使用します。
- DEC31=NO
- LIMITS(FIXEDDEC(15)) コンパイラー・オプションを使用します。
- GRAPHIC=YES
- GRAPHIC コンパイラー・オプションを使用します。
- GRAPHIC=NO
- NOGRAPHIC コンパイラー・オプションを使用します。
- UNALIGNED=YES
- DEFAULT RANGE (*) UNALIGNED 言語ステートメントを使用して、デフォルトの位置合わせを変更します。
- UNALIGNED=NO
- PL/I のデフォルトを使用します。
- PLIMAXRC
- コピーブックをコンパイルするために、許容できる最大の戻りコードを設定します。指定したレベルを超える戻りコードによって機能は停止します。デフォルトは、4 です。注: COMPMAXRC パラメーターは引き続きサポートされますが、代わりに PLIMAXRC パラメーターを使用することが推奨されています。COMPMAXRC パラメーターを指定すると、それが言語の MAXRC よりも優先されます。
- PLILIBS
- SYSLIB 連結リスト内で指定されるデータ・セット名 (10 個まで) のリストを指定できます。これらのデータ・セットは、コンパイル用に COPY または INCLUDE メンバーに指定された順序で検索されます。
- dsname
- 処理されるデータ・セット名の名前。総称名マスクは使用できません。
- PLIADDOP
- PL/I コピーブックのコンパイル時に *PROCESS ステートメントに組み込まれる追加の PL/I コンパイラー・オプション。
これらのコンパイラー・オプションの効果について詳しくは、IBM VisualAge PL/I for OS/390 Programming Guide を参照してください。
- HLASM オプション
- 次のオプションは、HLASM コピーブックをテンプレートにコンパイルするために使用します。
- DBCS=YES
- DBCS コンパイラー・オプションを使用します。
- DBCS=NO
- NODBCS コンパイラー・オプションを使用します。
- NOALIGN=YES
- NOALIGN コンパイラー・オプションを使用します。
- NOALIGN=NO
- ALIGN コンパイラー・オプションを使用します。
- ASMMAXRC
- コピーブックをコンパイルするために、許容できる最大の戻りコードを設定します。指定したレベルを超える戻りコードによって機能は停止します。デフォルトは、4 です。注: COMPMAXRC パラメーターは引き続きサポートされますが、代わりに ASMMAXRC パラメーターを使用することが推奨されています。COMPMAXRC パラメーターを指定すると、それが言語の MAXRC よりも優先されます。
- ASMLIBS
- SYSLIB 連結リスト内で指定されるデータ・セット名 (10 個まで) のリストを指定できます。これらのデータ・セットは、コンパイル用に COPY または INCLUDE メンバーに指定された順序で検索されます。
- dsname
- 処理されるデータ・セット名の名前。総称名マスクは使用できません。
- ASMADDOP
- COPY メンバーおよび MACRO メンバーのコンパイル時に *PROCESS ステートメントに組み込まれる追加の HLASM コンパイラー・オプション。
これらのコンパイラー・オプションの効果について詳しくは、HLASM V1R6 Programmer's Guide を参照してください。
//FMNDSEB JOB 'change YPE to ORK every record'
//FMNBAT EXEC PGM=FILEMGR
//STEPLIB DD DSN=FMN.SFMNMOD1,DISP=SHR
//SYSPRINT DD SYSOUT=*
//FMNTSPRT DD SYSOUT=*
//SYSIN DD *
$$FILEM DSEB DSNIN=FMNUSER.KSDS.BASE,
$$FILEM PROC=*
filerc = 0
do while filerc = 0
outrec=change(outrec,'YPE','ORK',0)
update()
filerc = down(1)
end
/+
//*
この例はバッチ例 1 と同じですが、FASTREXX を使用しています。
//FMNDSEB JOB 'change YPE to ORK every record'
//FMNBAT EXEC PGM=FILEMGR
//STEPLIB DD DSN=FMN.SFMNMOD1,DISP=SHR
//SYSPRINT DD SYSOUT=*
//FMNTSPRT DD SYSOUT=*
//SYSIN DD *
$$FILEM DSEB DSNIN=FMNUSER.KSDS.BASE,
$$FILEM PROC=*
filerc = 0
do while filerc = 0
outrec=change(outrec,'YPE','ORK',0)
update()
filerc = down(1)
end
/+
//*
//FMNDSEB JOB '4 recs into 1 rec'
//* Job to take SEQ500.BKUP file, copy it to SEQ500
//* and also create SEQ500.COMBINE, which is created from four input records
//DEL EXEC PGM=IEFBR14
//COMBINE DD DSN=FMNUSER.SEQ500.FOURUP,DISP=(MOD,DELETE),
// SPACE=(TRK,(5,5)),DCB=(LRECL=320,BLKSIZE=0,RECFM=FB)
//FMNBAT EXEC PGM=FILEMGR
//STEPLIB DD DSN=FMN.SFMNMOD1,DISP=SHR
//SYSPRINT DD SYSOUT=*
//FMNTSPRT DD SYSOUT=*
//COPY DD DSN=FMNUSER.SEQ500,DISP=OLD
//COMBINE DD DSN=FMNUSER.SEQ500.FOURUP,DISP=(NEW,CATLG),
// SPACE=(TRK,(5,5)),DCB=(LRECL=320,BLKSIZE=0,RECFM=FB)
//SYSTERM DD SYSOUT=*
//SYSIN DD *
$$FILEM DSEB DSNIN=FMNUSER.SEQ500.BKUP,
$$FILEM PROC=*
fpos = 0
recnum = 0
filerc = 0
Outrec.combine = ''
do while filerc = 0
recnum = recnum +1
/* Create just a copy of this file */
Outrec.Copy = Outrec
Write(Copy)
/* concatenate every four records into one record on combine data set */
Outrec.combine = Outrec.combine||Outrec
If recnum // 4 = 0 then do
Write(Combine)
Outrec.combine = ''
end
filerc = down(1)
end
/+
//*