/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L ' E X E C U T I O N   D E   ' $X ' S   S O U S   ' $CSH '   D A N S   ' v $xcc/cpp$Z SOUS_CSH '  :       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtKg/Exec_X_CSH.01$K' :                                                                                        */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20240117103104).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_MINI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   MULTIPLICATION(constante)                                                                                                     \
                    MUL2(CENT,constante)

#define   K3                                                                                                                            \
                    TROIS
#define   K300                                                                                                                          \
                    MULTIPLICATION(K3)

#define   K4                                                                                                                            \
                    QUATRE
#define   K400                                                                                                                          \
                    MULTIPLICATION(K4)

#define   PRINT_D(message,constante)                                                                                                    \
                    Bblock                                                                                                              \
                    CAL2(Prin2("%s=%d\n",message,constante));                                                                           \
                    Eblock

#define   PRINT_F(message,constante)                                                                                                    \
                    Bblock                                                                                                              \
                    CAL2(Prin2("%s=%+.^^^\n",message,constante));                                                                       \
                    Eblock

#define   PRINT_C(code)                                                                                                                 \
                    Bblock                                                                                                              \
                    BLOC(code);                                                                                                         \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L ' E X E C U T I O N   D E   ' $X ' S   S O U S   ' $CSH '   D A N S   ' v $xcc/cpp$Z SOUS_CSH '  :       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Int,INIT(niveau,0x00123456));
     /*..............................................................................................................................*/
     BSaveModifyVariable(Positive
                        ,nombre_de_chiffres_des_editions_flottantes
                        ,DIX
                         );

     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(VIDE;)
                    );

     PRINT_D("c1",[[[[[[[[C1[[[[[[[['$xcg/ADD2.01$X x=1 y=100 signe="$K_VIDE"']]]]]]]]C1]]]]]]]]);
     PRINT_D("c2",[[[[[[[[C2[[[[[[[['$xcg/ADD2.01$X x=2 y=200 signe="$K_VIDE"']]]]]]]]C2]]]]]]]]);
                                        /* Exemples simples ou les constantes numeriques sont des suites de chiffres...              */

     PRINT_D("c3",[[[[[[[[C3[[[[[[[['eval $xcg/ADD2.01$X 'x=K3' 'y=`calcul K300`' signe="$K_VIDE"']]]]]]]]C3]]]]]]]]);
     PRINT_D("c4",[[[[[[[[C4[[[[[[[['eval $xcg/ADD2.01$X 'x=K4' 'y=`calcul K400`' signe="$K_VIDE"']]]]]]]]C4]]]]]]]]);
                                        /* Exemples plus compliques ou les constantes numeriques sont des parametres. On notera      */
                                        /* l'usage des '$K_QS's et des '$K_QA's :                                                    */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /*         ---- pour delimiter  la commande a executer sous '$CSH' ----                      */
                                        /*        |                                                            |                     */
                                        /*        |                                                            |                     */
                                        /*        |                   Pour separer les arguments               |                     */
                                        /*        |             "x=" et "y=" ainsi que pour utiliser           |                     */
                                        /*        |                 les constantes 'K4' et 'K400'              |                     */
                                        /*        |                     de 'v $xcc/cpp$Z'.                     |                     */
                                        /*        |                                                            |                     */
                                        /*        |                     ----   ---------------                 |                     */
                                        /*        |                    |    | |               |                |                     */
                                        /*       \|/                  \|/  \| |/             \|/              \|/                    */
                                        /*        .                    .    . .               .                .                     */
                                        /*                                                                                           */
                                        /*        'eval $xcg/ADD2.01$X 'x=K4' 'y=`calcul K400`' signe="$K_VIDE"'                     */
                                        /*         ----                          .           .                                       */
                                        /*          |                           /|\         /|\                                      */
                                        /*          |                            |           |                                       */
                                        /*          |                            |           |                                       */
                                        /*          |                             ------------------ Pour faire interpreter 'calcul' */
                                        /*          |                                                par '$CSH'                      */
                                        /*          |                                                                                */
                                        /*          |                                                                                */
                                        /*           ---------------> Pour forcer l'evaluation de 'calcul'...                        */
                                        /*                                                                                           */

     CAL2(Prin0("\n"));

     PRINT_F("pi(1)",[[[[[[[[DEC_PI_1[[[[[[[['echo 'PI'']]]]]]]]DEC_PI_1]]]]]]]]);
                                        /* Definition 1 de 'pi'...                                                                   */

     PRINT_F("pi(2)",[[[[[[[[DEC_PI_2[[[[[[[['$BC --mathlib $xtb/Decimales_pi.02 | $CA']]]]]]]]DEC_PI_2]]]]]]]]);
                                        /* Definition 2 de 'pi'...                                                                   */
                                        /*                                                                                           */
                                        /* L'usage de "| $CA" est destine a eliminer les messages :                                  */
                                        /*                                                                                           */
                                        /*   bc (...)                                                                                */
                                        /*   Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 (...) Free Software Foundation, Inc.  */
                                        /*   This is free software with ABSOLUTELY NO WARRANTY.                                      */
                                        /*   For details type `warranty'.                                                            */
                                        /*                                                                                           */
                                        /* et ne garder donc que la valeur calculee...                                               */

     PRINT_F("pi(3)",[[[[[[[[DEC_PI_3[[[[[[[['echo 3.14']]]]]]]]DEC_PI_3]]]]]]]]);
                                        /* Definition 3 de 'pi'...                                                                   */

