/*************************************************************************************************************************************/ /* */ /* T R A N S F E R T P A R T I E L , T O T A L O U A U G M E N T E D ' U N F I C H I E R : */ /* */ /* */ /* Author of '$xcp/transfert$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20190307163233). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 NOMBRE_D_OCTETS_A_TRANSFERER \ MILLE \ /* Nombre d'octets a transferer. */ #define CARACTERE_DE_COMPLEMENT \ K_BLANC \ /* Caractere a ajouter au cas ou il en manque... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* T R A N S F E R T P A R T I E L , T O T A L O U A U G M E N T E D ' U N F I C H I E R : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Positive,INIT(nombre_d_octets_a_transferer,NOMBRE_D_OCTETS_A_TRANSFERER)); /* Nombre d'octets a transferer. */ DEFV(Char,INIT(caractere_de_complement,CARACTERE_DE_COMPLEMENT)); /* Caractere a ajouter au cas ou il en manque... */ /*..............................................................................................................................*/ GET_ARGUMENTS_(nombre_d_arguments ,BLOC(GET_ARGUMENT_I("nombre_octets=""no=""n=",nombre_d_octets_a_transferer); GET_ARGUMENT_K("caractere_complement=""cc=""c=",caractere_de_complement); ) ); begin_nouveau_block Bblock DEFV(Positive,INIT(nombre_d_octets_transferes,ZERO)); /* Nombre d'octets transferes. */ DEFV(Char,INIT(caractere_courant,K_UNDEF)); /* Caractere courant. */ 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. */ INCR(nombre_d_octets_transferes,I); Test(IFLE(nombre_d_octets_transferes,nombre_d_octets_a_transferer)) Bblock CALS(Putchar(caractere_courant)); /* Tous les caracteres demandes sont transmis... */ Eblock ATes Bblock /* Cas ou il y a trop de caracteres dans le fichier Argument... */ Eblock ETes Eblock ETan Tant(IFLT(nombre_d_octets_transferes,nombre_d_octets_a_transferer)) /* Cas ou il n'y a pas assez de caracteres dans le fichier Argument : */ Bblock CALS(Putchar(caractere_de_complement)); INCR(nombre_d_octets_transferes,I); Eblock ETan Eblock end_nouveau_block RETU_Commande; Eblock ECommande