*DECK DB$DS26 
USETEXT CDCSCTX;
      PROC DB$DS26; 
      BEGIN 
 #
* *   DB$DS26 - WRITE JOB STATUS                 PAGE  1
* *   LG WHITE                                   DATE  10/22/79 
* *   M. E. STERMER                              DATE  12/02/80 
* 
* DC  PURPOSE 
* 
*     WRITE STATUS LINES OF THE SPECIFIED JOBNAME TO THE OPERATOR*S CON-
*     SOLE IN RESPONSE TO OPERATOR TYPE-IN OF *STATUS,JN=....*
* 
* DC  ENTRY CONDITIONS
* 
*     ASSUMPTIONS 
* 
*     GLOBAL ITEM DB$DSJN CONTAINS NAME OF JOB WHOSE STATUS IS TO BE
*     LISTED.  JOBNAME IS 1ST SEVEN CHARS AS IT APPEARS ON THE B DISPLAY
* 
* DC  EXIT CONDITIONS 
* 
*     STATUS LINES ARE DISPLAYED ON OPERATOR*S CONSOLE. 
*     POINTERS TO TQT AND RCB ARE RESTORED TO THE VALUES EXPECTED BY
*     DB$MTR-COMMAND PROCESSING EVENTUALLY RETURNS THERE ON COMPLETION
* 
* DC  CALLING ROUTINES
* 
*     DB$DSTX - SYNGEN SPECIFICATION (THROUGH DB$DDIF)
* 
* DC  CALLED ROUTINES 
# 
      XREF FUNC DB$CDEB C(10);     # INTEGER TO DECIMAL / BLANK FILL   #
      XREF PROC DB$DBHL;           # BEGIN HEADER LINES                #
      XREF PROC DB$DBLL;           # BEGIN LIST LINES                  #
      XREF PROC DB$DELL;           # ENTER LIST LINES TO CONSOLE       #
      XREF PROC DB$FLOP;           # GENERATE FLOW POINT               #
      XREF PROC DB$YES;            # SUCCESS RETURN TO SCANNER         #
# 
* DC  DESCRIPTION 
* 
*     LOOPING THROUGH THE TQT CHAIN, SEARCH FOR THE SPECIFIED JOBNAME.
*     IF JOBNAME IS NOT IN TQT, WRITE *NOT FOUND* TO CONSOL 
*     OTHERWISE PULL THE STATUS INFORMATION FROM THE TQT, RCB, RSB, SAL 
*     AND THE ASL.  FORMAT THE LIST LINES AND WRITE THEM TO THE CONSOLE.
      RESTORE TQT AND RCB POINTERS
  
* DC  NON-LOCAL VARIABLES 
# 
      XREF ITEM DB$DSJN;           # JOBNAME AS SPECIFIED IN COMMAND   #
# 
 #
  
  
  
#     LOCAL VARIABLES                                                  #
  
      ITEM FOUND B;                # FLAG FOR  DIAGNOSTIC MESSAGE      #
      ITEM INDEX I;                # INDUCTION VARIABLE                #
  
      ARRAY JOBSTATUS[0:0] S(25); 
        BEGIN 
        ITEM JB$JBPRGM    C(00,00,42) = 
                     ["JOBNAME = XXXXXXX     PROGRAM = XXXXXXXXXX"];
        ITEM JB$TASKID    C(04,12,14) = 
                     ["TASK ID = XXXX"];
        ITEM JB$ACTIV     C(05,36,25) = 
                    ["JOB ACTIVITY =           "];
        ITEM JB$SCNMID    C(08,06,52) = 
           ["SCHEMA ID/NAME = NNNN/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"];
        ITEM JB$SBNM      C(13,18,47) = 
                    ["SUBSCHEMA NAME = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"];
        ITEM JB$FUNC      C(18,00,29) = 
                    ["CURRENT FUNCTION =           "];
        ITEM JB$CURREQVN  C(20,54,35) = 
                    ["CURRENT REQUESTED VERSION = XXXXXXX"];
        END 
  
      ITEM JBNOTFOUND C(15) = "** NOT FOUND **";
  
      DEF DFJNCP   #10#;           # CHAR POSITION JOBNAME             #
      DEF DFPGCP   #32#;           # CHAR POSITION PRGM NAME           #
      DEF DFTASKCP #10#;           # CHAR POSITION TASK ID             #
      DEF DFACTCP  #15#;           # CHAR POSITION ACTIVITY            #
      DEF DFSCIDCP #17#;           # CHAR POSITION SCHEMA ID           #
      DEF DFSCNMCP #22#;           # CHAR POSITION SCHEMA NAME         #
      DEF DFSBNMCP #17#;           # CHAR POSITION SUBSCHEMA NAME      #
      DEF DFFNCP   #19#;           # CHAR POSITION CURRENT FUNCTION    #
      DEF DFCVNCP  #28#;           # CHAR POS CURRENT REQUESTED VERSION#
  
      DEF DFJNLG   # 7#;           # JOBNAME LENGTH                    #
      DEF DFPRGMLG #10#;           # LENGTH PROGRAM ID                 #
      DEF DFTASKLG # 4#;           # TASK ID STRING LENGTH             #
      DEF DFACTLG  #10#;           # ACTIVITY STRING LENGTH            #
      DEF DFSCIDLG # 4#;           # SCHEMA ID STRING LENGTH           #
      DEF DFSCNMLG #30#;           # LENGTH SCHEMA NAME                #
      DEF DFSBNMLG #30#;           # LENGTH SUBSCHEMA NAME             #
      DEF DFFUNCLG #10#;           # LENGTH FUNCTION STRING            #
      DEF DFVERNLG # 7#;           # LENGTH VERSION NAME               #
  
