home *** CD-ROM | disk | FTP | other *** search
- DECLARE FUNCTION strval$ (a%)
- DECLARE SUB PIM (cmd$, indexnum%, key$, MastRec%, CurrentIndexREC%)
- DECLARE SUB PIMCreate (indexnum%, file$, keylength%, mfile$)
- DECLARE SUB PIMOpen (indexnum%, file$)
- DECLARE FUNCTION PIMstats% (indexnum%)
- DEFINT A-Z
- ' PIMLIB71.BAS
- ' TREE TYPE INDEX MAMAGER FOR QB45 AND USED IN PROGEN71.BAS
- ' NOT NEEDED FOR PROGRAMS GENERATED BY PROGEN71 (USE ISAM)
- ' WORKS GREAT FOR QB45 OR QBX. IF NEEDED I WILL SUPPLY
- ' PROGEN45.BAS IF YOU PREFER A BASIC INDEX SYSTEM.
- '
- ' PIMLIB71.BAS NEEDED TO COMPILE PROGEN71.BAS
- '
- '
- '
- '
- '
-
- TYPE PIMindex
- desc AS STRING * 24
- file AS STRING * 8
- indexF(20) AS STRING * 32
- klen(20) AS INTEGER
- nok(20) AS INTEGER
- nexav(20) AS INTEGER
- kdel(20) AS INTEGER
- END TYPE
-
- DIM SHARED PIMmaster AS PIMindex
- DIM SHARED indexKEY$(20, 6) 'Index variables
- ' DIM SHARED RecField AS RecordType
-
- '$INCLUDE: 'PROLIB71.BI'
-
- SUB PIM (cmd$, indexnum, key$, MastRec, CurrentIndexREC)
- Trim cmd$
- PIMcmd$ = UCASE$(cmd$)
-
- key$ = LEFT$(key$, PIMmaster.klen(indexnum))
-
- SELECT CASE PIMcmd$
-
- CASE "F", "P", "N", "S", "L", "D", "E"
-
- IF PIMmaster.nok(indexnum) = 0 THEN
- mr = 0
- CurrentIndexREC = 0
- EXIT SUB
- END IF
-
- CASE "A"
- 'ok to add
- CASE ELSE
- EXIT SUB
- END SELECT
-
- SELECT CASE PIMcmd$
-
- '******************************************
- CASE "F" 'find first
- '******************************************
-
- Rec = 1
- doleft:
- GET #indexnum, Rec
- CurrentIndexREC = CVI(indexKEY$(indexnum, 2))
-
- IF CurrentIndexREC = 0 THEN
- GOTO leftend
- END IF
- Rec = CurrentIndexREC
- GOTO doleft
- leftend:
- key$ = indexKEY$(indexnum, 1)
- CurrentIndexREC = Rec
- MastRec = CVI(indexKEY$(indexnum, 5))
- EXIT SUB
-
- '******************************************
- CASE "L" 'find last key
- '******************************************
-
- Rec = 1
- doright:
- GET #indexnum, Rec
- CurrentIndexREC = CVI(indexKEY$(indexnum, 3))
- IF CurrentIndexREC = 0 THEN
- GOTO rightend
- END IF
- Rec = CurrentIndexREC
- GOTO doright
- rightend:
- key$ = indexKEY$(indexnum, 1)
- CurrentIndexREC = Rec
- MastRec = CVI(indexKEY$(indexnum, 5))
- EXIT SUB
-
- '******************************************
- CASE "S" 'search for key
- '******************************************
-
- MastRec = 0
- CurrentIndexREC = 0
- IF LEN(key$) < PIMmaster.klen(indexnum) THEN
- key$ = key$ + STRING$(PIMmaster.klen(indexnum) - LEN(key$), 32)
- END IF
- rrec = 1
- lp = 0
-
- WHILE lp = 0
- prevREC = rrec
- GET #indexnum, rrec
-
- IF CVI(indexKEY$(indexnum, 5)) = 0 THEN
- GOTO fplace
- ELSEIF key$ < indexKEY$(indexnum, 1) THEN
- side = 2
- ELSEIF key$ > indexKEY$(indexnum, 1) THEN
- side = 3
-
- ELSE
- CurrentIndexREC = rrec
- MastRec = CVI(indexKEY$(indexnum, 5))
- GOTO matchfound
-
- END IF
-
- rrec = CVI(indexKEY$(indexnum, side))
-
- IF rrec = 0 THEN
- GOTO fplace
- END IF
- WEND
- fplace:
- MastRec = CVI(indexKEY$(indexnum, 5))
- CurrentIndexREC = prevREC
- key$ = indexKEY$(indexnum, 1)
- matchfound:
-
- EXIT SUB
-
- '******************************************
- CASE "E" 'search for key
- '******************************************
-
- MastRec = 0
- CurrentIndexREC = 0
- IF LEN(key$) < PIMmaster.klen(indexnum) THEN
- key$ = key$ + STRING$(PIMmaster.klen(indexnum) - LEN(key$), 32)
- END IF
- rrec = 1
- lp = 0
-
- WHILE lp = 0
- prevREC = rrec
- GET #indexnum, rrec
-
- IF CVI(indexKEY$(indexnum, 5)) = 0 THEN
- GOTO ufplace
- ELSEIF key$ < indexKEY$(indexnum, 1) THEN
- side = 2
- ELSEIF key$ > indexKEY$(indexnum, 1) THEN
- side = 3
-
- ELSE
- CurrentIndexREC = rrec
- MastRec = CVI(indexKEY$(indexnum, 5))
- GOTO umatchfound
-
- END IF
-
- rrec = CVI(indexKEY$(indexnum, side))
-
- IF rrec = 0 THEN
- GOTO ufplace
- END IF
- WEND
- ufplace:
- MastRec = 0
- CurrentIndexREC = 0
-
- umatchfound:
-
- EXIT SUB
-
- '******************************************
- CASE "A" 'add new key
- '******************************************
-
- CurrentIndexREC = 0
-
- IF MastRec < 1 THEN
- CurrentIndexREC = -1 'bad record number
- END IF
-
- IF LEN(key$) < 1 THEN 'key to short
- CurrentIndexREC = -2
- END IF
-
- IF PIMmaster.nok(indexnum) = 32767 THEN 'max records
- CurrentIndexREC = -3
- END IF
-
- IF CurrentIndexREC < 0 THEN 'exit with error
- EXIT SUB
- END IF
-
- IF LEN(key$) < PIMmaster.klen(indexnum) THEN
- key$ = key$ + STRING$(PIMmaster.klen(indexnum) - LEN(key$), 32)
- END IF
-
- rrec = 1
- lp = 0
-
- DO WHILE lp = 0
- prevREC = rrec
-
- GET #indexnum, rrec
-
- IF CVI(indexKEY$(indexnum, 5)) = 0 THEN
- GOTO place
- END IF
-
- IF key$ < indexKEY$(indexnum, 1) THEN
- side = 2
- ELSE
- side = 3
- END IF
- rrec = CVI(indexKEY$(indexnum, side))
- IF rrec = 0 THEN
- lp = 1
- END IF
- LOOP 'WEND
- place:
- IF PIMmaster.kdel(indexnum) THEN
- GF = 4
- GET #indexnum, PIMmaster.kdel(indexnum)
- ELSE
- GF = 3
- GET #indexnum, PIMmaster.nexav(indexnum)
- END IF
-
- nextREC = CVI(indexKEY$(indexnum, 6))
-
- LSET indexKEY$(indexnum, 1) = key$
-
- IF PIMmaster.nexav(indexnum) <> 1 THEN
- GOTO nfirst
- END IF
-
- LSET indexKEY$(indexnum, 4) = MKI$(0)
- GOTO other
- nfirst:
- LSET indexKEY$(indexnum, 4) = MKI$(prevREC)
- other:
- LSET indexKEY$(indexnum, 3) = MKI$(0)
- LSET indexKEY$(indexnum, 2) = MKI$(0)
- LSET indexKEY$(indexnum, 5) = MKI$(MastRec)
- LSET indexKEY$(indexnum, 6) = MKI$(0)
-
- IF GF = 3 THEN
- PUT #indexnum, PIMmaster.nexav(indexnum)
- IF PIMmaster.nexav(indexnum) = 1 THEN
- GOTO increment
- END IF
- ELSE
-
- PUT #indexnum, PIMmaster.kdel(indexnum)
-
- END IF
-
- GET #indexnum, prevREC
-
- IF GF = 3 THEN
- LSET indexKEY$(indexnum, side) = MKI$(PIMmaster.nexav(indexnum))
-
- ELSEIF GF = 4 THEN
-
- LSET indexKEY$(indexnum, side) = MKI$(PIMmaster.kdel(indexnum))
-
- END IF
-
- PUT #indexnum, prevREC
- increment:
- IF GF = 4 THEN
- PIMmaster.kdel(indexnum) = nextREC
-
- ELSE
- PIMmaster.kdel(indexnum) = 0
- PIMmaster.nexav(indexnum) = PIMmaster.nexav(indexnum) + 1
-
- LSET indexKEY$(indexnum, 1) = STRING$(PIMmaster.klen(indexnum), 0)
-
- FOR j = 2 TO 6
- LSET indexKEY$(indexnum, j) = MKI$(0)
- NEXT j
- PUT #indexnum, PIMmaster.nexav(indexnum)
- END IF
-
- PIMmaster.nok(indexnum) = PIMmaster.nok(indexnum) + 1
- CurrentIndexREC = 1
- EXIT SUB
-
- '******************************************
- CASE "D" 'delete existing key
- '******************************************
-
- IF MastRec < 1 THEN
- GOTO badkey
- END IF
- IF CurrentIndexREC < 1 THEN
- GOTO badkey
- END IF
- GET #indexnum, CurrentIndexREC
- dk$ = indexKEY$(indexnum, 1)
- curREC = CurrentIndexREC
-
- leftREC = CVI(indexKEY$(indexnum, 2))
- rightREC = CVI(indexKEY$(indexnum, 3))
- parentREC = CVI(indexKEY$(indexnum, 4))
- realREC = CVI(indexKEY$(indexnum, 5))
- deletedREC = CVI(indexKEY$(indexnum, 6))
-
- IF (parentREC <> 0) THEN
- IF (leftREC <> 0) AND (rightREC = 0) THEN
- GET #indexnum, parentREC
- IF CVI(indexKEY$(indexnum, 2)) = curREC THEN
- side = 2
- ELSE
- side = 3
- END IF
-
- LSET indexKEY$(indexnum, side) = MKI$(leftREC)
- PUT #indexnum, parentREC
- GET #indexnum, leftREC
- LSET indexKEY$(indexnum, 4) = MKI$(parentREC)
- PUT #indexnum, leftREC
- GOSUB initkeyrec
- LSET indexKEY$(indexnum, 6) = MKI$(PIMmaster.kdel(indexnum))
- PUT #indexnum, curREC
- PIMmaster.kdel(indexnum) = curREC
- END IF
-
- IF (rightREC <> 0) AND (leftREC = 0) THEN
- GET #indexnum, parentREC
- IF CVI(indexKEY$(indexnum, 2)) = curREC THEN
- side = 2
- ELSE
- side = 3
- END IF
- LSET indexKEY$(indexnum, side) = MKI$(rightREC)
- PUT #indexnum, parentREC
- GET #indexnum, rightREC
- LSET indexKEY$(indexnum, 4) = MKI$(parentREC)
- PUT #indexnum, rightREC
- GOSUB initkeyrec
- LSET indexKEY$(indexnum, 6) = MKI$(PIMmaster.kdel(indexnum))
- PUT #indexnum, curREC
- PIMmaster.kdel(indexnum) = curREC
- END IF
-
- IF ((leftREC = 0) AND (rightREC = 0)) THEN
- GET #indexnum, parentREC
- IF CVI(indexKEY$(indexnum, 2)) = curREC THEN
- side = 2
- ELSE
- side = 3
- END IF
- LSET indexKEY$(indexnum, side) = MKI$(0)
- PUT #indexnum, parentREC
- GOSUB initkeyrec
- LSET indexKEY$(indexnum, 6) = MKI$(PIMmaster.kdel(indexnum))
- PUT #indexnum, curREC
- PIMmaster.kdel(indexnum) = curREC
- END IF
-
- IF (leftREC <> 0) AND (rightREC <> 0) THEN
- GET #indexnum, leftREC
- LSET indexKEY$(indexnum, 4) = MKI$(parentREC)
- PUT #indexnum, leftREC
- pnh = leftREC
- nh = CVI(indexKEY$(indexnum, 3))
- WHILE nh <> 0
- GET #indexnum, nh
- pnh = nh
- nh = CVI(indexKEY$(indexnum, 3))
- WEND
- LSET indexKEY$(indexnum, 3) = MKI$(rightREC)
- PUT #indexnum, pnh
- GET #indexnum, rightREC
- LSET indexKEY$(indexnum, 4) = MKI$(pnh)
- PUT #indexnum, rightREC
- GET #indexnum, parentREC
- IF CVI(indexKEY$(indexnum, 2)) = curREC THEN
- side = 2
- ELSE
- side = 3
- END IF
- LSET indexKEY$(indexnum, side) = MKI$(leftREC)
- PUT #indexnum, parentREC
- GOSUB initkeyrec
- LSET indexKEY$(indexnum, 6) = MKI$(PIMmaster.kdel(indexnum))
- PUT #indexnum, curREC
- PIMmaster.kdel(indexnum) = curREC
- END IF
- ELSEIF (curREC = 1) THEN
- IF (leftREC <> 0) AND (rightREC = 0) THEN
- GET #indexnum, leftREC
- lrec = CVI(indexKEY$(indexnum, 2))
- rrec = CVI(indexKEY$(indexnum, 3))
- LSET indexKEY$(indexnum, 4) = MKI$(0)
- PUT #indexnum, 1
- IF (lrec <> 0) THEN
- GET #indexnum, lrec
- LSET indexKEY$(indexnum, 4) = MKI$(1)
- PUT #indexnum, lrec
- END IF
- IF (rrec <> 0) THEN
- GET #indexnum, rrec
- LSET indexKEY$(indexnum, 4) = MKI$(1)
- PUT #indexnum, rrec
- END IF
- GOSUB initkeyrec
- LSET indexKEY$(indexnum, 6) = MKI$(PIMmaster.kdel(indexnum))
- PUT #indexnum, leftREC
- PIMmaster.kdel(indexnum) = leftREC
- END IF
- IF (rightREC <> 0) AND (leftREC = 0) THEN
- GET #indexnum, rightREC
- lrec = CVI(indexKEY$(indexnum, 2))
- rrec = CVI(indexKEY$(indexnum, 3))
- LSET indexKEY$(indexnum, 4) = MKI$(0)
- PUT #indexnum, 1
- IF (lrec <> 0) THEN
- GET #indexnum, lrec
- LSET indexKEY$(indexnum, 4) = MKI$(1)
- PUT #indexnum, lrec
- END IF
- IF (rrec <> 0) THEN
- GET #indexnum, rrec
- LSET indexKEY$(indexnum, 4) = MKI$(1)
- PUT #indexnum, rrec
- END IF
- GOSUB initkeyrec
- LSET indexKEY$(indexnum, 6) = MKI$(PIMmaster.kdel(indexnum))
- PUT #indexnum, rightREC
- PIMmaster.kdel(indexnum) = rightREC
- END IF
- IF ((leftREC = 0) AND (rightREC = 0)) THEN
- CLOSE #indexnum
- PIMmasterfile$ = PIMmaster.file
- kl = PIMmaster.klen(indexnum)
- idxfile$ = PIMmaster.indexF(indexnum)
- CALL PIMCreate(indexnum, idxfile$, kl, PIMmasterfile$)
- IF PIMfatal THEN
- GOTO PIMErr
- END IF
- CALL PIMOpen(indexnum, PIMmasterfile$)
- END IF
- IF (leftREC <> 0) AND (rightREC <> 0) THEN
- GET #indexnum, leftREC
- lrec = CVI(indexKEY$(indexnum, 2))
- rrec = CVI(indexKEY$(indexnum, 3))
- LSET indexKEY$(indexnum, 4) = MKI$(0)
- PUT #indexnum, 1
- IF (lrec <> 0) THEN
- GET #indexnum, lrec
- LSET indexKEY$(indexnum, 4) = MKI$(1)
- PUT #indexnum, lrec
- END IF
- IF (rrec <> 0) THEN
- GET #indexnum, rrec
- LSET indexKEY$(indexnum, 4) = MKI$(1)
- PUT #indexnum, rrec
- END IF
- GET #indexnum, 1
- pnh = 1
- nh = CVI(indexKEY$(indexnum, 3))
- WHILE nh <> 0
- GET #indexnum, nh
- pnh = nh
- nh = CVI(indexKEY$(indexnum, 3))
- WEND
- LSET indexKEY$(indexnum, 3) = MKI$(rightREC)
- PUT #indexnum, pnh
- GET #indexnum, rightREC
- LSET indexKEY$(indexnum, 4) = MKI$(pnh)
- PUT #indexnum, rightREC
- GOSUB initkeyrec
- LSET indexKEY$(indexnum, 6) = MKI$(PIMmaster.kdel(indexnum))
- PUT #indexnum, leftREC
- PIMmaster.kdel(indexnum) = leftREC
- END IF
- END IF
- GOTO goodkey
- initkeyrec:
- FOR j = 2 TO 6
- LSET indexKEY$(indexnum, j) = MKI$(0)
- NEXT j
- LSET indexKEY$(indexnum, 1) = STRING$(PIMmaster.klen(indexnum) + 10, 0)
- PIMmaster.nok(indexnum) = PIMmaster.nok(indexnum) - 1
- RETURN
- goodkey:
- CurrentIndexREC = 1
- GOTO deleted
- badkey:
- MastRec = 0
- CurrentIndexREC = 0
- deleted:
- EXIT SUB
-
- '******************************************
- CASE "N"
- '******************************************
-
- pKey$ = key$
- PMastRec = MastRec
- PreviousIndexREC = CurrentIndexREC
-
- IF CurrentIndexREC = 0 THEN
- GOTO nonext
- END IF
-
- GET #indexnum, CurrentIndexREC
- tkey$ = indexKEY$(indexnum, 1)
- rght = CVI(indexKEY$(indexnum, 3))
- IF rght = 0 THEN
- GOTO master
- END IF
- CurrentIndexREC = rght
- mleft:
- GET #indexnum, CurrentIndexREC
- lft = CVI(indexKEY$(indexnum, 2))
- IF lft = 0 THEN
- GOTO nhere
- END IF
- CurrentIndexREC = lft
- GOTO mleft
- master:
- parent = CVI(indexKEY$(indexnum, 4))
- IF parent = 0 THEN
- GOTO nonext
- END IF
- CurrentIndexREC = parent
- GET #indexnum, CurrentIndexREC
- IF indexKEY$(indexnum, 1) > tkey$ THEN
- GOTO nhere
- END IF
- GOTO master
- nhere:
- MastRec = CVI(indexKEY$(indexnum, 5))
- key$ = indexKEY$(indexnum, 1)
- GOTO fnext
- nonext:
- key$ = ""
- MastRec = 0
- CurrentIndexREC = 0
- fnext:
- IF CurrentIndexREC = 0 OR MastRec = 0 THEN
- IF PMastRec > 0 AND PreviousIndexREC > 0 THEN
- key$ = pKey$
- MastRec = PMastRec
- CurrentIndexREC = PreviousIndexREC
- END IF
- END IF
- EXIT SUB
-
- '******************************************
- CASE "P"
- '******************************************
-
- PMastRec = MastRec
- PreviousIndexREC = CurrentIndexREC
- pKey$ = key$
- IF CurrentIndexREC = 0 THEN
- GOTO noprev
- END IF
- GET #indexnum, CurrentIndexREC
- key$ = indexKEY$(indexnum, 1)
- lft = CVI(indexKEY$(indexnum, 2))
- IF lft = 0 THEN
- GOTO phead
- END IF
- CurrentIndexREC = lft
- prnxt:
- GET #indexnum, CurrentIndexREC
- rgt = CVI(indexKEY$(indexnum, 3))
- IF rgt = 0 THEN
- GOTO pread
- END IF
- CurrentIndexREC = rgt
- GOTO prnxt
- phead:
- CurrentIndexREC = CVI(indexKEY$(indexnum, 4))
- IF CurrentIndexREC = 0 THEN
- GOTO noprev
- END IF
- GET #indexnum, CurrentIndexREC
- IF key$ >= indexKEY$(indexnum, 1) THEN
- GOTO pread
- END IF
- GOTO phead
- pread:
- key$ = indexKEY$(indexnum, 1)
- MastRec = CVI(indexKEY$(indexnum, 5))
- GOTO pfin
- noprev:
- MastRec = 0
- CurrentIndexREC = 0
- key$ = ""
- pfin:
- IF MastRec = 0 OR CurrentIndexREC = 0 THEN
- IF PMastRec > 0 AND PreviousIndexREC > 0 THEN
- MastRec = PMastRec
- CurrentIndexREC = PreviousIndexREC
- key$ = pKey$
- END IF
- END IF
- EXIT SUB
- CASE ELSE
- END SELECT
-
- PIMErr:
-
- PRINT " Index Error "
- END
- END SUB
-
- SUB PIMClose (indexnum, file$) STATIC
-
- filespec$ = file$
- delimit = INSTR(filespec$, ".")
-
- IF delimit THEN
- FileName$ = LEFT$(filespec$, delimit - 1)
- ELSE
- FileName$ = filespec$
- END IF
-
- FileName$ = LTRIM$(RTRIM$(FileName$))
-
- CLOSE #indexnum
-
- master = FREEFILE
-
- OPEN "r", master, FileName$ + ".key", LEN(PIMmaster)
-
- PUT #master, 1, PIMmaster
-
- CLOSE #master
-
- END SUB
-
- SUB PIMCreate (indexnum, file$, keylength, mfile$)
-
- indexLEN = keylength
- master = FREEFILE
-
- IF indexLEN > 1 AND indexLEN < 256 THEN
- filespec$ = file$
- delimit = INSTR(filespec$, ".")
-
- IF delimit THEN
- FileName$ = LEFT$(filespec$, delimit - 1)
- ELSE
- FileName$ = filespec$
- END IF
- FileName$ = LTRIM$(RTRIM$(FileName$))
-
- mfilespec$ = mfile$
- delimit = INSTR(mfilespec$, ".")
-
- IF delimit THEN
- mFileName$ = LEFT$(mfilespec$, delimit - 1)
- ELSE
- mFileName$ = mfilespec$
- END IF
- masfile$ = LTRIM$(RTRIM$(mFileName$))
-
- IF FileName$ <> "" THEN
-
- indexfile$ = FileName$ + ".F" + LTRIM$(STR$(indexnum))
- masfile$ = masfile$ + ".key"
- recsize = indexLEN + 10
-
- IF FileExists(masfile$) = 1 THEN
- OPEN "r", master, masfile$, LEN(PIMmaster)
- GET #master, 1, PIMmaster
- ELSE
- OPEN "r", master, masfile$, LEN(PIMmaster)
- END IF
-
- PIMmaster.desc$ = "PIM (c) R.Dixon 1990 "
- PIMmaster.file = masfile$
- PIMmaster.indexF(indexnum) = LTRIM$(RTRIM$(indexfile$))
- PIMmaster.nok(indexnum) = 0
- PIMmaster.nexav(indexnum) = 1
- PIMmaster.kdel(indexnum) = 0
- PIMmaster.klen(indexnum) = indexLEN
-
- PUT #master, 1, PIMmaster
-
- CLOSE #master
-
- OPEN "r", indexnum, indexfile$, recsize
-
- FIELD #indexnum, recsize AS dummy$
- LSET dummy$ = STRING$(recsize, 0)
- PUT #indexnum, 1
- CLOSE indexnum
-
- END IF
- indexLEN = 0
- END IF
- END SUB
-
- SUB PIMdelkey (IxNum, temp$, MastRec, IndexRec)
-
- PIM "S", IxNum, temp$, Mchk, IndexRec
- DO
- IF Mchk = MastRec THEN 'YES! Found, so quit
- EXIT DO
- ELSE 'Continue looking
- PIM "N", IxNum, temp$, Mchk, IndexRec
- END IF
- LOOP '
- 'Delete
- PIM "D", IxNum, temp$, Mchk, IndexRec
-
-
- END SUB
-
- SUB PIMOpen (indexnum, file$) STATIC
-
- master = FREEFILE
- PIMfatal = 0
-
- IF indexnum > 20 OR indexnum < 1 THEN
- PIMfatal = 1
- ELSE
- filespec$ = file$
- delimit = INSTR(filespec$, ".")
-
- IF delimit THEN
- FileName$ = LEFT$(filespec$, delimit - 1)
- ELSE
- FileName$ = filespec$
- END IF
- FileName$ = LTRIM$(RTRIM$(FileName$))
-
- OPEN "r", master, FileName$ + ".key", LEN(PIMmaster)
- GET #master, 1, PIMmaster
- CLOSE master
-
- keyfile$ = LTRIM$(RTRIM$(PIMmaster.indexF(indexnum)))
-
- OPEN "r", indexnum, keyfile$, PIMmaster.klen(indexnum) + 10' PIMmaster.klen(indexnum) + 10
-
- FIELD #indexnum, PIMmaster.klen(indexnum) AS indexKEY$(indexnum, 1), 2 AS indexKEY$(indexnum, 2), 2 AS indexKEY$(indexnum, 3)
- FIELD #indexnum, PIMmaster.klen(indexnum) + 4 AS dummy$, 2 AS indexKEY$(indexnum, 4), 2 AS indexKEY$(indexnum, 5), 2 AS indexKEY$(indexnum, 6)
-
- LSET indexKEY$(indexnum, 1) = STRING$(PIMmaster.klen(indexnum), 0)
- LSET indexKEY$(indexnum, 2) = MKI$(0)
- LSET indexKEY$(indexnum, 3) = MKI$(0)
- LSET indexKEY$(indexnum, 4) = MKI$(0)
- LSET indexKEY$(indexnum, 5) = MKI$(0)
- LSET indexKEY$(indexnum, 6) = MKI$(0)
-
- PUT #indexnum, PIMmaster.nexav(indexnum)
- END IF
-
- END SUB
-
- FUNCTION PIMstats (indexnum)
-
- IF PIMmaster.nok(indexnum) = 0 THEN ' No Ikeys in the index
- PIMstats = 0
- ELSE
- PIMstats = 1
- END IF
-
- END FUNCTION
-
-