OVH Cloud OVH Cloud

Problème de langage qb->vb ???

12 réponses
Avatar
LE TROLL
Bonjour,

Ça entre dans les attributions du forum le
"basic", QB, ici, j'ai ça:

6500 '....................MODULE "PRESUB"
6505 '
6510 If TJ < 2299226.5 Then K = 1
6515 DJ = TJ - JJ0: If K = 1 Then DJ = DJ - DN
6520 If TJ < 2299226.5 And A / 4 = Fix(A / 4) Then
F = 1: GoTo 6545
6525 If TJ >= 2299226.5 And A = 1582 And K = 0
Then DJ = DJ + 10
6530 If A / 4 = Fix(A / 4) Then F = 1
6535 If K = 1 Then GoTo 6545
6540 If A / 100 = Fix(A / 100) And A / 400 <>
Fix(A / 400) Then F = 0
6545 If DJ > 58 Then DJ = DJ - F
6550 Data 333, DECEMBRE, 303, NOVEMBRE, 272,
OCTOBRE
6555 Data 242, SEPTEMBRE, 211, AOUT, 180, JUILLET
6560 Data 150, JUIN, 119, MAI, 89, AVRIL, 58,
mars, 1000, IXE
6565 READ XK, md
6570 If XK = 1000 Then GoTo 6585
6575 If Fix(DJ - 0.5) >= XK Then GoTo 6595
6580 GoTo 6565
6585 If DJ > 30 Then XK = 30: md = "FEVRIER": GoTo
6595
6590 XK = -1: md = "JANVIER"
6595 J = DJ - XK
6600 If DJ > 333 And J >= 31.5 Then A = A + 1: J =
J - 31: md = "JANVIER"
6605 J0 = Fix(J): HH = (J - J0) * 24: H = Fix(HH):
MM = (HH - H) * 60
6610 MN = Fix(MM): S = Fix((MM - MN) * 60): H = H
+ 12
6615 If H >= 24 Then H = H - 24: J0 = J0 + 1
6620 RESTORE: Return
-------------------

Mon problème est ici:

6550 Data 333, DECEMBRE, 303, NOVEMBRE, 272,
OCTOBRE
6555 Data 242, SEPTEMBRE, 211, AOUT, 180, JUILLET
6560 Data 150, JUIN, 119, MAI, 89, AVRIL, 58,
mars, 1000, IXE
6565 READ XK, md

VB6 ne reconnaît pas "READ" et cette forme "data"
(ce doit être ce qu'on appelle la compatibilité
ascendante ?).
J'ai souvenir dans un basic BAL de Prolog-Bull
d'une instruction read, qui faisait comme un
buffer, une variable qui se lisait en séquence,
puis qui se vidait (gain de place), et que pour
réutiliser, il fallait recharger par Read, mais je
ne me souviens plus...

Je serai tenté d'écrire par exemple:

If md = "DECEMBRE" then XK = 333

Mais je ne suis sûr de rien!

Donc, svp, comment mettre ça en terme
intelligibles pour VB ???



--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------

2 réponses

1 2
Avatar
Patrice Henrio
Patrice Henrio a écrit :
LE TROLL a écrit :
Oh là là, merci Patrice, quel travail espérons que ça marche,
c'est d'autant plus pénible que le mec écrit comme un cochon, il saut
à la ligne seulement quand il a le temps, collant tout abec ":"

Comment on l'appelle ?

Call Presub(TJ, JJ0, DN, A, J) ': GoSub 6500

Ça, ça marche pas, je ne suis pas doué en passage de paramètres...

Sinon, j'ai collé ça:

Sub Presub(TJ As Double, JJ0 As Double, DN As Double, A As Long, J As
Double)
Dim K As Long, DJ As Double, F As Long, J0 As Long
Dim data As String, donnees() As String, I As Long, XK As Long, MDF
As String
DJ = TJ - JJ0
If TJ < 2299226.5 Then
DJ = DJ - DN
'attention ici visiblement les années bissextiles ne sont pas
traitées de la même façon que dans la branche else
If (A Mod 4 = 0) Then F = 1
Else
If A = 1582 Then DJ = DJ + 10
'Bissextile si multiple de 400 ou multiple de 4 et non multiple
de 100
If (A Mod 400 = 0) Or ((A Mod 4) = 0 And (A Mod 100) <> 0) Then
F = 1 Else F = 0
End If
If DJ > 58 Then DJ = DJ - F
'data = "333, DECEMBRE, 303, NOVEMBRE, 272, OCTOBRE, 242,
SEPTEMBRE, " 211, AOUT, 180, JUILLET, 150, JUIN, 119, MAI, 89, AVRIL,
58, mars, 1000, IXE ""
donnees = Split(data, ", ")
I = 0
Do
XK = donnees(I)
I = I + 1
md = donnees(I)
I = I + 1
If (XK = 1000) Then
If DJ > 30 Then
XK = 30
md = "FEVRIER"
Else
XK = -1
md = "JANVIER"
End If
Exit Do
End If
If (Fix(DJ - 0.5) >= XK) Then Exit Do
Loop
J = DJ - XK
If (DJ > 333) And (J >= 31.5) Then
A = A + 1
J = J - 31
md = "JANVIER"
End If
J0 = Fix(J)
HH = (J - J0) * 24
H = Fix(HH)
MM = (HH - H) * 60
MN = Fix(MM)
S = Fix(MM - MN) * 60
H = H + 12
If H >= 24 Then
H = H - 24
J0 = J0 + 1
End If
End Sub



