If you were to search the IBM question and answer database for keyword QCTL, you would find question number A000350: "Is there a problem running pass- through from QCTL?" The answer states that QCTL will not accept job-start requests from any device other than the console.
Luckily for those of us with remote systems, IBM's answer is not complete. By adding the proper communication and workstation entries to the QCTL subsystem description, you can pass-through to a system, as long as the system is not in a restricted state. This ability allows you to do backups on remote systems by individually ending all subsystems except the controlling subsystem, thus ensuring all jobs (except the console) are inactive.
The changes I'll demonstrate are made to a copy of subsystem QCTL. We try to avoid changing the IBM-supplied object, so that we can revert to the original subsystem description if there is a problem with the changes. First, we make our copy of the subsystem:
CRTDUPOBJ OBJ(QCTL) FROMLIB(QSYS) + OBJTYPE(*SBSD) TOLIB(*FROMLIB) + NEWOBJ(QCTL1)
Next, we need to create virtual displays and a virtual controller. We use device type 5251 model 11 to ensure that any model display attempting pass- through will be successful. We also create more than one virtual display in case a device error varies the virtual display off.
CRTCTLVWS CTLD(QCTLVIRT) CRTDEVDSP DEVD(QCTLVIRT1) + DEVCLS(*VRT) TYPE(5251) MODEL(11) + CTL(QCTLVIRT) CRTDEVDSP DEVD(QCTLVIRT2) + DEVCLS(*VRT) TYPE(5251) MODEL(11) + CTL(QCTLVIRT) CRTDEVDSP DEVD(QCTLVIRT3) + DEVCLS(*VRT) TYPE(5251) MODEL(11) + CTL(QCTLVIRT)
Next, we create a different mode so the system can distinguish our QCTL request from the normal pass-through requests. We need to run this command both on the target and source systems, so we have matching modes.
CRTMODD MODD(#QCTL) + TEXT('Mode for QCTL Passthru')
Now we need to add the workstation and communications entries to the subsystem description.
ADDWSE SBSD(QCTL1) + WRKSTN(QCTLVIRT*) ADDCMNE SBSD(QCTL1) + DEV(*ALL) DFTUSR(*SYS) + MODE(#QCTL)
Now, the only things left are to change the system value QCTL-SBSD to point to our new subsystem and to IPL the system. Do not power down the system until all users are signed off-on a weekend or at nighttime, for example.
CHGSYSVAL QCTLSBSD + VALUE('QCTL1 QSYS') PWRDWNSYS OPTION(*IMMED) + RESTART(*YES)
Okay. It's 7:30 Monday morning. Your branch office in Dallas calls-no one except the console has sign-on screens. Do you panic? Do you give someone at the remote location your password to sign-on and look around? No! Simply use the following pass-through command.
STRPASTHR RMTLOCNAM(DALLAS) + VRTCTL(QCTLVIRT) MODE(#QCTL)