JMP vs. SAS<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sono un utente SAS di lunga data che utilizza le variabili macro per fungere da segnaposto per le stringhe utilizzate ripetutamente in un programma come percorso, nome file, colonne dell'array, ecc.
JSL ha funzionalità simili?
Un paio di esempi sarebbero molto apprezzati.
Ri: JMP vs. SASAnche. sii consapevole che puoi inserire blocchi di codice in espressioni (che potrebbero essere inserite in file esterni e "incluse" se necessario). Quindi puoi usare 'Sostituisci ()':
Nomi predefiniti qui ( 1 ) ;
codeblock = expr ( Stampare ( "La variabile macro è" || carbonizzare ( un% ))) ;
Eval ( Sostituto ( NameExpr ( codeblock ) , expr ( un% ) , 10 )) ;
Eval ( Sostituto ( NameExpr ( codeblock ) , expr ( un% ) , 20 )) ;
Ri: JMP vs. SASEcco un esempio più semplice che affronta più direttamente l'idea di un segnaposto per le stringhe. Quindi nessun equivalente diretto delle variabili macro SAS, ma puoi realizzare la stessa cosa con le variabili JSL che eseguono la tua concatenazione usando "||" operatore di concatenazione ("+" non è usato per concatenare stringhe in JMP):
percorso = "c: \ users \ public \ temp \";
dt1 = Open (percorso || "bc_mcv.jmp");
dt2 = Apri (percorso || "airports_by_state.jmp");
Spero che questo ti aiuti.
Eric
Ri: JMP vs. SASGrazie, Ian. Questo mi ha indirizzato nella giusta direzione.
Sto usando JMP e SAS in modo complementare.
Ri: JMP vs. SASIl linguaggio SAS e JSL sono molto diversi per sintassi, struttura e intento (rispecchiando la natura molto diversa di SAS System e JMP).
Probabilmente il parallelo più vicino sarebbe la capacità di definire le funzioni in JSL, con gli argomenti passati analoghi ai valori delle variabili macro. Un esempio potrebbe essere:
NamesDefaultToHere ( 1 ) ;
// Dato una tabella e una colonna al suo interno, crea una distribuzione e restituisce un riferimento a
// l'oggetto risultante
doDistribution =
Funzione ({ nella Tabella , inCol } , { Locale predefinito } ,
thisDistribution = nella Tabella << Distribuzione ( Colonna ( inCol ))
) ;
// Apri un tavolo
dt = Aperto ( "$ SAMPLE_DATA / Big Class.jmp" ) ;
// Crea una distribuzione e chiudila
myDistribution = doDistribution ( dt , Colonna ( dt , "altezza" )) ;
Aspettare ( 3 ) ;
rapporto ( myDistribution ) << chiudi la finestra ;
Aspettare ( 3 ) ;
// Crea due distribuzioni e chiudile nell'ordine inverso
dist1 = doDistribution ( dt , Colonna ( dt , "peso" )) ;
Aspettare ( 3 ) ;
dist2 = doDistribution ( dt , Colonna ( dt , "altezza" )) ;
Aspettare ( 3 ) ;
rapporto ( dist2 ) << chiudi la finestra ;
Aspettare ( 3 ) ;
rapporto ( dist1 ) << chiudi la finestra ;
Dato il titolo del thread, mi sento obbligato a menzionare anche che non ha senso che SAS e JMP siano in opposizione. In effetti, JMP e SAS interagiscono molto bene, quando il caso d'uso a portata di mano lo richiede.