過去の桐井戸端BBS (桐ver.5)
23448 桐5の一括処理の中で”を付けたいのですがうまくいかない 舩井啓行 2003/11/22-23:23
桐5で一括処理を組んでいます。

変数の内容で選択をしたく、下記のような命令を書きました。
これはエラーが出なくなった状態なのですが、"の数が式の一番左側が4つで
一番右が3つでバランスしていません。
バランスさせるとエラーとなり理解できません。どうしてでしょうか。

&比較式=""""+#部分列(#月数加算(&年月,-2,1),1,7)+"""≦[]≦"""+#部分列(#月数加算(&年月,-1,1),1,7)+"""
選択 [年月]_&比較式
23451 Re:桐5一括 ”の付け方 ONnoji 2003/11/23-10:20
記事番号23448へのコメント

舩井啓行さん、こんにちは。

投稿を拝読しましたが、とっても不思議ですね。

桐ver.9-2004 で次のような実験をしてみましたが・・・
※掲示板で見やすいように二重引用符は全角にしました。
※二重引用符が半角でも結果は同じです。

確認 ”a” + b
確認 ”a” + ”b
確認 ”a” + ”b”

↑の結果はどれも 「ab」 になります。

確認 ”引用符” + ”””
確認 ”引用符” + ””””

↑の結果はどれも 「引用符”」 になります。

どうやら、前の式が文字列と認識された場合、
最後に+演算子で繋げたリテラルな文字列は、
前後を二重引用符で囲まずに、
前だけ二重引用符を付けて、後の二重引用符は省略できるようです。
※リテラルな文字列に空白や記号など特殊な文字をを含める場合には、
※後の二重引用符が必要になります。

私は桐ver.9-2004 で試しましたが、桐ver.5 でも同じ仕組みと予想できます。

提示された式を分解すると・・・

&比較式=""""
&比較式=&比較式+#部分列(#月数加算(&年月,-2,1),1,7)
&比較式=&比較式+"""≦[]≦"""
&比較式=&比較式+#部分列(#月数加算(&年月,-1,1),1,7)
&比較式=&比較式+""" ← ここ

というわけで、エラーにならなかった原因はこういう理由かもしれません。

しかし、正しく書いてエラーになった理由は・・・なんでしょうかね???
私の浅知恵では思いつきません。

ところで、次のように試してみたらいかがでしょうか?

変数宣言 文字列{ &WQ = """" }
  :
&比較式=&WQ+#部分列(#月数加算(&年月,-2,1),1,7)+&WQ+"≦[]≦"+#部分列(#月数加算(&年月,-1,1),1,7)+&WQ
選択 [年月]_&比較式


23493 ありがとうございました 舩井啓行 2003/11/26-00:03
記事番号23451へのコメント
ONnojiさん コメントありがとうございました。

教えていただいた方法はまだ試していませんが、時間を見つけてしてみるつもりです。
それにしても、結構エラーチェックは甘くしているんだな、と感じました。

まあ、それが桐の良さでもあるのでしょうか。
23498 Re:桐のサービス精神 ONnoji 2003/11/26-09:53
記事番号23493へのコメント
舩井啓行さんは No.23493で書きました。
>それにしても、結構エラーチェックは甘くしているんだな、と感じました。
>まあ、それが桐の良さでもあるのでしょうか。

舩井啓行さん、こんにちは。

検索:比較式などで、文字列を部分一致:しないの場合ですが、
本当なら文字列の前後を二重引用符で囲む必要がありますが、
空白や記号など特殊な文字を含まない文字列では、
二重引用符で囲まなくてもエラーにはならないと思います。

これは、「文字列として自明な場合には文字列の前後を二重引用符で囲まなくてもよい」という、
桐のサービス精神の現われと思っていますが…

また、「文字列の前後を二重引用符で囲む場合でも、後の二重引用符は省略できる」という、
サービスもあります。

これらは会話処理の時になるべくキー入力が少なくて済むようにという配慮だと思いますが、
今回の件はこれに該当するような気がしています。

すべて私の勝手な思いこみと憶測ですが…(^^ゞ

<追伸>

私はWindows桐で正しく二重引用符の数を指定しているのに、
ちょうど今回の件のように、こちらの言うことを聞かない場面に何度も遭遇しています。
※やっぱり原因は不明ですが…とても式が長く複数行に書いた場合です。
こういう時には、&変数 = &変数 + 式 という方法でやり過ごしています。

戻る