$ IF $RESTART THEN GOTO 'BATCH$RESTART' . . . $ FIRSTPART: $ SET RESTART_VALUE = FIRSTPART $ RUN PART1 . . . $ SECONDPART: $ SET RESTART_VALUE = SECONDPART $ RUN PART2 . . . In this example, the first command states that, if $RESTART is true, the procedure is to jump to the value contained in BATCH$RESTART. ($RESTART is true only if the job has been executed before, that is, the job is being rerun after a crash or after having been requeued.) The first SET RESTART_VALUE command assigns the label FIRSTPART to be equal to the symbol BATCH$RESTART. The next line contains the command to run PART1.EXE. The second SET RESTART_VALUE command assigns the label SECONDPART to be equal to the symbol BATCH$RESTART. The last line shown contains the command to run PART2.EXE. When the job is first submitted using the SUBMIT/RESTART command, the value of $RESTART is FALSE, so the IF expression is ignored. If the job is stopped during the run of PART1.EXE, the value of BATCH$RESTART is FIRSTPART. When the job is restarted, the value of $RESTART is TRUE; therefore, the IF expression is processed and transfers control to the FIRSTPART label in the procedure. PART1.EXE is rerun. If the job is stopped during the run of PART2.EXE, the value of BATCH$RESTART is SECONDPART. When the job is restarted, the value of $RESTART is TRUE. In this instance, the IF-GOTO command transfers control to the SECONDPART label in the procedure so that PART2.EXE can be run. PART1.EXE is not rerun.