10 ' save "BIO.BAS",a '1987.10.25 GB200 Y.MIYAMOTO
20 CONSOLE 0,25:WIDTH 80,25 :color 7,0:CLS
30 DIM TUKI.N(2,12),TUKI.S(2,12),S.WEEK(12) ,D$(30)
40 RESTORE 50
50 FOR I=0 TO 6:READ WEEK$(I):NEXT I : DATA "日","月","火","水","木","金","土"
60 NENGO$(3)="平成":NENGO$(0)="昭和":NENGO$(1)="大正":NENGO$(2)="明治"
70 NENGO(3)=1988:NENGO(0)=1925:NENGO(1)=1911:NENGO(2)=1867
80 DM=VAL(LEFT$(DATE$,2))
90 IF DM>90 THEN C.NEN$="19"+LEFT$(DATE$,2):C.NEN=VAL(C.NEN$)
100 IF DM<=90 THEN C.NEN$="20"+LEFT$(DATE$,2):C.NEN=VAL(C.NEN$)
110 C.TUKI=VAL(MID$(DATE$,4,2)):HI$=RIGHT$(DATE$,2)
120 GOSUB *BIO.HYOU
130 YMD$=RIGHT$(STR$(C.NEN*100+C.TUKI),6)
140 LOCATE 0,23:PRINT STRING$(78,"-");
150 LOCATE 0,24:PRINT USING " & &年&&月";LEFT$(YMD$,4),RIGHT$(YMD$,2);
160 I=6:GOSUB *TUKI.IN:ME=1:gosub *MENU.1
170 cls:end
180 '-
190 *TUKI.IN
200 IF I<1 THEN I=1
210 IF I>6 THEN I=6
220 II=(I\5)*2
230 LOCATE 0,24:PRINT USING " & &年&&月";LEFT$(YMD$,4),RIGHT$(YMD$,2);
240 LOCATE I+II,24:color 0,7:print MID$(YMD$,I,1);:color 7,0:IN$=INPUT$(1)
250 IF IN$=CHR$(13) THEN 300
260 IF IN$=>"0" AND IN$<="9" THEN MID$(YMD$,I,1)=IN$:I=I+1
270 IF IN$=CHR$(28) THEN I=I+1
280 IF IN$=CHR$(29) THEN I=I-1
290 GOTO 200
300 LOCATE 0,24:PRINT USING " & &年&&月";LEFT$(YMD$,4),RIGHT$(YMD$,2);
310 C.NEN$=LEFT$(YMD$,4) :C.TUKI$=RIGHT$(YMD$,2)
320 C.NEN=VAL(C.NEN$):C.TUKI=VAL(C.TUKI$)
330 IF C.TUKI<1 OR C.TUKI>12 THEN BEEP:GOTO *tuki.in
340 RETURN
350 '-
360 '------------
370 *BIO.HYOU
380 CONSOLE 0,25,0,1:WIDTH 80,25
390 LOCATE 70,0:PRINT"Qpon Soft";
400 COLOR 4:LOCATE 27,2:PRINT USING "####年";C.NEN;:PRINT USING "##月";C.TUKI;:PRINT "バイオリズム"
410 LOCATE 46,4 :COLOR 6
420 PRINT "◎=身体 ";:COLOR 5:PRINT "△=感情 ";:COLOR 4:PRINT "◇=知性"
430 LOCATE 4,5 :COLOR 7
440 PRINT "┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓"
450 FOR GI=1 TO 11
460 COLOR 7:LOCATE 4,GI+5
470 PRINT "┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨"
480 NEXT GI
490 COLOR 7:LOCATE 4,17
500 PRINT "┗┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┛"
510 COLOR 1:LOCATE 4,11
520 PRINT "┣┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┿┫"
530 LOCATE 4,18 :COLOR 7
540 PRINT " 5 10 15 20 25 30 "
550 LOCATE 0,23:PRINT STRING$(78,"-");
560 RETURN
570 '--
580 *MENU.1
590 GOSUB *BIO.HYOU
600 '----
610 LOCATE 6,21:PRINT"[<┘] = おわり";
620 LOCATE 6,4:PRINT"氏名 ";:line INPUT NAMAE$
630 LOCATE 6,21:PRINT" ";
640 IF NAMAE$="" THEN RETURN
650 '--
660 NENGO=0 :IN$="":DT$="":UMARE$=" " :P=1
670 GOSUB *YMD
680 UMARE=VAL(UMARE$)
690 ME.A=2:GRF.ME=1
691 DMY.Y=Y:DMY.X=X:DMY.IN$=IN$
692 GOSUB *BIO.NEN
693 IF TUKI<1 OR TUKI>12 THEN 690
694 IF HI<1 OR HI>31 THEN 690
695 GOSUB *BIO.KEISAN
696 GOSUB *BIO.GRF
710 locate 0,24:print "ok=[<┘]";:yn$=input$(1)
770 GOTO *MENU.1
780 '--
790 *YMD
800 IF NENGO>3 THEN NENGO=0
810 IF NENGO<0 THEN NENGO=3
820 IF P<1 THEN P=1
830 IF P>6 THEN P=6
840 PP=((P-1)\2)*2
850 LOCATE 4,24:PRINT"生年月日 ";NENGO$(NENGO);
860 PRINT USING "&&年&&月&&日";MID$(UMARE$,1,2),MID$(UMARE$,3,2),MID$(UMARE$,5,2);
870 LOCATE 46,24:PRINT"[↓]=年号変更";
880 LOCATE 0,23: PRINT STRING$(78,"-");
890 LOCATE 17+P+PP,24:color 0,7:print MID$(UMARE$,P,1);:color 7,0:A$=INPUT$(1)
900 IF A$=CHR$(30) THEN NENGO=NENGO-1
910 IF A$=CHR$(31) THEN NENGO=NENGO+1
920 IF A$=CHR$(28) THEN P=P+1
930 IF A$=CHR$(29) THEN P=P-1
940 IF A$=>"0" AND A$<="9" THEN MID$(UMARE$,P,1)=A$:P=P+1
950 IF A$=" " THEN MID$( UMARE$,P,1)=A$:P=P+1
960 IF A$<>CHR$(13) THEN 800
970 'PRINT USING "&&年&&月&&日";MID$(UMARE$,1,2),MID$(UMARE$,3,2),MID$(UMARE$,5,2);
980 return
990 '-------
1000 *BIO.GRF
1010 GOSUB *BIO.HYOU
1020 COLOR 7,0:LOCATE 6,4:PRINT "氏名 ";:COLOR 5:PRINT NAMAE$ ;" ";
1030 LOCATE 10,20:PRINT USING " ####年##月##日 &&";U.NEN,TUKI,HI,WEEK$(U.WEEK);
1035 PRINT "曜日 生";
1040 TOTAL.HI=(T.DAY+ TUKI.S(0,C.TUKI-1)+1)-(U.DAY+TUKI.S(1,TUKI-1)+HI)
1050 COLOR 4,0:LOCATE 40,20:PRINT "月初現在生存日数";
1060 COLOR 3,0:PRINT USING " ##,###日";TOTAL.HI
1070 FOR GI=1 TO TUKI.N(0,C.TUKI)
1080 TOTAL.HI=(T.DAY+ TUKI.S(0,C.TUKI-1)+GI )-(U.DAY+ TUKI.S(1,TUKI-1)+HI)
1090 GOSUB *BIO.GRF.1
1100 NEXT GI
1110 COLOR 7,0:RETURN
1120 '---------------
1130 *BIO.GRF.1
1140 BIO.HI=TOTAL.HI:IF BIO.HI>32000 THEN BIO.HI=TOTAL.HI-(33*28*23)
1150 TISEI = COS((( BIO.HI MOD 33)/33)*6.28+1.57)*6 +4
1160 KANZYO= COS((( BIO.HI MOD 28)/28)*6.28+1.57)*6 +4
1170 SINTAI= COS((( BIO.HI MOD 23)/23)*6.28+1.57)*6 +4
1180 COLOR 4,0:LOCATE GI*2+4,FIX(TISEI )+7:PRINT "◇";
1190 COLOR 5,0:LOCATE GI*2+4,FIX(KANZYO )+7:PRINT "△";
1200 COLOR 6,0:LOCATE GI*2+4,FIX(SINTAI )+7:PRINT "◎";
1210 RETURN
1220 '---------------
1230 '*BIO.SUB
1240 'DMY.Y=Y:DMY.X=X:DMY.IN$=IN$
1250 'GOSUB *BIO.NEN
1260 'GOSUB *BIO.KEISAN
1270 'GOSUB *BIO.GRF
1280 'return
1290 '--
1300 *BIO.NEN
1310 U.NEN$=LEFT$(UMARE$,2) :TUKI$=MID$(UMARE$,3,2):HI$=RIGHT$(UMARE$,2)
1320 U.NEN=VAL(RIGHT$(U.NEN$,2 ))+NENGO(NENGO)
1330 TUKI=VAL(TUKI$):HI=VAL(HI$):C.NEN=VAL(C.NEN$)
1340 IF C.NEN<100 THEN C.NEN=C.NEN+1925
1370 U.NEN$=STR$(U.NEN)+"年"
1380 RETURN
1390 '----------
1400 *BIO.KEISAN
1410 RESTORE 1430
1420 FOR BI=1 TO 12:READ TUKI.N(0,BI):TUKI.N (1,BI)=TUKI.N(0,BI):NEXT BI
1430 DATA 31,28,31,30,31,30,31,31,30,31,30,31
1440 '--------
1450 URU=(C.NEN-1)\4-(C.NEN-1)\100+(C.NEN-1)\400 '0~年初
1460 U.URU=(U.NEN-1)\4-(U.NEN-1)\100+(U.NEN-1)\400 '0~生年初
1470 T.DAY=(C.NEN-1)*365+URU+1 '0~年初日数
1480 U.DAY=(U.NEN-1)*365+U.URU+1 '0~生年初日数
1490 S.WEEK(0)=T.DAY-INT(T.DAY / 7 )*7 '年初曜日
1500 U.WEEK(0)=U.DAY-INT(U.DAY / 7 )*7 '生年初曜日
1510 URU.1=(C.NEN)\4-(C.NEN)\100+(C.NEN)\400 '0~年末
1520 U.URU.1=(U.NEN)\4-(U.NEN)\100+(U.NEN)\400 '0~生年末
1530 IF URU.1>URU THEN TUKI.N(0,2)=29 ELSE TUKI.N(0,2)=28 '2月日数
1540 IF U.URU.1>U.URU THEN TUKI.N(1,2)=29 ELSE TUKI.N(1,2)=28 '生年2月日数
1550 '
1560 '----------
1570 FOR BI=1 TO 12:TUKI.S(0,BI)=TUKI.S(0,BI-1)+TUKI.N(0,BI):NEXT BI
1580 FOR BI=1 TO 12:TUKI.S(1,BI)=TUKI.S(1,BI-1)+TUKI.N(1,BI):NEXT BI
1590 FOR BI=1 TO 12:S.WEEK(BI)=(S.WEEK(0)+TUKI.S(0,BI-1)) MOD 7 :NEXT BI
1600 U.WEEK = (U.WEEK(0)+TUKI.S(1,TUKI-1)+HI-1) MOD 7
1610 RETURN
|