107 lines
2.0 KiB
Plaintext
107 lines
2.0 KiB
Plaintext
global values$, keys$
|
|
dim values$[1]
|
|
dim keys$[1]
|
|
|
|
call updateKey("a","apple")
|
|
call updateKey("b","banana")
|
|
call updateKey("c","cucumber")
|
|
|
|
gosub show
|
|
|
|
print "I like to eat a " + getValue$("c") + " on my salad."
|
|
|
|
call deleteKey("b")
|
|
call updateKey("c","carrot")
|
|
call updateKey("e","endive")
|
|
gosub show
|
|
|
|
end
|
|
|
|
show:
|
|
for t = 0 to countKeys()-1
|
|
print getKeyByIndex$(t) + " " + getValueByIndex$(t)
|
|
next t
|
|
print
|
|
return
|
|
|
|
subroutine updateKey(key$, value$)
|
|
# update or add an item
|
|
i=findKey(key$)
|
|
if i=-1 then
|
|
i = freeKey()
|
|
keys$[i] = key$
|
|
end if
|
|
values$[i] = value$
|
|
end subroutine
|
|
|
|
subroutine deleteKey(key$)
|
|
# delete by clearing the key
|
|
i=findKey(key$)
|
|
if i<>-1 then
|
|
keys$[i] = ""
|
|
end if
|
|
end subroutine
|
|
|
|
function freeKey()
|
|
# find index of a free element in the array
|
|
for n = 0 to keys$[?]-1
|
|
if keys$[n]="" then return n
|
|
next n
|
|
redim keys$[n+1]
|
|
redim values$[n+1]
|
|
return n
|
|
end function
|
|
|
|
function findKey(key$)
|
|
# return index or -1 if not found
|
|
for n = 0 to keys$[?]-1
|
|
if key$=keys$[n] then return n
|
|
next n
|
|
return -1
|
|
end function
|
|
|
|
function getValue$(key$)
|
|
# return a value by the key or "" if not existing
|
|
i=findKey(key$)
|
|
if i=-1 then
|
|
return ""
|
|
end if
|
|
return values$[i]
|
|
end function
|
|
|
|
function countKeys()
|
|
# return number of items
|
|
# remember to skip the empty keys (deleted ones)
|
|
k = 0
|
|
for n = 0 to keys$[?] -1
|
|
if keys$[n]<>"" then k++
|
|
next n
|
|
return k
|
|
end function
|
|
|
|
function getValueByIndex$(i)
|
|
# get a value by the index
|
|
# remember to skip the empty keys (deleted ones)
|
|
k = 0
|
|
for n = 0 to keys$[?] -1
|
|
if keys$[n]<>"" then
|
|
if k=i then return values$[k]
|
|
k++
|
|
endif
|
|
next n
|
|
return ""
|
|
end function
|
|
|
|
function getKeyByIndex$(i)
|
|
# get a key by the index
|
|
# remember to skip the empty keys (deleted ones)
|
|
k = 0
|
|
for n = 0 to keys$[?] -1
|
|
if keys$[n]<>"" then
|
|
if k=i then return keys$[k]
|
|
k++
|
|
endif
|
|
next n
|
|
return ""
|
|
end function
|