· Text 8726 · w8 · inlagg
Jag har av Anders Sandberg <4104> per brev fått veta att almanackan
i PSSEKR förskjuts före år 1600 och efter år 2000. År före 1600 gör
väl inte så mycket, eftersom Sverige inte började använda den
gregorianska kalendern (som vi har nu) förrän 1753, men år 2000
får vi kanske snart uppleva, om vi har tur.
Jag missade tydligen en plaats som behövde ändras när jag fixade
skottåren på jämna 400-tal till version 1.09 (den som gick ut på
ABC-diskett #26, även om det stod 1.08 i LIB-listan).
Rättelsen, som kan föras in i .BAS-formen av PSSEKR, är så här:
3330 X=År-1
3340 X=MOD(X+X/4-X/100+X/400+VAL(MID¤("033614625035",Mån,1))-
(FNSkott(År) AND Mån>2),7)
Ta bort rad 3350.
Anders har även skrivit om och fogat samman de två funktionerna
FNPralmn och FNAlmn (samt också kastat om ordningen på innehållet i
en del rader av någon anledning), men det tycker jag blir lite
mycket på en gång. Vi kan nöja oss med de följande ändringarna,
som f.ö. inte påverkar programmets funktion.
Det här separerar de två funktionerna bättre:
3440 RETURN X
3540 Dagar=FNAntdag(År,Mån)
Det här gör anropet av FNMån¤ lite klarare:
3360 ; #Nr CHR¤(12) C2¤ " " FNMån¤(Mån) År;
3370 ; #Nr CUR(0,12) "<" FNMån¤(Mån-1) "/" FNMån¤(Mån+1) ">"
3480 DEF FNMån¤(Mån)=MID¤("JanFebMarAprMajJunJulAugSepOktNovDec",
MOD(Mån-1,12)*3+1,3)
Det här gör FNAntdag åtskilligt kortare i fråga om minnesutrymme,
och snabbare (vilket är mitt svar på en av Anders ändringar):
3460 DEF FNAntdag(År,Mån)=28+VAL(MID¤("303232332323",Mån,1))-
(FNSkott(År) AND Mån=2)
Det här tar bort en rätt onödig ON ... GOTO och ett antal rader:
3570 IF FNWinvälj(Nr)=1 THEN CLOSE Nr : Win(Nr,0)=0 : RETURN 0
Ta bort 3580, 3660, 3670.
Ändra versionsnumren på 116 och 120 till 1.11, och gärna det i
slutet av PSSINIT också.
Jag har skickat in PSSEKR.MRG som innehåller dessa ändringar, och
en ny PSSEKR.BAS och squezad PSSEKR.BAC. PSSEKR.MRG kommer att tas
bort om en tid.
PS. Ni har väl inte missat rättelsen av buggen i kalkylatorn?
Det är den som är ver 1.10. Den ingår förstås i PSSEKR.BAS/BAC, men
inte i PSSEKR.MRG.