Page 1 of 2

Load Library is empty but showing full

PostPosted: Thu Jul 31, 2014 3:54 pm
by deucalion0
Hello, I am having issues with a Load Library which I need to copy in new load modules.

I deleted the Load modules inside the library but it is still showing me it is full, 91% full, but when I try and browse it, I am told it is empty. I cannot compress the library as it is in use. Is there any way that I can extend the size of this library, or empty the dataset for real? I am not sure how it can be empty and full at the same time.

Any assistance is appreciated!

Thank you!

Re: Load Library is empty but showing full

PostPosted: Thu Jul 31, 2014 4:04 pm
by BillyBoyo
If it is a PDS, you need to compress it. If it is a PDSE (or something proprietary) you need to talk to your technical people.

Re: Load Library is empty but showing full

PostPosted: Thu Jul 31, 2014 4:12 pm
by deucalion0
Hi there,

It is a PDS and I cannot compress it because the PDS is in use. Is there anything I can do to get around this?

Thank you!

Re: Load Library is empty but showing full

PostPosted: Thu Jul 31, 2014 4:24 pm
by steve-myers
We have been through this many, many times. Deleting a member from a PDS does not make the space occupied by the member immediately available for reuse. You have three major options at this point.
  • Determine what other jobs or TSO users are using the data set and get them to go away.
  • Prepare and run a job like this.
    //xxx      JOB  ...
    //COMPRESS EXEC PGM=IEBCOPY
    //SYSPRINT DD  SYSOUT=*
    //SYSUT1   DD  DISP=SHR,DSN=your-dataset
    //SYSIN    DD  *
     COPY INDD=SYSUT1,OUTDD=SYSUT1
    /*
  • Prepare a CLIST something like this and run it.
    PROC 1 NAME DISP(SHR)
    LISTDSI &NAME
    SET RC = &LASTCC
    IF &RC NE 0 THEN +
     WRITE I CAN'T FIND &NAME!
    ELSE +
     IF &SYSDSORG NE &STR(PO) THEN +
      WRITE &NAME IS NOT PARTITIONED!
     ELSE +
      DO
       CONTROL NOMSG
       FREE FILE(SYSIN SYSPRINT AFILE)
       CONTROL MSG
       LISTDSI COMPRESS.SYSPRINT
       SET RC = &LASTCC
       IF &RC = 0 THEN +
        DO
         CONTROL NOMSG
         DEL COMPRESS.SYSPRINT
         CONTROL MSG
        END
       ALLOCATE FILE(SYSPRINT) DATASET(COMPRESS.SYSPRINT) SPACE(1 1) CYL +
         RECFM(F B A) LRECL(121) DSORG(PS)
       ALLOCATE FILE(SYSIN) SPACE(1 1) TRACK RECFM(F B) LRECL(80) +
         BLKSIZE(800 )
       OPENFILE SYSIN OUTPUT
       SET SYSIN = &STR( COPY INDD=AFILE,OUTDD=AFILE)
       PUTFILE SYSIN
       CLOSFILE SYSIN
       ALLOCATE FILE(AFILE) &DISP DATASET(&NAME)
       SET RC = &LASTCC
       IF &RC = 0 THEN +
        DO
         CALL *(IEBCOPY)
         SET RC = &LASTCC
         WRITE COMPRESS COMPLETE, IEBCOPY RC = &RC
        END
       FREE FILE(SYSIN SYSPRINT AFILE)
       ALLOCATE FILE(SYSPRINT) DATASET(*)
       ALLOCATE FILE(SYSIN)    DATASET(*)
      END
    Many of the regular contributors to this forum prefer Rexx rather than CLIST. I have used this CLIST for many years; it's not worth rewriting it in Rexx. A Rexx EXEC will be similar.

Re: Load Library is empty but showing full

PostPosted: Thu Jul 31, 2014 5:39 pm
by deucalion0
Thank you for your response Steve-myers!

I have ran the IEBCOPY job and that did empty the PDS, so that worked thank you! I will save this job for the future!

I now have issues with insufficient space when copying new Load modules into the PDS, I believe it is to do with Directory Blocks, I am not sure.

Thank you again for your help!

Re: Load Library is empty but showing full

PostPosted: Fri Aug 01, 2014 7:38 am
by Robert Sample
deucalion0: be aware that compressing a data set with DISP=SHR in the JCL may cause unexpected consequences, depending upon what else has the data set allocated. The ONLY safe way to compress a PDS is to allocate it DISP=OLD in your JCL (and that isn't 100% safe if someone cancels the job while the compress is underway).

Re: Load Library is empty but showing full

PostPosted: Fri Aug 01, 2014 12:43 pm
by enrico-sorichetti
be aware that compressing a data set with DISP=SHR in the JCL may cause unexpected consequences,


well... the TS started walking on water when all the members were deleted in a PDS used somewhere else

Re: Load Library is empty but showing full

PostPosted: Fri Aug 01, 2014 9:16 pm
by nevilh
Just because a dataset is in use, it doesn't mean that the dataset is being used. Allocation is "stupid" it will do the ENQ on majorname.dsname so if you have 2 datasets with the same name on different disks if one is allocated the other is "locked" . This is one of the reasons IBM allows the renaming of datasets that are in use (if the user is authorized).

Re: Load Library is empty but showing full

PostPosted: Fri Aug 01, 2014 9:48 pm
by steve-myers
nevilh wrote:.. Allocation is "stupid" it will do the ENQ on majorname.dsname so if you have 2 datasets with the same name on different disks if one is allocated the other is "locked" .

Most users seldom, if ever, encounter this problem since all data sets used by most users are cataloged. System programmers building new SYSRES volumes get hit with this all too often.

Re: Load Library is empty but showing full

PostPosted: Wed Aug 06, 2014 9:53 am
by steve-myers
deucalion0 wrote:... I now have issues with insufficient space when copying new Load modules into the PDS, I believe it is to do with Directory Blocks, I am not sure. ...
If there is an issue with directory blocks, and you're using IEBCOPY to perform the copy, IEBCOPY will tell you very directly there are not enough directory blocks. You will get message

IEB148I NO SPACE IN OUTPUT DIRECTORY FOR DIRECTORY ENTRIES FROM INPUT DATA SET xxxx

It's not a very good message, plus IEBCOPY aborted the copy, but what you see is what you get.