Meilleurs conseils de scriptBonjour la communauté,
J'ai commencé le cours de script que Monica Beals a contribué à créer : Introduction au langage de script JMP - JMP User Community
J'apprends encore, mais j'ai une question fondamentale
Quelle est une commande/astuce de script que vous pensez que tout le monde devrait connaître ou que vous auriez aimé connaître plus tôt ?
par exemple : Le fichier de sélection est utile à connaître car il vous permet de sélectionner n'importe quel fichier sur lequel vous souhaitez exécuter un ensemble de commandes.
Re : Meilleurs conseils de scriptTrois choses que j'aurais aimé savoir plus tôt :
- Open() permet souvent à un scripteur d'ignorer le script Pick File()
- Alt+double-clic sur n'importe quelle fonction dans la fenêtre de script vous amène directement à l'index de script pour cette fonction
- La création de scripts pour la couche de rapport est plus simple qu'il n'y paraît, en particulier avec l'ajout récent de la section Box Path de la visionneuse de propriétés :
-

Re : Meilleurs conseils de scriptJ'en ajouterai 3 aux trois de @Jed_Campbell :
- En aucun cas, la table de données actuelle ne doit être utilisée pour définir la table de données actuelle. Les tables doivent être accessibles explicitement via une référence de variable instanciée lors de la création de la table. De nombreux scripteurs ont du mal à savoir quelle table est la table actuelle, en particulier lorsqu'il y a beaucoup de Joins , Stacks ou Subsets . De plus, le tableau établi comme tableau actuel a évolué au fil des années en fonction des opérations. J'ai vu que cela provoquait plus de ruptures de scripts que probablement toute autre chose.
- Ne plaisantez pas avec SendToReport . Ses fonctionnalités ne sont pas bien documentées et il y a (presque ?) toujours un message qui permet de faire le travail plus facilement et rend votre code plus lisible.
- Découvrez comment utiliser la gestion des expressions ( Substitute , Eval , Expr et Name Expr ). @joseph_morgan ( ici ) et @drewfoglia ( ici et ici ) ont du matériel Discovery qui fait un excellent travail en parlant de ce concept. J'ai deux recettes dans le JSL Cookbook qui en parlent ici et ici ). C'est un sujet difficile à comprendre clairement. Cependant, une fois que vous l’aurez maîtrisé, vous serez capable de faire des choses qui ne seraient pas possibles autrement. Si cela ne peut pas être fait avec la gestion des expressions, cela ne peut pas être fait en JSL.
Re : Meilleurs conseils de scriptSans vouloir ignorer tout ce qui a déjà été dit, mais le point 3 de @DonMcCormack est la chose la plus critique que vous puissiez apprendre ensuite. La gestion des expressions est incroyablement puissante et vous donne accès à des fonctionnalités JSL à couper le souffle. Une fois que vous réalisez que tout dans JSL est une expression, vous commencez à regarder vos scripts complètement différemment. J'étudierais les documents de Joseph et Drew et travaillerais ensuite sur leurs exemples.
Après cela, mes favoris personnels sont :
- Les nouvelles boucles For Each() (et leurs proches, Filter Each() et For Each Row()). À moins que vous n'ayez besoin d'un script pour s'exécuter sur de très anciennes versions de JMP, j'oublierais simplement que l'ancienne boucle For() existe.
- Liée à 1, la version abrégée de la fonction d'index : c'est-à-dire 1::10::2 créerait un vecteur commençant à 1 en comptant jusqu'à 10 par 2 (vous donnerait 1,3,5,7,9) que vous pourrait être utilisé dans la boucle For Each().
- Le tableau associatif et comment l'utiliser (y compris comment il est traité par la boucle For Each()).
- Apprendre à utiliser des matrices au lieu de tableaux de données pour tout ce qui est possible (et comment les utiliser avec la boucle For Each()).
Re : Meilleurs conseils de scriptPuisque vous êtes nouveau :
- Points-virgules. Si quelque chose tombe en panne dans JMP (ou SAS), regardez d'abord ici. Solution facile et case à cocher, et si souvent le coupable. Parenthèses et parenthèses ensuite. [1b. Souvent, le journal ne peut pas représenter correctement ces phrases récurrentes. Regardez généralement également les lignes de code précédentes.]
- Utilisez généreusement Print() lorsque vous créez/testez votre script. « Cette variable est-elle la valeur que j'attends à ce stade de la boucle » : Print(« Varname : » || varname). « À quel stade le processus est-il suspendu (par exemple, boucle infinie) ? » Imprimer (« Étape 3 terminée, avant l'étape 4 »). [2b : si le projet est susceptible de continuer à croître, créez une variable à utiliser comme indicateur (0/1 ou T/F) et utilisez les instructions If() pour activer vos instructions Print() lorsque vous souhaitez déboguer .]
- Comme le DoE, commencez petit. Par exemple, si vous souhaitez exécuter 100 éléments dans une boucle For Each(), testez la boucle en utilisant uniquement les 2 à 4 premiers. Épargnez l’attente et les plantages potentiels.
Mike a également une série de blogs développant ses réflexions ici : https://community.jmp.com/t5/JMPer-Cable/The-1st-thing-I-wish-I-knew-when-I-started-scripting- Il y a/ba-p/276580
Concernant les fonctions Eval/Expr, je n'ai pas encore écrit assez de JSL pour me sentir à l'aise avec celles-ci. Mais rien dans mon expérience de codage n'a été aussi bouleversant que de pouvoir utiliser & (et &&&….bons souvenirs !) dans la fonction macro de SAS et jusqu'à présent, j'ai considéré Eval/Expr comme le parallèle de JSL. (Contexte : la majeure partie de ma carrière avant JMP était consacrée à la programmation SAS, mais j'ai touché à certaines choses).
Re : Meilleurs conseils de scriptVotre élément n°1 me rappelle une astuce géniale que tout le monde devrait connaître : Ctrl-[ sélectionne tout ce qui est entre parenthèses. Ceci est très utile pour le débogage, la vérification de l'exhaustivité, et surtout pour les modifications de code (copier/coller/remplacer).