#     DEFS FOR LIST LINE LENGTHS                                       #
  
      DEF DFLINE1LG  #42#;
      DEF DFLINE2LG  #14#;
      DEF DFLINE3LG  #25#;
      DEF DFLINE4LG  #52#;
      DEF DFLINE5LG  #47#;
      DEF DFLINE6LG  #29#;
      DEF DFLINE7LG  #35#;
  
*CALL DB$FUNC 
  
  
  
  
  
#     B E G I N   E X E C U T A B L E   C O D E   D B $ D S 2 6        #
  
  
      CONTROL IFGR DFFLOP,0;
        DB$FLOP ("DS26");          # GENERATE A FLOW POINT             #
      CONTROL ENDIF;
  
      DB$DBHL;                     # CLEAN UP SCREEN BEFORE STARTING   #
      DB$DBLL;
      FOUND = FALSE;               # INITIALIZE FLAG                   #
      P<TQT> = TQTCHAIN;           # START AT BEGINNING OF TQT*S       #
  
  
      FOR INDEX = INDEX WHILE TQNEXT[0] NQ 0 DO 
        BEGIN 
        IF C<0,7>TQRUID[0] EQ C<0,7>DB$DSJN 
        THEN
          BEGIN 
          C<DFJNCP,DFJNLG>JB$JBPRGM = DB$DSJN;
          IF B<24,18>DB$DSJN EQ 0 
          THEN
            BEGIN 
            C<DFJNCP+4,3>JB$JBPRGM = "   "; 
            END 
          C<DFPGCP,DFPRGMLG>JB$JBPRGM[0] = TQPRNAME[0]; 
          C<DFTASKCP,DFTASKLG>JB$TASKID = TQTASK[0];
          C<DFCVNCP,DFVERNLG>JB$CURREQVN[0] = TQVENAME[0];
          IF TQSWPF[0]  THEN
            C<DFACTCP,DFACTLG>JB$ACTIV = "ROLLED OUT";
          ELSE
            IF TQRCB[0] GR 0 THEN 
              C<DFACTCP,DFACTLG>JB$ACTIV = "ACTIVE    ";
            ELSE
              C<DFACTCP,DFACTLG>JB$ACTIV = "INACTIVE  ";
        C<DFSCIDCP,DFSCIDLG>JB$SCNMID = 
                             DB$CDEB(SASCHID[TQSALX[0]], 4);
        C<DFSCNMCP,DFSCNMLG>JB$SCNMID = SASCNAME[TQSALX[0]];
        P<ASL> = TQASL[0];
        C<DFSBNMCP,DFSBNMLG>JB$SBNM = ASSBNAME[0];
        IF TQRCB[0] GR 0 THEN 
          BEGIN 
          P<RCB> = TQRCB[0];
          C<DFFNCP,DFFUNCLG>JB$FUNC = FUNCODE[RCFUNC[0]]; 
          END 
        FOUND = TRUE; 
        END 
        P<TQT> = TQNEXT[0]; 
        END 
  
#     INSERTIONS COMPLETE - WRITE LINES TO SCREEN                      #
  
      IF FOUND THEN 
        BEGIN 
        DB$DELL(JB$JBPRGM[0],DFLINE1LG);
        IF TQTASK[0] NQ 0 THEN
          DB$DELL(JB$TASKID[0],DFLINE2LG);
        DB$DELL(JB$ACTIV[0],DFLINE3LG); 
        DB$DELL(JB$SCNMID[0],DFLINE4LG);
        DB$DELL(JB$SBNM[0],DFLINE5LG);
        IF TQRCB[0] GR 0 THEN 
          BEGIN 
          DB$DELL(JB$FUNC[0],DFLINE6LG);
          END 
        DB$DELL(JB$CURREQVN[0],DFLINE7LG);
        END 
      ELSE
        DB$DELL(JBNOTFOUND,15); 
  
      P<TQT> = TQTMTR;
      P<RCB> = LOC(RCBMTR); 
      DB$YES; 
      END 
      TERM; 
