FTN4
      SUBROUTINE LIGHT(IQ,JVAL,JOUT,ISTAT,JFORM,ILITE), 92903-16307 REV.
     C1913  790111 1400 
C 
C     SOURCE 92903-18307
C 
C 
C 
C     **************************************************************
C     * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  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    PRGMR :JEAN CHARLES MIARD
C 
C*********************************************************************
C*                                                                   *
C*             THIS SUBROUTINE IS USED TO MANAGE 3070 LIGHTS ALLOC   *
C*  -ATION .                                                         *
C*             -FIRST IT RELEASES THE OLD LIGHT TAKEN BY THIS        *
C*              QUESTION OR DISPLAY IF ANY (COME BACK MODE).         *
C*             -IF THE ANSWER TO LIGHT # ? WAS A BLANK IT TAKES THE  *
C*              NEXT AVAILABLE LIGHT # (IF ANY)                      *
C*             -IF THE ANSWER TO LIGHT # ? WAS A NUMBER IT CHECKS    *
C*              THAT THE LIGHT CORRESPONDING TO THE NUMBER IS NOT    *
C*              ALREADY TAKEN BY ANOTHER QUESTION OR DISPLAY. IN     *
C*              THIS CASE IN A FIRST PASS (ISTAT=0) IT WILL CAUSE    *
C*              A WARNING MESSAGE TO BE PRINTED,IN A SECOND PASS     *
C*              (ISTAT=1) IT WILL ACCEPT THE NUMBER                  *
C*             -IF ALL OK THE LIGHT # IS STORED                      *
C*                                                                   *
C*       PARAMETERS:                                                 *
C*                     -IQ : QUESTION # POSITIVE FOR QUESTION      *
C*                                        NEGATIVE FOR DISPLAY       *
C*                     -JVAL : LIGHT # DESIRED (BINARY)              *
C*                     -JOUT : ANSWER TO QUESTION LIGHT # ? (ASCII)  *
C*                     -ISTAT: STATUS :                              *
C*                         - WHEN CALLING :                          *
C*                             0 NO WARNING ALREADY DONE             *
C*                             1 WARNING ALREADY DONE                *
C*                         - WHEN RETURNING :                        *
C*                             0 OK JOB DONE                         *
C*                            -1 NO MORE LIGHTS AVAILABLE            *
C*                            -2 ISSUE A WARNING                     *
C*                                                                   *
C*                     - JFORM :SOURCE BUFFER (LABELS)               *
C*                     - ILITE :LIGHT BUFFER ALLOCATION              *
C*                                                                   *
C*********************************************************************
C 
C 
C   DECLARATIONS  ************
C 
      DIMENSION JFORM(1),ILITE(1) 
C 
      LOGICAL CMPW
C 
C        *************************************************************
C        *                                                           *
C        *           DESRIPTION OF ILITE BUFFER   :                  *
C        *                                                           *
C        *       ILITE(I) :   I IS LIGHT #                           *
C        *                                                           *
C        *   IF ILITE(I) = 0 : LIGHT IS AVAILABLE .                  *
C        *               < 0 : LIGHT IS AN INDICATOR LIGHT           *
C        *                     (DISPLAY)  -ILIGHT(I) IS QUESTION #   *
C        *                     TO WHICH BELONG THE LIGHT .           *
C        *               > 0 : LIGHT IS A PROMPTING LIGHT            *
C        *                     (QUESTION) ILIGHT(I) IS QUESTION #    *
C        *                     TO WHICH BELONG THE LIGHT .           *
C        *               = -99 : LIGHT OCCUPIED BY SYSTEM            *
C        *                                                           *
C        *************************************************************
C 
      DATA JBYTES/140/
      DATA JWORDS/70/ 
C 
C RELEASE OLD LIGHT # 
C 
      DO 5000 I=1,15
      IF(ILITE(I).EQ.IQ) GO TO 5002 
5000  CONTINUE
      GO TO 5010
5002  DO 5006 J=1,20
      IF(J.EQ.IQ) GO TO 5003
      IL=NUMD(JFORM,(3+(J-1)*JBYTES),2) 
      IF(IL.EQ.I) GO TO 5008
5003  IF(J.EQ.-IQ) GO TO 5006 
      IL=NUMD(JFORM,(101+(J-1)*JBYTES),2) 
      IF(IL.EQ.I) GO TO 5009
5006  CONTINUE
      ILITE(I)=0
      GO TO 5010
5008  ILITE(I)=J
      GO TO 5010
5009  ILITE(I)=-J 
C 
C  USER WANTS NEXT AVAILABLE LIGHT
C 
5010  IF(JOUT.NE.2H  ) GO TO 5016 
      DO 5012 I=1,15
      IF(ILITE(I).EQ.0) GO TO 5014
5012  CONTINUE
      ISTAT=-1
      RETURN
5014  ILITE(I)=IQ 
      JOUT=IASC(I)
      GO TO 5036
C 
C  USER WANTS A SPECIFIC LIGHT #
C 
5016  IF(ILITE(JVAL).EQ.0) GO TO 5034 
      IF(IQ.LT.0) GO TO 5020
      N2=638+(IQ-1)*6 
      IF(ILITE(JVAL).LT.0) GO TO 5018 
      N1=638+(ILITE(JVAL)-1)*6
      IF(ISTAT.EQ.1) GO TO 5036 
      GO TO 5024
5018  N1=53+(-ILITE(JVAL)-1)*JWORDS 
      IF(ISTAT.EQ.1) GO TO 5036 
      GO TO 5024
5020  N2=53+(-IQ-1)*JWORDS
      IF(ILITE(JVAL).LT.0) GO TO 5022 
      N1=638+(ILITE(JVAL)-1)*6
      IF(ISTAT.EQ.1) GO TO 5036 
      GO TO 5024
5022  N1=53+(-ILITE(JVAL)-1)*JWORDS 
      IF(ISTAT.EQ.1) GO TO 5036 
5024  ISTAT=-2
      RETURN
5034  ILITE(JVAL)=IQ
5036  IF(IQ.GT.0) N1=3+(IQ-1)*JBYTES
      IF(IQ.LT.0) N1=101+(-IQ-1)*JBYTES 
      CALL MOVCA(JOUT,1,JFORM,N1,2) 
      ISTAT=0 
      RETURN
      END 
      END$
      