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 supportJFCBPOOL 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
locationDSPCNT2 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 labelsDSPCNTE 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