プチコン内部では、「未初期化の長さ0の文字列」と通常の長さ0の文字列("")が存在するそうで、この2つはそれぞれ別物として扱われています。 どうもINKEY$は、キーが何も押されていない時に""ではなく、「未初期化の長さ0の文字列」を返しているようです。 そして、  VAL("") は0を返しますが、  VAL(「未初期化の長さ0の文字列」) はType mismatchになるようです。 幸い、「未初期化の長さ0の文字列」==""の演算結果がTRUE(1)となるので、  K$=INKEY$()  IF K$=="" THEN K$="" と、K$が未初期化の長さ0の文字列であれば、K$に通常の長さ0の文字列を代入すると良いでしょう。 ちなみに、文字列変数の配列を宣言すると、すべての要素は未初期化の長さ0の文字列になります。