2012-03-26 18 views
0

Ich benutzte die unten jcl, um die bestehenden ps zu ändern. Ich konnte die Parameter ändern. aber ich bekomme einen I/O-Fehler.Wie ändere ich die Eigenschaften eines ps oder eines pds

// TXXXXXSP JOB (MOD), 'Pramod', CLASS = A, X = MSGCLASS, MSGLEVEL = (1,1),

// NOTIFY = & SYSUID
// FIXPDS EXEC PGM = IEBGENER
// SYSPRINT DD SYSOUT = *
// SYSIN DD DUMMY
// SYSUT2 DD DSN = XXXXXX.CREATE.GDG,
// DISP = MOD, SPACE = (TRK, (10,10,0), RLSE), EINHEIT = SYSDA,
// DCB = (RECFM = FB, LRECL = 80, BLKSIZE = 800)
// SYSUT1 DD *
/*
//

+0

Könnte helfen, wenn Sie uns auch die I/O-Fehlernummer gaben. Kann nicht helfen, aber beachten Sie, dass Ihre Ausgabe-DSN mit "GDG" endet. Möchten Sie ein Mitglied einer GDG ändern? Wenn dies der Fall ist, müssen Sie die Generationsnummer angeben (relativ oder absolut). – NealB

+0

Nein nein. das DSN ist eine ps-Datei, in der ich die jcl geschrieben habe, um ein gdg zu erstellen. Ich mache nichts, was mit gdg zu tun hat. Und ich erhalte den Fehler I/O Fehler beim Lesen, als ich versuchte, die Datei zu durchsuchen, anzuzeigen, zu bearbeiten und die Option 3.4 in ispf – Pramod

Antwort

7

Es sieht aus, als ob Sie versuchen, die Attribute eines Datensatzes zu ändern, indem Sie DISP = MOD angeben. Der dokumentierte Zweck von MOD besteht darin, entweder anzugeben, dass der Datensatz existiert und Datensätze an seinem Ende hinzugefügt werden sollen oder ein neuer Datensatz erstellt werden soll.

Es kann jedoch verwendet werden, um die Attribute eines Datasets zu ändern. Ich würde vorschlagen, dass Sie vorsichtig sein müssen, da Sie Ihre Daten leicht beschädigen können. Zum Beispiel könnte es sinnvoll sein, den DCB für eine vorhandene PS zu ändern, aber wenn diese PS-Daten bereits Daten enthalten, können Sie sie beschädigen. Ich habe das nicht versucht, aber ich glaube, dass Sie den Platz vergrößern können, vorausgesetzt, Sie überschreiten nicht 16 Extents. Ich glaube, du kannst sogar eine PS in eine PDS umwandeln, erwarte nicht, dass du die Daten wieder sehen kannst.

Ich denke, der wichtigste Punkt ist, dass es nicht empfohlen wird. Anstatt die Risiken einzugehen, verwenden Sie vielleicht Ihren Job, um den Datensatz mit LIKE zu kopieren und die Dinge zu überschreiben, die Sie ändern möchten. Dann wenn Sie glücklich sind, löschen Sie den alten Datensatz und benennen Sie den neuen auf den alten Namen um.

Die folgenden Beispiele wurden aus dem Speicher erstellt, so dass möglicherweise geringfügige syntaktische Fehler auftreten. Sie müssen SPACE angeben, aber alle anderen Parameter entfernen, die Sie nicht reparieren müssen.

Eg. für PS

//FIXPS EXEC PGM=IEBGENER 
//SYSPRINT DD SYSOUT=*        
//SYSUT1 DD DSN=XXXXXX.CREATE.GDG,DISP=SHR  
//SYSUT2 DD DSN=XXXXXX.CREATE.GDG.NEW, 
//   DISP=(NEW,CATLG,DELETE), 
//   SPACE=(TRK,(10,10,0),RLSE),UNIT=SYSDA, 
//   DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),   
//   LIKE=XXXXXX.CREATE.GDG    

Eg. für PDS

//FIXPDS EXEC PGM=IEBCOPY 
//SYSPRINT DD SYSOUT=*        
//SYSUT1 DD DSN=XXXXXX.CREATE.GDG,DISP=SHR  
//SYSUT2 DD DSN=XXXXXX.CREATE.GDG.NEW, 
//   DISP=(NEW,CATLG,DELETE), 
//   SPACE=(TRK,(10,10,0),RLSE),UNIT=SYSDA, 
//   DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),   
//   LIKE=XXXXXX.CREATE.GDG    
//SYSUT3 DD UNIT=SYSDA,SPACE=(TRK,(30,30),RLSE) 
//SYSUT4 DD UNIT=SYSDA,SPACE=(TRK,(30,30),RLSE) 
//SYSIN DD *         
C I=SYSUT1,O=SYSUT2        
/*           

Für weitere Informationen siehe ANZ Parameter in Kapitel 12 des JCL-Referenzhandbuch http://publibz.boulder.ibm.com/epubs/pdf/iea2b6b0.pdf

+0

zu verwenden. Vielen Dank für Ihre wertvollen Informationen. Was du am Anfang gesagt hast, ist absolut richtig.Ich habe versucht, ein neu erstelltes ps ohne Daten darin zu modifizieren, und es ist mir gelungen. Aber wenn ich eine PS ändere, die bereits einige Daten enthält. Die Datei ist beschädigt – Pramod

0

"Es ist nicht klug, ein wookie zu stören." Ich empfehle dringend, wenn Sie tatsächlich Attribute eines PDS ändern möchten, dann tatsächlich eine X-Version der fraglichen Bibliothek zuweisen, dann alle Mitglieder kopieren und dann einen Vergleich durchführen, um sicherzustellen, dass keine Bits oder Bytes beschädigt wurden Löschen Sie dann die alte Bibliothek und benennen Sie die neue Bibliothek in den alten Namen um.

Verwandte Themen