사용자 지정 작성 함수에서 다른 데이터 테이블에 액세스안녕하세요 여러분,
두 개 이상의 데이터 테이블이 있습니다.
//First I define my function:
MyFunction = Function({Table},
For each row(Table,
shift some coordinates;
store some values;
do some other things;
)
);
//Then I would like to run the function on some existing data tables
MyFunction(dt1);
MyFunction(dt2);
MyFunciton(dt3);지금은 작동시킬 수 없습니다. 나는 스크립팅 가이드에서 Name Expr()을 사용하여 약간의 영향을 미칠 수 있는 정교함을 찾았지만 지금까지는 파악하기 어렵습니다.
당신의 도움을 주셔서 감사합니다
Re: 맞춤 작성 함수에서 다른 데이터 테이블에 액세스합니다.안녕,
이제 작동하게 되었습니다. 감사합니다. 다음은 다른 사람이 여기에 올 경우 작동하는 구문을 보여주는 간단한 스크립트입니다.
Tabfunction = Function({Tablevar},
Tablevar = New Table((Char(Tablevar)),
Add Rows(5),
New Column ("X1", Numeric, Set Values({1,2,3,4,5})),
New Column ("Test", Character)
);
Tablevar; //pass back Tablevar
);
CalcInvalidDies = Function({Tablevar},
For Each Row(Tablevar,
If(:X1>2,:Test="fail",:Test="pass")
)
);
dtinitial = Tabfunction("initial"); //use pointer
dt2 = Tabfunction ("dt2");
CalcInvalidDies(dtinitial);
CalcInvalidDies(dt2);
Re: 맞춤 작성 함수에서 다른 데이터 테이블에 액세스합니다.또한 Table 변수를 함수의 마지막 참조로 추가하여 테이블에 대한 참조로 다시 전달되도록 해야 합니다.
abfunction = Function( {Table},
Xlist = {};
Ylist = {};
NumDieX = 10;
NumDieY = 10;
x_mm = 10;
y_mm = 20;
SLW = 0.1;
//Define X-List
For( jj = 0, jj <= NumDieY + 2, jj++,
For( ii = 0, ii <= NumDieX + 2, ii++,
Insert Into( Xlist, ii )
)
);
//Define Y-List
For( kk = 0, kk <= NumDieY + 2, kk++,
For( mm = 0, mm <= NumDieX + 2, mm++,
Insert Into( Ylist, kk );
)
);
Table = New Table( Char( Table ),
Add Rows( (NumDieX + 2) * (NumDieY + 2) ),
New Column( "DieX", Set Values( Xlist ) ),
New Column( "DieY", Set Values( Ylist ) ),
New Column( "DieCorXBL" ),
New Column( "DieCorYBL" ),
New Column( "DieCorXTL" ),
New Column( "DieCorYTL" ),
New Column( "DieCorXTR" ),
New Column( "DieCorYTR" ),
New Column( "DieCorXBR" ),
New Column( "DieCorYBR" )
);
For Each Row(
Table,
:DieCorXBL = :DieX * (SLW + x_mm);
:DieCorYBL = :DieY * (SLW + y_mm);
:DieCorXTL = :DieX * (SLW + x_mm);
:DieCorYTL = :DieY * (SLW + y_mm) + y_mm;
:DieCorXTR = :DieX * (SLW + x_mm) + x_mm;
:DieCorYTR = :DieY * (SLW + y_mm) + y_mm;
:DieCorXBR = :DieX * (SLW + x_mm) + x_mm;
:DieCorYBR = :DieY * (SLW + y_mm);
);
Table << New Column( "Invalid Die", numeric, Set each value( 0 ) );
Table;
);Re: 맞춤 작성 함수에서 다른 데이터 테이블에 액세스합니다.안녕,
이것은 작동합니다. 별도의 파일에 Tabfunction이 있고 Include("that separate file.jsl")를 사용하기 때문에 여전히 완전히는 아닙니다. 그러나 그 별도의 파일 아래에는 무언가를 만드는 버그가 있습니다. 첫 번째 부분 아래의 모든 내용을 /*주석*/으로 처리하면 작동합니다. 나는 문제가 무엇인지 알아낼 것이라고 확신합니다. 감사!
</CODE></P><P><CODE class=" language-jsl">
</CODE></P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-257065" slang="en-US">Re: 맞춤 작성 함수에서 다른 데이터 테이블에 액세스합니다.</LINGO-SUB><LINGO-BODY id="lingo-body-257065" slang="en-US"><P>코드의 문제는 함수를 호출할 때 dtinitial 및 dtoptimizer가 아무 것도 가리키지 않는다는 것입니다.따라서 오류 메시지가 나타납니다.몇 가지 제안:</P>
<P> </P>
<UL>
<LI>테이블 변수를 사용하지 마십시오.예약어에 너무 가깝습니다.아마도 tbl 또는 tbl_name?</LI>
<LI>귀하의 함수가 테이블을 생성하므로 테이블 이름을 인수로 사용하고 테이블 포인터를 반환하도록 할 것입니다.</LI>
</UL>
<PRE><CODE class=" language-jsl">dtinitial = Tabfunction("Initial");
dtoptimizer = Tabfunction("Optimizer");
Re: 맞춤 작성 함수에서 다른 데이터 테이블에 액세스합니다.그건 그렇고, 이것은 작동합니다:
그런 다음 초기 테이블에서 잘못된 다이가 해당 열에서 계산됩니다.
새 테이블()과 조합하는 경우에만 문제가 있는 것으로 보입니다.
CalcInvalidDies = Function({Table},
For Each Row(Table,
If(SQRT((:DieCorXBL-100)^2+(:DieCorYBL-100)^2)>(WaferSize/2-EE), :Invalid Die = :Invalid Die +1);
If(SQRT((:DieCorXTL-100)^2+(:DieCorYTL-100)^2)>(WaferSize/2-EE), :Invalid Die = :Invalid Die +1);
If(SQRT((:DieCorXTR-100)^2+(:DieCorYTR-100)^2)>(WaferSize/2-EE), :Invalid Die = :Invalid Die +1);
If(SQRT((:DieCorXBR-100)^2+(:DieCorYBR-100)^2)>(WaferSize/2-EE), :Invalid Die = :Invalid Die +1);
If(:DieCorYBL<FLATEE></FLATEE>Re: 맞춤 작성 함수에서 다른 데이터 테이블에 액세스합니다.
안녕하세요.
코드를 변경하지 않고 밤새 문제가 반환되었습니다. 실제로 일부 변수가 어떻게든 저장된 것처럼 보이고 소프트웨어를 다시 시작한 후에 삭제되기 때문에 자주 발생합니다. 아래는 제가 사용하고 싶은 코드입니다.
사용자 정의 함수 Tabfunction을 사용하여 아래에 표시된 대로 dtinitial, dtoptimizer 등으로 불리는 주어진 수의 테이블을 만들고 싶습니다.
아래 코드를 실행하면 오류 메시지가 나타납니다.
"이름 미확인: 'dtinitial' 액세스 또는 평가의 dtinitial, dtinitial/*###*/"
마지막 두 번째 행을 가리킵니다.
함수 인수를 잘못 사용하고 있는 것 같습니다. 맞나요?
감사
Tabfunction = Function({Table},
Xlist={};
Ylist={};
NumDieX=10;
NumDieY=10;<BR /> x_mm=10;
y_mm=20;<BR /> SLW = 0.1;<BR />
//Define X-List
For (jj=0, jj <= NumDieY+2, jj++,
For (ii=0, ii <= NumDieX+2, ii++,
InsertInto(Xlist,ii)
);
);
//Define Y-List
For (kk=0, kk <= NumDieY+2, kk++,
For (mm=0, mm <= NumDieX+2, mm++,
InsertInto(Ylist,kk)
);
);
Table = New Table (Char(Table),
Add Rows((NumDieX+2)*(NumDieY+2)),
New Column ("DieX", Set Values (Xlist)),
New Column ("DieY", Set Values (Ylist)),
New Column ("DieCorXBL"), New Column ("DieCorYBL"),
New Column ("DieCorXTL"), New Column ("DieCorYTL"),
New Column ("DieCorXTR"), New Column ("DieCorYTR"),
New Column ("DieCorXBR"), New Column ("DieCorYBR")
);
For each row (Table,
:DieCorXBL=:DieX*(SLW+x_mm);
:DieCorYBL=:DieY*(SLW+y_mm);
:DieCorXTL=:DieX*(SLW+x_mm);
:DieCorYTL=:DieY*(SLW+y_mm)+y_mm;
:DieCorXTR=:DieX*(SLW+x_mm)+x_mm;
:DieCorYTR=:DieY*(SLW+y_mm)+y_mm;
:DieCorXBR=:DieX*(SLW+x_mm)+x_mm;
:DieCorYBR=:DieY*(SLW+y_mm);
);
Table << New Column ("Invalid Die", numeric, Set each value (0));
);
Tabfunction(dtinitial);
Tabfunction(dtoptimizer);
Re: 맞춤 작성 함수에서 다른 데이터 테이블에 액세스합니다.안녕 짐,
너의 의도를 알 겠어. 나는 내 구문이 근본적으로 잘못되어 너무 많은 세부 사항을 공유할 필요가 없다는 인상을 받고 작업했지만 그렇지 않은 것 같습니다. 위에서 설명한 대로 정확하게 작동합니다.
3시간 동안 문제를 해결한 다음 이 질문을 작성했습니다. 그런 다음 해결 방법을 구현하는 데 두 시간을 소비한 다음 오류 메시지를 재현하기 위해 코드를 초기 상태로 다시 빌드하려고 시도했으며 이제 모든 것이 잘 작동합니다. 감사합니다 
Re: 맞춤 작성 함수에서 다른 데이터 테이블에 액세스합니다.암호 형식으로 코드를 디버깅하는 것은 매우 어렵습니다.로그에 오류 메시지가 표시됩니까?
For Each Row()는 스크립트에서 한 번에 하나의 인스턴스만 실행할 수 있습니다.나는 기능에서 그것을 피하는 경향이 있습니다.나는 또한 일반적으로 다음의 전체 열 참조로 이동합니다.
Table:a[15] = 43;
// or
column( Table, "a" )[15] = 43;
함수가 잘못된 테이블을 가리키지 않도록 합니다.