Sento che questa è una domanda semplice, ma non riesco a farlo funzionare.
Il contesto è che ho un estrattore XML che deve gestire in modo frustrante n-tuple di voci ridondanti per lo più (a parte una riga) a un paio di livelli nella struttura. Sto cercando di trovare quelle voci "duplicate" e di verificare se sono effettivamente duplicati prima di importarle nella mia tabella più grande. Ho controllato il numero di ripetizioni, ma mi sto divertendo moltissimo a far funzionare il mio ciclo nidificato for/if. In effetti, il ciclo blocca costantemente l'intero software se ho un Eval( Eval Expr(....Expr())) nidificato nel posto sbagliato. Non sono sicuro del perché, e mi chiedo se sto solo fraintendendo come utilizzare quella costruzione.
Suppongo che potrebbe anche essere un problema con l'utilizzo di char() e concatenate90 annidati l'uno nell'altro, anche se, ancora una volta, non sono sicuro del motivo per cui dovrebbe essere. Il codice attuale che ho di seguito blocca il software.
colnames = dt << Get Column Names( String );
show(colnames);
reps = 0;
show(reps);
For( i = 1, i <= N Items( colnames), i++,
reps = Sum( reps, Contains(colnames[i], "Data - Common Counting Time")); show(reps)
);
check = 0;
//Repeats that split columns
colnamecount = "Scan Append Number_4"; //Using a file that only has three of these columns, so show(colnamecount) = *_4 means its not going past that first if statment
If( reps> 1,
For( i = 2, i = reps, i++,
Eval(Eval Expr(colnamecount = Concat("Scan Append Number_", Char(Expr(i))))); //This is the issue
If(dt:{"Scan Append Number_1"}[1] == Column( colnamecount )[1],
check = check + 1,
check = check + 12
)
)
);
show(check);Il codice non funziona a prescindere, ma finché non riesco a ottenere l'istruzione If confrontando la colonna con il nome concatenato con la prima delle colonne n-tuple, non ha importanza e prima devo far funzionare la concatenazione e non mandare in crash jsl.
Qualcuno ha qualche idea? Sono solo stupido con la sintassi?