#define   COM_41                                                                                                                        \
                    echo      3.141
     PRINT_F("pi(4)",[[[[[[[[DEC_PI_4[[[[[[[['eval 'COM_41'']]]]]]]]DEC_PI_4]]]]]]]]);
                                        /* Definition 4 de 'pi'...                                                                   */

#define   COM_51                                                                                                                        \
                    set       VaLeUr_PI=3.1415
#define   COM_52                                                                                                                        \
                    echo      "$VaLeUr_PI"
     PRINT_F("pi(5)",[[[[[[[[DEC_PI_5[[[[[[[['eval 'COM_51' ; eval 'COM_52'']]]]]]]]DEC_PI_5]]]]]]]]);
                                        /* Definition 5 de 'pi'...                                                                   */
                                        /*                                                                                           */
                                        /* A noter l'utilisation des '$K_QS' :                                                       */
                                        /*                                                                                           */
                                        /*                  'eval 'COM_41' ; eval 'COM_42''                                          */
                                        /*                  .     .           .        .           ..                                */
                                        /*                 /|\   /|\         /|\      /|\         /||\                               */
                                        /*                  |     |           |        |           ||                                */
                                        /*                  |     |           |        |           ||                                */
                                        /*                   -----             --------            --                                */
                                        /*                                                                                           */
                                        /* et ainsi, 'COM_41' et 'COM_42', etant a l'exterieur des paires de '$K_QS's, sont          */
                                        /* remplacees par leurs valeurs numeriques...                                                */

#define   COM_61                                                                                                                        \
                    FilSTmpB  FVaLeUr_PI
#define   COM_62                                                                                                                        \
                    echo      "3.14159"                                                             >> "$FVaLeUr_PI"
#define   COM_63                                                                                                                        \
                    "$CA"     "$FVaLeUr_PI"
#define   COM_64                                                                                                                        \
                    FilSTmpE  FVaLeUr_PI
     PRINT_F("pi(6)",[[[[[[[[DEC_PI_6[[[[[[[['eval 'COM_61' ; eval 'COM_62' ; eval 'COM_63' ; eval 'COM_64'']]]]]]]]DEC_PI_6]]]]]]]]);
                                        /* Definition 6 de 'pi'...                                                                   */

#define   COM_71                                                                                                                        \
                    FilSTmpB  FVaLeUr_PI
#define   COM_72                                                                                                                        \
                    echo      "3.141592"                                                            >> "$FVaLeUr_PI"
#define   COM_73                                                                                                                        \
                    "$CA"     "$FVaLeUr_PI"
#define   COM_74                                                                                                                        \
                    FilSTmpE  FVaLeUr_PI
#define   COM_7                                                                                                                         \
                    (COM_71 ; COM_72 ; COM_73 ; COM_74)
     PRINT_F("pi(7)",[[[[[[[[DEC_PI_7[[[[[[[['eval 'COM_7'']]]]]]]]DEC_PI_7]]]]]]]]);
                                        /* Definition 7 de 'pi'...                                                                   */

#define   COM_81                                                                                                                        \
                    FilSTmpB  FVaLeUr_PI
#define   COM_82                                                                                                                        \
                    echo      "scale=8;"                                                            >> "$FVaLeUr_PI"
