Nested Hashes

*-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.
/*
 Since a <Value> of a hash's pair may be in any scalar or complex type,
 a hash may be nested by assigning an another hash to a hash <Value>. 

*/
PROCEDURE Main()
   SET COLO TO "W/B"
   SetMode( 50, 120 )

   CLS

   hSouth := { 'Argentina' => "Buenos Aires",;
               'Brasil'    => "Brasilia",;
               'Chile'     => "Santiago" }

   hNorth:= { 'USA'    => "Washington DC",;
              'Canada' => "Ottawa",; 
              'Mexico' => "Mexico City" } 

   * a hash contains two hashes :

   hAmerica := { "America" => { "North" => hNorth,;
                                "South" => hSouth } } 

   * Standart array indexing syntax :

   ? hAmerica[ "America", "North", "USA" ] // Washington DC

   * Alternate syntax to indexing :

   ? hAmerica[ "America"][ "South" ][ "Chile" ] // Santiago

   ?
   @ MAXROW(), 0
   WAIT "EOF HashNest.prg"

RETURN // HashNest.Main()
*-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.