I have a UPS monitoring program that runs in a job queue associated with 
our controlling subsystem.  When it tried to do the
ENDSBS SBS(*ALL) OPTION(*CNTRLD) DELAY(120)
I got
CPF1052
Message . . . . :   ENDSBS *ALL not allowed in current environment.  
  
Cause . . . . . :   ENDSBS *ALL is allowed only from an interactive job 
that
  is started from a *SIGNON workstation entry in the controlling 
subsystem. 
  ENDSBS *ALL is not allowed from a TELNET job, target pass-through job, 
or 
  workstation function job. ENDSBS *ALL is only allowed in a batch job 
when 
  the BCHTIMLMT parameter is specified.  
Is this as simple as changing this to
ENDSBS SBS(*ALL) OPTION(*CNTRLD) DELAY(120) BCHTIMLMT(*NOMAX)
The remaining program is simply:
/* Wait for CPF0968: System ended to restricted condition. */
DOUNTIL (&SysStatus='1')
   DLYJOB DLY(10)
   CALL PGM(QWCRSSTS) PARM(&Ssts0200 &Len0200 &Format &ResetSts &ErrCode)
ENDDO
PWRDWNSYS DELAY(60) RESTART(*NO)
END:
DLCOBJ OBJ((&MsgQLib/&MsgQName *MSGQ *EXCL))
ENDPGM
From earlier in the code:
DCL   &SysStatus  *CHAR   STG(*DEFINED) LEN(1) DEFVAR(&SSTS0200 31) 
                             /* 0  System is not in restricted state.   */
                             /* 1  System is in restricted state.       */
Rob Berendt
As an Amazon Associate we earn from qualifying purchases.