2009-04-14 68 views
2

IEBGENERをどのようにして私が望むように動作させるかを考え出すのに問題があります。私は学術メインフレーム上のz/OS環境でIEBGENERを実行していると言って、これをすべて序文にする必要があります。IEBGENERはどのように使用できますか?

私は、作業中のCOBOLコードにインラインで3つのJCLプロシージャ(PROC)を持っています。私のPROCを「MVS IDの下の永続プロシージャライブラリ」に配置する最初のステップの1つとしてIEBGENERが必要です私のCOBOLソースを "MVS IDの下にある永続的な順次データセット"に入れます。

インストラクター「は、これらのデータ・セットの正しいLRECLとBLKSIZE情報をコーディングすることを忘れないでください。」に言及します

私はIEBGENERに精通していないですし、本当に私がやろうとしています何をする方法を私に説明して何かを発見していません。

どれ「ビッグアイアン」人々を助けることができますか?

//COPY EXEC PGM=IEBGENER 
//SYSUT1 DD DSN=MY.INPUT.FILE,DISP=SHR 
//SYSUT2 DD DSN=MY.OUTPUT.FILE,DISP=NEW,SPACE=.... 
//SYSIN DD DUMMY 

IEBGENERは「ただ」のコピープログラムであり、約それが取るすべては入力ファイル、出力ファイルです:

+0

IBMのドキュメントをお読みになることをお勧めします。それらはデジタル形式で利用できる必要があります。 –

+0

私はあなたの提案を感謝しますが、私がしようとしていることは少し具体的であり、本当に私がやりたいことをやり遂げる方法を私に見せてくれる何も見つかりませんでした。 – Enyalius

+0

OMG、どこでこれを教えていますか?人々がCOBOLと言うとき、私は彼らの顔がぎこちなくなって、歯がこぼれ落ちるのに気付きました。あなたの宿題に幸運を! –

答えて

4

これは、(前述したように、IBMのドキュメントサイトにする必要があります)IEBGENERを使用する方法であります、と私はあなたが「特異的」と思われるものはよく分からない制御ファイル

は、それが使用する名前を知るだけの問題ではないのですか?

編集:あなたの入力は同様にJCLが含まれている場合は、まだ

