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;
Cette réponse vous a-t-elle aidé ?
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