FTN 
      PROGRAM DCMON(3,50),92080-1X201 REV.2026  800529
C 
C 
C     NAME:   DCMON     DATACAP MONITOR PROGRAM 
C     SOURCE: &DCMON    92080-18201 
C     BINARY: %DCMON    ----NONE---    PART OF  %DCMNS  92080-16200 
C 
C     PGMR:   DANIEL POT/FRANCOIS GAULLIER   HPG
C 
C 
C     **************************************************************
C     * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS    *
C     * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
C     * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
C     * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
C     **************************************************************
C 
C 
C     ****************************************************************
C     *                                                              *
C     *   THIS PROGRAM IS SCHEDULED EACH TIME ONE OF THE F2, F3, F5  *
C     *   F6, F7 OR F8 SOFT KEY ON THE 2645/2648 CRT TERMINAL IS     *
C     *   USED.                                                      *
C     *   THOSE SOFT KEY ARE LOADED LIKE THIS BY  'DCMON' IN THE     *
C     *   SUBROUTINE  'DCSFK'.                                       *
C     *   THIS PROGRAM IS ALSO SCHEDULED EACH TIME ONE THE DATACAP   *
C     *   PROGRAM (I.E.:  TGP, TMPGN, TMP ) TERMINATES IN ORDER TO   *
C     *   RESTORE THE SOFT KEY FOR THE NEXT TASK THAT THE USER WILL  *
C     *   REQUEST.                                                   *
C     *                                                              *
C     *    INTEGER DCMON, DATA DCMON/2HDC,2HMO,2HN /                 *
C     *    CALL EXEC(100030B,DCMON,LU,P1)                            *
C     *    GOTO XXX      DCMON IS NO RP'ED                           *
C     *    RETURN OK: DCMON HAS BEEN SCHEDULED.                      *
C     *                                                              *
C     *    :RU,DCMON,,P1,P2                                          *
C     *                                                              *
C     *     P1                  FUNCTION PARAMETER                   *
C     *                                                              *
C     *    P1 = 0    ------->  PRINT GENERATOR SCREEN                *
C     *    P1 = 1    ------->  PRINT TMP SCREEN                      *
C     *                                                              *
C     *    P1 = 2    ------->  ON,TMPX             ( X = P2 )        *
C     *    P1 = 3    ------->  RU,LTMPX,,TSE       ( X = P2 )        *
C     *    P1 = 4    ------->  CALL ETMSP(TMPX,98) ( X = P2 )        *
C     *                                                              *
C     *                                                              *
C     *      TMP COPY NUMBER X (1 OR 2) IS DEFINED BY P2             *
C     *                                                              *
C     ****************************************************************
C 
C 
      DIMENSION IPARM(5),IMESA(30),TMPX(3),LTMPX(3),PARM(4) 
     .         ,TSE(3),COMAD(35),RU(2),CRLF(3),EROR(8)
     .         ,BADCH(11),BUSY(19),BUSI(16),NOVA(17)
     .         ,IREG(2),DRCTY(128),IPOB(3),IBORT(32),DMRNST(25) 
C 
      INTEGER TMPX,PARM,TSE,COMAD,RU,CRLF,EROR,BADCH
     .       ,BUSY,BUSI,AREG,BREG,DRCTY,DMRNST
      EQUIVALENCE (REG,IREG,AREG),(IREG(2),BREG)
      LOGICAL ISBTW 
      INTEGER DORMT 
C 
C-----FIXED CHARACTER STRINGS 
C 
C-----PROGRAM NAMES 
C 
      DATA TMPX/2HTM,2HP ,2H  / 
      DATA TSE/2HTS,2HE ,2H  /
      DATA LTMPX/2HLT,2HMP,2H  /
      DATA RU/2HRU,2H, /
      DATA DMRNST/2H,0,2H,0,2H,0,2H,0,026055B,
     .  26455B,26455B,26455B,26455B,26455B,26455B,26455B,26455B,
     .  26455B,26455B,26455B,26455B,26455B,26455B,26455B,26455B,
     .  26455B,26455B,26455B,26400B/
C 
C-----FORMAT MODE OFF, MEMORY UNLOCK, BLOCK MODE OFF, UNLOCK KEYBOARD 
C-----HOME UP CURSOR, CLEAR DISPLAY 
C 
      DATA IMESA/15530B,15555B,15446B,65460B,41040B,15542B,15510B,
     .15512B/ 
      DATA IBORT/15530B,15555B,15446B,65460B,41040B,15542B,15510B,
     .15512B,15446B,62102B,40B, 
     .2HO.,2HK ,2HTO,2H S,2HTO,2HP ,2HTM,2HP ,2H ?,2H  ,2H(Y, 
     .2H/N,2H) ,2H: ,20040B,15446B,62100B,15504B,15504B,15504B, 
     .20137B/ 
      DATA CRLF/6412B,6412B,15512B/ 
      DATA EROR/15446B,62103B,2HER,2HRO,2HR!,15446B,2Hd@,2H  /
      DATA BADCH/2HBa,2Hd ,2Han,2Hsw,2Her,2H. ,15510B,15446B
     .          ,2Ha+,2H29,2HC_/
      DATA BUSY/2HTh,2He ,2HTM,2HP ,2His,2H a,2Hlr
     .          ,2Hea,2Hdy,2H s,2Hta,2Hrt,2Hed,2H. ,5*2H   /
      DATA BUSI/2HTh,2He ,2HTM,2HP ,2His
     .          ,2H s,2Hhu,2Ht ,2Hdo,2Hwn,2H. ,5*2H  /
      DATA NOVA/2HTh,2He ,2HTM,2HP ,2His
     .          ,2H n,2Hot,2H d,2Hef,2Hin,2Hed,2H. ,5*2H  / 
