Html interface empty { }; Html
 ; abstract class empcont implements java.io.Serializable {
 
   abstract public boolean is_full();
   abstract public void insert( emp e );
   abstract public void insert( int empno, int age, java.lang.String dept, java.lang.String name );
   abstract public void close(int cardpers);
   abstract public void checkin();
   //abstract public static CContTyp open(String namefile); we need it to be CContTYp =>PB
} ;

Html 
 ;
		 
   // abstract cursor declaration



Html abstract class empcursor implements java.util.Enumeration {
   abstract public emp obj();
   abstract public void insert( emp e );
   abstract public void insert( int empno, int age, java.lang.String dept, java.lang.String name );
   
   abstract public emp first();
   abstract public boolean more();
   abstract public emp next();
   abstract public void remove();
   abstract public emp position(int pos);
   
   abstract public boolean hasMoreElements();
   abstract public Object nextElement();
} ;

Html static ;
final class empcont1 extends empcont implements empty {     emp_1 first_2, last_2;         
   
   public empcont1() { 
      if ( emp_1.cont == null ) emp_1.cont = this;
      else
     Jakarta.util.Util.fatalError("creating more than one instance");    
     first_2 = last_2 = null;        
   }   public boolean is_full() { return        false; 
   } public void insert( emp e ) {
      new emp_1 ( this, e );              
	  //use the same for both methods
	  //allows to add a counter in the method
   } public void insert( int empno, int age, java.lang.String dept, java.lang.String name ) {
      new emp_1( this, empno, age, dept, name );              
	  //use the same for both methods
	  //allows to add a counter in the method
   } public void close(int cardpers) {               
      } public void checkin() {               
      } public static empcont1 open(String namefile) { empcont1 cont = null;              
   		return cont;
      }
     } ; ;
final class emp_1 extends emp { static public empcont1 cont = null;
   // element linking methods
   

   // element unlinking methods
         emp_1 left_2, right_2; 
   boolean df_4;         emp_1 ( ) { } emp_1 ( empcont1 c, emp e ) {
     super(e);
   // element linking methods
   

   // element unlinking methods
        
      dlist_relink_2();  df_4 = false;  
   } emp_1 ( empcont1 c, int empno, int age, java.lang.String dept, java.lang.String name ) {
     super( empno, age, dept, name );
   // element linking methods
   

   // element unlinking methods
        
      dlist_relink_2();  df_4 = false;  
   }
   // element linking methods
   

   // element unlinking methods
        
   final void dlist_relink_2() {
      left_2 = null;
      if (cont.last_2 == null) cont.last_2 = this;
      right_2 = cont.first_2;
      cont.first_2 = this;
      if (right_2 != null) right_2.left_2 = this;
   }   
   // element linking methods
   

   // element unlinking methods
        
   final void dlist_unlink_2() {
      if (left_2 != null) left_2.right_2 = right_2;
      if (right_2 != null) right_2.left_2 = left_2;
      if (cont.first_2 == this) cont.first_2 = right_2;
      if (cont.last_2 == this) cont.last_2 = left_2;
   }       
                   public int empno() {
                      return empno;
                   }
                   public int age() {
                      return age;
                   }
                   public java.lang.String dept() {
                      return dept;
                   }
                   public java.lang.String name() {
                      return name;
                   }     
				   public int empno( int _newvalue ) {       empno = _newvalue;       
                      return empno;
                   } 
				   public int age( int _newvalue ) {       age = _newvalue;       
                      return age;
                   } 
				   public java.lang.String dept( java.lang.String _newvalue ) {       dept = _newvalue;       
                      return dept;
                   } 
				   public java.lang.String name( java.lang.String _newvalue ) {       name = _newvalue;       
                      return name;
                   }
}
   // element linking methods
   

   // element unlinking methods
    ; ;
abstract class empcursor_1 extends empcursor implements java.util.Enumeration{

   // encapsulates only added data members and insert/remove methods

   public emp_1 obj;
   public empcont1 cont;

   // movement methods
                 
   
   public emp obj() {
      return obj;
   }

   public boolean hasMoreElements() {
      return more();
   }

   public Object nextElement() {
      Object ret = obj;
      next();
      return ret;
   }

  
   public void insert( emp e ) {
      obj = new emp_1 ( cont, e );

   // movement methods
                 
   }

   public void insert( int empno, int age, java.lang.String dept, java.lang.String name ) {
      obj = new emp_1( cont, empno, age, dept, name );

   // movement methods
                 
   }

   // note: once element is unlinked, it is effectively deleted from the container
   //       and will be garbage collected by Java once the cursor no longer points
   //       to it.

   public void remove() {

   // movement methods
        
      obj.dlist_unlink_2(); 
      obj.df_4 = true;      
   }

   // position method -- will be overloaded by those concrete cursors supporting
   // postioning operation

   public emp position(int pos) {
      return null;
   }

   // movement methods
        
      final protected void adv_2() { obj = obj.right_2; }
      final protected void start_2() { obj = cont.first_2; }
      final protected void back_2() { obj = obj.left_2; }
      final protected void end_2() { obj = cont.last_2; }         
}

   // movement methods
    ;

Html ;
	  
final class old extends empcursor_1 {                  // cursor specific (user-defined) fields
                    // cursor-specific generated fields
   public old (empcont1 cont000 ) {
      obj = null; cont = cont000;                  // cursor specific (user-defined) fields
                 
   }

   static public java.util.Enumeration elements(empcont1 cont000 ) { old enum_cur = new old( cont000 );
      enum_cur.first();
      return enum_cur;
   }

