HP3000-L Archives

April 2005, Week 4

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Wirt Atmar <[log in to unmask]>
Reply To:
Date:
Fri, 22 Apr 2005 18:05:34 EDT
Content-Type:
text/plain
Parts/Attachments:
text/plain (99 lines)
Greg writes:

> We have a few jobs that stream other subordinate jobs, waiting for and
>  validating each job before streaming the next subordinate. Currently, we
>  rely on LIMIT and STREAM ;AT= to manage these jobstreaming jobs, streaming
>  the second such job five minutes after the first. Inevitably, the first job
>  will take more than five minutes, and the second job will begin streaming
>  its jobs, before the first is finished, with less than desirable results.
>  Remarkably, the larger design is not so ham-handed, such that simply
>  combining two such jobs is not an effective solution. Creating yet another
>  layer, an uber-stream to stream both jobstreaming jobs could work. The
>  objection to that is that it complicates this further than two levels, and
>  perhaps merely perpetuates a poor idea.
>
>  So, is there some clever solution that only requires MPE? We do not have
>  MPEX. We do not have a budget for solving this, and that does not mean that
>  we can spend as much as we want. I can only spend time, within reason. We
>  are evaluating MasterOp, and that may become our solution.

Do you know about the STREAM command, where one "uber-job" can stream any
number of other jobs, some nested within one another? This is the job we use for
our QueryCalc installer. It consists of multiple tasks, each of which must be
completed before the next job launches:

========================================

!COMMENT ****************************************************
!COMMENT
!COMMENT    QueryCalc Job Stream Loader
!COMMENT
!COMMENT ****************************************************
!JOB MANAGER.SYS/PASSWORD,PUB
!NEWACCT AICS,MANAGER;PASS=PASSWORD
!ALTACCT AICS;CAP=AM,AL,GL,ND,SF,IA,BA,PH,PM,DS;ACCESS=(R,W,X:ANY;A,L:AC)
!STREAM,*
*JOB MANAGER.AICS/PASSWORD
*NEWGROUP QCDEMO;ACCESS=(R,W,X,S:ANY;A,L:AC)
*NEWGROUP QCPROGS;CAP=IA,BA,PH,PM,DS;ACCESS=(R,W,X,S:ANY;A,L:AC)
*NEWGROUP QCDICT;ACCESS=(R,W,L:ANY;X,S,A:AC)
*NEWGROUP QCLOGOS;ACCESS=(R,W,L:ANY;X,S,A:AC)
*NEWGROUP QCFONTS;ACCESS=(R:ANY;X,W,L,S,A:AC)
*NEWUSER USER;HOME=QCDEMO
*STREAM,~
~JOB MANAGER.SYS/PASSWORD,PUB
~FILE TAPE;DEV=7
~RESTORE *TAPE;@[log in to unmask]
~PURGE QCLOAD
~PURGE QCLOAD1
~STREAM,@
@JOB MANAGER.AICS/PASSWORD
@CONTINUE
@CHANGELOG 1
@IF CIERROR = 975 THEN
@  SETJCW TURBOIMAGE = 0
@ELSE
@  SETJCW TURBOIMAGE = 1
@ENDIF
@IF TURBOIMAGE = 0 THEN
@  RUN DBCONV.PUB.SYS,BACKWARD
   QCDEMO.QCDEMO
   YES
@  RUN DBCONV.PUB.SYS,BACKWARD
   QCDICT.QCDICT
   YES
@ENDIF
@SET STDLIST=DELETE
@EOJ
@EOD
~SET STDLIST=DELETE
~EOJ
~EOD
*SET STDLIST=DELETE
*EOJ
*EOD
!SET STDLIST=DELETE
!TELLOP QUERYCALC LOAD PROCESS COMPLETED SUCCESSFULLY/
!EOJ

=========================================

To insure that each job is completed, one job launches the next. This is
accomplished with the STREAM command:

     !stream,*

where the "*" symbol specifies the next level of batch commands (the
character you use is wholly up to you). Each job is nested within another, so you'll
see at the end of the master job, the process "climbs" its way back out of the
nested stack, although that's not the only way that you can use this
functionality.

This structure eliminates any asynchronicity. Each job has to complete before
the next stage of the installation operation is launched.

Wirt Atmar

* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *

ATOM RSS1 RSS2