DSU (データ・セットの更新) -- batch only
- 目的
- ディスク・データ・セット・レコードを更新します。
- 使用上の注意
- この機能を使用して、単一順次ディスク・データ・セット、単一 VSAM データ・セット、PDS の 1 つ以上のメンバー、MQ キュー、または CICS® リソースの中の論理レコードを更新します。注: 圧縮非 VSAM 拡張形式データ・セット (圧縮 PSE データ・セット) はサポートされていません (DSU で使用できません)。PROC を使用して圧縮データ・セットを更新する場合は、PROC とともに FCH を使用することをお勧めします。次のものを使用して、処理するレコードを選択できます。
- メンバー名の選択基準
- 作成日の選択基準
- 最終変更日の選択基準
- ユーザー ID の選択基準
データ・セットの中のレコードは、順次に読み取られます。各レコードが読み取られた後に、File Manager は、PROC パラメーターで指定されている REXX プロシージャーを呼び出し、レコードの内容を exec に渡します。その内容は、File Manager 定義の REXX 変数、INREC および OUTREC に渡されます。exec が呼び出されたときには、この 2 つの変数の内容は同一です。INREC 変数は、参照変数として使用されることを意図したものです。この変数に対して行われた変更は、すべて File Manager によって無視されます。OUTREC 変数は、exec によって更新することができます。REXX プロシージャーがレコードを処理した後、OUTREC の中のデータが変更されていた場合には、レコードは OUTREC の内容を使用してデータ・セットの中で更新されます。
DSU を使用してレコードを追加したり、削除したりはできません。レコードを追加したり、削除する必要がある場合は、File Manager データ・セット・コピー機能のどれかを使用する必要があります。DSU を使用してデータ・セットの中のレコードの長さを変更できません。REXX プロシージャーが OUTREC の中のデータの長さを増大させる場合は、レコードが更新される前に、データはその元の長さに切り捨てられます。REXX プロシージャーが OUTREC の中のデータの長さを削減する場合は、PAD 処理オプションの中で指定されている埋め込み値を使用して、データがその元の長さになるように埋め込みが行われます。埋め込み値が指定されていない場合は、レコードの内容がどうなるかは予測できません。
- パフォーマンス上のヒント
- DSU を使用して PDS(E) のメンバーを更新する場合、次の点を検討してください。
1 つの DSU のデフォルトは STATS=ON です。これにより、更新された各メンバーの ISPF 統計が更新されます。この処理により、I/O (EXCP) および CPU の使用率は著しく増えます。パフォーマンスを向上させるには、STATS=OFF の使用を検討してください。
- DSU を使用して PDS(E) のメンバーを更新する場合、次の点を検討してください。
- オプション
- PROC オプションを指定するときに、REXX プロシージャーを設定することになります。詳しくは、下記の proc パラメーターを参照してください。
- 戻りコード
- DSU 機能からのデフォルトの戻りコードには、変更された以下の意味があります。
- 1
- 1 つ以上のメンバーが更新されませんでした。
- 2
- 変更に失敗しました (例えば、キー変更が無効である場合など)。
- 4
- レコードが更新されませんでした。(NOUPDATE=NO)
- 4
- 処理するメンバーが存在しなかったため、レコードは処理されませんでした。
- 4
- 入力が空であったため、レコードは処理されませんでした。
- 4
- 入力が ISPF パック・データ形式であり、「PACK=STOP」 オプションが指定されていたため、 レコードは処理されませんでした。
- 8
- レコードの処理中に REXX 非構文エラーが検出されました。
- 16
- プログラム・オブジェクトが指定されていました。これはサポートされていません。
- 16
- データ・セットまたはメンバーが使用中です。
- 16
- データ・セットまたはメンバーのオープン・エラー。
- 16
- データ・セットが見つかりませんでした。
- 16
- その他の入出力エラーが発生しました。
- 16
- ストレージ不足です。
- 16
- DSU が異常終了しました。
- 16
- 処理を停止するその他の重大なエラーが発生しました。
注: インストール時に、戻りコードをカスタマイズすることができます。上に示したもの以外の戻りコードを受け取った場合には、ご使用のサイトでこの機能用に戻りコードをカスタマイズしている可能性があります。バッチの戻りコードが ABENDCC 値以上であると、File Manager が 999 異常終了を発行する場合もあります。詳しくは、File Manager システム管理者にお問い合わせください。 - 関連機能
- DSEB
- データ・セットをバッチ・ジョブ処理で編集します。
- DSX
- データ・セットのエクステントを表示します。
- 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
- リソースの名前。
- NOUPDATE
- ユーティリティーの実行時にデータ・セットの更新を行わないように指定できます。
- NO
- データの更新が行われます。
- YES
- データ・セットを入力専用として強制的に割り振ります。データの更新はすべて無視されます。
- 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 進ストリングとして指定することもできます。
- INRDW
- 指定された開始位置がレコード記述子ワード (RDW) を考慮に入れる場合、入力開始位置を調整するかしないかを制御します。
- NO
- 入力開始位置を調整しません。
- YES
- 入力レコードを参照する外部関数でコーディングされたすべての開始位置から 4 を減算します。
- OUTRDW
- 指定された開始位置がレコード記述子ワード (RDW) を考慮に入れる場合、出力開始位置を調整するかしないかを制御します。
- NO
- 出力開始位置を調整しません。
- YES
- 出力レコードを参照する外部関数でコーディングされたすべての開始位置から 4 を減算します。
- 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')。
- NLRECS
- 印刷するレコード数、または ALL。
- ALL
- ALL を指定するか、このパラメーターを省略すると、残りのすべてのレコードがコピーされます。
- nlrecs
- 最大数は 99 999 999 です。
- PACK
- 入力データが ISPF パック・データ形式であるかどうかをFile Manager が検出するかどうかを判別します。
- STOP
- デフォルトです。入力データが ISPF パック・データ形式であるかどうかを File Manager が検出し、この形式であると、処理を停止します。
- 続行
- 入力データが ISPF パック・データ形式であるかどうかを File Manager は検出せず、処理を続行します。
- STATS=ON
- デフォルトです。これは、PDS または PDSE メンバーを変更した場合、ISPF 統計 (既に存在している場合) を更新します。
- STATS=OFF
- PDS または PDSE メンバーを変更した場合、ISPF 統計は更新されません。
- STATS=FORCE
- 処理中のメンバーについての既存の ISPF 統計は常に更新され、これまで統計がなかったメンバーの統計は作成されます。
- 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 プロシージャーのメンバー名、または REXX プロシージャーがインラインであることを示すアスタリスク (*)。メンバー名を指定する場合は、そのメンバーを含んでいる 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 フィールドです。
- MEMLIST
- メンバー名のリストを指定できます。
- member_n
- 処理されるメンバーの名前。総称名マスクは使用できます。
- 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 を参照してください。
//DSU JOB (acct),'name' PDS Member Update
//*
//FMBAT PROC
//FMBAT EXEC PGM=FILEMGR
//STEPLIB DD DSN=FMN.SFMNMOD1,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
// PEND
//*
//FILEMGR EXEC FMBAT
//FMNTSPRT DD SYSOUT=*
//JCLPDS DD DSN=FMNUSER.FMOS390.JCL,DISP=SHR
//SYSIN DD *
$$FILEM DSU INPUT=JCLPDS,MEMBER=*,PROC=*
/* Translate all records to uppercase */
Upper outrec
Return
/+
$$FILEM EOJ
/*
//DSU JOB (acct),'name' Fix post code
//*
//FMBAT PROC
//FMBAT EXEC PGM=FILEMGR
//STEPLIB DD DSN=FMN.SFMNMOD1,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
// PEND
//*
//FILEMGR EXEC FMBAT
//FMNTSPRT DD SYSOUT=*
//SYSIN DD *
$$FILEM DSU DSNIN=FMNUSER.FMOS390.TRANRECS,
$$FILEM PROC=*
/* Locate name and address record for James */
/* Browne and change postcode, stored in */
/* packed decimal, from 6011 to 6194 */
If Substr(inrec,1,1) == 'A' &
Substr(inrec,32,5) == 'James' &
Substr(inrec,57,6) == 'Browne' then
outrec = Change(outrec,'06011F'x,'06194F'x,1,125,3)
Return
/+
$$FILEM EOJ
/*