過去の桐井戸端BBS (桐ver.9)
22322 #日数加算などを使った計算式があるのですが意味がわかりません だいすけ 2003/09/12-17:09
どなたかこのソースの意味を教えてください。

&設定末日=#日(#日数加算(#連結(#条件選択([帳表作成日(日)]=12,#文字列([帳表作成日(年)]+1),1,#文字列([帳表作成日(年)])),年,#条件選択([帳表作成日(月)]=12,"1",1,#文字列([帳表作成日(月)]+1)),"月1日"),-1))

私には意味がわかりません(>_<)
22327 Re:教えてくださいな うにん 2003/09/12-20:02
記事番号22322へのコメント
だいすけさん

[帳表作成日(年)][帳表作成日(月)]の月末の日付を求めてるんだと思います。
>&設定末日=#日(#日数加算(#連結(#条件選択([帳表作成日(日)]=12,
この最初の項目は多分[帳表作成日(月)]の間違いでしょう。

桐9なら数値から直接日付を生成できるのでもうちょっと簡単にできそう。
と思ったら、#月末()なんてのまでありますね。
#日(#月末(#日時値生成([帳表作成日(年)],[帳表作成日(月)])))
22330 式が誤っているので正確には判断できませんが 佐田 守弘 2003/09/12-21:53
記事番号22322へのコメント
だいすけさん
私も「帳票作成日」なる日付の月末日を求めているような気もしますが、式にいろいろな誤りがあるために、断定はできません。
式の直し方や使う場所によっては全く別の意味にもなります。

●複雑な式の解釈の仕方
複雑な式は、次の様に左右のカッコとパラメータ記述の桁位置を揃えると分りやすくなります。
(このBBSの特性でうまく表示できない可能性もあり)
====================================================================
&設定末日=#日(#日数加算(#連結(#条件選択([帳表作成日(日)]=12
                    ,#文字列([帳表作成日(年)]+1)
                    ,1
                    ,#文字列([帳表作成日(年)])
                    )
               ,年                    ←(*)
               ,#条件選択([帳表作成日(月)]=12
                    ,"1"
                    ,1
                    ,#文字列([帳表作成日(月)]+1)
                    )
               ,"月1日"
               )
            ,-1)
     )
====================================================================
ポイントは、
・関数名直後の左カッコと、対応する右カッコ、およびこのカッコ内に
パラメータが複数並ぶ場合には、区切りのコンマの位置を縦に揃える事です。

●誤り
上記の(*)の「年」は変ですね。&年か、文字列の"年"のどちらかでしょう。

●項目名
([帳表作成日(年)]、([帳表作成日(月)]、([帳表作成日(日)]の3つがあります。
本当にこの通りですか?もしこの通りなら、式の意味は別にありそうです。

●式の種類について
「&設定末日=<計算式の記述>」という式の記述は、2通りの意味に取れます。
1つは、一括処理の代入コマンドで使う場合で、帳票作成日の月末日付らしい値を、
変数&設定末日に代入するという意味です。

もう1つは、等号の左右に計算式を書いた場合、全体としては論理式になります。
条件式として見る場合には、左右、つまり&設定末日と月末日らしい日付が一致すれば真(1)、
異なれば偽(0)を帰す論理式になります。

●特に「ソース」と書いている点について
>どなたかこのソースの意味を教えてください。
と書かれているので、何かのオブジェクトの「ソース」と記載されている場所に書かれている式と解釈するのが妥当でしょう。
もしオブジェクトのソースであれば、代入コマンドは使いませんから、論理値となる1か0の値を返す式になります。

以上の様に式が誤っている上に、どこで使われている式であるかを明記してないので、
私にはこの「ソース」の意味を正しくは理解できません。

代入コマンドの事を「ソース」と書いているなら、また意味が違います。

佐田守弘(KS-00119)
22334 Re:教えてくださいな 今村 誠 2003/09/13-09:59
記事番号22322へのコメント
だいすけさんこんにちはそれぞれの関数の意味は以下のようになります。
&設定末日=この数値あるいは整数型の変数に月末の日を代入しなさい
#日(   日時文字列または日時値の日の値を数値で取り出します。
#日数加算(日時文字列または日時値で指定する日付から、num 日後の
     日付を、日時文字列または日時値で求めます。
     この場合、翌月から1日引くことですね。
#連結(  #連結(”東京都”,”港区”,”西麻布”)→東京都港区西麻布
#条件選択(条件式 condi を i = 1 から評価し、真のものが現れたら
     対応する値 vali を返します。
     条件式がすべて偽のときは、未定義値になります。
[帳表作成日(日)]=12, ここの日は月の間違いでしょう。
     当月の月末を求めるために、翌月の1日の日付を求めます。
     ここは「12月だったら」という意味です。
  新関数(#月末)があるので、これは書き換えたが良いと思います。
#文字列([帳表作成日(年)]+1), 年に1を加えるつまり翌年にする。
1,    12月以外の場合は 最初の条件以外はということです。
#文字列([帳表作成日(年)])) ここで最初の条件選択は一度閉じます。
  上の意味は12月以外はその年を12月は翌年の数値を文字列にします。
,年,   連結の2つ目の文字列です。ここは「"年"」の間違いです。
#条件選択(  2番目の条件選択式です。
[帳表作成日(月)]=12, ここは間違えてないようですね(^。^)
"1",   12月の場合は翌月は1月なので "1" にしなさいということ
1,    12月じゃないときは次の式を実行しなさい。
#文字列([帳表作成日(月)]+1)), 現在の月に1を加えた数値を文字列
     に変えて、条件選択式を閉じる。
"月1日"), 連結の最後の文字列で翌月の1日の文字列が完成します。
-1))   日数加算の関数の引数です。翌月から1日引いた日。
     つまりその月の月末を日時値で返します。

結論 うにんさんの式に変更して記述した方が良いと思います。

戻る