// import static java.lang.System.*;   // A partir de Java 5.0 ...
import java.io.*;
import java.util.Date;
/**
 * 'es.java' Utilitaire de base de lecture d'une chaîne de caractères ...
 * @author   (c) ~/2A  - H. Nguyen-Phu
 * @version  1.3   01.03.2009 
 * @since     1.0   22.10.2003
 */
public class es  {
/** Constructeur sans arguments  vide  pourque cette classe ne soit pas instanciée !    */
 public es() {}
 
/** attente():  Procédure publique de classe ('static') fournit l'heure et la date de fin d'exécution d'un programme Java    */
 public static void attente()   {  // Pour stabiliser l'écran avant de quitter:
    Date today = new Date();    // Date du  jour et heure courante ...
    System.out.println("\n\n(c)~/2A env. - 'es' utility (current package) - "+today+"\nBye! Type ENTER key to quit ...\n");
    byte[] lu= new byte[25];
    try {
              System.in.read(lu,0,25);
          }     catch (IOException e)  {
		System.err.println("\n  'ES.JAVA / attente()' - Input Error!");
	                                   }
 }
/**
 * LireCh(): Fonction publique de classe retourne une chaîne de caractères
 *    Lecture récursive d'une valeur entree au clavier sans message de guide 
 *    via le lecteur bufférisé et renvoi de la valeur sous la forme d'une chaîne
 * @return  une chaîne 'String'
 */
 public static String LireCh()  {
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     String S = new String();
     try {
	       S = br.readLine();
	 } catch(IOException ioe)   {
	          System.err.println("\n  'ES.JAVA / LireCh()' - Data input error !");
              S = LireCh("\n  Please, TRY again... "); 
			  // noter l'appel croisé de  LireCh()   -->   LireCh(String)
	 }
     return S;
  }

  /**
   * LireCh(msg): Fonction publique de classe retourne une chaîne de caractères
   *    Lecture récursive d'une valeur entrée au clavier avec un message de guide
   *    via le lecteur bufférisé et renvoi de la valeur sous la forme d'une chaîne
   * @param   msg  ou  message de guide
   * @return    une chaîne 'String'
   */
  public static String LireCh(String  msg)  {
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     String S = "";
     System.out.print(msg+"   ");
     try {
	       S = br.readLine();
	 } catch(IOException  error) {
		System.err.println("\n  'ES.JAVA / LireCh(Msg)' - Erreur de lecture !");
        System.err.println("\n  Please, TRY again ... ");
        S = LireCh();  // noter l'appel croisé de  LireCh(String)   -->   LireCh()
	 }
     return S;
  }
}