   public emp first() {                  // cursor specific (user-defined) fields
         start_2(); 
       while (  obj != null &&  ) {  adv_2(); 
       }
         while (  obj != null ) {
            if ( !(  ) ) { 
    obj = null; 
               break;
            }
            if (  obj. age() > 40 )
               break;  adv_2(); 
         }    
      return obj;
   }

   public boolean more() { return      obj != null; 
   }

   public emp next() {                  // cursor specific (user-defined) fields
         adv_2(); 
         while (  obj != null ) {
            if ( !(  ) ) { 
    obj = null; 
               break;
            }
            if (  obj. age() > 40 )
               break;  adv_2(); 
         }    
      return obj;
   }
}                  // cursor specific (user-defined) fields
    ;

Html ;
	  
final class all extends empcursor_1 {                  // cursor specific (user-defined) fields
                    // cursor-specific generated fields
   public all (empcont1 cont000 ) {
      obj = null; cont = cont000;                  // cursor specific (user-defined) fields
                 
   }

   static public java.util.Enumeration elements(empcont1 cont000 ) { all enum_cur = new all( cont000 );
      enum_cur.first();
      return enum_cur;
   }

   public emp first() {                  // cursor specific (user-defined) fields
         start_2(); 
       while (  obj != null &&  ) {  adv_2(); 
       }
         while (  obj != null ) {
            if ( !(  ) ) { 
    obj = null; 
               break;
            }
            if (  )
               break;  adv_2(); 
         }    
      return obj;
   }

   public boolean more() { return      obj != null; 
   }

   public emp next() {                  // cursor specific (user-defined) fields
         adv_2(); 
         while (  obj != null ) {
            if ( !(  ) ) { 
    obj = null; 
               break;
            }
            if (  )
               break;  adv_2(); 
         }    
      return obj;
   }
}                  // cursor specific (user-defined) fields
    ;

Html ;
	  
final class allname extends empcursor_1 { public int x;                  // cursor specific (user-defined) fields
      
         java.util.Vector vbuf_95; emp_1 []      buffer_95;
         int              index_95;
         int              asize_95;              // cursor-specific generated fields
   public allname (empcont1 cont000, int x000 ) {
      obj = null; cont = cont000; x = x000;                  // cursor specific (user-defined) fields
                 
   }

   static public java.util.Enumeration elements(empcont1 cont000, int x000 ) { allname enum_cur = new allname( cont000, x000 );
      enum_cur.first();
      return enum_cur;
   }

   public emp first() {                  // cursor specific (user-defined) fields
      
         vbuf_95 = new java.util.Vector( );   start_2(); 
       while (  obj != null &&  ) {  adv_2(); 
       }
         while (  obj != null ) {
            if ( !(  ) ) { 
    obj = null; 
               break;
            }
            if (  obj. age() == x )
               break;  adv_2(); 
         } 
         while (   obj != null ){
            vbuf_95.addElement( obj );   adv_2(); 
         while (  obj != null ) {
            if ( !(  ) ) { 
    obj = null; 
               break;
            }
            if (  obj. age() == x )
               break;  adv_2(); 
         } 
         }

         asize_95 = vbuf_95.size( );
         buffer_95 = new emp_1[asize_95 + 1];
         vbuf_95.copyInto( buffer_95 );
         /* 
          * add an extra null element to the array so that the 
          * code for nextMethod() could be as simple as possible
          */
         buffer_95[asize_95] = null;
         
         /* sort the buffer if needed */
         
            int incr = asize_95 / 2;
            while ( incr >= 1 ) {
               for ( int i = incr; i < asize_95; i++ ) { emp_1 tmp = buffer_95[i];
                  int j = i;
                  while ( j >= incr && tmp. name().compareTo( 
               buffer_95[j - incr]. name( )) <0 ) {
                     buffer_95[j] = buffer_95[j - incr];
                     j-= incr;
                  }
                  buffer_95[j] = tmp;
               }
               incr /= 2;
            }

         /* return the first element */
         obj = buffer_95[0];
         index_95 = 1;   
      return obj;
   }

   public boolean more() { return    index_95 <= asize_95; 
   }

   public emp next() {                  // cursor specific (user-defined) fields
       obj = buffer_95[index_95++];   
      return obj;
   }
}                  // cursor specific (user-defined) fields
    ;

Html ;
	  
final class allname1 extends empcursor_1 {                  // cursor specific (user-defined) fields
                    // cursor-specific generated fields
   public allname1 (empcont1 cont000 ) {
      obj = null; cont = cont000;                  // cursor specific (user-defined) fields
                 
   }

   static public java.util.Enumeration elements(empcont1 cont000 ) { allname1 enum_cur = new allname1( cont000 );
      enum_cur.first();
      return enum_cur;
   }

   public emp first() {                  // cursor specific (user-defined) fields
         start_2(); 
       while (  obj != null &&  ) {  adv_2(); 
       }
         while (  obj != null ) {
            if ( !(  ) ) { 
    obj = null; 
               break;
            }
            if (  obj. name().compareTo( "Don")==0 )
               break;  adv_2(); 
         }    
      return obj;
   }

   public boolean more() { return      obj != null; 
   }

   public emp next() {                  // cursor specific (user-defined) fields
         adv_2(); 
         while (  obj != null ) {
            if ( !(  ) ) { 
    obj = null; 
               break;
            }
            if (  obj. name().compareTo( "Don")==0 )
               break;  adv_2(); 
         }    
      return obj;
   }
}                  // cursor specific (user-defined) fields
    ;