home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a075 / 1.img / TOOLKIT1.EXE / SST337.PRG < prev    next >
Encoding:
Text File  |  1989-08-15  |  4.9 KB  |  109 lines

  1. *******************
  2.  
  3. FUNCTION O_file
  4.  
  5.    PARAMETERS _f, _ftog
  6.  
  7.    IF EMPTY(PCOUNT())
  8.       RETURN(-1)
  9.    ELSEIF TYPE("_f") != "A"
  10.       RETURN(-1)
  11.    ENDIF
  12.  
  13.    _ftog = IF((TYPE("_ftog") != "L"), .F., _ftog)
  14.  
  15.    IF _ftog
  16.       _area = SELECT() 
  17.       SELECT 0
  18.       CREATE Template
  19.       USE Template
  20.       FOR _qaz = 2 TO LEN(_f)
  21.          IF EMPTY(AT(";", _f[_qaz]))   && I'm at the index file, stop
  22.             EXIT                       && creating field information
  23.          ENDIF
  24.          _t = _f[_qaz]
  25.          _t1 = Parsing(@_t, ";")
  26.          _t2 = UPPER(LTRIM(TRIM(Parsing(@_t, ";"))))
  27.          _t3 = VAL(LTRIM(TRIM(Parsing(@_t, ";"))))
  28.          _t4 = IF(EMPTY(_t), 0, VAL(_t))
  29.          Ap_it(_t1, _t2, _t3, _t4)
  30.       NEXT
  31.       USE
  32.       CREATE (_f[1]) FROM Template
  33.       ERASE Template.dbf
  34.       USE (_f[1])
  35.       FOR _qwert = _qaz TO LEN(_f) STEP 2
  36.          _express = _f[_qwert + 1]
  37.          IF TYPE(_express) $ "CLDN"
  38.             INDEX ON &_express. TO (_f[_qwert])
  39.          ENDIF
  40.       NEXT
  41.       USE
  42.       SELECT (_area)
  43.       RETURN (1)                     
  44.    ELSE
  45.       IF !FILE(Extention(_f[1], "DBF"))   && This means that the database has not been created yet.
  46.          RETURN(0)                        && means file NOT opened
  47.       ENDIF
  48.       _area = SELECT()                    && Find the select work area to open this in
  49.       SELECT 0
  50.       USE (_f[1])
  51.       FOR _qaz = 2 TO LEN(_f)
  52.          IF EMPTY(AT(";", _f[_qaz]))   && Find the index file
  53.             EXIT
  54.          ENDIF
  55.       NEXT
  56.       IF _qaz < LEN(_f)
  57.          _wsx = 0                                        && count the number of indexes....
  58.          FOR _qwert = _qaz TO LEN(_f) STEP 2
  59.             IF !FILE(Extention(_f[_qwert], "NTX"))                   && means that the index file has not been created yet
  60.                EXIT
  61.             ENDIF
  62.             _wsx = _wsx + 1
  63.          NEXT
  64.          * now open up the proper number of indexes to the file
  65.          IF EMPTY(_wsx)
  66.             * no index
  67.          ELSEIF _wsx = 1
  68.             SET INDEX TO (_f[_qaz])
  69.          ELSEIF _wsx = 2
  70.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2])
  71.          ELSEIF _wsx = 3
  72.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4])
  73.          ELSEIF _wsx = 4
  74.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6])
  75.          ELSEIF _wsx = 5
  76.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8])
  77.          ELSEIF _wsx = 6
  78.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10])
  79.          ELSEIF _wsx = 7
  80.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10]), (_f[_qaz + 12])
  81.          ELSEIF _wsx = 8
  82.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10]), (_f[_qaz + 12]), (_f[_qaz + 14])
  83.          ELSEIF _wsx = 9
  84.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10]), (_f[_qaz + 12]), (_f[_qaz + 14]), (_f[_qaz + 16])
  85.          ELSEIF _wsx = 10
  86.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10]), (_f[_qaz + 12]), (_f[_qaz + 14]), (_f[_qaz + 16]), (_f[_qaz + 18])
  87.          ELSEIF _wsx = 11
  88.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10]), (_f[_qaz + 12]), (_f[_qaz + 14]), (_f[_qaz + 16]), (_f[_qaz + 18]), (_f[_qaz + 20])
  89.          ELSEIF _wsx = 12
  90.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10]), (_f[_qaz + 12]), (_f[_qaz + 14]), (_f[_qaz + 16]), (_f[_qaz + 18]), (_f[_qaz + 20]), (_f[_qaz + 22])
  91.          ELSEIF _wsx = 13
  92.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10]), (_f[_qaz + 12]), (_f[_qaz + 14]), (_f[_qaz + 16]), (_f[_qaz + 18]), (_f[_qaz + 20]), (_f[_qaz + 22]), (_f[_qaz + 24])
  93.          ELSEIF _wsx = 14
  94.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10]), (_f[_qaz + 12]), (_f[_qaz + 14]), (_f[_qaz + 16]), (_f[_qaz + 18]), (_f[_qaz + 20]), (_f[_qaz + 22]), (_f[_qaz + 24]), (_f[_qaz + 26])
  95.          ELSEIF _wsx = 15
  96.             SET INDEX TO (_f[_qaz]), (_f[_qaz + 2]), (_f[_qaz + 4]), ;
  97.                          (_f[_qaz + 6]), (_f[_qaz + 8]), (_f[_qaz + 10]), ;
  98.                          (_f[_qaz + 12]), (_f[_qaz + 14]), (_f[_qaz + 16]), ;
  99.                          (_f[_qaz + 18]), (_f[_qaz + 20]), (_f[_qaz + 22]), ;
  100.                          (_f[_qaz + 24]), (_f[_qaz + 26]), (_f[_qaz + 28])
  101.          ENDIF
  102.       ENDIF
  103.       SELECT (_area)
  104.       RETURN (_area) && means file is open in this work area.
  105.    ENDIF
  106.  
  107. * End of File
  108.  
  109.