During our IPL process we want to stop specified tasks on one system and start them on another. We don't have SSM V3 with its move groups and the most concise way of doing this that I can currently think of is using the STCTBL_ACT table as foollows:
- Add a SELECT entry for an ACTION_MODE of MOVE with an action_text of PROCESS("MATCH") (or "MATCH,DEBUG")
- Add an ACTION clause for DS=UP, CS=UP, ACTION_MODE=MOVE and an action_text of:
- SETCOL("DESIRED_STATE,DOWN"); /* Stop this task
- SETCOL("PREMODE,PASSIVE") /* Ignore prereqs that might prevent it stopping (may or may not be wanted)
- Add a MATCH clause for DS=DOWN, CS=DOWN, ACTION_MODE=MOVE with the following action_trext steps:
- SETCOL("MODE,PASSIVE"); /* Make this task passive
- SETCOL("ACTMODE,ACTIVE"); /* Reset its ACTMODE
- SETCOL("PREMODE,ACTIVE"); /* Reset its PREMODE
- RULE("SETCOLR msfid STCTBL MODE ACTIVE JOBNAME &JOBNAME"); /* Use custome rule to set same task on other system ACTIVE
- RULE("SETCOLR msfid STCTBL DESIRED_STATE UP JOBNAME &JOBNAME") /* Set DS of remote task to UP
So when a task has its ACTMODE set to MOVE, it is stopped and when it's down, the same-named task on the remote system is started.
Any input on this? Is there an easier/more concise way? I'm aware that there is no error checking in this process so I might add another action that shcedules a rule to check in a few minutes if the task has actually moved.