현재 데이터 테이블에서 열을 읽고 해당 열의 값에 따라 다른 함수 집합을 실행하는 스크립트를 작성하려고 합니다. 예를 들어,
A 열의 데이터 = A이면 "A"라는 새 열을 만들고 아래 함수(A~C)를 실행합니다.
A 열의 데이터 = B인 경우 "B"라는 새 열을 만들고 대신 아래 함수(D~F)를 실행하세요.
그렇지 않으면 "N/A"라는 새 열을 만듭니다.
스크립트를 실행하면 값이 "A" 또는 "B"인 경우에도 항상 새 열 "N/A"가 생성됩니다. 또한 "A" 및 "B" 조건에 대해 작성한 기능도 실행되지 않습니다. 나는 매우 분명한 것을 놓치고 있는 것 같은 느낌이 든다.
dt = Current Data Table();
If(
:Column A == "A", dt << New Column( "A", character, nominal ),
Function A
Function B
Function C
:Column B == "B", dt << New Column( "B", character, nominal ),
Function D
Function E
Function F
dt << New Column( "N/A", character, nominal )
)
열 이름 변경에 대한 좋은 점. 후속 처리를 위해 JSL을 작성하기가 더 어렵습니다. 아마도 "상태" 또는 "작업 유형"과 같이 모든 경우에 대해 동일한 열 이름을 원할 것입니다.
지정한 시나리오가 주어지면 아래 스크립트는 3가지 경우를 생성합니다.
A 열에 A가 있습니다.
B는 B열에 있습니다.
A도 B도 존재하지 않는다

Names Default To Here( 1 );
A = Function( {},
Show( "Function A" )
);
B = Function( {},
Show( "Function B" )
);
C = Function( {},
Show( "Function C" )
);
D = Function( {},
Show( "Function D" )
);
EE = Function( {},
Show( "Function EE" )
);
F = Function( {},
Show( "Function F" )
);
// First Example Column A has the value A
dt1 = New Table( "Example1",
Add Rows( 1 ),
New Column( "Column A", Character, "Nominal", Set Values( {"A"} ) ),
New Column( "Column B", Character, "Nominal", Set Values( {""} ) )
);
Wait( 5 );
If(
:Column A[1] == "A",
dt1 << New Column( "A", character, nominal );
A();
B();
C();,
:Column B[1] == "B", dt1 << New Column( "B", character, nominal );
D();
EE();
F();
,
dt1 << New Column( "N/A", character, nominal )
);
// Second Example Column B has the value B
dt2 = New Table( "Example2",
Add Rows( 1 ),
New Column( "Column A", Character, "Nominal", Set Values( {""} ) ),
New Column( "Column B", Character, "Nominal", Set Values( {"B"} ) )
);
Wait( 5 );
If(
:Column A[1] == "A",
dt2 << New Column( "A", character, nominal );
A();
B();
C();,
:Column B[1] == "B", dt2 << New Column( "B", character, nominal );
D();
EE();
F();
,
dt2 << New Column( "N/A", character, nominal )
);
// Third Example Neither column A has and A nor Column B has a B
dt3 = New Table( "Example3",
Add Rows( 1 ),
New Column( "Column A", Character, "Nominal", Set Values( {""} ) ),
New Column( "Column B", Character, "Nominal", Set Values( {""} ) )
);
Wait( 5 );
If(
dt3:Column A[1] == "A",
dt3 << New Column( "A", character, nominal );
A();
B();
C();,
dt3:Column B[1] == "B", dt3 << New Column( "B", character, nominal );
D();
EE();
F();
,
dt3 << New Column( "N/A", character, nominal )
);
내 추측으로는 이것이 당신이 원하는 것이 아닙니다
비밀이라면 도움이 될 수 있습니다. 쉼표로 구분 조항 if 문에서. 세미콜론으로 구분된 문 이내에 조항.
당신은 아마 이것과 같은 것을 원할 것입니다
dt = Current Data Table();
If( :Column A == "A", // condition, followed by a comma
dt << New Column( "A", character, nominal ); // one or more stmts
Function A(); // with ; separators
Function B();
Function C(); // last statement has optional ; and required comma next line
, /* else if */ :Column B == "B", // 2nd condition followed by comma
dt << New Column( "B", character, nominal );
Function D();
Function E();
Function F() // again, another comma. ; omitted for example...I prefer to use them
, /* else */
dt << New Column( "N/A", character, nominal ) // no more commas, this is the otherwise
);저는 /* else if */ 와 /* else */ 를 들여쓰기하고 주석을 달고 따라가기 쉽도록 합니다.