/*************************************************************************************************************************************/ /* */ /* N U M E R O T A G E D E S L I G N E S : */ /* */ /* */ /* Author of '$xcg/numerotage$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20001002115842). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ #define NUMERO_DE_LA_PREMIERE_LIGNE \ UN \ /* Numero de la premiere ligne. */ #define NOMBRE_DE_CHIFFRES_A_EDITER \ HUIT \ /* Nombre de chiffres a editer pour les numeros. */ #define SEPARATEUR_ENTRE_LE_NUMERO_ET_LA_LIGNE \ C_BLANC \ /* Chaine de caracteres a mettre entre le numero et la ligne... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* N U M E R O T A G E D E S L I G N E S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Int,INIT(premiere_ligne,NUMERO_DE_LA_PREMIERE_LIGNE)); /* Numero de la premiere ligne. */ DEFV(Positive,INIT(nombre_de_chiffres_a_editer,NOMBRE_DE_CHIFFRES_A_EDITER)); /* Nombre de chiffres a editer pour les numeros. */ DEFV(CHAR,INIC(POINTERc(separateur_entre_le_numero_et_la_ligne),SEPARATEUR_ENTRE_LE_NUMERO_ET_LA_LIGNE)); /* Chaine de caracteres a mettre entre le numero et la ligne... */ /*..............................................................................................................................*/ DEFV(Logical,INIT(on_vient_de_rencontrer_un_K_LF,VRAI)); /* Afin de reperer les changements des ligne, initialise de facon a ce que la premiere */ /* ligne soit numerotee... */ DEFV(Int,INIT(numero_de_la_ligne_courante,UNDEF)); /* Numero de la ligne courante. */ DEFV(Char,INIT(caractere_courant,K_UNDEF)); /* Caractere courant. */ GET_ARGUMENTS_(nombre_d_arguments ,BLOC(GET_ARGUMENT_I("premiere=""p=",premiere_ligne); GET_ARGUMENT_I("nombre=""n=""chiffres=",nombre_de_chiffres_a_editer); GET_ARGUMENT_K("zero=",PREMIER_CARACTERE_ITb0(_chain_numero_____caractere_zero_devant_un_numero)); GET_ARGUMENT_C("separateur=""s=",separateur_entre_le_numero_et_la_ligne); GET_ARGUMENT_I("base_numeration=""base=",_chain_numero_____base_de_numeration); /* Argument introduit le 20190306152037... */ ) ); EGAL(numero_de_la_ligne_courante,premiere_ligne); /* Positionnement sur la premiere ligne. */ Tant(GetcharT(caractere_courant)) Bblock /* Le caractere courant de l'entree courante est recupere ; et on boucle */ /* sur cette recuperation tant que l'on n'est pas au bout du fichier. */ Test(EST_VRAI(on_vient_de_rencontrer_un_K_LF)) Bblock CAL2(Prin2("%s%s" ,chain_numero(numero_de_la_ligne_courante,nombre_de_chiffres_a_editer) ,separateur_entre_le_numero_et_la_ligne ) ); Eblock ATes Bblock Eblock ETes CALS(Putchar(caractere_courant)); /* Transmission du caractere courant... */ Test(IFEQ(caractere_courant,K_LF)) Bblock EGAL(on_vient_de_rencontrer_un_K_LF,VRAI); INCR(numero_de_la_ligne_courante,I); /* Cas ou l'on a rencontre un 'K_LF'... */ Eblock ATes Bblock EGAL(on_vient_de_rencontrer_un_K_LF,FAUX); /* Cas des autres caracteres... */ Eblock ETes Eblock ETan RETU_Commande; Eblock ECommande