コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
さすらいの74 ◆LWMA5UzCJb3e
2020/6/12 12:20
情報交換
DATA文のREADの時の挙動がおかしい
@A
DATA "A"*2
RESTORE @A
READ A$

このプログラムで、なぜか2行目でエラーが出てしまいます。
数値の乗算はREADできるのに、文字列の乗算はREADできないのでしょうか?
文字列乗算がREADできないとなると、
DATA "F"*64
等を、わざわざ
DATA "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
と書かなくてはならなくなるので、相当不便です。

コメント

アバター
さすらいの74 2020/6/12 12:35 ◆LWMA5UzCJb3e
それと、VAL("1/3")が0になるのも、個人的に違和感があります。
アバター
あきと 2020/6/12 15:00 ◆qGd5dQw2g3a2
プチコンは「“F“*64」を文字列ではなく式だと評価しているんでしょう。
DATA a*2+b
と書いても計算結果がデータにならないのと似てるかと。
アバター
高原のな 2020/6/12 18:51 ◆bY8RViwvoODw
文字列演算はその項がリテラルでも定数扱いされないようです。DATA文は定数しか指定できないので、文字列演算はエラーになってしまいますね(数値演算は項が定数なら定数扱いなので、文字列とは違いますね)。これは内部的なデータ取り扱いの都合だと思ってます(なお、プチコン4で変わったような記憶が無きにしもあらずなのですが、実際はどうでしたっけ?)。

VAL関数は、計算する関数ではなく、「数値だけを表す文字列」を数値に変換するだけなので、数値と読み取れない部分が含まれると0を返すようです。
具体例は以下のようですね
"13" → 13
"2.5" → 2.5
"1.5e-1" → 0.15
"&H1F" → 31
"&B10" → 2
"1+2" → 0
"あいう" → 0
"1F" → 0
"&B10.1" → 0

(注: ○.○e△という表記がありますが、これは指数を使用した表記で、○.○×10^△のことです。詳しくは「指数表記」などと調べてみるとよいでしょう。)
アバター
ツララ 2020/6/13 11:47 ◆ArUdBYOYME1V
文字列演算を使ってデータ文を記述したいのなら
都度、データ文をPRG系命令で別スロットに生成して使えばいいんじゃないんです?
わざわざしなきゃならなくても自動化できる余地があるなら、諦めるのはまだ早いですぞ。
別スロットを使わなきゃならないのが不便っちゃ不便ですけど。
アバター
高原のな 2020/6/13 15:25 ◆bY8RViwvoODw
プチコン3号とBIGで一部の処理を分けたくて、それでもファイルを増やしたくなくて、別スロットへの動的生成をやったことがあります。意外とうまく行って楽しかったですね

単に文字数合わせて打つのが面倒というだけならば、CLIPBOARD命令をdirectモードで使って文字列演算結果を作ってクリップボードに入れて、手作業でペーストするという手もあったり
アバター
さすらいの名無し 2020/6/13 15:35 ◆LWMA5UzCJb3e
結局
DATA "F*64"
みたいに演算子も文字列の中に入れて、DEFで演算するようにしました。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -