Still not clear if speed, memory consumption or anything else is important...
...for normal I would read the whole data into a list/array/map or only the long names, while the country IDs in a single constant #CountryIDs="AE.AF.AL.AM.AO.....", so a simple (FindString(#CountryIDs,ID+".")+2)/3 would get the country index easily.
Code: Select all
Structure CountryType
ID.s
Name.s
Alternative.s
EndStructure
DataSection
Countries:
Data.s "AE", "United Arab Emirates","Vereinigte Arabische Emirate"
Data.s "AF", "Afghanistan",""
Data.s "AL", "Albania","Albanien"
Data.s "AM", "Armenia","Armenien"
Data.s "AO", "Angola",""
Data.s "AR", "Argentina","Argentinien"
Data.s "AT", "Austria","Österreich"
Data.s "AU", "Australia","Australien"
Data.s "AW", "Aruba",""
Data.s "AZ", "Azerbaijan","Aserbaidschan"
Data.s "BA", "Bosnia and Herzegovina","Bosnien und Herzegowina"
Data.s "BB", "Barbados",""
Data.s "BD", "Bangladesh","Bangladesch"
Data.s "BE", "Belgium","Belgien"
Data.s "BF", "Burkina Faso",""
Data.s "BG", "Bulgaria","Bulgarien"
Data.s "BH", "Bahrain",""
Data.s "BI", "Burundi",""
Data.s "BJ", "Benin",""
Data.s "BN", "Brunei",""
Data.s "BO", "Bolivia","Bolivien"
Data.s "BR", "Brazil","Brasilien"
Data.s "BS", "Bahamas",""
Data.s "BT", "Bhutan",""
Data.s "BW", "Botswana",""
Data.s "BY", "Belarus","Weißrussland"
Data.s "BZ", "Belize",""
Data.s "CA", "Canada","Kanada"
Data.s "CD", "Democratic Republic of the Congo","Demokratische Republik Kongo"
Data.s "CF", "Central African Republic","Zentralafrikanische Republik"
Data.s "CG", "Republic of the Congo","Republik Kongo"
Data.s "CH", "Switzerland","Schweiz"
Data.s "CI", "Ivory Coast","Elfenbeinküste"
Data.s "CL", "Chile",""
Data.s "CM", "Cameroon","Kamerun"
Data.s "CN", "China","China (Volksrepublik)"
Data.s "CO", "Colombia","Kolumbien"
Data.s "CR", "Costa Rica",""
Data.s "CU", "Cuba","Kuba"
Data.s "CV", "Cape Verde","Kap Verde"
Data.s "CW", "Curacao","Curaçao"
Data.s "CY", "Cyprus","Zypern"
Data.s "CZ", "Czech Republic","Tschechien"
Data.s "DE", "Germany","Deutschland"
Data.s "DJ", "Djibouti","Dschibuti"
Data.s "DK", "Denmark","Dänemark"
Data.s "DO", "Dominican Republic","Dominikanische Republik"
Data.s "DZ", "Algeria","Algerien"
Data.s "EC", "Ecuador",""
Data.s "EE", "Estonia","Estland"
Data.s "EG", "Egypt","Ägypten"
Data.s "EH", "Western Sahara","Demokratische Arabische Republik Sahara"
Data.s "ER", "Eritrea",""
Data.s "ES", "Spain","Spanien"
Data.s "ET", "Ethiopia","Äthiopien"
Data.s "FI", "Finland","Finnland"
Data.s "FJ", "Fiji","Fidschi"
Data.s "FR", "France","Frankreich"
Data.s "GA", "Gabon","Gabun"
Data.s "GB", "United Kingdom","Vereinigtes Königreich"
Data.s "GE", "Georgia","Georgien"
Data.s "GF", "French Guiana","Französisch Guyana"
Data.s "GH", "Ghana",""
Data.s "GI", "Gibraltar",""
Data.s "GM", "Gambia",""
Data.s "GN", "Guinea",""
Data.s "GP", "Guadeloupe",""
Data.s "GQ", "Equatorial Guinea","Äquatorialguinea"
Data.s "GR", "Greece","Griechenland"
Data.s "GT", "Guatemala",""
Data.s "GU", "Guam",""
Data.s "GW", "Guinea-Bissau",""
Data.s "GY", "Guyana",""
Data.s "HK", "Hong Kong","Hongkong"
Data.s "HN", "Honduras",""
Data.s "HR", "Croatia","Kroatien"
Data.s "HT", "Haiti",""
Data.s "HU", "Hungary","Ungarn"
Data.s "ID", "Indonesia","Indonesien"
Data.s "IE", "Ireland","Irland"
Data.s "IL", "Israel",""
Data.s "IM", "Isle of Man","Insel Man"
Data.s "IN", "India","Indien"
Data.s "IQ", "Iraq","Irak"
Data.s "IR", "Iran",""
Data.s "IS", "Iceland","Island"
Data.s "IT", "Italy","Italien"
Data.s "JE", "Jersey",""
Data.s "JM", "Jamaica","Jamaika"
Data.s "JO", "Jordan","Jordanien"
Data.s "JP", "Japan",""
Data.s "KE", "Kenya","Kenia"
Data.s "KG", "Kyrgyzstan","Kirgisistan"
Data.s "KH", "Cambodia","Kambodscha"
Data.s "KI", "Kiribati",""
Data.s "KM", "Comoros","Komoren"
Data.s "KP", "North Korea","Nordkorea"
Data.s "KR", "South Korea","Südkorea"
Data.s "XK", "Kosovo",""
Data.s "KW", "Kuwait",""
Data.s "KY", "Cayman Islands","Kaiman Inseln"
Data.s "KZ", "Kazakhstan","Kasachstan"
Data.s "LA", "Laos",""
Data.s "LB", "Lebanon","Libanon"
Data.s "LK", "Sri Lanka",""
Data.s "LR", "Liberia",""
Data.s "LS", "Lesotho",""
Data.s "LT", "Lithuania","Litauen"
Data.s "LU", "Luxembourg","Luxemburg"
Data.s "LV", "Latvia","Lettland"
Data.s "LY", "Libya","Libyen"
Data.s "MA", "Morocco","Marokko"
Data.s "MC", "Monaco",""
Data.s "MD", "Moldova","Moldawien"
Data.s "ME", "Montenegro",""
Data.s "MG", "Madagascar","Madagaskar"
Data.s "MH", "Marshall Islands","Marshallinseln"
Data.s "MK", "Macedonia","Mazedonien"
Data.s "ML", "Mali",""
Data.s "MM", "Myanmar",""
Data.s "MN", "Mongolia","Mongolei"
Data.s "MO", "Macao",""
Data.s "MP", "Northern Mariana Islands","Marianen"
Data.s "MQ", "Martinique",""
Data.s "MR", "Mauritania","Mauretanien"
Data.s "MU", "Mauritius",""
Data.s "MV", "Maldives","Malediven"
Data.s "MW", "Malawi",""
Data.s "MX", "Mexico","Mexiko"
Data.s "MY", "Malaysia",""
Data.s "MZ", "Mozambique","Mosambik"
Data.s "NA", "Namibia",""
Data.s "NC", "New Caledonia","Neukaledonien"
Data.s "NE", "Niger",""
Data.s "NG", "Nigeria",""
Data.s "NI", "Nicaragua",""
Data.s "NL", "Netherlands","Niederlande"
Data.s "NO", "Norway","Norwegen"
Data.s "NP", "Nepal",""
Data.s "NZ", "New Zealand","Neuseeland"
Data.s "OM", "Oman",""
Data.s "PA", "Panama",""
Data.s "PE", "Peru",""
Data.s "PF", "French Polynesia","Französisch Polynesien"
Data.s "PG", "Papua New Guinea","Papua-Neuguinea"
Data.s "PH", "Philippines","Philippinen"
Data.s "PK", "Pakistan",""
Data.s "PL", "Poland","Polen"
Data.s "PR", "Puerto Rico",""
Data.s "PS", "Palestinian Territory","Palästinensische Autonomiegebiete/Gazastreifen"
Data.s "PT", "Portugal",""
Data.s "PY", "Paraguay",""
Data.s "QA", "Qatar","Katar"
Data.s "RE", "Reunion",""
Data.s "RO", "Romania","Rumänien"
Data.s "RS", "Serbia","Serbien"
Data.s "RU", "Russia","Russland"
Data.s "RW", "Rwanda","Ruanda"
Data.s "SA", "Saudi Arabia","Saudi-Arabien"
Data.s "SB", "Solomon Islands","Salomonen"
Data.s "SD", "Sudan",""
Data.s "SS", "South Sudan","Südsudan"
Data.s "SE", "Sweden","Schweden"
Data.s "SG", "Singapore","Singapur"
Data.s "SI", "Slovenia","Slowenien"
Data.s "SK", "Slovakia","Slowakei"
Data.s "SL", "Sierra Leone",""
Data.s "SN", "Senegal",""
Data.s "SO", "Somalia",""
Data.s "SR", "Suriname",""
Data.s "ST", "Sao Tome and Principe","São Tomé und Príncipe"
Data.s "SV", "El Salvador",""
Data.s "SY", "Syria","Syrien"
Data.s "SZ", "Swaziland","Swasiland"
Data.s "TD", "Chad","Tschad"
Data.s "TG", "Togo",""
Data.s "TH", "Thailand",""
Data.s "TJ", "Tajikistan","Tadschikistan"
Data.s "TL", "East Timor","Osttimor"
Data.s "TM", "Turkmenistan",""
Data.s "TN", "Tunisia","Tunesien"
Data.s "TR", "Turkey","Türkei"
Data.s "TT", "Trinidad and Tobago","Trinidad und Tobago"
Data.s "TW", "Taiwan","Republik China (Taiwan)"
Data.s "TZ", "Tanzania","Tansania"
Data.s "UA", "Ukraine",""
Data.s "UG", "Uganda",""
Data.s "US", "United States","Vereinigte Staaten von Amerika"
Data.s "UY", "Uruguay",""
Data.s "UZ", "Uzbekistan","Usbekistan"
Data.s "VE", "Venezuela",""
Data.s "VI", "U.S. Virgin Islands","Virgin Island (USA)"
Data.s "VN", "Vietnam",""
Data.s "VU", "Vanuatu",""
Data.s "WS", "Samoa",""
Data.s "YE", "Yemen","Jemen"
Data.s "YT", "Mayotte",""
Data.s "ZA", "South Africa","Südafrika"
Data.s "ZM", "Zambia","Sambia"
Data.s "ZW", "Zimbabwe","Simbabwe"
EndDataSection
Procedure.s GetCountry(SearchID.s,PreferAlternative=#False)
Protected i
Restore Countries:
Country.CountryType
For i=1 To 200
With Country
Read.s \ID
Read.s \Name
Read.s \Alternative
If \ID=SearchID
If PreferAlternative And \Alternative
ProcedureReturn \Alternative
Else
ProcedureReturn \Name
EndIf
EndIf
EndWith
Next i
ProcedureReturn "?"
EndProcedure
Debug GetCountry("US")
Debug GetCountry("US",#True)
Debug GetCountry("WS",#True)
Debug GetCountry("XX",#True)