addFormat - Que se passe-t-il si j'essaie d'ajouter un format qui existe déjà avec `addFormat`?

Conflits : Contrôlez l'Écrasement

Réponse

Par défaut, le paramètre `replace` est défini sur TRUE, ce qui signifie qu'un format existant du même nom sera remplacé. Si vous le définissez sur FALSE, l'action échouera si le format existe déjà.
SAS / CASL
proc cas;
   /* 1. Initialisation */
   sessionProp.addFmtLib / fmtLibName="MesFormats" replace=true;

   /* 2. Création de la Version 1 du format */
   sessionProp.addFormat /
      fmtLibName="MesFormats", fmtName="AlerteStock",
      ranges={"low - high = 'Pas de statut'"};
   
   print "--- Tentative de modification avec replace=FALSE ---";
   /* 3. Tentative d'écrasement sans forcer le remplacement */
   /* Utilisation de try/catch pour capturer l'erreur proprement */
   try
      sessionProp.addFormat /
         fmtLibName="MesFormats", fmtName="AlerteStock",
         replace=false, /* <--- Interdit l'écrasement */
         ranges={"low - high = 'Nouveau statut'"};
   catch e;
      print "ERREUR CAPTURÉE : " e.message;
   end_try;

   print "--- Modification forcée avec replace=TRUE ---";
   /* 4. Mise à jour réussie (Hot Swap) */
   sessionProp.addFormat /
      fmtLibName="MesFormats", fmtName="AlerteStock",
      replace=true, /* <--- Autorise la mise à jour */
      ranges={"low -< 50 = 'Urgent'", "50 - high = 'OK'"};

   /* Vérification sur les données */
   table.fetch / 
      table={caslib="casuser", name="produits"}
      format={Quantite="AlerteStock."};
quit;
Did this answer help you?
Privilégiez l'Explicite pour des scripts Idempotents. Bien que le comportement par défaut puisse être le remplacement, ne vous reposez jamais sur une valeur par défaut implicite en production. Best Practice : Écrivez toujours replace=TRUE dans vos scripts de déploiement ou d'ETL. Cela rend votre code "idempotent" (ré-exécutable à l'infini sans erreur). Si vous ne le faites pas et que le paramètre par défaut change dans une version future de SAS Viya, ou si vous passez replace=FALSE pour protéger un format critique, sachez que CAS renverra une erreur de sévérité 2 (Error), ce qui stoppera net l'exécution de votre programme.
addFormat

sessionProp

Doc : addFormat