Ok, my last message was a little briefy.
I have a bunch of data sets, not only on one volume. In my example
master2 is on another volume (Sequential Data Set). I shall get the
the right position (TTR, OFFSET) in member X.
I shall use EXCP. So I can read a whole track.
The only problem is, our customers shall use concatinated data sets as
before.
So I must the decontanation in my programm, to get the right position.
I think EOV doesn't work. I must jump in every data set in time.
Now I try to copy the JFCB's. After this I try to open the data sets.
This time I get an S413/4
-No device is available for mounting the volume containing the data
set to be
-opened (dsn), or the allocated device is not available for one of
these
-reasons:
- a.. The volume already on the allocated device, identified in the
ser
-field of the message text, is permanently resident, reserved, or
enqueued.
- b.. The request volume is in use elsewhere.
- c.. Another DCB is open on the device and the device is a magnetic
tape.
- d.. The device type is incompatible with the DSORG in the DCB.
-Specify another device in the UNIT parameter of the DD statement.
My Data sets in the concatination are on different volumes.
RECINDD DD DSN=MASTER1,DISP=SHR ok
DD DSN=MASTER2,DISP=SHR here I get the error
DD DSN=MASTER8,DISP=SHR
DD ...
DD ...
Master1 is on another volume as Master2
***code cut for breavity
*----------------------------------------------------------
* Get all JFCB's in concatination
*----------------------------------------------------------
Alloc MVI ARLOPT1,ARLLANY GET STORAGE ABOVE 16 MB
RDJFCB (DUMMY)
LTR R15,R15
BNZ Fehler IF NOT DEFINED
*
L R3,ARLAREA ADDRESS OF ALLOCATION RETRIEVAL
XR R5,R5
*** ICM R5,B'1100',ARLRTRVD
LH R5,ARLRTRVD NUMBER OF DATA SETS
STH R5,NORTRVD
*
* CALCULATE AMOUNT OF STORAGE FOR JFCB'S
*
SR R0,R0 PREPARE
LR R0,R5 GET NUMBER OF DATA SETS
MH R0,=H'176' MULT BY JFCB LENGTH
STORAGE OBTAIN,LENGTH=(R0),LOC=(BELOW,ANY)
LR R9,R1 POINT TO AREA FOR FIRST DSNAME
ST R9,JFCBADDR
*
* copy JFCB in Storage
*
LOOP MVC 0(176,R9),4(R3)
LA R9,176(,R9)
LA R3,224(,R3) SHIFT TO NEXT
BCT R5,LOOP
*LOOP END
XR R5,R5
ICM R5,B'0111',ARLRLEN
XR R3,R3
IC R3,ARLPOOL
STORAGE RELEASE,LENGTH=(R5),SP=(R3),ADDR=ARLAREA
LTR R15,R15
BNZ FEHLER
*----------------------------------------------------------------
* OPEN EVERY DD IN CONCATINATED DATA SETS
*----------------------------------------------------------------
OPENCAT RDJFCB RECIN READ THE JFCB
LTR R15,R15
BNZ FEHLER IF NOT DEFINED
* CALCULATE AMOUNT OF STORAGE
SR R0,R0 PREPARE
LH R0,NORTRVD GET NUMBER OF DATASETS
LR R3,R0 SAVE NUMBER OF VOLS
*
MH R0,=Y(RECINLN) MULT BY EXCP DCB LENGTH
STORAGE OBTAIN,LENGTH=(R0),LOC=(BELOW,ANY),ADDR=DCBADDRL
LR R4,R1 POINT TO AREA FOR FIRST DCB
XC IDTDCBA,IDTDCBA
ST R4,IDTDCBA SAVE PTR TO FIRST DCB
L R5,JFCBADDR
OPENLO1 MVC JFCB(176),0(R5) COPY JFCB
LA R5,176(,R5) POINT TO NEXT JFCB
*
MVC 0(RECINLN,R4),RECIN BUILD A DCB
OPEN ((R4),INPUT),TYPE=J USE TYPE=J TO CHANGE JFCB
LTR R15,R15
BNZ FEHLER
LA R4,RECINLN(,R4) POINT TO NEXT DCB
BCT R3,OPENLO1
BR R6
RECIN DCB DSORG=PS,MACRF=(E),EODAD=DATAEND,EXLST=EXITL,
DDNAME=RECINDD
RECINLN EQU *-RECIN LÄNGE INPUT DCB
*
RECOUT DCB DSORG=PS,MACRF=PM,DDNAME=RECOUTD
*
DUMMY DCB DSORG=PS,MACRF=(E),EXLST=INEXLST,
DDNAME=RECINDD
Jörg


|