Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2008, 14h44   #1
Membre régulier
 
Inscription : septembre 2003
Messages : 193
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 193
Points : 84
Points : 84
Par défaut concaténer 1 chaine et 1 variable

toujours suite aux 2 postes de ce matin :

comment concaténer 2 variables :


ca :

ca n'a pas l'air de marcher .... portant c'est 2 chaines ...
Tyler Durden est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 14h45   #2
Membre régulier
 
Inscription : septembre 2003
Messages : 193
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 193
Points : 84
Points : 84
en fait j'en suis la :

Code :
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
%do i=1 %TO &obs;
	%let h&i=&&nonconverti&i;
	/* Dans hour on a le nombre d'heure */
	%let hour&i=%eval(&&h&i/3600);
 
	/* On vérifie si il y a 2 chiffres sinon on concatène un 0*/
	%let longhour&i=%length(&&hour&i);
 
	%IF(&&longhour&i=1) %then %do;
		&&hour&i=0||&&hour&i;
	%end;
 
	/* Dans secondeHour on a le nombre de seconde de toutes les heures */
	%let secondeHour&i=%eval(&&hour&i*3600);
	/* Dans hourSecondeRestante on a le nombre de seconde restante après les heures */
	%let hourSecondeRestante&i=%eval(&&h&i-&&secondeHour&i);
	/* Dans nombreMinute on a le nombre de minute*/
 	%let nombreMinute&i=%eval(&&hourSecondeRestante&i/60);
	/* Dans nombreSecondeMinute on a le nombre de seconde totale de toutes les minutes */
	%let nombreSecondeMinute&i=%eval(&&nombreMinute&i*60);
	/* Dans nombreSeconde restantes on a le nombre de secondes */
	%let nombreSeconde&i=%eval(&&hourSecondeRestante&i-&&nombreSecondeMinute&i);
 
	%put &&hour&i;
	/*%put &&secondeHour&i;*/
	/*%put &&hourSecondeRestante&i;*/
	%put &&nombreMinute&i;
	/*%put &&nombreSecondeMinute&i;*/
	%put &&nombreSeconde&i;
	%put &&longhour&i;
	%put'----------------------------------------------------';
%end;
Je veux juste concaténer des 0 quand il n'y a qu'un seul chiffre et puis ce sera fini ....
Tyler Durden est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h22   #3
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Bonjour et si tu mets ça comme ça :
%let hour&j=0&&hour&j;
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h33   #4
Membre régulier
 
Inscription : septembre 2003
Messages : 193
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 193
Points : 84
Points : 84
c'est ok ca marche nickel : voila la version final si t'es intéressé...
Il y'a certainement plus court mais bon j'suis newb et y'a pas beaucoup de doc sur sas a dispo sur le net :

Code :
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
%do i=1 %TO &obs;
	%let h&i=&&nonconverti&i;
	/* Dans hour on a le nombre d'heure */
	%let hour&i=%eval(&&h&i/3600);
 
	/* On vérifie si il y a 2 chiffres sinon on concatène un 0*/
	%let longhour&i=%length(&&hour&i);
	%IF(&&longhour&i=1) %then %do;
		%let hour&i=0&&hour&i;
	%end;
 
	/* Dans secondeHour on a le nombre de seconde de toutes les heures */
	%let secondeHour&i=%eval(&&hour&i*3600);
 
	/* Dans hourSecondeRestante on a le nombre de seconde restante après les heures */
	%let hourSecondeRestante&i=%eval(&&h&i-&&secondeHour&i);
	/* Dans nombreMinute on a le nombre de minute*/
 	%let nombreMinute&i=%eval(&&hourSecondeRestante&i/60);
	/* On vérifie si il y a 2 chiffres sinon on concatène un 0*/
	%let longmin&i=%length(&&nombreMinute&i);
	%IF(&&longmin&i=1) %then %do;
		%let nombreMinute&i=0&&nombreMinute&i;
	%end; 
 
	/* Dans nombreSecondeMinute on a le nombre de seconde totale de toutes les minutes */
	%let nombreSecondeMinute&i=%eval(&&nombreMinute&i*60);
	/* Dans nombreSeconde restantes on a le nombre de secondes */
	%let nombreSeconde&i=%eval(&&hourSecondeRestante&i-&&nombreSecondeMinute&i);
	/* On vérifie si il y a 2 chiffres sinon on concatène un 0*/
	%let longsec&i=%length(&&nombreSeconde&i);
	%IF(&&longsec&i=1) %then %do;
		%let nombreSeconde&i=0&&nombreSeconde&i;
	%end; 
 
	%let final&i = &&hour&i:&&nombreMinute&i:&&nombreSeconde&i;
	%put &&final&i;
%end;
Tyler Durden est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h45.


 
 
 
 
Partenaires

Hébergement Web