0

JCL を使用して PS ファイル名修飾子で現在の日付を取得するにはどうすればよいですか?

出力ファイル名の例:Z000417.BCV.TEST.D120713(YYMMDD形式)。

4

2 に答える 2

4

これは実行できますが、必ずしも簡単な方法で行う必要はありません。簡単な方法は、JCL でシステム シンボルを使用することです。残念ながら、これは、より新しいバージョンの z/OS でジョブ クラスに対して有効になっている場合、バッチ ジョブに対してのみ機能します。

z/OS v2 より前では、これが機能しなかった理由として IBM が述べたのは、ロンドンのマシンでジョブをサブミットでき、シドニーのマシンで JCL を解釈でき、シカゴのマシンでジョブを実際に実行できたということです。 . データセットの日付 (または時間) は? 正解は 1 つではありません。そのため、私たち全員が、組織にとって正しいと信じる答えを組み込んだ、問題に対する独自のソリューションを作成しました。

バッチ ジョブ JCL でシステム シンボルを使用できる場合は、使用できる有効なシンボルのリストがあります。

目標を達成する 1 つの方法は、ジョブ スケジューリング ツールを使用することです。私は、「自動編集変数」と呼ばれるものを使用する Control-M に精通しています。これらは、製品が提供する特別な構造です。Control-M ソリューションは、データセット名を Z000417.BCV.TEST.D%%ODATE としてコーディングすることです。

一部のショップは、共有 PDS にメンバーを作成するスケジュールされたジョブを実装しています。メンバーは、標準の JCL SET ステートメントのリストで構成されています...

// SET YYMMDD=120713
// SET CCYYMMDD=20120713
// SET MMDDYY=071312

...等々。このメンバーは、その目的のためにスケジュールされたジョブによって、1 日 1 回午前 0 時に作成されます。ジョブは、そのショップで作成されたプログラムを実行して、これらの SET ステートメントを作成します。

もう 1 つの答えは、バッチでISPF ファイル調整を使用して目的を達成できるというものです。ジョブがサブミットされる前に日付が JCL に設定されるため、これは機能します。これは機能しますが、ファイルの調整と、ISPF のバッチでの実行に慣れていない限り、お勧めしません。この返信で概説されている他の方法でこれほど単純なことを達成するのは、ちょっと複雑だと思います。

名前に日付が含まれるデータセットの代わりに GDG を使用できます。探しているものが一意の名前である場合、GDG はそれを実現します (とりわけ)。

私の頭に浮かぶ最後のアイデアは、日付を含まない名前でデータセットを作成し、Unix System Servicesスクリプトを使用して IDCAMS のALTERコマンド ( NEWNAME パラメーターを指定) を作成し、IDCAMSを実行してデータセットの名前を変更することです。

于 2012-07-13T12:20:11.503 に答える
0
  1. JOBTRAC/CONTROL-Mスケジューラを使用してジョブをロードしている場合、必要な形式で日付を取得するのはおそらく簡単です。形式は'OSYMD'である可能性があり、ジョブをロードする前にオンザフライでスケジューラに置き換えられます。ニーズを満たすために多くのフォーマットがあります。
  2. 正確には覚えていませんが、JCL ユーティリティを利用することもできます。これは、SYSIN データセットからファイル名を取得し、出力の DSN 名として作成します。SYSIN データセットは、単純な を使用して、前の手順で作成できますDFSORT &DATE commands。構文が必要かどうかを教えてください。私はグーグルとハンドソンを好みます。
于 2012-07-16T04:45:28.177 に答える