Endevor

 View Only
  • 1.  VSAM Elibs with large page sizes

    Posted Sep 21, 2022 09:34 AM

    Has anyone successfully allocated VSAM Elibs with page sizes bigger than 4088?  I'm finding the manual slightly confusing

    Setting Up ELIB Data Sets (broadcom.com)

    PAGE SIZE
    (Optional) If you are using VSAM clusters, page size is system-defined by the IDCAMS utility as eight bytes less than the control interval size.
    If you are using BDAM data sets, page size equals block size. Block size is specified in the JCL. If you also code a PAGE SIZE statement, the system validates it against the block size you have specified in the JCL.
    Valid page sizes are 512 to 8192 bytes in increments of 512 bytes, and from 8KB (or 8192 bytes) to 32KB (or 32768 bytes) in increments of 2KB (or 2048 bytes).
    If you code a PAGE SIZE statement, the entry can have up to six numeric characters.

    I'm not sure this is accurate.  The standard page size for our VSAM Elibs, and the one in the examples later on in the manual, is 4088, but this isn't a multiple of 512 bytes! We are also able to process BDAM Elib files with block size / Page size of 4088 too.

    I allocated a VSAM file with
    RECORDSIZE(16384 16384) -
    CONTROLINTERVALSIZE(16392) -
    and then tried to format it as an Elib with
    PAGE SIZE = 16384

    but got the error message
    ENDEVOR-LIB INIT/EXPAND/REORG/INQUIRE UTILITY

    C1LB002S LIBRARY IS NOT ENDEVOR LIB DATASET.

    Any help gratefully received!

    Charles Gaskell


  • 2.  RE: VSAM Elibs with large page sizes

    Posted Sep 21, 2022 04:13 PM
    Hi Charles,

    I think the "trick" here is to make the Elib Page Size match the VSAM Control Interval size - i.e. just know that VSAM will reserve eight bytes in the record, so you (Endevor in this case) doesn't have to... Weird, but I used an example like this and it works for me.

    //*-------------------------------------------------------------------
    //* STEP 1 -- ALLOCATE A VSAM ELIB
    //*-------------------------------------------------------------------
    //ALLOCATE EXEC PGM=IDCAMS
    //SYSPRINT DD SYSOUT=*
    //SYSIN DD *
    DELETE 'NDVR.EOIN.DELTA' SCRATCH
    DEFINE CLUSTER (NAME('NDVR.EOIN.DELTA') -
    RECORDSIZE(16376 16376) -
    CONTROLINTERVALSIZE(16384) -
    SHAREOPTIONS(3,3) -
    CYLINDERS(5,1) -
    NONINDEXED -
    ) -
    DATA (NAME('NDVR.EOIN.DELTA.DATA'))
    //*
    //*-------------------------------------------------------------------
    //* STEP 2 -- INITIALIZE THE ELIB USING THE BC1PNLIB UTILITY
    //*-------------------------------------------------------------------
    //STEP1 EXEC PGM=NDVRC1,PARM=(BC1PNLIB)
    //SYSPRINT DD SYSOUT=*
    //BSTERR DD SYSOUT=*
    //INITDELT DD DSN=NDVR.EOIN.DELTA,DISP=OLD
    //SYSIN DD *
    INIT DDNAME = INITDELT
    PAGE SIZE = 16384
    ALLOCATE = (899,180)
    RESERVE PAGES = 500
    DIRECTORY PAGES = 100
    .
    INQUIRE DDNAME = INITDELT.

    Hope that helps.
    Regards,
    Eoin


  • 3.  RE: VSAM Elibs with large page sizes

    Posted Sep 22, 2022 12:37 PM
    Hi Eoin,

    Shouldn't the Elib page size be the same as the VSAM RECORDSIZE, rather than the VSAM CONTROLINTERVALSIZE (i.e. 16376 rather than 16384, as you have it)? That's certainly what we do normally with "4K" Elib page sizes - the VSAM RECORDSIZE and the Elib page size are both 4088, with a VSAM CONTROLINTERVALSIZE of 4096 (and that's what the examples in the Broadcom documentation give too)


  • 4.  RE: VSAM Elibs with large page sizes

    Posted Sep 23, 2022 09:15 AM

    Ah! I think I see the problem - IDCAMS may not accept your calculation of CISIZE!

    If you insert a LISTCAT ENTRY('xxx') just after your DEFINE I suspect you will see that even though you specified a CISIZE of 16392, the actual size that gets allocated is different - in my case I found that the reported CISIZE was 18432, and  PHYREC-SIZE 6144.  So the dataset characteristics you got did not match what Endevor needed, hence the C1LB002S. 

    That CIsize, just over 16k, is being rounded up it looks to a multiple of 2048.  if you use 16K (16384) as the CISIZE and 8 bytes less for the record size and PAGE Size - then everything seems to work.  I noticed in the IBM doc, that it says "If the override indicator in Data Class is set ON, the user specified CISIZE in DEFINE command will be overridden by the CISIZE in the DATACLAS..." so you might also need to check you ACS and/or dataclass specifications.

    I think the best course of action here is to open a ticket with development and get a definitive ruling, certainly my suggestion that the PAGE size should be set to the CISIZE seems suspect, though VSAM might allow a record longer than the maxsize to be written???  Is that happening (maybe with spanned records) or the ELIB utility actually writes shorter records when the underlying file type is VSAM rather than BDAM???  

    Either way the doc is certainly less than clear and it should be updated with final development team findings.



    ------------------------------
    Eoin O'Cleirigh
    Lead Systems Engineer @ ANZ +64273888404
    ------------------------------