You are not logged in.
Announcement
Unanswered posts
|
Hi,
I import a datafile in a PostgreSql database. I use a Tmap and i need change a value like this :
$Var[Var__Code_Deficience] = if ($row1[Libelle_Or_Deficience] = "INCONNUE") { Code_Deficience = 0}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT DU TRAVAIL (TRAJET)") { Code_Deficience =1}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT DU TRAVAIL (LIEU D'EMPLOI)") { Code_Deficience = 2}
else if ($row1[Libelle_Or_Deficience] = "MALADIE PROFESSIONNELLE") { Code_Deficience = 3}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT SUR LA VOIE PUBLIQUE") { Code_Deficience = 4}
else if ($row1[Libelle_Or_Deficience] = "HANDICAP DE NAISSANCE") { Code_Deficience = 5}
else if ($row1[Libelle_Or_Deficience] = "AUTRES ACCIDENTS") { Code_Deficience = 6}
else if ($row1[Libelle_Or_Deficience] = "AUTRES MALADIES") { Code_Deficience = 7}
When I run my job I have a syntax error at the first 'if'.
Thank you in advance
Offline
MatMAt wrote:
Hi,
I import a datafile in a PostgreSql database. I use a Tmap and i need change a value like this :
$Var[Var__Code_Deficience] = if ($row1[Libelle_Or_Deficience] = "INCONNUE") { Code_Deficience = 0}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT DU TRAVAIL (TRAJET)") { Code_Deficience =1}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT DU TRAVAIL (LIEU D'EMPLOI)") { Code_Deficience = 2}
else if ($row1[Libelle_Or_Deficience] = "MALADIE PROFESSIONNELLE") { Code_Deficience = 3}
else if ($row1[Libelle_Or_Deficience] = "ACCIDENT SUR LA VOIE PUBLIQUE") { Code_Deficience = 4}
else if ($row1[Libelle_Or_Deficience] = "HANDICAP DE NAISSANCE") { Code_Deficience = 5}
else if ($row1[Libelle_Or_Deficience] = "AUTRES ACCIDENTS") { Code_Deficience = 6}
else if ($row1[Libelle_Or_Deficience] = "AUTRES MALADIES") { Code_Deficience = 7}
When I run my job I have a syntax error at the first 'if'.
Thank you in advance
In the "expression" of the variable "Code_Deficience", have the following code (use the expression editor in the bottom)
$row1[Libelle_Or_Deficience] eq "INCONNUE"
? 0
: $row1[Libelle_Or_Deficience] eq "ACCIDENT DU TRAVAIL (TRAJET)"
? 1
: $row1[Libelle_Or_Deficience] eq "ACCIDENT DU TRAVAIL (LIEU D'EMPLOI)"
? 2
: $row1[Libelle_Or_Deficience] eq "MALADIE PROFESSIONNELLE"
? 3
: $row1[Libelle_Or_Deficience] eq "ACCIDENT SUR LA VOIE PUBLIQUE"
? 4
: $row1[Libelle_Or_Deficience] eq "HANDICAP DE NAISSANCE"
? 5
: $row1[Libelle_Or_Deficience] eq "AUTRES ACCIDENTS"
? 6
: $row1[Libelle_Or_Deficience] eq "AUTRES MALADIES"
? 7
: -1Or else another solution, that I personnaly like better, is to use a routine with a mapping, for this very "mapping-like" expression. In a routine file have the following content:
use Exporter;
use vars qw(@EXPORT @ISA);
@ISA = qw(Exporter);
@EXPORT = qw(
getCodeDeficienceFromLabel
);
our %code_deficience_of = (
"INCONNUE" => 0,
"ACCIDENT DU TRAVAIL (TRAJET)" => 1,
"ACCIDENT DU TRAVAIL (LIEU D'EMPLOI)" => 2,
"MALADIE PROFESSIONNELLE" => 3,
"ACCIDENT SUR LA VOIE PUBLIQUE" => 4,
"HANDICAP DE NAISSANCE" => 5,
"AUTRES ACCIDENTS" => 6,
"AUTRES MALADIES" => 7,
);
sub getCodeDeficienceFromLabel {
my ($label) = @_;
return $code_deficience_of{$label};
}
1;The output of my job is:
Starting job topic1086 at 10:57 19/07/2007. .------------------------------------------------------. | tLogRow_2 | +----+-------------------------------+-----------------+ | id | label_deficience | code_deficience | +----+-------------------------------+-----------------+ | 1 | AUTRES MALADIES | 7 | | 2 | INCONNUE | 0 | | 3 | HANDICAP DE NAISSANCE | 5 | | 4 | MALADIE PROFESSIONNELLE | 3 | | 5 | AUTRES ACCIDENTS | 6 | | 6 | ACCIDENT SUR LA VOIE PUBLIQUE | 4 | | 7 | AUTRES ACCIDENTS | 6 | | 8 | INCONNUE | 0 | | 9 | INCONNUE | 0 | | 10 | INCONNUE | 0 | '----+-------------------------------+-----------------' Job topic1086 ended at 10:57 19/07/2007. [exit code=0]
Offline