//SYSUT1 DD * 
... 
/* 

以上::何がしたいことは、あなたの入力をインラインで定義されている場合、これを試してまだ

//SYSUT1 DD DATA,DELIMITER=XX 
... 
XX 

ないJCL例外、しかし、。

+0

私たちはステップとしてソースファイル内からIEBGENERを実行することになっています。ソースCOBOLとPROCのステップも同じファイル。私を投げていたのは、その場合、私は入力ファイルを持っていないということです。また、I/O(SYSIN/OUTではなく)にSYSUT1-2を使用しないでください。 – Enyalius

+0

私の悪い、私はダブルsysin –

4

述べたように、IEBGENERは、コピープログラムです。 SYSUT1の入力を受け取り、SYSUT2を出力するためにSYSUT1を「生成」します。あなたのインスタンスでは、2つのファイルをコピーしているので、それぞれが1つの出力データセットを生成する2つのGENERステップを持つのが最も簡単です。

ここでの唯一のトリッキーな部分は、適切なフォーマットで出力データセットを取得することです。だから、それが現在カタログされていないと仮定し、PROCLIBにGENERし、あなたのSYSUT2は次のようになります:

//SYSUT2 DD DSN=&SYSUID.PROCLIB, 
//   DISP=(NEW,CATLG,DELETE), 
//   DCB=(RECFM=FB,LRECL=80,DSORG=PO) 

DCBオプションに似ていますソース出力、ないDSORGサブパラメーターのためのシーケンシャルデータセット。 POのオプションでは、QSAMファイルではなくPDSを作成するように指示されています。最新のz/OSインストールでは、BLKSIZEを指定する必要はありません。指定しないと、最適なサイズが計算されるためです。

+0

-1古典的なDCB =(blah = x、blah = y、blah = z)と正しいBLKSIZE情報のための+1を気にしていたはずです。 –

2

ここには、IBM Z/OSマニュアルへのリンク http://www-03.ibm.com/systems/z/os/zos/bkserv/v1r10books.html JCLの検索とJCLのマニュアルがあります。 IEBGENERは、あるデータセット(ファイル)のデータを別のデータセットにコピーするためにIBM提供のコピープログラムです。入力ファイル、出力ファイル、および制御ファイルがあります。 LRECLとBLKSIZeはデータセットパラメータです。入力ファイルと出力ファイルのパラメータが一致しない場合、データが正しくコピーされないことがあります。私はあなたの質問を完全に理解していませんでした。 IEBGENERとまさに何が必要なのかを詳しく説明できますか?

0

インストラクターが、あなたに正しいLRECLとBLKSIZEを「永続プロシージャーライブラリー」と「永続シーケンシャルデータセット」に与えるように思いつくように聞こえます。歴史的に、そのようなデータセットはRECFM = FB、LRECL = 80です。

レコードは固定フォーマットなので、BLKSIZEは80の偶数倍でなければなりません。多くの場合、人々は3120の値を使用します。これは古代の霧の中に隠されています。私は3390デバイスで最も効率的なスペース使用量を得るために、27920を使用する傾向があります。

+0

最後の25分ほど... DASDにBLKSIZE = 0以外の何も使用する必要はありませんでした。人々は、大文字のすべてのソースデータセットにカードシーケンス番号を入れ続けています。 –

+0

うん、それは本当です。私はインストラクターが80の倍数を望んでいると推測しました。私はそれについて間違っているかもしれません。 – Tony

2

マイナーなポイントのカップル:

DCB =(RECFM = FB、LRECL = 80、DSORG = PO)を

DCB =ちょうどコード、もはや必要とされていない

また

RECFM = FB、LRECL = 80、DSORG = PO

レコードは固定フォーマットであるため、 BLKSIZEは、非常に多くの80の倍数 にする必要があり、人々はこの理由は古代の霧に を隠されている値3120の を使用しています。 I は、3390 デバイスで効率的なスペース使用量が最大で になるように、27920を使用する傾向があります。

新しいDASD(ディスク)データセットのブロックサイズを指定する必要はありません。システムはブロックサイズを自動的に決定します(実際には3390のLRECLが80の場合は27920になります)

+1

+1と70sのマイクからこのスレッドを取得していただきありがとうございます! –

2

DCBパラメータについて心配する必要はありません。入力データセットの値。

//STEP100 EXEC PGM=IEBGENER 
//SYSPRINT DD SYSOUT=* 
//SYSUT1 DD DISP=SHR,DSN=INPUT.FILE 
//SYSUT2 DD DSN=OUTPUT.FILE, 
//   DISP=(,CATLG,DELETE), 
//   SPACE=(TRK,(300,50),RLSE), 
//   DCB=*.SYSUT1 
//SYSIN DD DUMMY 
0

IEBGENERは、IBMが持っている最も過小評価され誤解を受けているユーティリティの1つです。

最高のドキュメントのハイパーリンクは、IEBGENERです。

IEBGENERは単なるコピーを行うファイルツーファイルユーティリティではありません。可変ブロックファイルを簡単かつ効率的に作成できます。それは適切なバッファリングで実際にあなたの最速のファイルからファイルへのコピーユーティリティであることができますが、内部的にバッファリングされていなかったので、現在は自動的に最速であると信じています。 // SYSPRINTメッセージ - 悲しいことに - 実際には面倒でばかげていないのであれば、極秘です。ほとんどのプログラマーはIEBGENERをどのようにバッファリングするのか分からず、またIBMがMVSをWindowsのように見せたいと思っている新しいプログラマーを支援しているので、IEBGENERを使用する方がより使いやすいです。 yuck

関連する問題