home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-386-Vol-2of3.iso / b / baswiz19.zip / BW$BAS.ZIP / FILEQ.BAS < prev    next >
BASIC Source File  |  1993-01-29  |  5KB  |  168 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |        BASWIZ  Copyright (c) 1990-1993  Thomas G. Hanlin III         |
  4. '   |                                                                      |
  5. '   |                      The BASIC Wizard's Library                      |
  6. '   |                                                                      |
  7. '   +----------------------------------------------------------------------+
  8.  
  9.    DECLARE FUNCTION FGetLocate& (BYVAL Handle%)
  10.    DECLARE FUNCTION FGetSize& (BYVAL Handle%)
  11.    DECLARE FUNCTION ZeroFill$ (Num%, NumSize%)
  12.    DECLARE SUB FClose0 (BYVAL Handle%)
  13.    DECLARE SUB FDate0 (BYVAL Handle%, St$)
  14.    DECLARE SUB FDone0 ()
  15.    DECLARE SUB FInit0 (BYVAL Handles%, ErrCode%)
  16.    DECLARE SUB FLocate (BYVAL Handle%, Posn&)
  17.    DECLARE SUB FOpen0 (File$, BYVAL FAccess%, BYVAL BufferLen%, Handle%, ErrCode%)
  18.    DECLARE SUB FTime0 (BYVAL Handle%, St$)
  19.    DECLARE SUB Peel (MainSt$, SubSt$)
  20.  
  21.    DEFINT A-Z
  22.  
  23. FUNCTION FEOF% (Handle)
  24.    FEOF% = (FGetLocate&(Handle) > FGetSize&(Handle))
  25. END FUNCTION
  26.  
  27. FUNCTION ZeroFill$ (Num, NumSize)
  28.    Tmp$ = MID$(STR$(Num), 2)
  29.    IF LEN(Tmp$) > NumSize THEN
  30.       ZeroFill$ = LEFT$(Tmp$, NumSize)
  31.    ELSE
  32.       ZeroFill$ = STRING$(NumSize - LEN(Tmp$), "0") + Tmp$
  33.    END IF
  34. END FUNCTION
  35.  
  36. SUB FClose (Handle)
  37.    FClose0 Handle
  38.    junk = SETMEM(999999)
  39. END SUB
  40.  
  41. SUB FDate (Handle, St$)
  42.    IF LEN(St$) = 10 THEN
  43.       FDate0 Handle, St$
  44.    ELSE
  45.       D$ = DATE$
  46.       Peel St$, tmp$
  47.       IF LEN(tmp$) THEN
  48.          MonthX = VAL(tmp$)
  49.       ELSE
  50.          MonthX = VAL(LEFT$(D$, 2))
  51.       END IF
  52.       Peel St$, tmp$
  53.       IF LEN(tmp$) THEN
  54.          DayX = VAL(tmp$)
  55.       ELSE
  56.          DayX = VAL(MID$(D$, 4, 2))
  57.       END IF
  58.       IF LEN(St$) THEN
  59.          YearX = VAL(St$)
  60.          IF YearX < 1900 THEN YearX = YearX + 1900
  61.       ELSE
  62.          YearX = VAL(RIGHT$(D$, 4))
  63.       END IF
  64.       Tmp$ = ZeroFill$(MonthX, 2) + "-" + ZeroFill$(DayX, 2)
  65.       Tmp$ = Tmp$ + "-" + ZeroFill$(YearX, 4)
  66.       FDate0 Handle, Tmp$
  67.    END IF
  68. END SUB
  69.  
  70. SUB FDone
  71.    FDone0
  72.    junk = SETMEM(999999)
  73. END SUB
  74.  
  75. SUB FInit (Handles, ErrCode)
  76.    IF Handles <= 15 THEN
  77.       FInit0 15, ErrCode
  78.    ELSE
  79.       junk& = SETMEM(-Handles * 10&)
  80.       FInit0 Handles, ErrCode
  81.       junk& = SETMEM(999999)
  82.    END IF
  83. END SUB
  84.  
  85. SUB FOpen (File$, FMode$, BufferLen, Handle, ErrCode)
  86.    IF BufferLen < 0 THEN
  87.       ErrCode = 1
  88.    ELSEIF INSTR(Mo$, "W") > 0 THEN
  89.       IF BufferLen > 0 OR INSTR(Mo$, "R") > 0 AND INSTR(Mo$, "T") > 0 THEN
  90.          ErrCode = 1
  91.       END IF
  92.    END IF
  93.  
  94.    IF ErrCode THEN EXIT SUB
  95.  
  96.    FAccess = 0
  97.  
  98.    Mo$ = UCASE$(FMode$)
  99.    IF INSTR(Mo$, "R") THEN
  100.       FAccess = FAccess OR 1
  101.       IF INSTR(Mo$, "W") THEN
  102.          BufLen = 0
  103.       ELSE
  104.          BufLen = BufferLen
  105.       END IF
  106.    ELSE
  107.       BufLen = 0
  108.    END IF
  109.    IF INSTR(Mo$, "W") THEN FAccess = FAccess OR 2
  110.    IF INSTR(Mo$, "C") THEN
  111.       FAccess = FAccess OR 4
  112.       IF INSTR(Mo$, "R") = 0 THEN
  113.          FAccess = FAccess OR 2
  114.       END IF
  115.    END IF
  116.    IF INSTR(Mo$, "T") THEN
  117.       FAccess = FAccess OR 8
  118.       IF BufferLen = 0 AND INSTR(Mo$, "R") > 0 THEN
  119.          BufLen = 512
  120.       END IF
  121.    END IF
  122.    junk& = SETMEM(-BufLen - 32&)
  123.    FOpen0 File$, FAccess, BufLen, Handle, ErrCode
  124.    junk& = SETMEM(999999)
  125.    IF ErrCode = 0 THEN
  126.       IF INSTR(Mo$, "A") THEN
  127.          FLocate Handle, FGetSize&(Handle) + 1&
  128.       END IF
  129.    END IF
  130. END SUB
  131.  
  132. SUB FTime (Handle, St$)
  133.    IF LEN(St$) = 8 THEN
  134.       FTime0 Handle, St$
  135.    ELSE
  136.       T$ = TIME$
  137.       Peel St$, tmp$
  138.       IF LEN(tmp$) THEN
  139.          HourX = VAL(tmp$)
  140.       ELSE
  141.          HourX = VAL(LEFT$(T$, 2))
  142.       END IF
  143.       Peel St$, tmp$
  144.       IF LEN(tmp$) THEN
  145.          MinuteX = VAL(tmp$)
  146.       ELSE
  147.          MinuteX = VAL(MID$(T$, 4, 2))
  148.       END IF
  149.       IF LEN(St$) THEN
  150.          SecondX = VAL(St$)
  151.       ELSE
  152.          SecondX = VAL(RIGHT$(T$, 2))
  153.       END IF
  154.       Tmp$ = ZeroFill$(HourX, 2) + ":" + ZeroFill$(MinuteX, 2)
  155.       Tmp$ = Tmp$ + "-" + ZeroFill$(SecondX, 2)
  156.       FTime0 Handle, Tmp$
  157.    END IF
  158. END SUB
  159.  
  160. SUB Peel (MainSt$, SubSt$)
  161.    SubSt$ = ""
  162.    DO UNTIL LEN(MainSt$) = 0 OR INSTR("0123456789", LEFT$(MainSt$, 1)) = 0
  163.       SubSt$ = SubSt$ + LEFT$(MainSt$, 1)
  164.       MainSt$ = MID$(MainSt$, 2)
  165.    LOOP
  166.    MainSt$ = MID$(MainSt$, 2)
  167. END SUB
  168.