------------
J'ai inhibé les commande fichier que j'avais mis pour faire un fichier
sous dos avec GwBasic je crois, qui ensuite est embarqué (ben voui,
c'est mieux que rien :o)
qui donne au total :
------------



Sub saisons()
'MODULE "PRSAISON"
Dim B, D, E, J, L, M, N, O, P, T, V
Dim ma As String
Dim ya(12) As String
Dim za(12) As String
Dim ja As String
'
15 A = YYYY 'A = 2002
' Color 7, 1: Cls
' Dim numfic As Integer
' numfic = FreeFile
' Open "Saisons.txt" For Output As numfic

20 'A = A + 1
PI = 3.14159265
25 RA1 = PI / 180: RA2 = PI / 12:
30 KK = 2
35 M = 1: J = 1: H = 0
40 GoSub 500: LS1 = LS: JJ2 = JJ: JJ0 = JJ
45 JJ1 = 1671383#: GoSub 6700: PRL0 = PRL
50 If KK = 2 Then PRL = 0: PRL0 = 0
55 KC = Fix((LS1 - PRL) / 30) + 4: If KC > 12 Then KC = KC - 12
60 L0 = 30 * (KC - 3): KC0 = KC
65
70
75 za(1) = "": za(2) = "": za(3) = ""
80 za(4) = "": za(5) = "": za(6) = ""
85 za(7) = "": za(8) = "": za(9) = ""
90 za(10) = "": za(11) = ""
95 za(12) = "": ya(3) = " PRINTEMPS"
100 ya(6) = " ETE ": ya(9) = " AUTOMNE ": ya(12) = " HIVER "
105
110 GoSub 170: GoSub 515: LS1 = LS
115 GoSub 170: GoSub 515: LS1 = LS
120 JJ = JJ - 0.5: TJ = JJ
Call Presub(TJ, JJ0, DN, A, J) ': GoSub 6500

125 If KC = 3 Then
Print A; za(KC); J0; ma; ya(KC)
'Print #(numfic), A; za(KC); J0; ma; ya(KC)
End If

If KC = 6 Then
Print A; za(KC); J0; ma; ya(KC)
'Print #(numfic), A; za(KC); J0; ma; ya(KC)
End If

If KC = 9 Then
Print A; za(KC); J0; ma; ya(KC)
'Print #(numfic), A; za(KC); J0; ma; ya(KC)
End If

If KC = 12 Then
Print A; za(KC); J0; ma; ya(KC)
'Print #(numfic), A; za(KC); J0; ma; ya(KC)
End If
130

135 LS = L0: JJ = JJ + 0.5: L0 = L0 + 30: KC = KC + 1: K = 0
140 If L0 >= 360 Then L0 = L0 - 360
145 If KC > 12 Then KC = KC - 12
150 If KC = KC0 Then GoTo 165
155 If KK = 1 Then PRL = PRL0 + KC * 0.00012
160 GoTo 110

'-----------------------
165 'If A < 2051 Then GoTo 20
'If A > 2050 Then
' Close numfic
' End
' End If
Exit Sub
'-----------------------

170 JJ = JJ + 1: H = 0: GoSub 515: LS2 = LS
175 If LS2 < LS1 Then LS2 = LS2 + 360
180 DLJ = LS2 - LS1: DDJ = (L0 + PRL - LS1) / DLJ
185 If DDJ < -100 Then DDJ = DDJ + 360 / DLJ
190 JJ = JJ - 1 + DDJ
195 Return

500 '....................MODULE "SOL"
505 '
510 GoSub 6000: JJ = JJ - DN
515 BJ = JJ - 2451545#
520 TJ = Fix(BJ - HJ) / 36525#
525 T = BJ / 36525#
530 If A >= 1900 Then VL = -0.2837 * T - 0.248: GoTo 545
535 VL = -0.00008304245 * T ^ 4 - 0.005673214 * T ^ 3 - 0.0005050719 *
T ^ 2
540 VL = VL - 0.259827 * T - 0.248274
545 Lo = LO0 - VL * KEPH
550 LSM = 280.4659 + 36000.76953 * T + 0.0003025 * T ^ 2
555 BK = LSM: GoSub 5000: LSM = BK
560 PS = 282.9405 + 1.72009 * T + 0.0004628 * T ^ 2 + 0.00000033 * T ^ 3
565 BK = PS: GoSub 5000: PS = BK
570 ES = 0.016709114 - 0.000042052 * T - 0.000000126 * T ^ 2
575 MS = LSM - PS: MR = MS * RA1: E = ES
580 GoSub 5050: VS = V / RA1
585 LS = PS + VS: BK = LS: GoSub 5000: LS = BK: AXS = 1.00000023
590 XS = AXS * (1 - ES ^ 2) / (1 + ES * Cos(V))
595 TX = BJ / 365242.2
600 OB = 23.43928 - 0.1301403 * TX - 0.00014163 * TX ^ 2 + 0.00050833
* TX ^ 3
605 OBR = OB * RA1
610 TS = 280.4603 + 36000.7697 * TJ + 0.00038708 * TJ ^ 2
615 BK = TS: GoSub 5000: TS0 = BK
620 TS = (H - 12) * 36624.22 / 36524.22 + TS0 / 15 + Lo / 15
625 If TS < 0 Then TS = TS + 24
630 If TS > 24 Then TS = TS - 24
635 LL = 218.31617 + 481267.88088 * T - 0.00112767 * T ^ 2 +
0.000001888 * T ^ 3
640 BK = LL: GoSub 5000: LL = BK
645 NL = 125.043347 - 1934.137846 * T + 0.00208444 * T ^ 2 +
0.000002222 * T ^ 3
650 BK = NL: GoSub 5000: NL = BK
655 PL = 83.353248 + 4069.013343 * T - 0.0103625 * T ^ 2 - 0.0000125 *
T ^ 3
660 BK = PL: GoSub 5000: PL = BK
665 r = (LL - LSM) * RA1: D = (LL - NL) * RA1: G = (LL - PL) * RA1: W
= MR
670 NU = -17.2327 * Sin(NL * RA1) / 3600 - 1.2729 * Sin(LSM * RA1 * 2)
/ 3600
675 NU = NU + 0.2088 * Sin(2 * NL * RA1) / 3600 - 0.2037 * Sin(LL * 2
* RA1) / 3600
680 NOB = 9.21 * Cos(NL * RA1) / 3600 + 0.5522 * Cos(LSM * RA1 * 2) /
3600
685 OB = OB + NOB: OBR = OB * RA1
690 TS = TS + NU * Cos(OBR) / 15: SS = 0.266567 / XS
695 ASO = -20.496 * (1 + ES * Cos(V)) / 3600
700 LS = PS + VS + NU + ASO + 0.0018 * Sin(r): BK = LS: GoSub 5000
705 LS = Fix(BK * 10000) / 10000: LL = Fix(LL * 1000) / 1000
710 x = TS: GoSub 5100
715 Return

4990 '....................MODULE "RED"
4995 '
5000 '....................MODULE "REDCAD"
5005 IK = Fix(BK / 360): BK = BK - IK * 360: If BK < 0 Then BK = BK + 360
5010 Return
5050 '....................MODULE "ANOMAL"
5055 U = MR
5060 U1 = MR + E * Sin(U): If Abs(U - U1) < 0.000001 Then GoTo 5070
5065 U = U1: GoTo 5060
5070 TV = Sqr((1 + E) / (1 - E)) * Tan(U / 2)
5075 V = Atn(TV) * 2: If V < 0 Then V = V + PI * 2
5080 Return
5100 '....................MODULE "REDSEX"
5105 If x < 0 Then x = -x: Y = -1 Else Y = 1
5110 X1 = Fix(x): X2 = Fix((x - X1) * 60): X3 = Fix((x - X1 - X2 / 60)
* 36000!) / 10
5115 Return
5200 '....................MODULE "REDHEUR"
5205 J0 = Fix(J): HH = (J - J0) * 24: H = Fix(HH): MM = (HH - H) * 60
5210 MN = Fix(MM): S = Fix((MM - MN) * 60): H = H + 12 - DH
5215 If H >= 24 Then H = H - 24: J0 = J0 + 1
5220 H = H - 12: If H < 0 Then H = H + 24: J0 = J0 - 1
5225 Return

6000 '....................MODULE "JULIEN"
6005 '
6010 C = A Mod 4: B = A + 4712: N = B * 365 + Fix((B + 3) / 4)
6015 N0 = N: DN = 0: If C = 0 Then F = 1: FJ = 1 Else F = 0: FJ = 0
6020 If A > 1582 Then DN = 10
6025 If A = 1582 And M = 12 And J > 19 Then DN = 10
6030 If A >= 1700 Then GoTo 6035 Else GoTo 6040
6035 DM = -Fix((A - 1) / 100) + 12 + Fix((A - 1) / 400): N0 = N
6040 If A / 400 <> Fix(A / 400) And A / 100 = Fix(A / 100) Then F = 0
6045 DN = DN - DM
6050 If M <= 8 Then N = N + (M - 1) * 30 + Fix(M / 2)
6055 If M > 8 Then N = N + (M - 1) * 30 + Fix((M - 1) / 2) + 1
6060 If M >= 3 And F = 1 Then N = N - 1
6065 If M >= 3 And F = 0 Then N = N - 2 + FJ: DN = DN + FJ
6070 JJ = N + J - 1.5: HJ = H / 24: JJ = JJ + HJ
6075 JE = Fix(JJ + 0.5) - N0 + 1: JE = JE Mod 365
6080 If JJ <= 2299236# Then GoTo 6090
6085 If JJ > 2299236# And A = 1582 Then JE = JE - 10
6090 Return

6100 '....................MODULE "JOUR"
6105 '
6110 Q = Fix(JJ) - Fix(JJ / 7) * 7 + 2
6115 If JJ - Fix(JJ) >= 0.5 Then Q = Q + 1
6120 If Q > 7 Then Q = Q - 7
6125 If Q = 1 Then ja = "DIMANCHE"
6130 If Q = 2 Then ja = "LUNDI"
6135 If Q = 3 Then ja = "MARDI"
6140 If Q = 4 Then ja = "MERCREDI"
6145 If Q = 5 Then ja = "JEUDI"
6150 If Q = 6 Then ja = "VENDREDI"
6155 If Q = 7 Then ja = "SAMEDI"
6160 Return
End Sub


Sub Presub(TJ As Double, JJ0 As Double, DN As Double, A As Long, J As
Double)
Dim K As Long, DJ As Double, F As Long, J0 As Long
Dim data As String, donnees() As String, I As Long, XK As Long, MDF
As String
DJ = TJ - JJ0
If TJ < 2299226.5 Then
DJ = DJ - DN
'attention ici visiblement les années bissextiles ne sont pas
traitées de la même façon que dans la branche else
If (A Mod 4 = 0) Then F = 1
Else
If A = 1582 Then DJ = DJ + 10
'Bissextile si multiple de 400 ou multiple de 4 et non multiple
de 100
If (A Mod 400 = 0) Or ((A Mod 4) = 0 And (A Mod 100) <> 0) Then
F = 1 Else F = 0
End If
If DJ > 58 Then DJ = DJ - F
'data = "333, DECEMBRE, 303, NOVEMBRE, 272, OCTOBRE, 242,
SEPTEMBRE, " 211, AOUT, 180, JUILLET, 150, JUIN, 119, MAI, 89, AVRIL,
58, mars, 1000, IXE ""
donnees = Split(data, ", ")
I = 0
Do
XK = donnees(I)
I = I + 1
md = donnees(I)
I = I + 1
If (XK = 1000) Then
If DJ > 30 Then
XK = 30
md = "FEVRIER"
Else
XK = -1
md = "JANVIER"
End If
Exit Do
End If
If (Fix(DJ - 0.5) >= XK) Then Exit Do
Loop
J = DJ - XK
If (DJ > 333) And (J >= 31.5) Then
A = A + 1
J = J - 31
md = "JANVIER"
End If
J0 = Fix(J)
HH = (J - J0) * 24
H = Fix(HH)
MM = (HH - H) * 60
MN = Fix(MM)
S = Fix(MM - MN) * 60
H = H + 12
If H >= 24 Then
H = H - 24
J0 = J0 + 1
End If
End Sub





où puis-je trouver ton source qbasic

Il y a un truc bizarre aux ligne 110 et 115
gosub 170:gosub 515: LS1=LS

en 170 on trouve
gosub 515

avant on a un gosub 500 (ligne 40)
en 500
gosub 6000: JJ=JJ-DN
puis on passe à la ligne 515


En traçant le programme avec la valeur A 02

ligne 40 ---> gosub500 --->gosub 6000
on s'aperçois qu'à la ligne 545, la variable LO0 n'est jamais initialisée.


Même ligne 545, KEPH n'est pas initialisée
Avatar
LE TROLL
Ça y est, j'ai envoyé, à laposte... 5,25 Mo, tu as
tout, toutes les sources, la doc pour les saisons,
les compilateur pour tester et comprendre +
vite...

Si c'est trop gros, je mettrais en téléchargement
par ftp...

Oui, j'ai vu ce que tu écris, c'est assez
bordelique, ce qui augmente la difficulté, les
variables sont déclarées au besoin, en plein
programme, les ligne, connaît pas le mec, il lie
tout avec deux points ":", et le noms sont peu
parlants, sauf peut être pour un astronome... Il
utilise une variable tableau, puis s'en sert en
variable texte (avec VB6 ça ne passe pas tout ça)!

C'était sans doute un très bon astronome, mais un
très mauvais codeur...

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Patrice Henrio" a
écrit dans le message de news:

| Patrice Henrio a écrit :
| > LE TROLL a écrit :
| >> Oh là là, merci Patrice, quel travail
espérons que ça marche,
| >> c'est d'autant plus pénible que le mec écrit
comme un cochon, il saut
| >> à la ligne seulement quand il a le temps,
collant tout abec ":"
| >>
| >> Comment on l'appelle ?
| >>
| >> Call Presub(TJ, JJ0, DN, A, J) ': GoSub 6500
| >>
| >> Ça, ça marche pas, je ne suis pas doué en
passage de paramètres...
| >>
| >> Sinon, j'ai collé ça:
| >>
| >> Sub Presub(TJ As Double, JJ0 As Double, DN As
Double, A As Long, J As
| >> Double)
| >> Dim K As Long, DJ As Double, F As Long, J0
As Long
| >> Dim data As String, donnees() As String, I
As Long, XK As Long, MDF
| >> As String
| >> DJ = TJ - JJ0
| >> If TJ < 2299226.5 Then
| >> DJ = DJ - DN
| >> 'attention ici visiblement les années
bissextiles ne sont pas
| >> traitées de la même façon que dans la branche
else
| >> If (A Mod 4 = 0) Then F = 1
| >> Else
| >> If A = 1582 Then DJ = DJ + 10
| >> 'Bissextile si multiple de 400 ou
multiple de 4 et non multiple
| >> de 100
| >> If (A Mod 400 = 0) Or ((A Mod 4) = 0
And (A Mod 100) <> 0) Then
| >> F = 1 Else F = 0
| >> End If
| >> If DJ > 58 Then DJ = DJ - F
| >> 'data = "333, DECEMBRE, 303, NOVEMBRE,
272, OCTOBRE, 242,
| >> SEPTEMBRE, " 211, AOUT, 180, JUILLET, 150,
JUIN, 119, MAI, 89, AVRIL,
| >> 58, mars, 1000, IXE ""
| >> donnees = Split(data, ", ")
| >> I = 0
| >> Do
| >> XK = donnees(I)
| >> I = I + 1
| >> md = donnees(I)
| >> I = I + 1
| >> If (XK = 1000) Then
| >> If DJ > 30 Then
| >> XK = 30
| >> md = "FEVRIER"
| >> Else
| >> XK = -1
| >> md = "JANVIER"
| >> End If
| >> Exit Do
| >> End If
| >> If (Fix(DJ - 0.5) >= XK) Then Exit Do
| >> Loop
| >> J = DJ - XK
| >> If (DJ > 333) And (J >= 31.5) Then
| >> A = A + 1
| >> J = J - 31
| >> md = "JANVIER"
| >> End If
| >> J0 = Fix(J)
| >> HH = (J - J0) * 24
| >> H = Fix(HH)
| >> MM = (HH - H) * 60
| >> MN = Fix(MM)
| >> S = Fix(MM - MN) * 60
| >> H = H + 12
| >> If H >= 24 Then
| >> H = H - 24
| >> J0 = J0 + 1
| >> End If
| >> End Sub
| >>
| >>
| >>
| >> ------------
| >> J'ai inhibé les commande fichier que j'avais
mis pour faire un fichier
| >> sous dos avec GwBasic je crois, qui ensuite
est embarqué (ben voui,
| >> c'est mieux que rien :o)
| >> qui donne au total :
| >> ------------
| >>
| >>
| >>
| >> Sub saisons()
| >> 'MODULE "PRSAISON"
| >> Dim B, D, E, J, L, M, N, O, P, T, V
| >> Dim ma As String
| >> Dim ya(12) As String
| >> Dim za(12) As String
| >> Dim ja As String
| >> '
| >> 15 A = YYYY 'A = 2002
| >> ' Color 7, 1: Cls
| >> ' Dim numfic As Integer
| >> ' numfic = FreeFile
| >> ' Open "Saisons.txt" For Output As numfic
| >>
| >> 20 'A = A + 1
| >> PI = 3.14159265
| >> 25 RA1 = PI / 180: RA2 = PI / 12:
| >> 30 KK = 2
| >> 35 M = 1: J = 1: H = 0
| >> 40 GoSub 500: LS1 = LS: JJ2 = JJ: JJ0 = JJ
| >> 45 JJ1 = 1671383#: GoSub 6700: PRL0 = PRL
| >> 50 If KK = 2 Then PRL = 0: PRL0 = 0
| >> 55 KC = Fix((LS1 - PRL) / 30) + 4: If KC > 12
Then KC = KC - 12
| >> 60 L0 = 30 * (KC - 3): KC0 = KC
| >> 65
| >> 70
| >> 75 za(1) = "": za(2) = "": za(3) = ""
| >> 80 za(4) = "": za(5) = "": za(6) = ""
| >> 85 za(7) = "": za(8) = "": za(9) = ""
| >> 90 za(10) = "": za(11) = ""
| >> 95 za(12) = "": ya(3) = " PRINTEMPS"
| >> 100 ya(6) = " ETE ": ya(9) = " AUTOMNE
": ya(12) = " HIVER "
| >> 105
| >> 110 GoSub 170: GoSub 515: LS1 = LS
| >> 115 GoSub 170: GoSub 515: LS1 = LS
| >> 120 JJ = JJ - 0.5: TJ = JJ
| >> Call Presub(TJ, JJ0, DN, A, J) ': GoSub 6500
| >>
| >> 125 If KC = 3 Then
| >> Print A; za(KC); J0; ma; ya(KC)
| >> 'Print #(numfic), A; za(KC); J0; ma;
ya(KC)
| >> End If
| >>
| >> If KC = 6 Then
| >> Print A; za(KC); J0; ma; ya(KC)
| >> 'Print #(numfic), A; za(KC); J0; ma;
ya(KC)
| >> End If
| >>
| >> If KC = 9 Then
| >> Print A; za(KC); J0; ma; ya(KC)
| >> 'Print #(numfic), A; za(KC); J0; ma;
ya(KC)
| >> End If
| >>
| >> If KC = 12 Then
| >> Print A; za(KC); J0; ma; ya(KC)
| >> 'Print #(numfic), A; za(KC); J0; ma;
ya(KC)
| >> End If
| >> 130
| >>
| >> 135 LS = L0: JJ = JJ + 0.5: L0 = L0 + 30: KC
= KC + 1: K = 0
| >> 140 If L0 >= 360 Then L0 = L0 - 360
| >> 145 If KC > 12 Then KC = KC - 12
| >> 150 If KC = KC0 Then GoTo 165
| >> 155 If KK = 1 Then PRL = PRL0 + KC * 0.00012
| >> 160 GoTo 110
| >>
| >> '-----------------------
| >> 165 'If A < 2051 Then GoTo 20
| >> 'If A > 2050 Then
| >> ' Close numfic
| >> ' End
| >> ' End If
| >> Exit Sub
| >> '-----------------------
| >>
| >> 170 JJ = JJ + 1: H = 0: GoSub 515: LS2 = LS
| >> 175 If LS2 < LS1 Then LS2 = LS2 + 360
| >> 180 DLJ = LS2 - LS1: DDJ = (L0 + PRL - LS1) /
DLJ
| >> 185 If DDJ < -100 Then DDJ = DDJ + 360 / DLJ
| >> 190 JJ = JJ - 1 + DDJ
| >> 195 Return
| >>
| >> 500 '....................MODULE "SOL"
| >> 505 '
| >> 510 GoSub 6000: JJ = JJ - DN
| >> 515 BJ = JJ - 2451545#
| >> 520 TJ = Fix(BJ - HJ) / 36525#
| >> 525 T = BJ / 36525#
| >> 530 If A >= 1900 Then VL = -0.2837 * T -
0.248: GoTo 545
| >> 535 VL = -0.00008304245 * T ^ 4 - 0.005673214
* T ^ 3 - 0.0005050719 *
| >> T ^ 2
| >> 540 VL = VL - 0.259827 * T - 0.248274
| >> 545 Lo = LO0 - VL * KEPH
| >> 550 LSM = 280.4659 + 36000.76953 * T +
0.0003025 * T ^ 2
| >> 555 BK = LSM: GoSub 5000: LSM = BK
| >> 560 PS = 282.9405 + 1.72009 * T + 0.0004628 *
T ^ 2 + 0.00000033 * T ^ 3
| >> 565 BK = PS: GoSub 5000: PS = BK
| >> 570 ES = 0.016709114 - 0.000042052 * T -
0.000000126 * T ^ 2
| >> 575 MS = LSM - PS: MR = MS * RA1: E = ES
| >> 580 GoSub 5050: VS = V / RA1
| >> 585 LS = PS + VS: BK = LS: GoSub 5000: LS =
BK: AXS = 1.00000023
| >> 590 XS = AXS * (1 - ES ^ 2) / (1 + ES *
Cos(V))
| >> 595 TX = BJ / 365242.2
| >> 600 OB = 23.43928 - 0.1301403 * TX -
0.00014163 * TX ^ 2 + 0.00050833
| >> * TX ^ 3
| >> 605 OBR = OB * RA1
| >> 610 TS = 280.4603 + 36000.7697 * TJ +
0.00038708 * TJ ^ 2
| >> 615 BK = TS: GoSub 5000: TS0 = BK
| >> 620 TS = (H - 12) * 36624.22 / 36524.22 + TS0
/ 15 + Lo / 15
| >> 625 If TS < 0 Then TS = TS + 24
| >> 630 If TS > 24 Then TS = TS - 24
| >> 635 LL = 218.31617 + 481267.88088 * T -
0.00112767 * T ^ 2 +
| >> 0.000001888 * T ^ 3
| >> 640 BK = LL: GoSub 5000: LL = BK
| >> 645 NL = 125.043347 - 1934.137846 * T +
0.00208444 * T ^ 2 +
| >> 0.000002222 * T ^ 3
| >> 650 BK = NL: GoSub 5000: NL = BK
| >> 655 PL = 83.353248 + 4069.013343 * T -
0.0103625 * T ^ 2 - 0.0000125 *
| >> T ^ 3
| >> 660 BK = PL: GoSub 5000: PL = BK
| >> 665 r = (LL - LSM) * RA1: D = (LL - NL) *
RA1: G = (LL - PL) * RA1: W
| >> = MR
| >> 670 NU = -17.2327 * Sin(NL * RA1) / 3600 -
1.2729 * Sin(LSM * RA1 * 2)
| >> / 3600
| >> 675 NU = NU + 0.2088 * Sin(2 * NL * RA1) /
3600 - 0.2037 * Sin(LL * 2
| >> * RA1) / 3600
| >> 680 NOB = 9.21 * Cos(NL * RA1) / 3600 +
0.5522 * Cos(LSM * RA1 * 2) /
| >> 3600
| >> 685 OB = OB + NOB: OBR = OB * RA1
| >> 690 TS = TS + NU * Cos(OBR) / 15: SS =
0.266567 / XS
| >> 695 ASO = -20.496 * (1 + ES * Cos(V)) / 3600
| >> 700 LS = PS + VS + NU + ASO + 0.0018 *
Sin(r): BK = LS: GoSub 5000
| >> 705 LS = Fix(BK * 10000) / 10000: LL = Fix(LL
* 1000) / 1000
| >> 710 x = TS: GoSub 5100
| >> 715 Return
| >>
| >> 4990 '....................MODULE "RED"
| >> 4995 '
| >> 5000 '....................MODULE "REDCAD"
| >> 5005 IK = Fix(BK / 360): BK = BK - IK * 360:
If BK < 0 Then BK = BK + 360
| >> 5010 Return
| >> 5050 '....................MODULE "ANOMAL"
| >> 5055 U = MR
| >> 5060 U1 = MR + E * Sin(U): If Abs(U - U1) <
0.000001 Then GoTo 5070
| >> 5065 U = U1: GoTo 5060
| >> 5070 TV = Sqr((1 + E) / (1 - E)) * Tan(U / 2)
| >> 5075 V = Atn(TV) * 2: If V < 0 Then V = V +
PI * 2
| >> 5080 Return
| >> 5100 '....................MODULE "REDSEX"
| >> 5105 If x < 0 Then x = -x: Y = -1 Else Y = 1
| >> 5110 X1 = Fix(x): X2 = Fix((x - X1) * 60): X3
= Fix((x - X1 - X2 / 60)
| >> * 36000!) / 10
| >> 5115 Return
| >> 5200 '....................MODULE "REDHEUR"
| >> 5205 J0 = Fix(J): HH = (J - J0) * 24: H =
Fix(HH): MM = (HH - H) * 60
| >> 5210 MN = Fix(MM): S = Fix((MM - MN) * 60): H
= H + 12 - DH
| >> 5215 If H >= 24 Then H = H - 24: J0 = J0 + 1
| >> 5220 H = H - 12: If H < 0 Then H = H + 24: J0
= J0 - 1
| >> 5225 Return
| >>
| >> 6000 '....................MODULE "JULIEN"
| >> 6005 '
| >> 6010 C = A Mod 4: B = A + 4712: N = B * 365 +
Fix((B + 3) / 4)
| >> 6015 N0 = N: DN = 0: If C = 0 Then F = 1: FJ
= 1 Else F = 0: FJ = 0
| >> 6020 If A > 1582 Then DN = 10
| >> 6025 If A = 1582 And M = 12 And J > 19 Then
DN = 10
| >> 6030 If A >= 1700 Then GoTo 6035 Else GoTo
6040
| >> 6035 DM = -Fix((A - 1) / 100) + 12 + Fix((A -
1) / 400): N0 = N
| >> 6040 If A / 400 <> Fix(A / 400) And A / 100 =
Fix(A / 100) Then F = 0
| >> 6045 DN = DN - DM
| >> 6050 If M <= 8 Then N = N + (M - 1) * 30 +
Fix(M / 2)
| >> 6055 If M > 8 Then N = N + (M - 1) * 30 +
Fix((M - 1) / 2) + 1
| >> 6060 If M >= 3 And F = 1 Then N = N - 1
| >> 6065 If M >= 3 And F = 0 Then N = N - 2 + FJ:
DN = DN + FJ
| >> 6070 JJ = N + J - 1.5: HJ = H / 24: JJ = JJ +
HJ
| >> 6075 JE = Fix(JJ + 0.5) - N0 + 1: JE = JE Mod
365
| >> 6080 If JJ <= 2299236# Then GoTo 6090
| >> 6085 If JJ > 2299236# And A = 1582 Then JE =
JE - 10
| >> 6090 Return
| >>
| >> 6100 '....................MODULE "JOUR"
| >> 6105 '
| >> 6110 Q = Fix(JJ) - Fix(JJ / 7) * 7 + 2
| >> 6115 If JJ - Fix(JJ) >= 0.5 Then Q = Q + 1
| >> 6120 If Q > 7 Then Q = Q - 7
| >> 6125 If Q = 1 Then ja = "DIMANCHE"
| >> 6130 If Q = 2 Then ja = "LUNDI"
| >> 6135 If Q = 3 Then ja = "MARDI"
| >> 6140 If Q = 4 Then ja = "MERCREDI"
| >> 6145 If Q = 5 Then ja = "JEUDI"
| >> 6150 If Q = 6 Then ja = "VENDREDI"
| >> 6155 If Q = 7 Then ja = "SAMEDI"
| >> 6160 Return
| >> End Sub
| >>
| >>
| >> Sub Presub(TJ As Double, JJ0 As Double, DN As
Double, A As Long, J As
| >> Double)
| >> Dim K As Long, DJ As Double, F As Long, J0
As Long
| >> Dim data As String, donnees() As String, I
As Long, XK As Long, MDF
| >> As String
| >> DJ = TJ - JJ0
| >> If TJ < 2299226.5 Then
| >> DJ = DJ - DN
| >> 'attention ici visiblement les années
bissextiles ne sont pas
| >> traitées de la même façon que dans la branche
else
| >> If (A Mod 4 = 0) Then F = 1
| >> Else
| >> If A = 1582 Then DJ = DJ + 10
| >> 'Bissextile si multiple de 400 ou
multiple de 4 et non multiple
| >> de 100
| >> If (A Mod 400 = 0) Or ((A Mod 4) = 0
And (A Mod 100) <> 0) Then
| >> F = 1 Else F = 0
| >> End If
| >> If DJ > 58 Then DJ = DJ - F
| >> 'data = "333, DECEMBRE, 303, NOVEMBRE,
272, OCTOBRE, 242,
| >> SEPTEMBRE, " 211, AOUT, 180, JUILLET, 150,
JUIN, 119, MAI, 89, AVRIL,
| >> 58, mars, 1000, IXE ""
| >> donnees = Split(data, ", ")
| >> I = 0
| >> Do
| >> XK = donnees(I)
| >> I = I + 1
| >> md = donnees(I)
| >> I = I + 1
| >> If (XK = 1000) Then
| >> If DJ > 30 Then
| >> XK = 30
| >> md = "FEVRIER"
| >> Else
| >> XK = -1
| >> md = "JANVIER"
| >> End If
| >> Exit Do
| >> End If
| >> If (Fix(DJ - 0.5) >= XK) Then Exit Do
| >> Loop
| >> J = DJ - XK
| >> If (DJ > 333) And (J >= 31.5) Then
| >> A = A + 1
| >> J = J - 31
| >> md = "JANVIER"
| >> End If
| >> J0 = Fix(J)
| >> HH = (J - J0) * 24
| >> H = Fix(HH)
| >> MM = (HH - H) * 60
| >> MN = Fix(MM)
| >> S = Fix(MM - MN) * 60
| >> H = H + 12
| >> If H >= 24 Then
| >> H = H - 24
| >> J0 = J0 + 1
| >> End If
| >> End Sub
| >>
| >>
| >>
| > où puis-je trouver ton source qbasic
| >
| > Il y a un truc bizarre aux ligne 110 et 115
| > gosub 170:gosub 515: LS1=LS
| >
| > en 170 on trouve
| > gosub 515
| >
| > avant on a un gosub 500 (ligne 40)
| > en 500
| > gosub 6000: JJ=JJ-DN
| > puis on passe à la ligne 515
| >
| >
| > En traçant le programme avec la valeur A 02
| >
| > ligne 40 ---> gosub500 --->gosub 6000
| > on s'aperçois qu'à la ligne 545, la variable
LO0 n'est jamais initialisée.
| Même ligne 545, KEPH n'est pas initialisée
1 2