u4.11.03 Procédure POURSUITE#

Syntaxe#

La syntaxe est identique à celle de la commande DEBUT, même si quelques mots-clés sont sans effet en POURSUITE.

Principe de fonctionnement#

La poursuite effectue les tâches suivantes :

  • définition des unités logiques des fichiers utilisés en impression,

  • allocation des fichiers associés aux bases de données gérées par JEVEUX,

  • lecture des catalogues de commandes mais pas des catalogues des éléments qui ont été recopiés sur la base de données lors de la première exécution.

Les concepts de python simples (de type variable) créés lors d’une exécution précédente sont conservés dans un fichier associé à la base JEVEUX (pick.* ). Lors de l’exécution de la procédure POURSUITE ces concepts sont regénérés et peuvent donc être utilisés sous le nom sous lequel ils ont été créés.

Remarque

Les objets de type classe, fonction et type ne sont pas sauvegardés par Python lors de l’appel à FIN et ne seront donc pas disponibles en poursuite.

Voir le paragraphe Exemples d’utilisation.

Opérandes#

Mot clé BASE#

Pour la base Globale, qui peut être sauvegardée et ré-utilisée en donnée d’un calcul, la taille maximum initiale en POURSUITE est conservée telle quelle si l’argument --max_base n’est pas utilisé, mais peut-être redéfini au besoin de cette manière.

Exemples d’utilisation#

L’utilisation standard de cette procédure est :

POURSUITE()

Python ne sauvegarde pas les fonctions et classes définies dans le fichier principal (il se souvient simplement dans quel module Python elles ont été définies). C’est donc le cas du fichier de commandes de code_aster.

Pour utiliser des fonctions ou classes et les retrouver en poursuite, il faut les définir dans un module externe:

  • Soit le module userpkg/usermod.py:

    def pyfunc(x):
        return x * 2
    
  • On ferait dans le premier jeu de commandes:

    DEBUT()
    
    from userpkg import usermod
    
    form = FORMULE(NOM_PARA='X', VALE='pyfunc(X)', pyfunc=usermod.pyfunc)
    assert form(2) == 4
    
    FIN()
    
  • Puis:

    POURSUITE()
    
    assert form(2) == 4
    
    FIN()
    

Pour cela, il suffit d’ajouter dans l’étude le répertoire userpkg de type nom.

Il faut bien comprendre que, lors de la relecture, Python va chercher à importer le module userpkg.usermod. Il doit donc le retrouver au même endroit.

De plus, en important ce module, Python exécute les instructions qu’il y trouve.

Pour cette raison, il est déconseillé de créer des concepts dans le corps principal d’un module importé (car ils seront créés à chaque import et encombreront la base). Il faut le faire dans des fonctions qui seront uniquement exécutées sur demande.