Did you know you could enhance the IBM "Work with" commands?
Over the years, many users have asked for the ability to enhance IBM-provided displays. With V6R1, this is now possible with the commands Work with Output Queue (WRKOUTQ), Work with Spooled Files (WRKSPLF), Work with Job Spool Files (WRKJOB OPTION(*SPLF), and even the Status Print (D P) of the System/36 environment. While IBM continues to reserve numeric options such as 1 for send, 2 for change, 3 for hold, and so on, users can now define their own alphabetic options such as A for archive, E for email, F for fax, and so on. In this article, we will see how to add a new option, P (Print Next or Prioritize), to move a spooled report to the top of an output queue.
The enabler for this new support is the UIM Spooled File User-defined List Action Exit Point, QIBM_QSP_SPLF_LSTACT, which is documented here. This exit point allows you to define a user program that should be called when a specific alphabetic option is entered on the "Work with" panel associated with the above IBM commands. For instance, to have the system call the user program VINING/PRIORITY whenever option P is entered, you would use the following Add Exit Program (ADDEXITPGM) command:
ADDEXITPGM EXITPNT(QIBM_QSP_SPLF_LSTACT) FORMAT(LASP0100) PGMNBR(*LOW)
PGM(VINING/PRIORITY) PGMDTA(*JOB 1 P)
If you are not familiar with the ADDEXITPGM command, you can find additional information about the parameters being used here. The key point is that the third element of the PGMDTA parameter specifies the option being enabled--in this case, P for priority printing.
When the user enters option P, the system will call the program PRIORITY in library VINING, passing these five parameters:
Required Parameter Group:
1 | Exit point name | Input | Char(20) |
2 | Format | Input | Char(8) |
3 | User-defined action | Input | Char(1) |
4 | Spooled file identity | Input | Char(*) |
5 | Length of spooled file identity | Input | Binary(4)
|
The first parameter is the name of the exit point calling the PRIORITY program (QIBM_QSP_SPLF_LSTACT), the second parameter is the format of the information being passed (LASP0100 as that is the format we registered for with the ADDEXITPGM command), the third parameter is the option entered by the user (P), the fourth parameter is the information needed to uniquely identify the spool file the user selected, and the fifth parameter is the length of the spool file identification information.
The following program, PRIORITY, implements the option P processing:
Pgm Parm(&Exit_Name &Format &Action &Spool_ID +
&Spl_ID_Len)
Dcl Var(&Exit_Name) Type(*Char) Len(20)
Dcl Var(&Format) Type(*Char) Len(8)
Dcl Var(&Action) Type(*Char) Len(1)
Dcl Var(&Spool_ID) Type(*Char) Len(82)
Dcl Var(&Job_Name) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&Spool_ID 1)
Dcl Var(&User_Name) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&Spool_ID 11)
Dcl Var(&Job_Number) Type(*Char) Len(6) +
Stg(*Defined) DefVar(&Spool_ID 21)
Dcl Var(&Splf_Name) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&Spool_ID 27)
Dcl Var(&Splf_Nbr) Type(*Int) +
Stg(*Defined) DefVar(&Spool_ID 37)
Dcl Var(&Sys_Name) Type(*Char) Len(8) +
Stg(*Defined) DefVar(&Spool_ID 41)
Dcl Var(&Crt_Date) Type(*Char) Len(7) +
Stg(*Defined) DefVar(&Spool_ID 49)
Dcl Var(&Crt_Time) Type(*Char) Len(6) +
Stg(*Defined) DefVar(&Spool_ID 56)
Dcl Var(&OutQ_Name) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&Spool_ID 62)
Dcl Var(&OutQ_Lib) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&Spool_ID 72)
Dcl Var(&Spl_ID_Len) Type(*Int)
Dcl Var(&MSPF0100) Type(*Char) Len(114)
Dcl Var(&Src_JName) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&MSPF0100 1)
Dcl Var(&Src_JUsr) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&MSPF0100 11)
Dcl Var(&Src_JNbr) Type(*Char) Len(6) +
Stg(*Defined) DefVar(&MSPF0100 21)
Dcl Var(&Src_IntJID) Type(*Char) Len(16) +
Stg(*Defined) DefVar(&MSPF0100 27)
Dcl Var(&Src_SplID) Type(*Char) Len(16) +
Stg(*Defined) DefVar(&MSPF0100 43)
Dcl Var(&Src_SplF) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&MSPF0100 59)
Dcl Var(&Src_SplNbr) Type(*Int) +
Stg(*Defined) DefVar(&MSPF0100 69)
Dcl Var(&Tgt_OutQ) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&MSPF0100 73)
Dcl Var(&Tgt_OutQL) Type(*Char) Len(10) +
Stg(*Defined) DefVar(&MSPF0100 83)
Dcl Var(&Src_SysNam) Type(*Char) Len(8) +
Stg(*Defined) DefVar(&MSPF0100 93)
Dcl Var(&Src_CrtDat) Type(*Char) Len(7) +
Stg(*Defined) DefVar(&MSPF0100 101)
Dcl Var(&Src_CrtTim) Type(*Char) Len(6) +
Stg(*Defined) DefVar(&MSPF0100 109)
Dcl Var(&MsgTxt) Type(*Char) Len(80)
Dcl Var(&Msg_Key) Type(*Char) Len(4)
Dcl Var(&QUSEC_BPrv) Type(*Int) Value(0)
Dcl Var(&L_MSPF0100) Type(*Int)
If Cond(&Exit_Name = 'QIBM_QSP_SPLF_LSTACT') Then(Do)
If Cond(&Format = 'LASP0100') Then(Do)
If Cond(&Action = 'P') Then(Do)
ChgVar Var(&Src_JName) Value(&Job_Name)
ChgVar Var(&Src_JUsr) Value(&User_Name)
ChgVar Var(&Src_JNbr) Value(&Job_Number)
ChgVar Var(&Src_IntJID) Value(' ')
ChgVar Var(&Src_SplID) Value(' ')
ChgVar Var(&Src_SplF) Value(&Splf_Name)
ChgVar Var(&Src_SplNbr) Value(&Splf_Nbr)
ChgVar Var(&Tgt_OutQ) Value('*SAME')
ChgVar Var(&Tgt_OutQL) Value(' ')
ChgVar Var(&Src_SysNam) Value(&Sys_Name)
ChgVar Var(&Src_CrtDat) Value(&Crt_Date)
ChgVar Var(&Src_CrtTim) Value(&Crt_Time)
RtvVarSiz Var(&MSPF0100) Size(&L_MSPF0100)
Call Pgm(QSPMOVSP) Parm(&MSPF0100 &L_MSPF0100 +
'MSPF0100' &QUSEC_BPrv)
Chgvar Var(&MsgTxt) Value( +
'Spool file' *BCat &Splf_Name *BCat +
'moved to top of output queue')
LATEST COMMENTS
MC Press Online