|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 96768 (0x17a00) Types: TextFile Names: »datodagtx «
└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system └─⟦a957ba283⟧ └─⟦this⟧ »datodagtx «
datodag=algol external procedure datodag(år,måned,dag,uge,ugedag,ugeår,årdag); value år,måned,dag; integer år,måned,dag,uge,ugedag,ugeår,årdag; <* Ugedage: ======== 1: mandag, 2: tirsdag, . . ., 7: søndag 880223 ho: Original version. 900703 ho: Fejl omkring årdag i uge 53 og først i år efter skudår rettet. *> begin integer i,md,åd,før_første_januar; integer array mdlgd(1:12); for i:=1 step 1 until 12 do mdlgd(i):=case i of (31,28,31,30,31,30,31,31,30,31,30,31); ugeår:=år; md:=måned; årdag:=0; repeat if ugeår mod 4=0 and (ugeår mod 100 <>0 or ugeår mod 400 =0) then mdlgd(2):=29 else mdlgd(2):=28; åd:=dag; for i:=md-1 step -1 until 1 do åd:=åd+mdlgd(i); if årdag=0 then årdag:=åd; før_første_januar:=((ugeår-1)//4 -(ugeår-1)//100 +(ugeår-1)//400 +ugeår-1) mod 7; ugedag:=(før_første_januar+åd-1) mod 7 +1; uge:=(før_første_januar+åd-1)//7; if før_første_januar<4 then uge:=uge+1; if uge=53 and ugedag<4 then begin uge:=1; ugeår:=ugeår+1; end; if uge=0 then begin ugeår:=ugeår-1; md:=13; end; until uge<>0; end procedure datodag; end end ▶EOF◀