JMP vs. SAS<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Je suis un utilisateur SAS de longue date qui utilise des variables de macro pour agir comme espaces réservés pour les chaînes utilisées à plusieurs reprises dans un programme, telles que chemin, nom de fichier, colonnes de tableau, etc.
Est-ce que JSL a une fonctionnalité similaire?
Quelques exemples seraient grandement appréciés.
Re: JMP vs. SASÉgalement. sachez que vous pouvez insérer des blocs de code dans des expressions (pouvant être insérées dans des fichiers externes et "incluses" si nécessaire). Ensuite, vous pouvez utiliser 'Substitute ()':
Noms par défaut jusqu'ici ( 1 ) ;
codebloc = Expr ( Impression ( "La variable macro est" || Carboniser ( une% ))) ;
Eval ( Remplacer ( NameExpr ( codebloc ) , Expr ( une% ) , dix )) ;
Eval ( Remplacer ( NameExpr ( codebloc ) , Expr ( une% ) , 20 )) ;
Re: JMP vs. SASVoici un exemple plus simple qui aborde plus directement l'idée d'un espace réservé pour les chaînes. Donc, pas d’équivalent direct des variables de macro SAS, mais vous pouvez réaliser la même chose avec les variables JSL qui effectuent votre propre concaténation à l’aide de "||" Opérateur de concaténation ("+" n'est pas utilisé pour concaténer des chaînes dans JMP):
chemin = "c: \ utilisateurs \ public \ temp \";
dt1 = Open (chemin || "bc_mcv.jmp");
dt2 = Open (chemin || "airports_by_state.jmp");
J'espère que cela t'aides.
Eric
Re: JMP vs. SASMerci Ian. Cela m'a orienté dans la bonne direction.
J'utilise JMP et SAS de manière complémentaire.
Re: JMP vs. SASLe langage SAS et JSL présentent des syntaxes, des structures et des intentions très différentes (reflétant la nature très différente du système SAS et de JMP).
Le parallèle le plus proche serait probablement la possibilité de définir des fonctions dans JSL, les arguments transmis étant analogues aux valeurs des variables macro. Un exemple pourrait être:
NamesDefaultToHere ( 1 ) ;
// À partir d'une table et d'une colonne, crée une distribution et renvoie une référence à
// l'objet résultant
doDistribution =
Une fonction ({ inTable , inCol } , { Local par défaut } ,
thisDistribution = inTable << Distribution ( Colonne ( inCol ))
) ;
// ouvre une table
dt = Ouvrir ( "$ SAMPLE_DATA / Big Class.jmp" ) ;
// Faire une distribution et la fermer
ma distribution = doDistribution ( dt , Colonne ( dt , "la taille" )) ;
Attendre ( 3 ) ;
rapport ( ma distribution ) << Fermer la fenêtre ;
Attendre ( 3 ) ;
// Faites deux distributions et fermez-les dans l'ordre inverse
dist1 = doDistribution ( dt , Colonne ( dt , "poids" )) ;
Attendre ( 3 ) ;
dist2 = doDistribution ( dt , Colonne ( dt , "la taille" )) ;
Attendre ( 3 ) ;
rapport ( dist2 ) << Fermer la fenêtre ;
Attendre ( 3 ) ;
rapport ( dist1 ) << Fermer la fenêtre ;
Vu le titre du fil de discussion, je me sens obligé de mentionner également que SAS et JMP n’ont aucun sens. En effet, JMP et SAS interagissent très bien, lorsque le cas d'utilisation à fournir l'exige.