01 function unpack( variable )
02 dim char, index, length
03 dim type_: type_ = left( variable, 1 )
04 select case type_
05 case "a"
06 char = instr( variable, VAR_DELIMITER )
07 length = eval( mid( variable, 2, char - 2 ) )
08 variable = mid( variable, char + 1 )
09 dim result: result = array_allocate( length )
10 for index = 0 to length - 1
11 result( index ) = unpack( variable )
12 next
13 unpack = result
14 case "i"
15 char = instr( variable, VAR_DELIMITER )
16 unpack = cint( eval( mid( variable, 2, char - 2 ) ) )
17 variable = mid( variable, char + 1 )
18 case "f"
19 char = instr( variable, VAR_DELIMITER )
20 unpack = cdbl( eval( mid( variable, 2, char - 2 ) ) )
21 variable = mid( variable, char + 1 )
22 case "s"
23 char = instr( variable, VAR_DELIMITER )
24 length = eval( mid( variable, 2, char - 2 ) )
25 unpack = mid( variable, char + 1, length )
26 variable = mid( variable, char + length + 1 )
27 case "b"
28 unpack = ( eval( mid( variable, 2, 1 ) ) = 1 )
29 variable = mid( variable, 3 )
30 end select
31 end function