#define   COM_83                                                                                                                        \
                    echo      "16*a(1/5)-4*a(1/239);"                                               >> "$FVaLeUr_PI"
#define   COM_84                                                                                                                        \
                    echo      "quit;"                                                               >> "$FVaLeUr_PI"
#define   COM_85                                                                                                                        \
                    "$BC"     "--mathlib" "$FVaLeUr_PI" | "$CA"
#define   COM_86                                                                                                                        \
                    FilSTmpE  FVaLeUr_PI
#define   COM_8                                                                                                                         \
                    (COM_81 ; COM_82 ; COM_83 ; COM_84 ; COM_85 ; COM_86)
     PRINT_F("pi(8)",[[[[[[[[DEC_PI_8[[[[[[[['eval 'COM_8'']]]]]]]]DEC_PI_8]]]]]]]]);
                                        /* Definition 8 de 'pi'...                                                                   */

#define   COM_91                                                                                                                        \
                    FilSTmpB  FVaLeUr_PI
#define   COM_92                                                                                                                        \
                    echo      "scale=`calcul "NOMBRE_DE_CHIFFRES_DES_EDITIONS_FLOTTANTES"`;"        >> "$FVaLeUr_PI"
                                        /* Ceci a implique la modification 'v $xcp/Konstantes$K 20101119165021' afin qu'il n'y ait   */
                                        /* pas de parenthenses ci-dessus car, en effet, sinon cela demandait avant cette date        */
                                        /* l'execution de :                                                                          */
                                        /*                                                                                           */
                                        /*                  echo "scale=`calcul " ( ( ( ( 16 ) + ( 1 ) ) ) + ( 1 ) ) "`;"            */
                                        /*                                                                                           */
                                        /* ce qui donnait le message d'erreur suivant :                                              */
                                        /*                                                                                           */
                                        /*                  Badly placed ()'s.                                                       */
                                        /*                                                                                           */
                                        /* dont j'ignore l'emetteur...                                                               */
#define   COM_93                                                                                                                        \
                    echo      "16*a(1/5)-4*a(1/239);"                                               >> "$FVaLeUr_PI"
#define   COM_94                                                                                                                        \
                    echo      "quit;"                                                               >> "$FVaLeUr_PI"
#define   COM_95                                                                                                                        \
                    "$BC"     "--mathlib" "$FVaLeUr_PI" | "$CA"
#define   COM_96                                                                                                                        \
                    FilSTmpE  FVaLeUr_PI
#define   COM_9                                                                                                                         \
                    (COM_91 ; COM_92 ; COM_93 ; COM_94 ; COM_95 ; COM_96)
     PRINT_F("pi(9)",[[[[[[[[DEC_PI_9[[[[[[[['eval 'COM_9'']]]]]]]]DEC_PI_9]]]]]]]]);
                                        /* Definition 9 de 'pi'...                                                                   */

     CAL2(Prin0("\n"));

#define   COM_A1                                                                                                                        \
                              "$CA"               "$xtKg/Exec_X_CSH.01.01$I"
                                        /* Recuperation du '$I' a inclure...                                                         */
#define   COM_A2                                                                                                                        \
                    (eval     "$GRE"              "-v $K_QD""^ */\*$K_QD")
                                        /* Suppression des commentaires de type '$c'...                                              */
#define   COM_A3                                                                                                                        \
                    (eval     "$SE"               "-e $K_QD""s+  *+ +g$K_QD" "-e $K_QD""s+\\\n++g$K_QD")
                                        /* Suppression des espaces redondants et des "\n"...                                         */
#define   COM_A4                                                                                                                        \
                    (eval     "$R"                "$K_QD$K_NL$K_QD" "$K_QD$K_BLANC$K_QD")
                                        /* Mise sur une seule ligne...                                                               */
#define   COM_A5                                                                                                                        \
                              "$xcp/ferme_K_NL$X"
                                        /* Fermeture de la ligne unique...                                                           */
#define   COM_A                                                                                                                         \
                    (COM_A1 | COM_A2 | COM_A3 | COM_A4 | COM_A5)

     PRINT_C([[[[[[[[CODE_C_1[[[[[[[['eval 'COM_A'']]]]]]]]CODE_C_1]]]]]]]]);
                                        /* Insertion d'un code '$c' 01...                                                            */

     ESaveModifyVariable(Positive
                        ,nombre_de_chiffres_des_editions_flottantes
                         );
     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2024-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2024-2024.