Als Beispiel (unten) habe ich den Code von Falko, um aus einem Julianischen Tag das Gregorianische Datum zu errechnen, angepasst.
Kennt jemand in PB noch eine Möglichkeit, um mehrere Ergebnisse aus einer Proc zu erhalten (natürlich ohne Globals)?
Code: Alles auswählen
;Original-Code:
Procedure DMY(JD.l)
Global T.b,M.w,J.w
N1 = JD + 32044
N2 = N1 / 146097
N3 = N1 % 146097
N4 = N3 / 36524 - N3 / 146096
N5 = N3 - 36524*N4
N6 = N5 / 1461
N7 = N5 % 1461
N8 = N7 / 365 - N7 / 1460
N9 = N7 - 365*N8
N10 = (111*N9 + 41) / 3395
T = N9-30*N10-(7*(N10 + 1)) / 12 + 1
M1 = N10 + 3
J1 = 400*N2+100*N4+4*N6+N8-4800
M = ((M1 + 11) % 12)+1
J = J1+(M1 / 13)
EndProcedure
DMY(LANG)
Debug T
Debug M
Debug J
;Angepasster Code:
Procedure GregorTag (JulianDay.l,*d,*m,*y)
N1 = JulianDay + 32044
N2 = N1 / 146097
N3 = N1 % 146097
N4 = N3 / 36524 - N3 / 146096
N5 = N3 - 36524*N4
N6 = N5 / 1461
N7 = N5 % 1461
N8 = N7 / 365 - N7 / 1460
N9 = N7 - 365*N8
N10 = (111*N9 + 41) / 3395
PokeW(*d,( N9-30*N10-(7*(N10 + 1)) / 12 + 1 ))
M1 = N10 + 3
J1 = 400*N2+100*N4+4*N6+N8-4800
PokeW(*m, ((M1 + 11) % 12)+1 )
PokeW(*y, J1+(M1 / 13) )
EndProcedure
*d=AllocateMemory(2)
*m=AllocateMemory(2)
*y=AllocateMemory(2)
GregorTag(2453006,*d,*m,*y)
Debug PeekW(*d)
Debug PeekW(*m)
Debug PeekW(*y)
Code: Alles auswählen