home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_BAS / PRO98SRC.ZIP / GETVAR$.BAS < prev    next >
BASIC Source File  |  1994-01-17  |  3KB  |  75 lines

  1. ' Scan for a variable name in the database field list.  If one is present
  2. ' then return the database field, otherwise scan for a memory variable.  If
  3. ' no memory variable is present then scan current code for a subroutine and
  4. ' execute it if found.  if nothing is found in the current code then scan
  5. ' the procedure array for a match.  If nothing is found there either then
  6. ' check the common variable file.
  7.  
  8. FUNCTION GetVar$ (BYVAL VariableName$)
  9. GetVar$=""
  10. IF INSTR(VARIABLENAME$,CHR$(0)) THEN VARIABLENAME$=LEFT$(VARIABLENAME$,INSTR(VARIABLENAME$,CHR$(0))-1)
  11. VARIABLENAME$=UCASE$(LTRIM$(RTRIM$(VARIABLENAME$)))
  12. V%=%TRUE
  13. IF LEN(VARIABLENAME$) THEN
  14.         IF INSTR(VARIABLENAME$,".") THEN
  15.           N=INSTR(VARIABLENAME$,".")
  16.           VM$=LEFT$(VARIABLENAME$,N-1)
  17.           VS$=MID$(VARIABLENAME$,N+1)+"$"+VM$
  18.       ARRAY SCAN VAR$(1),COLLATE UCASE, =VS$, TO i%
  19.         IF i% THEN
  20.              O%=CVI(LEFT$(VALUE$(i%),2))
  21.                  L%=CVI(RIGHT$(VALUE$(i%),2))
  22.                  ARRAY SCAN VAR$(1),COLLATE UCASE,=VM$, TO i%
  23.                  IF i% THEN
  24.                   GETVAR$=RTRIM$(MID$(VALUE$(i%),O%,L%),CHR$(0))
  25.                  ELSE
  26.                   ERROR 103
  27.                  END IF
  28.                 ELSE
  29.                  ERROR 103
  30.         END IF
  31.         EXIT FUNCTION
  32.         END IF
  33.         IF v% THEN
  34. $IF NOT %NODBASE
  35.     IF dBASEOpen% THEN
  36.         For i%=1 TO NumberOfFields?
  37.                         IF RTRIM$(DBS(i%).FieldName,ANY CHR$(0,32))=VARIABLENAME$ THEN
  38.                       IF DBS(i%).FieldType="N" THEN
  39.                         GetVar$=STR$(DBGetNField!((DBS(i%).FieldName),e%))
  40.                   ELSE
  41.                         GetVar$=rtrim$(DBGetCField$((DBS(i%).FieldName),e%))
  42.                       END IF
  43.                           v%=%FALSE
  44.                           EXIT FOR
  45.                     END IF
  46.                 NEXT i%
  47.     END IF
  48. $ENDIF
  49.         END IF
  50.  
  51.     IF v% THEN
  52.       ARRAY SCAN VAR$(1),COLLATE UCASE, =VARIABLENAME$, TO i%
  53.         IF i% THEN
  54.                  v%=%FALSE
  55.              GetVar$=VALUE$(i%)
  56.         END IF
  57.     END IF
  58.  
  59.      '   IF V% THEN
  60.      '           Fi%=FREEFILE
  61.      '           OPEN COMMONVARFILE$ FOR RANDOM SHARED AS #Fi% LEN=LEN(CommonVar)
  62.      '           FOR r% = 1 TO LOF(Fi%)\LEN(CommonVar)
  63.      '                   GET Fi%, r%, CommonVar
  64.      '                   IF ucase$(LEFT$(CommonVar.Variable,LEN(variablename$)+1))_
  65.      '                = ucase$(variablename$)+"=" THEN_
  66.      '                   GetVar$=rtrim$(ltrim$(CommonVar.Value)):v%=%False:EXIT FOR
  67.      '          NEXT r%
  68.      '   Close Fi%
  69.      '   end if
  70.  
  71.  
  72. END IF
  73.  
  74. END FUNCTION
  75.