C 
C 
C-----GET TERMINAL LOGICAL UNIT # AND FUNCTION
C 
      CALL RMPAR(IPARM) 
      LUCRT = LOGLU(I)
      CALL EXEC(3,2200B+LUCRT,0)
      IFONC=IPARM(2)
      IF(IFONC.EQ.1)  GOTO 2100 
      IF(.NOT.ISBTW(IFONC,2,4)) GOTO 20 
C 
C-----PRINT SCREEN ON THE CRT AND PROGRAM S.F.K. --2645A--
C 
      CALL DCSFK(LUCRT,0) 
      GOTO 9999 
C 
C-----START TMP/TMPD, START TSE FOR TMP/TMPD OR STOP TMP/TMPD 
C 
20    INOMB=2H1 
      IF(IPARM(3).NE.0)  INOMB=2H2
      CALL REIO(2,LUCRT,IMESA,8)
      CALL MOVCA(INOMB,1,TMPX,4,1)
      CALL MOVCA(INOMB,1,LTMPX,5,1) 
      IADRS=IDGET(TMPX) 
      IF(IFONC.EQ.4) GOTO 2005
      IF(IADRS.EQ.0) GOTO 30
      ISTUS=DORMT(TMPX) 
      IF(ISTUS.NE.0.AND.IFONC.EQ.2) GOTO 30 
      IF(ISTUS.EQ.0.AND.IFONC.EQ.3) GOTO 30 
      CALL BLAN(COMAD,1,60) 
      CALL MOVEW(EROR,COMAD,8)
      IF(IFONC.EQ.2) CALL MOVEW(BUSY,COMAD(9),19) 
      IF(IFONC.EQ.3) CALL MOVEW(BUSI,COMAD(9),16) 
      I=30
C-----PRINT TMP SCREE, PRINT ERROR MESSAGE AND TERMINATE
220   CALL DCSFK(LUCRT,3) 
      CALL REIO(2,LUCRT,COMAD,I)
      GOTO 9999 
C 
C-----STOP TMP COPY IF RUNNING
C 
2005  IF(TMPX(2) .EQ. 2HP2)  IBORT(19)=2HPD 
      CALL REIO(2,LUCRT,IBORT,32) 
2008  CALL REIO(1,500B+LUCRT,I,-1)
      CALL REIO(2,LUCRT,CRLF,3) 
      K=IGET1(I,1)
      IF(K .EQ. 1HY)  GOTO 2020 
      IF(K .EQ. 1HN .OR. K .EQ. 1H )  GOTO 2050 
      CALL MOVEW(EROR,COMAD,8)
      CALL MOVEW(BADCH,COMAD(9),11) 
      CALL REIO(2,LUCRT,COMAD,19) 
      GOTO 2008 
2020  CALL ETMSP(TMPX,98) 
2050  CALL EXEC(3,2200B+LUCRT,0)
C-----PRINT TMP SCREEN AND EXIT 
2100  CALL DCSFK(LUCRT,3) 
      GOTO 9999 
C 
C-----SET PARAMETERS AND SCHEDULE CALLED PROGRAM
C 
30    IF(IADRS.NE.0) GOTO 35
      CALL MOVEW(EROR,COMAD,8)
      CALL MOVEW(NOVA,COMAD(9),17)
      I=25
      GOTO 220
C 
C-----BUILD "RU,...   " COMMAND, SET CRT LU, ...
C 
35    CALL BLAN(COMAD,1,40)   
      CALL MOVEW(RU,COMAD,2)
      COMAD(6)=2H,
      COMAD(7)=IASC(LUCRT)
C 
C-----PREPARE TO SCHEDULE TMP 
C 
      IF(IFONC.NE.2) GOTO 40
      CALL MOVEW(TMPX,COMAD(3),2) 
      CALL MOVEW(DMRNST,COMAD(8),25)
      GOTO 100
40    CALL MOVEW(LTMPX,COMAD(3),3)
      COMAD(8)=2H,
C 
C-----PREPARE TO SCHEDULE LTMP,,TSE 
C 
      CALL MOVEW(TSE,COMAD(9),3)
      GOTO 100
C 
C-----EXECUTION OF THE SCHEDULE 
C 
100   LENGH=ISUPB(COMAD,35) 
      LENGH = 59
      IF(IFONC.EQ.3)LENGH=15
      I=MESSS(COMAD,LENGH)
      IF(I.EQ.0) GOTO 150 
      CALL DCSFK(LUCRT,0) 
      CALL REIO(2,LUCRT,COMAD,-LENGH) 
C 
C-----WAIT UNTIL THE CRT LU IS UNLOCKED AND THEN COMPLETE 
C 
150   K=0 
160   CALL EXEC(12,0,2,0,-1)
      K=K+1 
      IF(LURQW(LUTRU(LUCRT)) .NE. 0)  GOTO 9999 
      IF(K .LT. 60)  GOTO 160 
C 
C-----END OF PROGRAM
C 
9999  CONTINUE
      END 
      END$
                                                                                                                                                                                                                                            