Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Is it possible to use an if statement with functions in a script. Bascially I want a certain code in place based on an if statement. Is this possible? For example.
If( $(vMyVariable) = 1, Concatentate, NoConcatenate)
or
If($(vMyVariable) = 1, Drop Table Prod, '')
thanks in advance,
Steve
I would think the Let should be in the loop and you have the concatenate logic reversed. Try like this
For e = 1 to 2
Let vMyConcatenate = if($(e)=1,'NoConcatenate','concatenate (ProdTest)');
ProdTest:
$(vMyConcatenate)
Load *
Resident Prod$(e);
Drop table Prod$(e);
next e
Here's a way you can skip the entire issue of having to set the Concatenate/NoConcatenate
For e = 1 to 2
ProdTest:
Load *, 1 dummyField
Resident Prod$(e);
Drop table Prod$(e);
next e
DROP FIELD dummyField;
something like
If $(vMyVariable) = 1 THEN
T1:
Load * From Table1;
Concatenate
Load * From Table2;
ElseIf
T1:
Load * From Table1
NoConcatenate
T2:
Load * From Table2;
Else
EndIF
Or
If $(vMyVariable) = 1 Then
Drop Table TableName;
Else
EndIF
You may define a variable using if() and use that variable in the script. In some cases, you may use If .. Then .. EndIf
Examples 1
Let vMyConcatenate = if($(MyVariable)=1,'Concatenate','Noconcatenate');
$(vMyCocatenate) LOAD ...
Example 2
If $(vMyVariable)=1 Then
Drop Table Prod;
EndIf
Hi,
Yes you can do this in load script by use of if statements and the
1. For first see this example.
Ex:-
T1:
LOAD * Inline
[
ColA,ColB
A,1
B,2
C,3
];
LET vMyVariable = 1;
If $(vMyVariable) = 1 then
Concatenate
T2:
LOAD * Inline
[
ColA,ColB
1,ab
2,bc
3,cd
4,de
];
ELSEIF $(vMyVariable) <> 1 then
NoConcatenate
T2:
LOAD * Inline
[
ColA,ColB
1,ab
2,bc
3,cd
4,de
];
ENDIF
2. And for Second try some thing this ways
If $(vMyVariable) = 1 then
DROP Table T1;
Regards
Anand
Yes, you can do what you are after but in a slightly different form. You need to assign the script test to a variable and then use the variable on a script line by itself. For example:
LET vConcat = if(NoOfRows('mytab')>0, 'CONCATNATE (mytab)', 'mytab:');
$(vConcat)
LOAD X,Y...
For your DROP TABLE example:
LET vDrop = If($(vMyVariable) = 1, 'Drop Table Prod;', '');
$(vDrop)
Note you can also do the DROP TABLE like
IF '$(vMyVariable)' = 1 THEN
DROP TABLE Prod;
ENDIF
or
WHEN '$(vMyVariable)' = 1 DROP TABLE Prod;
-Rob
Rob so I did something like this:
Let vMyConcat = If($(vTest), Concatenate, NoConcatenate)
but getting a "Script Line Error" memory
Hi,
Then try this way
T1:
LOAD * Inline [
Field1,Field2
A,1
B,2
C,3 ];
LET vTest = 1;
Let vMyConcat = If($(vTest)=1, 'Concatenate T1', 'NoConcatenate T1');
$(vMyConcat):
LOAD * Inline [
Field1,Field2
B,23
C,45
D,24
E,66 ];
Regards
Anand
So I got past the variable but I am getting the error "Table not Found" when I run this:
Let vMyConcatenate = if($(e)=1,'Concatenate','Noconcatenate');
For e = 1 to 2
ProdTest:
$(vMyConcatenate)
Load *
Resident Prod$(e);
Drop table Prod$(e);
next e
I would think the Let should be in the loop and you have the concatenate logic reversed. Try like this
For e = 1 to 2
Let vMyConcatenate = if($(e)=1,'NoConcatenate','concatenate (ProdTest)');
ProdTest:
$(vMyConcatenate)
Load *
Resident Prod$(e);
Drop table Prod$(e);
next e
Here's a way you can skip the entire issue of having to set the Concatenate/NoConcatenate
For e = 1 to 2
ProdTest:
Load *, 1 dummyField
Resident Prod$(e);
Drop table Prod$(e);
next e
DROP FIELD dummyField;
Thanks Rob!