http://www.adaconcept.com/programs/sorsologep.ads
package sorsologep is
   
   type sorsolasimodok is (kezi, gepi);                                   --diszkret tipus(ok)  (a tipusertekeit bekerjuk majd a billentyuzetrol)
   type golyoallapot is (kihuzva, nincs_kihuzva);                         --ezekkel fejezzuk ki, hogy egy adott golyot kisorsoltunk/kihuztunk e mar
 
   type golyotipus(allapot:golyoallapot:=nincs_kihuzva) is private;       --atlatszatlan tipus, a kulvilag elol elrejtjuk a megvalositasat. Ez itt csak egy bejelentes, a forditonak...            
   type golyoktipus(<>) is private;                                       --egy masik pelda erre... (nem teljesen definialt tipussal)
   subtype sorszam is positive range 1..5;                                --altipus: nem hoz letre uj tipust... (egymasnak ertekuladhatok, futasi-idoben ellenorzes a megszoritasra...) 
   

   ---------------------------[publikus metodusok]----------------------- --ezek lathatok kivulrol a csomag hasznaloja szamara
 
   --ezek az alprogram deklaraciok.... ezeknek a definicioi vannak a csomag torzseben
   procedure sorsolasimodbekeres;                                         --beagyazott generikus csomag (enumeration_io) gyakorlasara
   procedure golyokletrehozasa;                                           --a golyok -tomb feltoltese alapertelmezett ertekekkel
   procedure kisorsoltgolyokkiirasa;
   procedure sorsolas;                                                    --veletlenszam generalas mutatasa + mas hasznos, egyszeru otletek
  
   
   
   ------[amik el vannak rejtve a "kulvilag"/csomag hasznaloja elol]------
   private 
    
     type otoslottoszamtipus is new positive range 1..90;                --uj tipus definialasa. Ezentul konvertalni kell az otoslottoszamtipus es a positive kozott.
     type golyotipus(allapot:golyoallapot:=nincs_kihuzva) is record      --diszkriminansos rekord alapertelmezett diszkriminans ertekkel
                                                               szam:otoslottoszamtipus;
                                                               case allapot is                                      --elagazas a diszkriminans erteken, ami befolyasolja a rekord szerkezetet
                                                                 when kihuzva       => hanyadiknak_huztak:sorszam;
                                                                 when nincs_kihuzva => null;
                                                               end case;
                                                             end record;
     type golyoktipus is array(positive range <>) of golyotipus;          --a golyotipus megszoritatlan altipus (ha megszoritott lenne golyotipus(nincs_kihuzva), akkor soha nem lehetne kihuzva)
                                                                          --igy ha az egesz rekord erteket kap (diszkriminansostul), akkor megvaltoztathatjuk a szerkezetet
                                                                          --A golyoktipus egy megszoritas nelkuli positive indexu tomb 
   ----------------------------[adattagok]--------------------------------  
     sorsolasimod:sorsolasimodok;
     golyok:golyoktipus(1..90);                                           --mivel megszoritas nelkuli, itt, a deklaralaskor kell eldonteni a konkret indexhatarokat
    
     

end sorsologep;