Accueil > Réalisations > Logiciels > Logiciels HP48 > Fonction RENAME sur HP48

Fonction RENAME sur HP48

mardi 26 juin 2007, par Paul Courbis

La HP48 ne dispose pas de commande permettant de renommer une variable (programme, valeur...). Voici comment remédier à cela en RPL de base

Une première version

<< 
   -> OLD NEW 
   << 
      OLD RCL NEW STO OLD PURGE 
   >> 
>>

Une version un peu plus élaborée

La version précédente ne contrôle pas le type des arguments, ceci peut se faire grace à la fonction TYPE qui renvoi 6 pour un nom :

<< 
   -> OLD NEW 
   << 
      IF 
         OLD TYPE 6  == NEW TYPE 6 == AND 
      THEN
         OLD RCL NEW STO OLD PURGE 
      ELSE
         "Invalid argument types"
      END
   >> 
>>

Ca ne suffit pas...

Oui mais... si la destination existe déjà on va l’écraser. Nous allons protéger cela en tentant un RCL sur la destination et en traitant l’erreur :

<< 
   -> OLD NEW 
   << 
      IF 
         OLD TYPE 6  == NEW TYPE 6 == AND 
      THEN
         IFERR
            NEW RCL
         THEN
            DROP 
            OLD RCL NEW STO OLD PURGE 
         ELSE
            DROP "Destination already exists !" DOERR
         END
      ELSE
         "Invalid argument types !" DOERR
      END
   >> 
>>

Pour fignoler !

dernier problème, l’ordre des variables est modifié par le RCL/PURGE/STO. Avec les fonctions VARS (liste des variables) et ORDER (choix de l’ordre dans le menu), nous aloons rétablir l’ordre inital. Du coup il faut rajouter un peu de traitement d’erreurs...

<< 
   -> OLD NEW 
   << 
      IF 
         OLD TYPE 6  == NEW TYPE 6 == AND 
      THEN
         IFERR
            NEW RCL
         THEN
           DROP VARS
           IFERR 
              OLD RCL 
           THEN 
              DROP2 "Original does not exist !" DOERR
           ELSE
              NEW STO OLD PURGE
              1 OVER OLD POS 1 - SUB 
              IF 
                 DUP SIZE 0 >
              THEN
                 ORDER
              ELSE
                 DROP
              END
           END 
         ELSE
            DROP « Destination already exists ! » DOERR
         END
      ELSE
         « Invalid argument types ! » DOERR
      END
   >> 
>>

Il y a surement des améliorations possibles.... N’hésitez pas à me faire parvenir vos propositions !

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

ipv6 ready ipv6 test
Suivre ce site :
Recommander cette page :
Bookmark and Share
Traduire :