GW-Basic doesn't contain built-in tools for working with KEY-VALUE data. You need to write them yourself. The simplest implementation is a linear search. However, if a large number of other space objects are expected to be added to your spacecraft's computer, then more efficient algorithms will be required. Below are 3 algorithms that differ in time and space complexity.
1. Linear search (time complexity O(n))
100 TRUE=-1
110 '
200 'main loop
210 LOOP=TRUE
220 WHILE LOOP
230 INPUT "your weight"; WEIGHT
240 INPUT "planet to determine weight on"; PLANET$
250 RESTORE 1000 'Restore initial position of data
260 READ P$
270 FOUND=FALSE
280 WHILE P$<>"" AND NOT FOUND
290 IF P$=PLANET$ THEN FOUND=TRUE
300 READ G, P$
310 WEND
320 IF FOUND THEN PRINT "your weight on "PLANET$" is "WEIGHT*G
330 LOOP=PLANET$<>""
340 WEND
350 END
1000 ' NAME GRAV
1001 DATA "mercury", 0.38
1002 DATA "venus", 0.91
1003 DATA "earth", 1.00
1004 DATA "mars", 0.41
1005 DATA "jupiter", 2.54
1006 DATA "saturn", 0.92
1007 DATA "uranus", 0.91
1008 DATA "neptune", 1.14
1100 DATA "", 'end of data
2. Binary search in ordered data (time complexity O(log n))
100 DEF FNLESS(X$,Y$)=X$<Y$ 'less function
110 DIM PLNAME$(100), PLGRAV(100) 'large size in advance
120 TRUE=-1
130 '
200 'filling
210 READ P$
220 WHILE P$<>""
230 CNT=CNT+1
240 PLNAME$(CNT)=P$
250 READ PLGRAV(CNT), P$
260 WEND
270 '
300 'ordering
310 FOR I=1 TO CNT-1
320 FOR J=I+1 TO CNT
330 IF FNLESS(PLNAME$(J), PLNAME$(I)) THEN SWAP PLNAME$(I), PLNAME$(J) : SWAP PLGRAV(I), PLGRAV(J)
340 NEXT
350 NEXT
360 '
400 'displaying container contents
410 PRINT "ORDERED ITEMS:"
420 PRINT " # NAME","GRAV"
430 FOR I=1 TO CNT
440 PRINT USING "##";I; : PRINT " ";PLNAME$(I), : PRINT USING "#.##";PLGRAV(I)
450 NEXT
460 PRINT
470 '
500 'main loop
510 LOOP=TRUE
520 WHILE LOOP
530 INPUT "your weight"; WEIGHT
540 INPUT "planet to determine weight on"; PLANET$
550 '
560 'binary search
570 S=1 : E=CNT
580 WHILE S<E
590 HALF=(S+E)\2
600 IF FNLESS(PLNAME$(HALF), PLANET$) THEN S=HALF+1 ELSE E=HALF
610 WEND
620 '
630 IF PLNAME$(S)=PLANET$ THEN PRINT "your weight on "PLANET$" is "WEIGHT*PLGRAV(S)
640 LOOP=PLANET$<>""
650 WEND
660 END
1000 ' NAME GRAV
1001 DATA "mercury", 0.38
1002 DATA "venus", 0.91
1003 DATA "earth", 1.00
1004 DATA "mars", 0.41
1005 DATA "jupiter", 2.54
1006 DATA "saturn", 0.92
1007 DATA "uranus", 0.91
1008 DATA "neptune", 1.14
1100 DATA "", 'end of data
GW-BASIC 3.23
ORDERED ITEMS:
# NAME GRAV
1 earth 1.00
2 jupiter 2.54
3 mars 0.41
4 mercury 0.38
5 neptune 1.14
6 saturn 0.92
7 uranus 0.91
8 venus 0.91
3. Hash table (time complexity O(1))
100 'For clarity, the hash function calculates the hash
101 'based on only the first character of name,
102 'so that if name starts with 'a', hash will be 1,
103 'for 'b' -> 2, ..., for 'z' -> 26.
104 'The number of buckets is also 26.
105 'Thus, the hash table is similar to an alphabetical index.
110 '
120 DEF FNHASH(X$)=ASC(X$)+7 'hash function
130 DEF FNBUCKET(X$)=(FNHASH(X$) MOD 26)+1 'bucket index function
140 TRUE=-1
150 DIM PLNAME$(100), PLGRAV(100) 'large size in advance
160 DIM BUCKET(26) 'first item index (0 - end of data)
170 DIM PLNEXT(100) 'next items indexes (0 - end of data)
180 '
200 'filling
210 READ P$
220 WHILE P$<>""
230 CNT=CNT+1
240 PLNAME$(CNT)=P$
250 I=FNBUCKET(P$)
260 NXT=BUCKET(I)
270 IF NXT THEN WHILE NXT : PRV=NXT : NXT=PLNEXT(NXT) : WEND : PLNEXT(PRV)=CNT ELSE BUCKET(I)=CNT
280 READ PLGRAV(CNT), P$
290 WEND
300 '
400 'displaying container contents
410 PRINT "HASH BUCKETS:"
420 PRINT " # NAMES"
430 FOR I=1 TO 26
440 NXT=BUCKET(I)
450 IF NXT THEN PRINT USING "##";I; : WHILE NXT : PRINT " ";PLNAME$(NXT); : NXT=PLNEXT(NXT) : WEND : PRINT
460 NEXT
470 PRINT
480 '
500 'main loop
510 LOOP=TRUE
520 WHILE LOOP
530 INPUT "your weight"; WEIGHT
540 INPUT "planet to determine weight on"; PLANET$
550 '
560 'bucket search
570 IF PLANET$<>"" THEN NXT=BUCKET(FNBUCKET(PLANET$)) ELSE NXT=0
580 FI=0
590 WHILE NXT AND FI=0
600 IF PLNAME$(NXT)=PLANET$ THEN FI=NXT
610 NXT=PLNEXT(NXT)
620 WEND
630 '
640 IF FI THEN PRINT "your weight on "PLANET$" is "WEIGHT*PLGRAV(FI)
650 LOOP=PLANET$<>""
660 WEND
670 END
1000 ' NAME GRAV
1001 DATA "mercury", 0.38
1002 DATA "venus", 0.91
1003 DATA "earth", 1.00
1004 DATA "mars", 0.41
1005 DATA "jupiter", 2.54
1006 DATA "saturn", 0.92
1007 DATA "uranus", 0.91
1008 DATA "neptune", 1.14
1100 DATA "", 'end of data
GW-BASIC 3.23
HASH BUCKETS:
# NAMES
5 earth
10 jupiter
13 mercury mars
14 neptune
19 saturn
21 uranus
22 venus