z/OS DFSMSrmm Implementation and Customization Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Step 1: Tailor the sample EDGUX100 exit module

z/OS DFSMSrmm Implementation and Customization Guide
SC23-6874-00

You can create sticky labels using the EDG_EXIT100 installation exit and can use either the DFSMSrmm built-in function, disposition control, or you can use a sticky label routine you have written. DFSMSrmm calls the EDG_EXIT100 installation exit whenever a tape data set is closed or reaches end of volume. In any case, you can use either the DFSMSrmm built-in function, your own routine, or any combination. When the EDG_EXIT100 installation exit is called to enable sticky label processing, the PL100_ITS_CLOSE option is set. When the exit is called with PL100_ITS_CLOSE set, there is information in the EDGPL100 parameter list for a default sticky label that DFSMSrmm has prepared and also information that allows you to create or customize sticky labels. See Installation exit mapping macro: EDGPL100.

If there is an DFSMSrmm prepared label, the PL100_LABPTR is non-zero. In addition, you can determine if this label was created because of disposition control file processing, or as a default label. PL100_INFO_DISPLAB indicates that the disposition control file requested the label. Figure 1 shows where the sample exit determines if a label is available and why it was created.

Figure 1. Sample EDGUX100 exit module sticky label support
JFCBPOOL EQU   *
****************************************************************** @04A
* Now we'll check if we come from CLOSE/END OF VOLUME.             @04A
****************************************************************** @04A
         TM    PL100_VALID,PL100_ITS_CLOSE Is it a call from C/EOV @04A
         BZ    NOTCLOSE            No, continue                    @04A
 ...
         L     R3,PL100_LABINFO    Address Label info block        @04A
         USING PL100_LABDS,R3      Addressability                  @04A
         TM    PL100_OFLAG,PL100_FOUT Is it OUTPUT ?               @04A
         BZ    NOTCLOSE            No, continue                    @04A
DSPCNT   DS    0H                                                  @L6A
         STM   R14,R10,DSPCNTR     STORE REGISTER                  @K4A
         CLI   PL100_VERNO,X'02'   REQUIRED VERSION NUMBER 2       @L6A
         BL    DSPCNTE             NO, CONTINUE                    @L6A
         L     R5,PL100_LABPTR     Do we have a prepared label?    @17M
         LTR   R5,R5                                               @17M
         BZ    DSPCNT2             NO, CONTINUE                    @17M
         TM    PL100_INFO,PL100_INFO_DISPLAB                       @17C
         BZ    DSPCNT_OPT2         NO, CONTINUE with option 2      @17C
For each time that the code is entered at label DSPCNT, you can choose to do one of these:
  • If a disposition control file provided user data, it is copied to the prepared label. See label '=1' in Figure 2.
  • You can customize the prepared label. See label '=2' in Figure 2.
  • If the label is created because of disposition control file processing, you can suppress the label. See label '=3' in Figure 2 for where you can suppress the label.
  • If you are not using a disposition control file and would like to use the DFSMSrmm default label, you add your decision making code at label '=4' in Figure 2. This is a much easier option than using your custom routine. To enable the production of the prepared label, uncomment the code at label '=5' in Figure 2. By default, DFSMSrmm does not produce the label, but has created it for you.
  • In any case, whether you produce a label or not, you can set a location name in PL100_LOCATION, specify if this is a loan location or a storage location, and determine how moves should be confirmed. See label '=6' in Figure 3.
Figure 2. Sample EDGUX100 exit module sticky label support
*---------------------------------------------------------------------
* sticky label option 1                                           @17A
*---------------------------------------------------------------------
* COPY USER DATA INTO STICKY LABEL
*---------------------------------------------------------------------
         TM    PL100_INFO,PL100_INFO_USERDATA                      @K4
         BZ    DSPCNT0             NO, CONTINUE                     =1
         MVC   SLABCUSR,PL100_LAB_USERDATA                         @K4
*---------------------------------------------------------------------
* CREATE CUSTOM STICKY LABEL
*   Here is where you can customize the prepared label
*---------------------------------------------------------------------
DSPCNT0  DS    0H                                                   =2
 ...
*---------------------------------------------------------------------
* SUPPRESS STICKY LABEL OUTPUT
*   Remove comments in the following code to suppress the label   @17A
*---------------------------------------------------------------------
DSPCNT1  DS    0H                                                  @K4
*        OI    PL100_FUNCTION,PL100_SET_NOLABEL                     =3
         B      DSPCNT2   continue with LOCATION handling          @17
*---------------------------------------------------------------------
* Consider sticky label option 2                                  @17A
*---------------------------------------------------------------------
DSPCNT_OPT2 DS 0H                                                  @17
* Add here code to decide when the prepared labels should be       @17
* created.                                                          =4
*---------------------------------------------------------------------
* For Option 2 we must reset the PL100_SET_NOLABEL flag           @17A
*   Remove comments in the following code to produce the label    @17A
*---------------------------------------------------------------------
*        NI    PL100_FUNCTION,255-PL100_SET_NOLABEL                 =5
Figure 3. Sample EDGUX100 exit module sticky label support location
DSPCNT2  DS    0H                                                  @K4A
*---------------------------------------------------------------------*
* ASSIGN LOCATION                                                     *
*   Remove comments in the following code to activate or customize@17A*
*---------------------------------------------------------------------*
*        MVC   PL100_LOCATION,=CL8'SAMPLE  '                        =6
*        MVI   PL100_LOCTYPE,PL100_LOC_LOAN                        @K4A
*        NI    PL100_FUNCTION2,255-PL100_SET_NOCMOVE               @K4A
*        OI    PL100_FUNCTION2,PL100_SET_CMOVE                     @K4A
To create your own sticky labels, you can add your sticky label routine in one of these ways:
  • Create a new exit routine to perform sticky label processing. Use dynamic exit services to add your sticky labels routine as a separate exit module to the EDG_EXIT100 exit.
  • Add your sticky label routine directly to the exit module or add a LOAD or LINK statement to call your sticky label routine externally. Figure 4 shows where your routine for creating sticky labels can be called from EDGUX100. See label '=7' in Figure 4.
Be sure that your code sets the PL100_SET_NOLABEL to B'1' so that DFSMSrmm does not also produce a label.
Figure 4. Sample EDGUX100 exit module sticky label support own labels
DSPCNTE  DS    0H                                                  @L6A
****************************************************************** @L6M
* To create your own sticky label support, add your code right     @L6M
* before the statement 'DSPEND  EQU  *'.                           @L6M
*        WTO   'Sticky label routine called . . . . '              @04A
*                                                                  @04A
*  Refer to PL100_LABDS DSECT in EDGPL100 macro for an explanation @04A
*  of all the fields you may need for sticky label processing.     @04A
*                                                                  @04A
******************************************************************  =7
DSPEND   DS    0H                                                  @K4A

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014