• ベストアンサー
  • 暇なときにでも

今日が6月か、9月か、12月か、3月なら

  • 質問No.91429
  • 閲覧数39
  • ありがとう数7
  • 回答数3

お礼率 47% (767/1609)

今日が6月か、9月か、12月か、3月なら「予定月です」と表示する最も短いスクリプトを教えていただけないでしょうか。caseとかを使えばいいものでしょうか。

素人がやると下記のようになってしまいます。
<% If Month(date()) = 6 or Month(date()) = 9 or Month(date()) = 12 or Month(date()) = 3 then %>
予定月です。
<% Else %>
違います。
<% End if %>

#プログミングの初心者のため、初歩的なところを確認したいと思っての質問です。

質問者が選んだベストアンサー

  • 回答No.3
  • ベストアンサー

ベストアンサー率 66% (47/71)

最も短いかどうかは解りませんが。
#しかも今ごろですが。
No.1の方の回答どおりだと思います。VBScriptで表記すると

#インデントのため行頭に全角スペース入れてます。
<%
 If (CInt(Month(Date())) Mod 3 = 0 Then
  Response.Write("予定月です。<br>" & vbCrLf)
 Else
  Response.Write("違います。<br>" & vbCrLf)
 End If
%>

かと。
「最も短い」にこだわる理由はわかりませんが。
別に求める結果が同じなら書き方は問わないと思います。
「スマートで解りづらいソース」より「稚拙でも解りやすいソース」の方が
私はありがたいです。

「俺のロジック、クレーバーだろ?!」と自慢したいのなら別ですが。

それと余計なお世話かもしれませんが、s-holmesさん。
「初心者」であるのならこういった場で質問するより基礎をしっかり学ぶ方が
先だと思いますよ。スマートなロジックは基礎の上に成り立ちます。

その他の回答 (全2件)

  • 回答No.2

ベストアンサー率 48% (12/25)

Case文であれば短くはないですけど、予定月の変更や、別の文字を表示するといった変更などが楽そうですね。

<%
Select Case Month(date())
 Case 3,6,9,12
  Response.Write("予定月です。")
 Case Else
  Response.Write("違います。")
End Select
%>

あと、IF文に「Month(date())」が4つある事で4回の「Month(date())」を実行している気がします。IF文を使うのであれば変数に入れた値に対して判定するほうがいいですね。
  • 回答No.1

ベストアンサー率 33% (30/90)

ASPの書き方は知らないので、ロジックとしてのアドバイスです。
剰余演算子はありませんか?
つまり、わり算をした時の商ではなくて、「余り」を返してくれる演算子です。
C言語等では%がそれに当たります。
この剰余演算子があるのなら、if文を
「月を3で割って、余りが0ならば真」というのが良いかと。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