Page 1 of 1

Finding DDnames in a job

PostPosted: Fri Mar 26, 2010 7:01 pm
by closerthanmost
I have a job with an INCLUDE member which can change regularly. The include member contains a large number of DDnames/datasets and I want to be able to read all the files in this member without knowing what the ddnames are beforehand. Is there anyway I can see using assembler what ddnames are included in the JCL. I know that all the ddnames start with BATR so can easily distinguish them from any other ddname in the job (steplib etc). I can't read TIOT since that appears to only hold details of DDnames that have been accessed already...RDJFCB was suggested to me, but of course you need the DDNAME in advance!

I'm sure this can be done, but I've been searching all over to try and find a way so any help would be appreciated.

Many Thanks In advance
Andy

Re: Finding DDnames in a job

PostPosted: Fri Mar 26, 2010 8:24 pm
by Robert Sample
I can't read TIOT since that appears to only hold details of DDnames that have been accessed already
I believe the TIOT is allocated data sets, whether or not they've been opened or not. It is not that hard to write a COBOL program (or Assembler even) that follows the control blocks and extracts all DD names allocated to the step -- and should run under a couple hundred lines of COBOL.

Re: Finding DDnames in a job

PostPosted: Fri Mar 26, 2010 9:02 pm
by closerthanmost
Thanks for the reply....you are right. I'd actually come back to update my post to say I'd sorted it. I actually managed it in assembler after I found some other code that checked the TIOT to see if a particular ddname was present. Since one of the return codes was fro file not found, it was obviously doing it before it opened, so it just required a bit of manipulation to spew out all the ddnames it found.

I'll try and post the code up later just in case it's useful for someone else.(Internet access being blocked from the office PC)

Andy

Re: Finding DDnames in a job

PostPosted: Fri Mar 26, 2010 9:09 pm
by closerthanmost
As promised

       
         XC    EXTRACT1(12),EXTRACT1                                 
         XC    TIOTADDR,TIOTADDR                                     
         LA    R2,TIOTADDR             RETURN ADDRESS                 
         EXTRACT (R2),FIELDS=TIOT,MF=(E,EXTRACT1)                     
         SPACE                                                       
         L     R2,TIOTADDR             PICK UP THE ADDRESS OF THE TIOT
         USING TIOT1,R2                MAP THE TIOT                   
         SPACE                                                       
TIOT0010 DS    0H                                                     
         CLI   TIOELNGH,0              END OF THE TIOT YET ?         
         BE    TIOT0060                YES ... STOP PROCESSING       
         SPACE                                                       
         MVC   DDNAME,TIOEDDNM                                       
         CLC   DDNAME(4),=C'BATR'                                     
         BNE   TIOT0050                                               
*                                                                     
         MVC   ANDY1+8(3),DDNAME+4                                   
         MVC   ANDY1+12(7),DDNAME                                     
ANDY1    WTO   'DDD DDDDDDD FOUND'                                   
TIOT0050 DS    0H                                             
         SR    R3,R3                   ZEROISE R3 FOR ICM     
         IC    R3,TIOELNGH             PICK UP DD ENTRY LENGTH
         SPACE                                                 
         AR    R2,R3                   MOVE ALONG TO NEXT ENTRY
         SPACE                                                 
         B     TIOT0010                KEEP CHECKING           
         SPACE                                                 
TIOT0060 DS    0H                                             
         DROP  R2                 
         RETURN
*                                                             
EXTRACT1 EXTRACT ,,MF=L               
TIOTADDR DC    F'0'                   
DDNAME   DS    CL7                   
*                                     
         LTORG                       
         EJECT                       
TIOT     DSECT                       
         IEFTIOT1                     
*                                     
         END                         


Re: Finding DDnames in a job

PostPosted: Fri Mar 26, 2010 10:03 pm
by Robert Sample
Congratulations on solving your problem, and thanks for posting the code.