I was testing basic printing and encountered a S0C6 abend in the main Spool task after entering a command.
We want our ESFPARM LOADEXIT parameters set to call the ESFSECU4 and ESFSECU5 security exits and the ESFU009 TCP/IP Print exit, and have them configured as follows:
LOADEXIT UEX000=ESFSECU4,
UEX003=ESFSECU5,
UEX009=ESFU009
** ** ** Summary of error messages seen in ESFLOG ** ** **
CCSR010E CCSR010E ESFNUC S0C6 at 0006D973 LMOD ESFMAIN CSECT ESFPRT +005623 CASPOOL
CCSR021I OWNER = CA Spool RV14.
CCSR022I MODULE = ESFPRT FMID = CBQ4E00 RMID = LU03150
CCSR061I PSW: 00000000 00000000 473C2000 8006D973
CCSR062I ILC: 02 INTERRUPT CODE: 06
CCSR067I COMPLETION CODE S0C6 REASON CODE 00000006
CCSR064I DATA AT PSW 0006D96D : 22910430 4F4780C1 F6920D10
CCSR065I HOME = 007E PRIMARY = 007E SECONDARY = 007E
CCSR070I GR00 - GR01 00000000_00000002 00000000_00000000
CCSR070I GR02 - GR03 00000000_00036E7F 00000000_00000000
CCSR070I GR04 - GR05 00000000_1968515E 00000000_00000000
CCSR070I GR06 - GR07 00000000_19685150 00000000_19685160
CCSR070I GR08 - GR09 00000000_0003723C 00000000_00000002
CCSR070I GR10 - GR11 00000000_00000000 00000000_00007000
CCSR070I GR12 - GR13 00000000_000364D8 00000000_000EE948
CCSR070I GR14 - GR15 00000000_80036AEE 00000000_00036E7F
CCSR071I AR00 - AR03 00000000 00000000 00000000 00000000
CCSR071I AR04 - AR07 00000000 00000000 00000000 00000000
CCSR071I AR08 - AR11 00000000 00000000 00000000 00000000
CCSR071I AR12 - AR15 00000000 00000000 00000000 00000000
CCSR080I ESFNUC DUMP IN PROGRESS
IEA794I SVC DUMP HAS CAPTURED: 127
DUMPID=001 REQUESTED BY JOB (CASPOOL )
DUMP TITLE=CCSR010E ESFNUC S0C6 at 0006D973 LMOD ESFMAIN CSECT
ESFPRT +005623 CASPOOL N/A CASPOOL
CCSR081I ESFNUC DUMP COMPLETED
ESF998 CATASTROPHIC ERROR, ESTAE IN CONTROL
Release : 14.0
Component : Spool
The ESFPARM LOADEXIT statements are not configured correctly when coded as follows:
LOADEXIT UEX000=ESFSECU4,
UEX003=ESFSECU5,
UEX009=ESFU009
The S0C6 is occurring when you issue a COMMAND because instead of calling the ESFU003 Command Processing user exit routine, you are calling the ESFSECU5 security exit.
- Each LOADEXIT UEXnnn keyword statement can only reference it's corresponding ESFxxxx routine.
The UEX003 statement can ONLY be configured to call the ESFU003 Command Processing user exit routine. If you don't want to call ESFU003, then leave the UEX003 statement commented out. Additionally, the UEX000 statement can ONLY be configured to call the ESFU000 Initialization user exit routine so if you don't want to call ESFU000 leave the UEX000 statement commented out.
- The ESFSECU4 and ESFSECU5 security exits must be called by the UEXSEC4 and UEXSEC5 LOADEXIT keywords respectively.
Example:
LOADEXIT UEXSEC4=ESFSECU4,
UEXSEC5=ESFSECU5,
UEX009=ESFU009
ESFPARM - Available LOADEXIT summary:
LOADEXIT UEX000=esfu000, ESFU000 - Initialization user exit routine
UEX003=esfu003, ESFU003 - Command Processing user exit routine
UEX006=esfu006, ESFU006 - VTAM Print Line
UEX007=esfu007, ESFU007 - ESFTOJES user exit routine
UEX008=esfu008, ESFU008 - Automatic Printer Definition
UEX009=esfu009, ESFU009 - TCP/IP Print
UEX010=esfu010, ESFU010 - TCP/IP Separator Page
UEX011=esfu011, ESFU011 - TCP/IP LPD/IPP
UEX012=esfu012, ESFU012 - 'C Transformers User Exit'
UEXPRIO=esfprio, ESFPRIO - Output Priority exit
UEXMSG0=esfmsg0, ESFMSG0 - Message Processing exit
UEXSEP=esfsepa0, SEPAEXIT - Separator page exit
UEXSEC4=esfsecu4, The ESFSECU4 security exits are called when a user requests a function in Spool - called from the security subtask.
ESFSEC4X issues checks against the external security system or the Spool internal SAF interface, and returns.
UEXSEC5=esfsecu5 The ESFSECU5 security exits are called when a user requests a function in Spool - called from the Spool main task.
This exit can allow or disallow the request, or it can decide that ESFSEC4X must be called.