1 REM Ins{nd av Lennart Anderson <6582> 1987-01-17 15.40.37 (SEND)
10 EXTEND : FLOAT
20 REM
30 REM ** BIORYTM-KURVOR **
40 REM ** version 1.3. Jan 1987 **
50 REM ** Lennart Anderson **
60 REM * testad p} 800M *
70 REM
80 REM ** Fysiska cykeln markeras med F **
90 REM ** K{nslom{ssiga cykeln markeras med K **
100 REM ** Intellektuella cykeln markeras med I **
110 REM
120 REM ** Version 3 har tillf|rt ber{kning |ver sekelgr{nser samt viss
130 REM ** enkel felhantering i samband med inmatning
140 DIM T(13) : DIM P$(80)
150 P=6.28318
160 Z=FNInmatning
170 PRINT CHR$(12)
180 D4=D2 : M4=M2 : Y4=Y2
190 FOR I=1 TO 12
200 READ T(I)
210 NEXT I
220 DATA 31,28,31,30,31,30,31,31,30,31,30,31
230 FOR I=1 TO 7
240 READ D$(I)
250 NEXT I
260 DATA "M}ndag","Tisdag","Onsdag","Torsdag","Fredag","L|rdag","S|ndag"
270 L{ngd=(77-LEN(Namn$))/2
280 PRINT #Fil
290 IF Fil=2 THEN PRINT #Fil STRING$(L{ngd,42) " " Namn$ " " STRING$(L{ngd,42)
300 PRINT #Fil
310 PRINT #Fil "Datum" TAB(18) "NER" TAB(47) "NOLL" TAB(77) "UPP"
320 PRINT #Fil STRING$(79,45)
330 WHILE Dagar>0
340 Z=FNR{kna
350 Z=FNSkriv
360 Dagar=Dagar-1
370 WEND
380 PRINT #Fil
390 PRINT #Fil STRING$(79,45)
400 END
1000 DEF FNInmatning
1010 PRINT CHR$(12)
1020 PRINT CUR(3,0) "BIORYTM-KURVOR"
1030 Fel2$="Skall vara namn "
1040 ON ERROR GOTO 1390
1050 PRINT CUR(5,0) "Ange Ditt namn: "; : INPUT Namn$
1060 Fel1$="Felaktigt tal "
1070 ON ERROR GOTO 1330
1080 PRINT CUR(7,0) "Ange Ditt f|delsedatum (]]]],MM,DD) ";
1090 INPUT Y1,M1,D1
1100 ]r1=INT(Y1/100)
1110 Dag1=FNDagfaktor(Y1,M1,D1)
1120 ON ERROR GOTO 1350
1130 PRINT CUR(9,0) "Ange startdatum f|r bio-kurvan (]]]],MM,DD) ";
1140 INPUT Y2,M2,D2
1150 Fel3$="Du m}ste vara f|dd f|rst "
1160 ]r2=INT(Y2/100)
1170 Dag2=FNDagfaktor(Y2,M2,D2)
1180 IF Dag22 THEN Fil=0 ELSE Fil=2
1310 IF VAL(Fil$)=2 THEN OPEN "PR:VSA36B72.5" AS FILE 2 ! <<<<<<<<<<<<<<<<<<<
1320 RETURN 0
1330 Z$=FNFel$(Fel1$)
1340 RESUME 1080
1350 Z$=FNFel$(Fel1$)
1360 RESUME 1130
1370 Z$=FNFel$(Fel1$)
1380 RESUME 1210
1390 Z$=FNFel$(Fel2$)
1400 RESUME 1050
1410 FNEND
1420 DEF FNR{kna
1430 F1=Antal/23-INT(Antal/23)
1440 X=F1*P
1450 F=(SIN(X)+1)*28+20
1460 F1=Antal/28-INT(Antal/28)
1470 X=F1*P
1480 K=(SIN(X)+1)*28+20
1490 F1=Antal/33-INT(Antal/33)
1500 X=F1*P
1510 I=(SIN(X)+1)*28+20
1520 FOR J=0 TO 79
1530 P$(J)=" "
1540 NEXT J
1550 P$(48)="."
1560 P$(F)="F"
1570 P$(K)="K"
1580 P$(I)="I"
1590 Dagnr=FNVeckodag(Dag2)
1600 RETURN 0
1610 FNEND
1620 DEF FNSkriv
1630 Y$=NUM$(Y4) : IF LEN(Y$)=1 Y$="0"+Y$
1640 IF LEN(Y$)>2 Y$=RIGHT$(Y$,2)
1650 M$=NUM$(M4) : IF LEN(M$)=1 M$="0"+M$
1660 D$=NUM$(D4) : IF LEN(D$)=1 D$="0"+D$
1670 S$=Y$+M$+D$
1680 Dag$=D$(Dagnr)
1690 PRINT #Fil TAB(1) S$;TAB(9) Dag$;TAB(19);
1700 FOR J=19 TO 79
1710 PRINT #Fil;P$(J);
1720 NEXT J
1730 PRINT
1740 Antal=Antal+1 : D4=D4+1
1750 Dag2=Dag2+1
1760 IF M4<>2 THEN 1800
1770 IF D4<>29 THEN 1800
1780 IF INT(Y4/4)-Y4/4<>0 THEN 1800
1790 RETURN 0
1800 IF D4<=T(M4) RETURN 0
1810 M4=M4+1
1820 D4=1
1830 IF M4>12 THEN 1850
1840 RETURN 0
1850 M4=1
1860 Y4=Y4+1
1870 RETURN 0
1880 FNEND
1890 DEF FNDagfaktor(Y,M,D)
1900 Y1=INT(Y/100)
1910 Y2=Y-100*Y1
1920 N=0
1930 IF M>2 THEN 2020
1940 N=2
1950 IF Y2=0 THEN 2000
1960 R=Y2-4*INT(Y2/4)
1970 IF R<>0 THEN 2020
1980 N=1
1990 GOTO 2020
2000 R=Y1-4*INT(Y1/4)
2010 IF R=0 THEN N=1
2020 C=INT(365.25*Y2)+INT(30.56*M)+N+D
2030 RETURN C
2040 FNEND
2050 DEF FNVeckodag(Dag)
2060 Dagnr=3+Dag-7*INT((Dag+2)/7)
2070 RETURN Dagnr
2080 FNEND
2090 DEF FNFel$(Fel$)
2100 PRINT CHR$(7);CUR(23,5) Fel$; : GET In$
2110 IF ASCII(In$)=24 THEN PRINT CUR(23,5) SPACE$(40);
2120 RETURN ""
2130 FNEND