Bonjour a tous

Je viens ici afin d'avoir vos avis sur ce petit bout de code kix qui me pose malgré tout beaucoup de soucis.
J'ai décidé de réecrire l'ensemble de mon script de login en kix pour une question de rapidité d'exécution / vbs.

Voila le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110

break ON

:start
$UserDN=GetUserDN()
IF @IPADDRESS0 = "127.  0.  0.  1"
	$RC = LogEvent(4 , 1004 , "Logon-" + @USERID + "-" + @HOSTNAME + "-" + @IPADDRESS0 + "-" + @LSERVER + "-" + @Address + "-" + @WKSTA ,"","KiXtart")
ELSE
	$RC = LogEvent(4 , 1004 , "Logon: " + @USERID + " on " + @WKSTA + " (" + @IPADDRESS0 + ") at " + @LSERVER,$logsrv,"KiXtart")
ENDIF

If Instr($UserDN,"OU=ROS,")<>0
	$UserOU = "ROS"
Else
	If Instr($UserDN,"OU=FON,")<>0
		$UserOU="FON"
	Else
		If Instr($UserDN,"OU=SAR,")<>0
			$UserOU="SAR"
		Else
			If Instr($UserDN,"OU=SAM,")<>0
				$UserOU="SAR"
			Else
				If Instr($UserDN,"OU=LIS,")>0
					$UserOU="LIS"
				Else
					If Instr($UserDN,"OU=LAB,")>0
						$UserOU="LAB"
					Else
						If Instr($UserDN,"OU=REP,")>0
							$UserOU="REP"
						Else
							If Instr($UserDN,"OU=CHA,")>0
								$UserOU="CHA"
							EndIf
						EndIf
					EndIf
				EndIf
			EndIf
		EndIf
	EndIf
EndIf

Select 
	Case $UserOU="ROS"
		$FileServeur = "\\fsfrparxxx\"
		Gosub "Commun"
		Goto end
	Case $UserOU="SAR" 
		$FileServeur = "\\fsfrsarxxx\"
		Gosub "Commun"
	Case $UserOU="SAM" 
		$FileServeur = "\\fsfrsamxxx\"
		Gosub "Commun"
	Case $UserOU="FON" 
		$FileServeur = "\\fsfrfonxxx\"
		Gosub "Commun"
	Case $UserOU="LAB" 
		$FileServeur = "\\fsfrlabxxx\"
		Gosub "Commun"
	Case $UserOU="REP" 
		$FileServeur = "\\fsfrparxxx\"
		Gosub "Commun"
	Case $UserOU="CHA" 
		$FileServeur = "\\fsfrchaxxx\"
		Gosub "Commun"
EndSelect

:end

;*****************************
;* Subs                                         *
;*****************************

:Commun
	$Logfile=$FileServeur+"mngt$\"+@userid+".txt"
	IF Open( 3 , $Logfile , 5 )  = 0
		$x = WriteLine( 3 , Cstr(@MDAYNO) + '/' + Cstr(@MONTHNO) + '/' + Cstr(@YEAR) + ";" + @TIME + ";" + @WKSTA + ";" + @LSERVER + ";" + $UserDN + @CRLF)
	Endif
	If Left (Ucase(@WKSTA), 2)="LT" or Left (Ucase(@WKSTA), 2)="DT"
		Shell "cscript.exe \\xxx.net\SysVol\xxx.net\Scripts\Fr\various.vbs"
	Endif
Return

:end

;******************************
;* Functions                                     *
;******************************
Function getUserDN(optional $username)
	Dim $objTrans
	if $username=""
		$username=@ldomain + "\"+ @userid
	endif
	if not instr($username,"\")
		$username=@ldomain + "\" + $username
	endif
	$objTrans = CreateObject("NameTranslate")
	if @error
		exit @error
	else
		$objTrans.Init(3, "")
		$objTrans.Set(3,$username)
		$getUserDN = $objTrans.Get(1)
		if @error
			exit @error
		endif
	endif
EndFunction
Le soucis me direz vous ? et bien le script vbs que j'appelle s'execute deux fois, alors qu'il n'y a pas de boucle dans ce code.
D'après la doc Kix, apres l'execution d'une sub, le retour se fait juste apres la sub, donc ici cela devrait etre un Goto end.

Si vous avez des idées je suis preneur.

Par ailleurs en remplaçant les Sub par des functions le probleme disparait.....


merci