1000 '************************************************************************* 1010 '    センター試験までの時間表示プログラム 1020 ' '92 Jun.4 remake '97 jan.17 1030 ' by H.Miyamoto 1040 'SAVE "CENTER.BAS",A 1050 '************************************************************************* 1060 '=========メイン========================================================== 1070 '~~~~~~~~ ショキセッテイ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1080 CLEAR 1090 CONSOLE 0,24,0,1:WIDTH 40 1100 DIM MONTH(13) 1110 TI$="10:00:00":DA$="97/01/19" 'センター試験の日時 1120 YE0$=MID$(DA$,1,2):MO0$=MID$(DA$,4,2):DA0$=RIGHT$(DA$,2) 1130 HO0$=MID$(TI$,1,2):MI0$=MID$(TI$,4,2):SE0$=RIGHT$(TI$,2) 1140 GOSUB *DATSET 1150 FOR I=1 TO 12 1160 MONTH(I)=31 1170 NEXT I 1180 IF LEAP=1 THEN MONTH(2)=29 ELSE MONTH(2)=28 1190 MONTH(4)=30 1200 MONTH(6)=30 1210 MONTH(9)=30 1220 MONTH(11)=30 1230 L=0:L0=0 1240 GOSUB *FORM 1250 K=0 1260 Z$=INKEY$ 1270 FOR I=1 TO 3 1280 FLAG(I)=0 1290 NEXT I 1300 TIM$=TIME$ 1310 GOSUB *TIMSET:GOSUB *CULSEC:GOSUB *CULMIN:GOSUB *CULHOU 1320 IF K=0 THEN GOSUB *DAT:GOSUB *RANDOM 1330 IF SEC MOD 4 = 0 AND SE<>SEC THEN L=INT(RND*8)*(-1)^INT(RND*10):SE=SEC 1340 IF L<>L0 THEN L0=L:GOSUB *FORM 1350 LOCATE 5,12+L:COLOR COL:PRINT SUMDATE:GOSUB *COL 1360 LOCATE 13,12+L:COLOR COL:PRINT HOU:GOSUB *COL 1370 LOCATE 22,12+L:COLOR COL:PRINT MIN:GOSUB *COL 1380 LOCATE 29,12+L:COLOR COL:PRINT SEC:GOSUB *COL 1390 K=1 1400 IF Z$="" GOTO 1260 1410 CONSOLE 0,24,1,1:WIDTH 80:COLOR 7 1420 END 1430 '=========サブルーチン==================================================== 1440 *FORM '書式表示 1450 CLS:COLOR 7 1460 LOCATE 1,8+L:PRINT"センター試験まで" 1470 LOCATE 3,10+L:PRINT"あと" 1480 LOCATE 5,12+L:PRINT" 日 時間 分 秒" 1490 LOCATE 31,14+L:PRINT"です!" 1500 RETURN 1510 *DAT '年内 or 翌年 判定 1520 IF YE1$=YE0$ THEN SUMDATE=VAL(DA0$)-VAL(DA1$) ELSE GOSUB *CULDAT 1530 RETURN 1540 *DATSET '年月日設定 1550 YE1$=MID$(DATE$,1,2):MO1$=MID$(DATE$,4,2):DA1$=RIGHT$(DATE$,2) '現在の月日 1560 IF VAL(YE1$)\4=0 THEN LEAP=1 ELSE LEAP=0 1570 SUMDATE=VAL(DA0$) 1580 RETURN 1590 *TIMSET 1600 HO1$=MID$(TIM$,1,2):MI1$=MID$(TIM$,4,2):SE1$=RIGHT$(TIM$,2) '現在の時間 1610 MON=VAL(MO1$):DAT=VAL(DA1$) 1620 RETURN 1630 *CULDAT '日数計算 1640 FOR I=MON TO 12 1650 SUMDATE=SUMDATE+MONTH(I) 1660 NEXT I 1670 SUMDATE=SUMDATE-DAT-FLUG(1) 1680 IF HOU=0 THEN SUMDATE=SUMDATE+1 1690 RETURN 1700 *CULHOU '時間計算 1710 HOU=VAL(HO0$)-VAL(HO1$)-FLUG(2) 1720 IF HOU<0 THEN HOU=HOU+24:FLUG(1)=1 1730 IF MIN=0 THEN HOU=HOU+1 1740 RETURN 1750 *CULMIN '分計算 1760 MIN=VAL(MI0$)-VAL(MI1$)-FLUG(3) 1770 IF MIN<0 THEN MIN=MIN+60:FLUG(2)=1 1780 IF SEC=0 THEN MIN=MIN+1 1790 RETURN 1800 *CULSEC '秒計算 1810 SEC=VAL(SE0$)-VAL(SE1$) 1820 IF SEC<0 THEN SEC=SEC+60:FLUG(3)=1 1830 RETURN 1840 *COL '色変更 1850 FOR W=1 TO 1:NEXT:COL=INT(RND*5)+1:S=SEC 1860 RETURN 1870 *RANDOM '乱数発生 1880 TT=(HOU-MIN)*SEC 1890 RANDOMIZE TT 1900 RETURN