home *** CD-ROM | disk | FTP | other *** search
/ Fatal Distractions! / fataldistractions.bin / chap01 / adventur / vocab.for < prev    next >
Text File  |  1990-11-12  |  1KB  |  33 lines

  1.       INTEGER*4 FUNCTION VOCAB(ID,INIT)
  2.       
  3. C  LOOK UP ID IN THE VOCABULARY (ATAB) AND RETURN ITS "DEFINITION" (KTAB), OR
  4. C  -1 IF NOT FOUND.  IF INIT IS POSITIVE, THIS IS AN INITIALISATION CALL SETTING
  5. C  UP A KEYWORD VARIABLE, AND NOT FINDING IT CONSTITUTES A BUG.  IT ALSO MEANS
  6. C  THAT ONLY KTAB VALUES WHICH TAKEN OVER 1000 EQUAL INIT MAY BE CONSIDERED.
  7. C  (THUS "STEPS", WHICH IS A MOTION VERB AS WELL AS AN OBJECT, MAY BE LOCATED
  8. C  AS AN OBJECT.)  AND IT ALSO MEANS THE KTAB VALUE IS TAKEN MOD 1000.
  9.  
  10.       IMPLICIT INTEGER*4 (A-Z)
  11. C     INTEGER*2 KTAB,ASCVAR
  12.       COMMON /VOCCOM/KTAB,ATAB,TABSIZ
  13.       DIMENSION KTAB(300),ATAB(300)
  14.       
  15.       HASH=ID
  16.       DO 1 I=1,TABSIZ
  17.       IF(KTAB(I).EQ.-1) GOTO 2
  18.       IF(INIT.GE.0.AND.KTAB(I)/1000.NE.INIT) GOTO 1
  19.       IF(ATAB(I).EQ.HASH) GOTO 3
  20.     1 CONTINUE
  21.       CALL BUG(21)
  22.       
  23.     2 VOCAB=-1
  24.       IF(INIT.LT.0) RETURN
  25.       WRITE(*,100) HASH
  26.   100 FORMAT(' KEYWORD = ',A4)
  27.       CALL BUG(5)
  28.       
  29.     3 VOCAB=KTAB(I)
  30.       IF(INIT.GE.0) VOCAB=MOD(VOCAB,1000)
  31.       RETURN
  32.       END
  33.