1

私は以下のjclを使用しました:

//STEP1    EXEC PGM=IEBGENER                            
//SYSUT1   DD   DUMMY,RECFM=FB,LRECL=80                  
//SYSUT2   DD   DSN=RK.MYDIR.FILES(NEW1),DISP=(SHR)      
//SYSPRINT DD   SYSOUT=*                                
//SYSIN    DD   DUMMY

作成できました。しかし、私はここのコードを理解することはできません。IEFBR14を使用して作成する可能性はありますか?そうでない場合、これはnlyの方法です。コードを教えてください。ありがとうございました

4

6 に答える 6

8

IEFBR14では実行できません

IEBCOPYの方が適切です: http://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp?topic = / com.ibm.zos.zdatamgmt / zsysprogc_utilities_IEBCOPY.htm

これは、IEBGENERの説明に役立つリファレンスです。http://publib.boulder.ibm.com/infocenter/zos/basics/index.jsp?topic = / com.ibm.zos.zdatamgmt / zsysprogc_utilities_IEBGENER.htm

于 2012-03-16T01:22:30.273 に答える
4

その理由に興味がある場合は、IEFBR14がJCLでコーディングしたDDステートメントを実際には開かないことを理解してください。むしろ、これはシステムの割り当て(および割り当て解除)ルーチンを実行するための簡単な方法にすぎません。実際、iEFBR14のアセンブラー・リストを見ると、R15戻りコードをゼロに設定して終了するという2つの命令しかないことがわかります。

バッチ処理では、システム(JESとバッチイニシエーター)は、アプリケーションが起動する前に多くの作業を実行する必要があるという考え方です。したがって、新しいデータセットを割り当てる場合、またはオペレーターがマウントするのに時間がかかるテープデバイスを参照する場合(たとえば)、プログラムが開始する前に、システムがこれらすべてを実行します。IEFBR14は、システム割り振りルーチンを使用して、JCLのこれらの機能を使用してファイルを割り振る便利な方法です。

しかし、JCLでPDSデータセットにアクセスする場合は、あなたがやろうとしているように、落とし穴があります。

JCLでDSN(MEMBER)構文を指定する場合、割り当てルーチンはMEMBER部分を特に気にしません。これはイニシエーターの機能ではなく、代わりにOPEN/CLOSEで実装されます。この例では、割り当てはデータセットが存在することを確認し(DISP = SHRをコーディングしたため)、プログラムがDDステートメントを開くと、OPENルーチンは自動的にBPAM FIND / POINT / STOWを発行して、指定したPDSメンバーに到達します。これがPDSメンバーの作成方法であるため、実際にファイルを開くプログラムを使用する必要があります(IEBGENR、IEBUPDTE、IEBCOPY、IDCAMSなどはすべて機能します)。

無関係な小さなコメントの1つは、DISP = SHRを使用したデータセット(特にPDS)の更新に注意する必要があるかもしれないということです。タイミングを間違えると、理論上、これらのジョブの2つがまったく同時に実行される可能性があり、これによりデータセットが破損する可能性があります。PDSにアクセスする唯一のタスクであることが確実でない限り、この場合はDISP=OLDを使用する方が安全です。

于 2012-07-11T21:06:32.253 に答える
1

一度に複数のメンバーを作成したい場合は、IEBUPDTEをお勧めします。

IBMから:

この基本的な例では、IEBUPDTEを使用して、MY.PROCLIBという名前のデータ・セットに2つのJCLプロシージャーを追加します。

//ADDPROC1 JOB 1,SMCHUGH,MSGCLASS=X
//         EXEC PGM=IEBUPDTE
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DISP=OLD,DSN=MY.PROCLIB
//SYSUT2   DD DISP=OLD,DSN=MY.PROCLIB
//SYSIN    DD DATA
./ ADD LIST=ALL,NAME=MYJOB1
//STEP1 EXEC=SUZNX1
//PRINT DD SYSOUT=A
// (more JCL for MYJOB1)
//SYSUDUMP DD SYSOUT=* (last JCL for MYJOB1)
./ REPL LIST=ALL,NAME=LASTJOB
//LIST EXEC PGM=SUZNLIST
// (more JCL for this procedure)
//* LAST JCL STATEMENT FOR LASTJOB
./ ENDUP
/*

これにより、1つの新しいメンバーMYJOB1が作成されますが、メンバー(LASTJOB)を置き換えることもできることがわかります。

http://publib.boulder.ibm.com/infocenter/zos/basics/topic/com.ibm.zos.zdatamgmt/zsysprogc_utilities_IEBUPDTE.htm

于 2012-06-13T21:49:04.950 に答える
1

DSNの内容を新しいメンバーにコピーする場合は、IEBGENERを使用してください。

新しいDSNの属性を動的に設定するには、LIKEパラメーターを使用します。

たとえば(上記のマイクの例を使用)

//STEP1    EXEC PGM=IEBGENER                            
//SYSUT1   DD   DISP=SHR,DSN=your.input.dataset                  
//SYSUT2   DD   DISP=(,CATLG,DELETE),DSN=your.output.dataset,
//              LIKE=your.input.dataset      
//SYSPRINT DD   SYSOUT=*                                
//SYSIN    DD   DUMMY   <-- no CONTROL statements

LIKE属性を使用すると、指定したデータセットの属性を使用して新しいデータセットを簡単に作成できます。また、新しいDSNを設定する必要があるものを反映するように配置を変更しました。

于 2013-10-09T09:35:54.500 に答える
1

警告!--SYSUT2でIEBGENERを再使用する場合DDDSN= PDS(MEMBER):MEMBER名を指定することを忘れないでください-指定すると、IEBGENERは最初からSYSUT1で見つかったものでPDSを上書きします。 PDSディレクトリ!

于 2018-01-12T11:43:32.717 に答える
0

IEBGENERユーティリティーは、単一のファイルをコピーするために使用されます。

SYSUT1 DD名は、コピー元のINPUTまたはファイルを提供するために使用されます。

SYSUT2DD名はOUTPUTファイルです。

SYSIN DDは、CONTROLステートメント(存在する場合)を提供します。

//STEP1    EXEC PGM=IEBGENER                            
//SYSUT1   DD   DISP=SHR,DSN=your.input.dataset                  
//SYSUT2   DD   DISP=SHR,DSN=your.output.dataset      
//SYSPRINT DD   SYSOUT=*                                
//SYSIN    DD   DUMMY   <-- no CONTROL statements

ファイル/データセットは、シーケンシャルデータセットまたはパーティション化されたデータセットのメンバーである可能性があることに注意してください。

//SYSUT1   DD   DISP=SHR,DSN=your.input.dataset(member)                  
//SYSUT2   DD   DISP=SHR,DSN=your.output.dataset(member) 
于 2012-04-22T15:07:29.310 に答える