新しく発言する  EXIT  インデックスへ
干支(えと)の計算

  干支(えと)  の計算 SECOND 2008/01/12 02:18:50  (修正1回)
  !干支(えと)の計算4※こちらの「空打ち」は... SECOND 2008/01/12 15:43:11  (修正4回)
  テキストWindowを起動時に、位置と、大きさ... SECOND 2008/01/12 16:18:03 
  │└WINHANDLE関数を使うとWin32APIに渡すための... 白石 和夫 2008/01/12 18:31:28 
  │ └すみません、トップページも見るようにしま... SECOND 2008/01/12 20:15:11 
  !広範囲B.C.4713(-4712)~2400~のユリウス日... SECOND 2008/01/13 14:35:13  (修正3回)
  │└!続く SECOND 2008/01/13 14:36:31  (修正2回)
  │ └ユリウス日とは、何か。 SECOND 2008/01/14 06:45:15 
  グレゴリオ暦とユリウス暦の両方を表示でき... 荒田浩二 2008/01/20 11:40:55 
   ├!<続き> 荒田浩二 2008/01/20 11:44:36 

Re: グレゴリオ暦とユリウス暦の両方を表示でき...  返事を書く  ノートメニュー
荒田浩二 <knrztrhoel> 2008/01/20 11:44:36
!<続き>
CASE -45 TO -8 ! 初期ユリウス暦
LET y1w=juweekcirc(MOD(y+45,7*3))
IF MOD(y,3)=1 THEN LET leap=1
IF MOD(y,4)=3 THEN LET jdleap=1
CASE ELSE
PRINT " ";y;"年";m;"月";d;"日"
PRINT
PRINT " ユリウス暦実施(BC.45年)以前 !!"
PRINT
IF MOD(y,4)=3 THEN LET jdleap=1
CALL julian_day ! ユリウス通日
CALL today ! A)本日との日数差
CALL eto ! B)干支
STOP
END SELECT
END IF
IF leap=0 AND m=2 AND d=29 THEN
IF jdleap=1 THEN
PRINT "初期のユリウス暦では、この年は平年。"
PRINT "したがって、2月29日は存在しない。"
PRINT "ただしユリウス通日では、この年を閏年として計算する。"
ELSE
PRINT USING " -#####年##月##日":y,m,d
PRINT " この年は平年です。この年の2月29日は存在しません。"
STOP
END IF
END IF
! 出力
LET leapc$=r$&"平年)"
IF leap=1 THEN LET leapc$=r$&"閏年)"
PRINT USING " -#####年##月##日 ##曜日 <###################":y,m,d,w$(weekcode(d)),leapc$
CALL calendar ! カレンダー表示
CALL julian_day ! ユリウス通日
CALL today ! A)本日との日数差
CALL eto ! B)干支
IF y>4 THEN
CALL all_greg ! C)通年グレゴリオ年月日
CALL all_julius ! D)通年ユリウス年月日
END IF

!! 以下、副プログラム,関数定義
SUB data_check ! 入力データチェック
LET ymd$=LTRIM$(RTRIM$(ymd0$)) ! 前後空白削除
IF ymd$(1:1)="""" THEN LET ymd$(1:1)=""
LET Lymd=LEN(ymd$)
IF ymd$(Lymd:Lymd)="""" THEN LET ymd$(Lymd:Lymd)=""
LET ymd$=LTRIM$(RTRIM$(ymd$)) ! 前後空白削除
IF ymd$(1:1)="'" THEN LET ymd$(1:1)=LEFT$(DATE$,2) !['06/2/13]対応
IF (ORD(ymd$(1:1))<48 OR ORD(ymd$(1:1))>57) AND ymd$(1:1)<>"-" THEN LET ymd$(1:1)=""
LET Lymd=LEN(ymd$)
END SUB
FUNCTION y_m_d(p) ! 年,月,日の取得
LET s$=""
IF p=1 AND ymd$(1:1)="-" THEN ! 紀元前は負号を入力 [-7/10/25]
LET s$=s$&"-"
LET p=p+1
END IF
FOR fi=p TO Lymd
IF ORD(ymd$(fi:fi))>=48 AND ORD(ymd$(fi:fi))<=57 THEN ! 数字
LET s$=s$&ymd$(fi:fi)
ELSE
EXIT FOR
END IF
NEXT fi
LET y_m_d=VAL(s$)
END FUNCTION
FUNCTION gMJD(y,m,d) ! 修正ユリウス日(グレゴリオ暦)
IF m<=2 THEN
LET y=y-1
LET m=m+12
END IF
LET gMJD=INT(365.25*y)+INT(y/400)-INT(y/100)+INT(30.59*(m-2))+d-678912
END FUNCTION
FUNCTION jMJD(y,m,d) ! 修正ユリウス日(ユリウス暦)
IF m<=2 THEN
LET y=y-1
LET m=m+12
END IF
LET jda=0
IF y<0 THEN ! 紀元前の修正ユリウス日の調整
LET jdd=d+366
LET jda=-0.75
END IF
LET jMJD=INT(365.25*y+jda)+INT(30.59*(m-2))+jdd-678914
END FUNCTION
![続く]

   │└![続き] 荒田浩二 2008/01/20 11:52:14 
   │ └!(続き) 荒田浩二 2008/01/20 11:56:51 
   │  └!"続き" 荒田浩二 2008/01/20 11:58:05 
   └紀元0年については、理科年表の「ユリウス... SECOND 2008/01/20 15:50:59  (修正6回)
    └続く SECOND 2008/01/21 16:02:27 
     └天文関係では紀元0年を設定しているとは不明... 荒田浩二 2008/01/23 20:25:33 
      └私も、初めてお聞きする事で、できれば・・... SECOND 2008/01/24 05:50:01  (修正1回)

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。