Space announcement We are no longer updating this space, and you cannot comment on this space. The IMAGE COPY PLUS component is now documented in BMC AMI Backup and Recovery for IMS.

Examples of dynamically allocated data set names


This topic provides examples.

In the following figure, the first prototype format is used if the data set being produced is type IC1, stacking is requested, and the data set is not a GDG.

$RCUDSN macro—prototype selection

*
ICP$DSN  CSECT
*
*
*===================================================================*
*     IMAGE COPY #1 PROTOTYPES                                      *
*===================================================================*
*
*-----------------   STACKED IMAGE COPIES (BUT NOT A GDG)   ----------
         $RCUDSN  '#################..########..########..D#####..T###X
               ###',FIELDS=(PREFIX,DBD,DSG,DATE,RTIME),
               TYPE=IC1,STKIC=Y,GDG=N
*-----------------   STACKED,   GDG   -------------------------
         $RCUDSN  '#################..########',
               FIELDS=(PREFIX,DBD),
               TYPE=IC1,STKIC=Y,GDG=Y
*-----------------   NON-STACKED, OR GDG   ---------------------------
         $RCUDSN  '#################..########..########',
               FIELDS=(PREFIX,DBD,DSG),
               TYPE=IC1
*
*===================================================================*
*     ANYTHING OTHER THAN AN IC1 DATA SET RETURNS WITH A RC 8.    *
*     SELECTION OF ONE OF THE PROTOTYPES CAUSES BRANCH TO RC 0 RTN. *
*===================================================================*
*
*
         $RCUDSN  EXIT
*
         END
*

The second prototype format is used if the data set being produced is type IC1, stacking is requested, and the data set is a GDG. The third prototype format is used if the data set being produced is type IC1, and stacking is not requested.

If none of the prototypes are selected, the exit returns to the main task with a nonzero return code, and the main task indicates that the copy for which the exit was invoked will be disabled. In this example, if two copies are requested, the second copy will be disabled because the exit generates DSNs only for the first copy.

In the following figure, offsets within fields are used for prototype substitution (JOB+3), and the TYPE keyword allows for general comparisons based on the character string provided. For example, with TYPE= IC, the prototype is used for any image copy (IC1 through IC10).

$RCUDSN macro with FIELDS offsets and general TYPE values

ICP$DSN  CSECT
         $RCUDSN  ENTRY
*
*====================================================================*
*                  PROTOTYPE FOR ANY IMAGE COPY                      *
*          (STACKED/NON-STACKED; GDG/NON-GDG; IC1-IC10)              *
*====================================================================*
*
         $RCUDSN  '####################..#####..####..########..######X
               ##',FIELDS=(PREFIX,JOB+3,TYPE,DBD,DSG),TYPE=IC           
*
* THE TYPE PARAMETER AS USED HERE COMPARES ONLY TWO CHARACTERS -- 'IC'
*====================================================================*
*     RETURN TO IMAGE COPY PLUS                                      *
*====================================================================*
*
         $RCUDSN  EXIT
         END

In the following figure, assembler coding is used in addition to the $RCUDSN macro. The second prototype includes a user-defined literal string--OFFSIT--in the generated data set name. A field offset reference—TYPE+2—completes the generated data set name.

$RCUDSN macro with Assembler coding

*====================================================================*
*  THIS EXAMPLE SHOWS NORMAL ASSEMBLER CODING                        *
*  INCORPORATED INTO THE DATA SET NAME EXIT ROUTINE.                 *
*  NOTE THAT THE TESTS PERFORMED BY THE 'CLC' INSTRUCTIONS ARE NOT   *
*  NECESSARY; THE SAME RESULTS CAN BE ACHIEVED BY PROTOTYPE CODING.  *
*  'CLC' IS USED HERE FOR ILLUSTRATION PURPOSES ONLY!                *
*====================================================================*
RCU$DSN  CSECT
         $RCUDSN  ENTRY
         CLC   TYPE(3),=C'IC1'       IS THIS FOR IC1?
         BE    IC1NAME               YES - BRANCH
         CLC   TYPE(2),=C'IC'        IS THIS FOR ANY OTHER IMAGE COPY?
         BE    OTHER                 YES - BRANCH
         B     XITPGM                BRANCH TO EXIT - NO PROTOTYPE USED
*                                    THIS WILL CAUSE U4094 ABEND
*
*====================================================================*
*      PROTOTYPE FOR IMAGE COPY # 1                                  *
* NOTE: THE 'CLC' INSTRUCTION AFTER THE ENTRY STATEMENT CAUSES A     *
* BRANCH TO THE FOLLOWING LOCATION--IC1NAME--IN THE ASSEMBLER CODE.    *
*====================================================================*
IC1NAME  DS    OH
         $RCUDSN  '####################..#####..####..########..######X
               ##',FIELDS=(PREFIX,JOB+3,TYPE,DBD,DSG)    
*
*
*====================================================================*
*     PROTOTYPE FOR ANY 'OTHER' IMAGE COPY (IC2 - IC10)              *
* NOTE: THE 2ND 'CLC' INSTRUCTION AFTER THE ENTRY STATEMENT CAUSES A *
* BRANCH TO THE FOLLOWING LOCATION--OTHER--IN THE ASSEMBLER CODE.      *
*====================================================================*
OTHER    DS    OH
         $RCUDSN  '####################..########..########..OFFSIT##'X
               ,FIELDS=(PREFIX,DBD,DSG,TYPE+2)           
*
* THIS CONSTRUCTS A DSN WITH THE FORMAT 'PREFIX.DBD.DSG.OFFSIT_',    *
* WHERE '_' IS 2-10 (DERIVED FROM THE LAST DIGIT(S) OF 'TYPE')       *
*
*====================================================================*
*     RETURN TO IMAGE COPY PLUS                                      *
*====================================================================*
*
XITPGM   DS    OH
         $RCUDSN  EXIT
         END

Following figure shows an example of an exit routine that handles data set naming for a multivolume data set group or area. The table in Data-set-name-construction-for-traditional-image-copies-and-Snapshot-Copies explains the data set naming conventions.

Exit routine for VOLCOPY(Y)

*= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + =*
*   SAMPLE ICP$DSN EXIT TO HANDLE VOLCOPY(Y)                          *
*= + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + =*
*
ICP$DSN  CSECT
         $RCUDSN   ENTRY
         CLC   SEQ,=C'001'
         BH    VOLCOPY
*
*=====================================================================*
*   PROTOTYPE FOR STACKED OUTPUT DATA SETS THAT ARE NOT GDG'S         *
*=====================================================================*
ICSTK    DS        0H
         $RCUDSN   '#################..########..########..D#####..T###X
               ###',FIELDS=(PREFIX,DBD,DSG,DATE,RTIME),                X
               TYPE=IC,STKIC=Y,GDG=N
*
*=====================================================================*
*   PROTOTYPE FOR NON-STACKED OUTPUT, OR FOR GDG'S                    *
*=====================================================================*
ICGDG    DS        0H
         $RCUDSN   '#################################..########',      X
               FIELDS=(PREFIX,DBD),                                    X
               TYPE=IC,STKIC=N
*
*=====================================================================*
*   PROTOTYPE FOR 2ND AND SUBSEQUENT EXTENTS OF VOLCOPY(Y) OPERATION  *
*=====================================================================*
VOLCOPY  DS        0H
         $RCUDSN   '#################################..########..S###',X
               FIELDS=(PREFIX,DBD,SEQ),                                X
               TYPE=IC,STKIC=N
*
         $RCUDSN   EXIT
         END



 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*