CA 1 Flexible Storage

 View Only
  • 1.  ca1 multifile capacity reporting: numdsnb vs 1stdsnb

    Posted Aug 11, 2016 11:25 AM

    I am trying to accurately report my multi-file tape environment.  TMSGRW tests run with ALTER DSNB=YES with WHEN NUMDSNB NE HEXZEROS do not accurately return all of the DSNBs for the volume's file set, and using WHEN 1STDSNB NE HEXZEROS instead of NUMDSNB returns info on all of the files in the multi-file chain EXCEPT the last files in every chain are dropped because their entries are coded with NUMDSNB converted to a file sequence number with a 1STDSNB value of HEXZEROS, i.e. NUMDSNB = 00221 and 1STDSNB = 0000000000.  I need the true multi-file capacity picture for ALL of the active files in the DSNB chains in one TMSGRW execution pass.



  • 2.  Re: ca1 multifile capacity reporting: numdsnb vs 1stdsnb

    Posted Aug 12, 2016 08:53 AM

    Robert,

      Please open a case via support online and we can dig into TMSGRW for problems in this area.  In the meantime here is an EARL program that can report on tape usage and actually print out the BYTES and MB on a tape.  It does pick up the data for all of the DSNBs attached to the volume.  This looks a little ugly with the sequence numbers not lined up.  If you need me to email it to you let me know.

     

    ! How much tape data exists in total                                    00010005

    COPY EARLDEFS                                                          00020005

                                                                            00030005

    OPTION OMIT ALL BLANK LINES                                            00031011

                                                                            00032011

    DEF P_VOL             (X 6) = ' ' 'VOLUME' 'SERIAL'                    00040005

    DEF FIRST_SW          (X 1) = ' '                                      00050005

                                                                            00060005

    !Defined to display new column headings for FILESEQ and EXPDT fields    00070005

    DEF D_FILESEQ         (N 5.0) = 0 'FILE' 'SEQ' PIC 'Z9999'             00080005

    DEF D_NXTVOL          (X 1) = NONE 'N' 'V'                             00090005

    DEF BYTE_TYPE         (X 2) = 'B ' ' ' ' '                             00091007

    DEF D_BLKSIZE         (N 6.0) = 0 'BLK' 'SIZE' PIC '999999'            00100005

    DEF D_BLKCNT         (N 10.0) = 0 'BLK' 'COUNT' PIC '9999999999'       00110007

    DEF D_BYTESUSED      (N 15.0) = 0  PIC 'ZZZZZZZZZZZZ999'               00121009

    DEF P_BYTESUSED      (N 6.0) = 0 'BYTES' 'USED' PIC 'ZZZ,ZZ9'          00121109

    DEF D_BYTESTORED     (N 15.0) = 0  PIC 'ZZZZZZZZZZZZ999'               00122009

    DEF P_BYTESTORED     (N 6.0) = 0 'BYTES' 'STORED' PIC 'ZZZ,ZZ9'        00131009

    DEF D_MBYTESUSED     (N 10.0) = 0 'BYTES' 'USED' PIC '9999999999'      00140007

    DEF D_MBYTESTORED    (N 10.0) = 0 'BYTES' 'USED' PIC '9999999999'      00150007

    DEF T_BYTES          (N 15.0) = 0 PIC 'ZZZ,ZZZ,ZZZ,ZZZ,ZZ9'            00151011

    DEF T_MBYTES         (N 15.0) = 0 PIC 'ZZZ,ZZZ,ZZZ,ZZZ,ZZ9'            00152011

    DEF T_MBYTESTORED    (N 15.0) = 0 PIC 'ZZZ,ZZZ,ZZZ,ZZZ,ZZ9'            00153011

                                                                            00154005

    SET TYPRUN = R_CHAINED                                                 00155005

    SET DATE_FMT  = 'DDMMM,YYYY'                                           00156005

                                                                            00157005

                                                                            00158005

    GOTO EOJ TAPEDB = 'E'                                                  00159005

    GET TAPEDB                                                             00160005

                                                                            00170005

    !  Skip DSNB records on the Free-Chain (un-used DSNB's)                 00180005

    IF ACTIND = 'N' AND CURDSNB > 0                                        00190005

      THEN GOTO START                                                       00200005

    ENDIF                                                                  00210005

                                                                            00220005

    IF SCRATCH_IND = 'Y'                                                   00230005

      THEN GOTO START                                                       00240005

    ENDIF                                                                  00250005

                                                                            00260005

    CONTINUE:                                                              00270005

    !  This section simply sets the run-date and time for the report        00280005

    IF FIRST_SW = ' '                                                      00290005

        THEN SET FIRST_SW = '*'                                             00300005

        SET FUNCTION = 'RETURN_DATE'                                        00310005

        CALL CTSEDATE USING FUNCTION,RUNDATE,RUNTIME                        00320005

        SET FUNCTION = 'TO_EXPLODED'                                        00330005

        CALL CTSEDATE USING FUNCTION,P_EXP_DATA,RUNDATE                     00340005

    ENDIF                                                                  00350005

                                                                            00360005

    !  These calls set the expiration date and create date to print format  00370005

    SET   FUNCTION  = 'TO_EXTERNAL'                                        00380005

    CALL  CTSEDATE  USING FUNCTION,P_CDATE,CDATE,DATE_FMT                  00390005

                                                                            00400005

    !  This sets the FILESEQ to a printable format                          00410005

    IF FILESEQ >= 0                                                        00420005

        THEN SET D_FILESEQ = FILESEQ                                        00430005

        ELSE SET D_FILESEQ = FILESEQ + 65536                                00440005

    ENDIF                                                                  00450005

                                                                            00460005

    IF D_FILESEQ > 1                                                       00470005

       SET P_VOL = F1STVSN                                                  00480005

       ELSE                                                                 00490005

        SET P_VOL = VOLSER                                                  00500005

    ENDIF                                                                  00510005

                                                                            00520005

    !  This sets a NEXTVOL indicator if there is a next-volume              00530005

    IF NEXTVOL > '      '                                                  00540005

       SET D_NXTVOL = 'Y'                                                   00550005

       ELSE                                                                 00560005

        SET D_NXTVOL = 'N'                                                  00570005

    ENDIF                                                                  00580005

                                                                            00590005

    !  This is the main bytes calculation section; if the Block-Count       00600005

    !  is zero, then leave it as bytes-used as zero. If the Block-Count     00610005

    !  is non-zero AND the BLKSIZE is zero - assume 32760 as the BLKSIZE,   00620005

    !  otherwise take Block-Count times BLKSIZE as the number of bytes.     00630005

    SET D_BYTESUSED = 0                                                    00640005

    SET D_BYTESTORED = 0                                                   00650005

    IF BLKCNT = 0                                                          00660005

       THEN SET D_BYTESUSED = 0                                             00670005

       ELSE                                                                 00670105

         IF BLKSIZE = 0                                                     00670205

            SET D_BYTESUSED = BLKCNT*32760                                  00670307

           ELSE                                                             00670405

             IF BYTE_PERCENTAGE = 0                                         00670505

                SET D_BYTESUSED = BLKCNT*BLKSIZE                            00670607

               ELSE                                                         00670705

                SET D_BYTESUSED = BLKCNT*BLKSIZE*BYTE_PERCENTAGE/100        00670807

             ENDIF                                                          00670905

       IF COMPRESSION > 0                                                   00671009

       SET D_BYTESTORED = D_BYTESUSED*((100-COMPRESSION)/100)               00671110

         ELSE                                                               00671205

       SET D_BYTESTORED = D_BYTESUSED                                       00671305

         ENDIF                                                              00671405

       ENDIF                                                                00671505

    ENDIF                                                                  00671605

                                                                            00671705

                                                                            00671807

    SET D_BLKSIZE = BLKSIZE                                                00672105

    SET D_BLKCNT = BLKCNT                                                  00673005

    !                                                                       00673107

    IF D_BYTESUSED > 999999999                                             00673207

      THEN SET P_BYTESUSED = D_BYTESUSED/1048576                            00673307

           SET P_BYTESTORED = D_BYTESTORED/1048576                          00673407

           SET BYTE_TYPE = 'Mb'                                             00673507

      ELSE                                                                  00673607

       IF D_BYTESUSED > 999999                                              00673707

        THEN SET P_BYTESUSED = D_BYTESUSED/1024                             00673807

             SET P_BYTESTORED = D_BYTESTORED/1024                           00673907

             SET BYTE_TYPE = 'Kb'                                           00674007

        ELSE                                                                00674107

        SET P_BYTESUSED = D_BYTESUSED                                       00674207

        SET P_BYTESTORED = D_BYTESTORED                                     00674307

        SET BYTE_TYPE = 'B '                                                00674407

       ENDIF                                                                00674507

      ENDIF                                                                 00674607

    !  Set MegaBytes as bytes/1,000,000   (1024 X 1024)                     00674711

    SET D_MBYTESUSED = D_BYTESUSED/1048576                                 00674811

    SET D_MBYTESTORED = D_BYTESTORED/1048576                               00674911

    !                                                                       00675011

    !  And print out the headers                                            00676005

    REPORT TITLE  @1 P_EXP_DAYNAM @11 ',' @13 P_EXP_MONNAM @24 P_EXP_DD    00676105

                   @26 ',' @28 P_EXP_YYYY @32 '.' @33 P_EXP_DDD             00677005

                   @38 TIMEOFREPORT                                         00678005

                   @50 COMPANY_NAME @115 'PAGE' @125 PAGENUMBER             00679005

            TITLE  @1 ' '                                                   00680005

            TITLE  @1 'TMS REPORT-TMETPUSE  DATA SET NAME SEQUENCE'         00690005

                                                                            00700005

                                                                            00710005

    SELECT TAPEDB NOT = 'E'                                                00720005

                                                                            00730005

    CONTROL (CREATE_PROGRAM) CDATE CTIME                                   00740010

                                                                            00750005

    !  Total both the BYTESUSED and the MBYTESUSED fields                   00760005

    SET(T) T_BYTES   = D_BYTESUSED                                         00770010

    SET(T) T_DESCBYTES = ' Total bytes used = '                            00780011

    SET(T) T_MBYTES  = D_MBYTESUSED                                        00790010

    SET(T) T_DESCMBYTES = ' Total M-Bytes used = '                         00800011

    SET(T) T_MBYTESTORED  = D_MBYTESTORED                                  00801011

    SET(T) T_DESCMBYTEST = ' Total M-Bytes stored = '                      00802011

                                                                            00810005

    PRINT P_VOL 1 DSN 0 VOLSEQ 0 D_FILESEQ 1 P_CDATE 1 CREATE_PROGRAM      00820005

    1 COMPRESSION 1 BYTE_PERCENTAGE 1 D_BLKSIZE 1                          00830005

    D_BLKCNT 1 P_BYTESUSED 0 BYTE_TYPE 0 P_BYTESTORED 0 BYTE_TYPE          00840009

                                                                            00850005

    PRINT @2 T_DESCBYTES 1 (T_BYTES)                                       00860011

           @43 T_DESCMBYTES 1 (T_MBYTES)                                    00870011

           @87 T_DESCMBYTEST 1 (T_MBYTESTORED)                              00871011

                                                                            00880005

    END                                                                     00890005

     

    Carolyn Ray CA 1 level 1

    Carolyn.Ray@ca.com



  • 3.  Re: ca1 multifile capacity reporting: numdsnb vs 1stdsnb

    Posted Nov 03, 2016 05:04 PM

    Hi Carolyn,

     

    Can you please email this earl. I am getting syntax errors with the code above. I am trying to generate a Tape GB report based upon the tape type/density.

     

    Thanks,

    Mandeep



  • 4.  Re: ca1 multifile capacity reporting: numdsnb vs 1stdsnb

    Broadcom Employee
    Posted Nov 04, 2016 09:43 AM

    HI Mandeep-

    I'm sending you an attachment through email with the EARL program Carolyn sent you.

    Let me know if you don't receive it.

    thanks

    Erica Ca1 support



  • 5.  Re: ca1 multifile capacity reporting: numdsnb vs 1stdsnb

    Posted Nov 04, 2016 09:54 AM

    Hi Erica,

     

    Thank you.

     

    Regards,

    Mandeep