プレイ日記
だにえる haru2016nen
こういうのダメなの、、、?
2そうだね
プレイ済み
返信[1]
親投稿
イスターリャ arduinotexter
@Aは文字列ではなく、ラベルです。 文字列を命令に渡すには以下のように、ダブルクオーテーションで囲ってやる必要があります。 G "@A" G "@B"
1そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
ユーザ定義命令で引数として文字列変数を渡しているため指定するなら G "@A"とラベル名を""でくくったラベル文字列で指定する必要があります。 で、DEF命令のヘルプに書かれていますが、DEF~END範囲内で GOSUB命令を使う場合はスロット番号を指定する必要があります。 プログラムを実行するスロットが固定化されて汎用性が低下するので あまりお勧めできない方法だと思います。
3そうだね
プレイ済み
返信[3]
親投稿
いぶき ibuki426
いえ、@から始まる文字を文字列として認識されるようになったはずです Ver.3.1.0において追加・変更 (2015.3.4) ラベルを式中で使用すると文字列として扱われる @foo は "@foo" と等価に扱われる。 従来は命令引数としてラベルを与えたい場合、文字列として与える必要があったが、ラベルを直接記述できるようになる。 旧 COPY A,"@FOO" 新 COPY A,@FOO ※「一般的な式中のラベルリテラルは文字列定数として解釈するようになった」のであり、「ラベル型という値が増えた」のではない事に注意 (公式より)
2そうだね
プレイ済み
返信[4]
親投稿
say sayer.exe
defん中からgosubできたっけ?
0そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
>いぶきさん ご指摘の通り""で囲わなくてもラベルを文字列として認識出来るように なってました。DEF命令の引数としても渡せますね。 DEF~END内でGOSUBを使用する場合にスロット番号を記述する必要が あるのですが ユーザー定義命令 0:@A (例: G 0:@A) と記述すると:で命令が区切られていると判断されるためラベルが複数 記述されていると判断されてエラーが出てしまうのでスロット番号込みの ラベル名は""でくくる必要があります。
1そうだね
プレイ済み
返信[6]
親投稿
だにえる haru2016nen
DEF G SUB$   GOSUB 0:SUB$ END ってことかな?
0そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
スロット番号を含む場合は""でくくらないと:(コロン)で命令の区切りと 判断されてしまいますよ。 "0:"+SUB$として下さい。
1そうだね
プレイ済み
返信[8]
親投稿
だにえる haru2016nen
わかりました! やってみます
1そうだね
プレイ済み
返信[9]
親投稿
だにえる haru2016nen
@をつけると 文字列として扱われるから ダブルコーテーションを つけても、つけなくても エラーにはならないんですね!
0そうだね
プレイ済み