-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMarketId.h
419 lines (378 loc) · 41.5 KB
/
MarketId.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
/* MarketId 10/02/2011
$$$$$$$$$$$$$$$$$$$$$$$$$$$
$ MarketId.h - header $
$$$$$$$$$$$$$$$$$$$$$$$$$$$
by W.B. Yates
Copyright (c) W.B. Yates. All rights reserved
History: Supports most of ISO market identification code (MIC) list (ISO 10383).
Useful for describing origin of trades.
The MIC list used here was last updated 09/09/2024.
"This International Standard (ISO 10383) specifies a universal method of identifying exchanges,
trading platforms and regulated or non-regulated markets as sources of prices and related information
in order to facilitate automated processing"
"The MIC list is published on the second Monday of the month (or the following business day if it falls on a public holiday
in the country of the ISO 10383 Registration Authority (RA)."
https://www.iso20022.org/market-identifier-codes
Notes
i) mics 24EX, 3579, 360T, 360X and 4AXE are not legal c++ enumerations as they begin with a numeric character.
These MICs have been prefixed with an '_' so that they become _24EX, _3579, _360T, _360X and _4AXE.
Inserting '_' ensures we get a valid c++ enum member. The string codes for these markets do not have/require the extra '_'.
ii) We have added country MICs; their MIC is the country 3 code followed by a zero to distinguish them from ISO mic codes.
Trades that cannot be attributed to an existing market can use these identifiers.
Example
MarketId z;
z.setMarketId( "GBR0" ); // general purpose market
std::cout << z << std::endl;
std::cout << z.name() << std::endl;
std::cout << short(z) << std::endl;
z.setMarketId( "XNYS" );
std::cout << z << std::endl;
std::cout << z.name() << std::endl;
std::cout << short(z) << std::endl;
exit(1);
*/
#ifndef __MARKETID_H__
#define __MARKETID_H__
#include <string>
#include <iostream>
class MarketId
{
public:
// The value of the enum elements are my arbitrary numeric code for each market.
// Note NOMARKETID, MAXMARKETID, NUMMARKETID are not ISO codes.
// Note _21XX, _24EX, _3579, _360T, _360X and _4AXE represents markets 21XX, 24EX, 3579, 360T, 360X and 4AXE
// inserting '_' ensures a valid c++ enum. The string codes for these markets do not have/require the extra '_'
enum MarketIdCode : short {
NOMARKETID = 0,
_21XX = 1, _24EX = 2, _3579 = 3, _360T = 4, _360X = 5, _4AXE = 6, A2XX = 7, AACA = 8, AAPA = 9, AATS = 10,
ABAN = 11, ABFI = 12, ABNA = 13, ABNC = 14, ABSI = 15, ABUL = 16, ABW0 = 17, ABXX = 18, ACCX = 19, ACEX = 20,
ACKF = 21, ACXC = 22, ACXL = 23, ADRK = 24, ADVT = 25, AFDL = 26, AFET = 27, AFEX = 28, AFG0 = 29, AFSA = 30,
AFSE = 31, AFSI = 32, AFSL = 33, AFSO = 34, AFSX = 35, AFTS = 36, AGBP = 37, AGO0 = 38, AIA0 = 39, AILT = 40,
AIMX = 41, AIXE = 42, AIXK = 43, AKIS = 44, ALA0 = 45, ALB0 = 46, ALDP = 47, ALGO = 48, ALLT = 49, ALPX = 50,
ALSI = 51, ALTX = 52, ALXA = 53, ALXB = 54, ALXL = 55, ALXP = 56, AMLG = 57, AMNL = 58, AMPX = 59, AMTS = 60,
AMXO = 61, AND0 = 62, ANLP = 63, ANTS = 64, ANZL = 65, APAW = 66, APCL = 67, APEX = 68, APXL = 69, AQEA = 70,
AQED = 71, AQEU = 72, AQSD = 73, AQSE = 74, AQSF = 75, AQSG = 76, AQSL = 77, AQSN = 78, AQST = 79, AQUA = 80,
AQXA = 81, AQXD = 82, AQXE = 83, ARAX = 84, ARCD = 85, ARCH = 86, ARCO = 87, ARCX = 88, ARDA = 89, ARE0 = 90,
AREX = 91, ARG0 = 92, ARIA = 93, ARKX = 94, ARM0 = 95, ARTX = 96, ASEF = 97, ASEX = 98, ASM0 = 99, ASMT = 100,
ASPI = 101, ASPN = 102, ASTR = 103, ASXB = 104, ASXC = 105, ASXP = 106, ASXT = 107, ASXV = 108, ATAD = 109, ATDF = 110,
ATF0 = 111, ATFX = 112, ATG0 = 113, ATHL = 114, ATLB = 115, ATLN = 116, ATSA = 117, AURB = 118, AURO = 119, AUS0 = 120,
AUT0 = 121, AUTB = 122, AUTO = 123, AUTP = 124, AUTX = 125, AWBX = 126, AWEX = 127, AXSI = 128, AZE0 = 129, BAAD = 130,
BACE = 131, BACR = 132, BAEP = 133, BAIK = 134, BAIP = 135, BAJD = 136, BAJM = 137, BALT = 138, BAML = 139, BAMP = 140,
BAMX = 141, BANA = 142, BAPA = 143, BAPE = 144, BAPX = 145, BARD = 146, BARK = 147, BARL = 148, BARO = 149, BART = 150,
BARU = 151, BARX = 152, BASE = 153, BASI = 154, BASP = 155, BASX = 156, BATD = 157, BATE = 158, BATF = 159, BATO = 160,
BATP = 161, BATS = 162, BATY = 163, BBIE = 164, BBIS = 165, BBLX = 166, BBOK = 167, BBSF = 168, BBSI = 169, BBSN = 170,
BBSX = 171, BBVA = 172, BBVX = 173, BCDX = 174, BCEE = 175, BCFS = 176, BCMA = 177, BCMM = 178, BCRM = 179, BCSC = 180,
BCSE = 181, BCSI = 182, BCSL = 183, BCXE = 184, BDEA = 185, BDI0 = 186, BDPL = 187, BDSK = 188, BEAM = 189, BEBG = 190,
BEEX = 191, BEIS = 192, BEL0 = 193, BELB = 194, BELF = 195, BEN0 = 196, BERA = 197, BERB = 198, BERC = 199, BES0 = 200,
BETA = 201, BETP = 202, BETX = 203, BEUD = 204, BEUE = 205, BEUF = 206, BEUO = 207, BEUP = 208, BEUT = 209, BFA0 = 210,
BFEX = 211, BFPT = 212, BGCA = 213, BGCB = 214, BGCD = 215, BGCF = 216, BGCI = 217, BGCJ = 218, BGCM = 219, BGCO = 220,
BGD0 = 221, BGEM = 222, BGFI = 223, BGFU = 224, BGFX = 225, BGHX = 226, BGLU = 227, BGR0 = 228, BGSG = 229, BGSI = 230,
BGUK = 231, BHR0 = 232, BHS0 = 233, BHSF = 234, BHWA = 235, BIDS = 236, BIH0 = 237, BILT = 238, BILU = 239, BINV = 240,
BISI = 241, BIVA = 242, BJSE = 243, BKBF = 244, BKBR = 245, BKDM = 246, BKKT = 247, BKLF = 248, BKLN = 249, BKSK = 250,
BLBB = 251, BLBF = 252, BLBS = 253, BLEQ = 254, BLEV = 255, BLFX = 256, BLIQ = 257, BLKX = 258, BLM0 = 259, BLNK = 260,
BLOX = 261, BLPX = 262, BLR0 = 263, BLTD = 264, BLTX = 265, BLUE = 266, BLUX = 267, BLXA = 268, BLZ0 = 269, BMCL = 270,
BMCM = 271, BMEA = 272, BMEX = 273, BMFA = 274, BMFM = 275, BMFX = 276, BMLB = 277, BMLI = 278, BMLS = 279, BMLX = 280,
BMSI = 281, BMTF = 282, BMTS = 283, BMU0 = 284, BNDD = 285, BNDS = 286, BNLD = 287, BNPA = 288, BNPC = 289, BNPF = 290,
BNPH = 291, BNPL = 292, BNPP = 293, BNPS = 294, BNPX = 295, BNSX = 296, BNTW = 297, BNYC = 298, BOAL = 299, BOAT = 300,
BOCF = 301, BOFS = 302, BOL0 = 303, BOND = 304, BOSC = 305, BOSD = 306, BOSP = 307, BOTC = 308, BOTE = 309, BOTV = 310,
BOVA = 311, BOVM = 312, BPAG = 313, BPAS = 314, BPKO = 315, BPLC = 316, BPOL = 317, BPSX = 318, BRA0 = 319, BRB0 = 320,
BRDE = 321, BRDL = 322, BRDS = 323, BREA = 324, BRED = 325, BRFQ = 326, BRGA = 327, BRIX = 328, BRMF = 329, BRN0 = 330,
BRNX = 331, BSAB = 332, BSEX = 333, BSFX = 334, BSLB = 335, BSME = 336, BSPL = 337, BSTX = 338, BTAM = 339, BTBS = 340,
BTEC = 341, BTEE = 342, BTEQ = 343, BTFE = 344, BTLX = 345, BTN0 = 346, BTNL = 347, BTQE = 348, BTQG = 349, BTRL = 350,
BTUN = 351, BULK = 352, BURG = 353, BURM = 354, BUYN = 355, BVCA = 356, BVMF = 357, BVUK = 358, BVUR = 359, BVUS = 360,
BWA0 = 361, BXDA = 362, BYXD = 363, BZXD = 364, C2OX = 365, CABK = 366, CABV = 367, CAES = 368, CAF0 = 369, CALH = 370,
CAN0 = 371, CAND = 372, CANX = 373, CAPA = 374, CAPI = 375, CAPL = 376, CASI = 377, CAST = 378, CATS = 379, CAVD = 380,
CAVE = 381, CAZE = 382, CBAE = 383, CBAL = 384, CBKA = 385, CBKC = 386, CBKD = 387, CBKE = 388, CBKF = 389, CBKG = 390,
CBKS = 391, CBLC = 392, CBMS = 393, CBNL = 394, CBOE = 395, CBSK = 396, CBSX = 397, CBTS = 398, CCEU = 399, CCEX = 400,
CCFE = 401, CCFX = 402, CCK0 = 403, CCLX = 404, CCML = 405, CCMS = 406, CCMX = 407, CCO2 = 408, CCRM = 409, CCXE = 410,
CDED = 411, CDEL = 412, CDSI = 413, CDSL = 414, CECA = 415, CECS = 416, CEDX = 417, CELP = 418, CEPL = 419, CEPU = 420,
CESI = 421, CETI = 422, CETO = 423, CEUD = 424, CEUE = 425, CEUO = 426, CEUX = 427, CFAU = 428, CFBC = 429, CFHK = 430,
CFIC = 431, CFIF = 432, CFIL = 433, CFIM = 434, CFJP = 435, CFTW = 436, CGCM = 437, CGDB = 438, CGEB = 439, CGEC = 440,
CGEE = 441, CGET = 442, CGGD = 443, CGIT = 444, CGMA = 445, CGMC = 446, CGMD = 447, CGME = 448, CGMG = 449, CGMH = 450,
CGMI = 451, CGML = 452, CGMT = 453, CGMU = 454, CGMX = 455, CGND = 456, CGQD = 457, CGQT = 458, CGTR = 459, CGXS = 460,
CHE0 = 461, CHEV = 462, CHIA = 463, CHIC = 464, CHID = 465, CHIE = 466, CHIJ = 467, CHIO = 468, CHIS = 469, CHIV = 470,
CHIX = 471, CHIY = 472, CHL0 = 473, CHN0 = 474, CIBC = 475, CIBH = 476, CIBP = 477, CICX = 478, CILH = 479, CIMA = 480,
CIMB = 481, CIMD = 482, CIME = 483, CIMV = 484, CIOI = 485, CISD = 486, CITD = 487, CITX = 488, CIV0 = 489, CLAU = 490,
CLCH = 491, CLHK = 492, CLJP = 493, CLMX = 494, CLPH = 495, CLST = 496, CLTD = 497, CLVE = 498, CMAP = 499, CMCI = 500,
CMCM = 501, CMEC = 502, CMED = 503, CMEE = 504, CMES = 505, CMET = 506, CMMT = 507, CMR0 = 508, CMSF = 509, CMTS = 510,
CNOD = 511, CNSI = 512, COAL = 513, COD0 = 514, CODA = 515, COG0 = 516, COHR = 517, COK0 = 518, COL0 = 519, COM0 = 520,
COMG = 521, COMM = 522, CONC = 523, CONE = 524, CORE = 525, COTC = 526, CPGX = 527, CPTX = 528, CPV0 = 529, CRDL = 530,
CRED = 531, CREM = 532, CRI0 = 533, CRYD = 534, CRYP = 535, CRYX = 536, CSAG = 537, CSAS = 538, CSAU = 539, CSBX = 540,
CSCF = 541, CSCL = 542, CSDA = 543, CSE2 = 544, CSEC = 545, CSEU = 546, CSFB = 547, CSGI = 548, CSHK = 549, CSIN = 550,
CSJP = 551, CSLB = 552, CSLP = 553, CSMD = 554, CSOB = 555, CSOT = 556, CSSI = 557, CSSX = 558, CSTO = 559, CSVW = 560,
CSZH = 561, CTWO = 562, CUB0 = 563, CURX = 564, CUW0 = 565, CXAB = 566, CXAC = 567, CXAF = 568, CXAI = 569, CXAM = 570,
CXAN = 571, CXAP = 572, CXAQ = 573, CXAR = 574, CXAV = 575, CXAW = 576, CXOT = 577, CXR0 = 578, CXRT = 579, CYM0 = 580,
CYP0 = 581, CZE0 = 582, D2XC = 583, D2XG = 584, DAIW = 585, DAMP = 586, DAMS = 587, DAPA = 588, DASH = 589, DASI = 590,
DAUK = 591, DAVY = 592, DBAB = 593, DBAG = 594, DBCR = 595, DBCX = 596, DBDC = 597, DBDX = 598, DBES = 599, DBHK = 600,
DBIX = 601, DBLN = 602, DBLX = 603, DBMO = 604, DBOX = 605, DBRU = 606, DBSE = 607, DBSX = 608, DBVX = 609, DCSE = 610,
DCSX = 611, DDTX = 612, DDUB = 613, DEAL = 614, DEKA = 615, DEU0 = 616, DEXE = 617, DGCX = 618, DHEL = 619, DHLX = 620,
DICE = 621, DIFX = 622, DJI0 = 623, DKED = 624, DKFI = 625, DKOB = 626, DKTC = 627, DKWB = 628, DLIS = 629, DMA0 = 630,
DMAD = 631, DMIL = 632, DNDK = 633, DNFI = 634, DNIS = 635, DNK0 = 636, DNSE = 637, DOM0 = 638, DOSE = 639, DOSL = 640,
DOTS = 641, DOWE = 642, DOWG = 643, DOWM = 644, DPAR = 645, DRCT = 646, DRSP = 647, DSMD = 648, DSME = 649, DSTO = 650,
DUMX = 651, DUSA = 652, DUSB = 653, DUSC = 654, DUSD = 655, DVFX = 656, DWFI = 657, DWIN = 658, DWSF = 659, DZA0 = 660,
DZBK = 661, EACM = 662, EBHU = 663, EBLX = 664, EBMX = 665, EBON = 666, EBRA = 667, EBSC = 668, EBSD = 669, EBSF = 670,
EBSI = 671, EBSM = 672, EBSN = 673, EBSO = 674, EBSS = 675, EBSX = 676, EBXV = 677, ECAG = 678, ECAL = 679, ECEU = 680,
ECGS = 681, ECHO = 682, ECNL = 683, ECSL = 684, ECU0 = 685, ECXE = 686, EDBT = 687, EDDP = 688, EDGA = 689, EDGD = 690,
EDGE = 691, EDGL = 692, EDGO = 693, EDGX = 694, EDRF = 695, EDXM = 696, EEAL = 697, EESE = 698, EESX = 699, EFTP = 700,
EGMT = 701, EGSI = 702, EGY0 = 703, EIXE = 704, ELEU = 705, ELIX = 706, ELNO = 707, ELSE = 708, ELUK = 709, ELXE = 710,
EMBX = 711, EMCE = 712, EMCH = 713, EMDR = 714, EMIB = 715, EMID = 716, EMIR = 717, EMLD = 718, EMTF = 719, EMTS = 720,
ENAX = 721, ENCL = 722, ENMS = 723, ENSL = 724, ENSX = 725, ENSY = 726, ENTW = 727, ENXB = 728, ENXL = 729, EOTC = 730,
EPEX = 731, EPRD = 732, EPRL = 733, EQCA = 734, EQIE = 735, EQLD = 736, EQOC = 737, EQOD = 738, EQOS = 739, EQSE = 740,
EQSL = 741, EQTA = 742, EQTB = 743, EQTC = 744, EQTD = 745, EQUS = 746, EQWB = 747, ERBX = 748, ERFQ = 749, ERI0 = 750,
ERIS = 751, ERST = 752, ESH0 = 753, ESLO = 754, ESP0 = 755, ESPD = 756, EST0 = 757, ESTO = 758, ETFP = 759, ETH0 = 760,
ETLX = 761, ETOR = 762, ETPA = 763, ETSC = 764, EUAX = 765, EUCC = 766, EUCH = 767, EUFN = 768, EUOB = 769, EURM = 770,
EUSC = 771, EUSP = 772, EUWA = 773, EUWB = 774, EUWX = 775, EVOL = 776, EWRM = 777, EWSM = 778, EXAA = 779, EXBO = 780,
EXCP = 781, EXDC = 782, EXEU = 783, EXGM = 784, EXLP = 785, EXMP = 786, EXOR = 787, EXOT = 788, EXPA = 789, EXPM = 790,
EXSB = 791, EXSD = 792, EXSE = 793, EXSF = 794, EXSH = 795, EXSI = 796, EXSP = 797, EXSY = 798, EXTR = 799, EXVP = 800,
EXYY = 801, FAIR = 802, FAST = 803, FBSI = 804, FCBT = 805, FCME = 806, FGEX = 807, FICO = 808, FICX = 809, FIED = 810,
FIN0 = 811, FINC = 812, FINN = 813, FINO = 814, FINR = 815, FINY = 816, FISH = 817, FISU = 818, FJI0 = 819, FLK0 = 820,
FLTB = 821, FLTR = 822, FLWX = 823, FMTS = 824, FMXS = 825, FNCS = 826, FNDK = 827, FNDS = 828, FNEE = 829, FNFI = 830,
FNFT = 831, FNFX = 832, FNIS = 833, FNIX = 834, FNLT = 835, FNLV = 836, FNSE = 837, FNUK = 838, FNXB = 839, FPWB = 840,
FRA0 = 841, FRAA = 842, FRAB = 843, FRAD = 844, FRAS = 845, FRAU = 846, FRAV = 847, FRAW = 848, FREI = 849, FREX = 850,
FRO0 = 851, FRRF = 852, FRTE = 853, FSEF = 854, FSHX = 855, FSM0 = 856, FSME = 857, FTFM = 858, FTFS = 859, FTUS = 860,
FUSD = 861, FXAL = 862, FXCL = 863, FXCM = 864, FXFM = 865, FXGB = 866, FXMT = 867, FXNM = 868, FXOP = 869, FXPS = 870,
FXRQ = 871, FXRS = 872, FXSM = 873, FXSW = 874, G1XX = 875, G360 = 876, GAB0 = 877, GBOB = 878, GBOT = 879, GBR0 = 880,
GBSI = 881, GBUL = 882, GBWB = 883, GEMX = 884, GEO0 = 885, GETB = 886, GFAM = 887, GFAU = 888, GFBM = 889, GFBO = 890,
GFIA = 891, GFIB = 892, GFIC = 893, GFIF = 894, GFIM = 895, GFIN = 896, GFIR = 897, GFKS = 898, GFOX = 899, GFPO = 900,
GFSG = 901, GFSM = 902, GFSO = 903, GGY0 = 904, GHA0 = 905, GIB0 = 906, GIN0 = 907, GIPB = 908, GLBX = 909, GLLC = 910,
GLMX = 911, GLOM = 912, GLP0 = 913, GLPS = 914, GLPX = 915, GMB0 = 916, GMBG = 917, GMEG = 918, GMEO = 919, GMES = 920,
GMEX = 921, GMGD = 922, GMGE = 923, GMGL = 924, GMNI = 925, GMTF = 926, GMTS = 927, GNB0 = 928, GNQ0 = 929, GOTC = 930,
GOVX = 931, GPBC = 932, GRC0 = 933, GRD0 = 934, GREE = 935, GRIF = 936, GRIO = 937, GRL0 = 938, GROW = 939, GRSE = 940,
GSAL = 941, GSBE = 942, GSBS = 943, GSBX = 944, GSCI = 945, GSCO = 946, GSEF = 947, GSEI = 948, GSIB = 949, GSIL = 950,
GSLO = 951, GSPL = 952, GSPX = 953, GSSI = 954, GSXC = 955, GSXH = 956, GSXK = 957, GSXL = 958, GSXM = 959, GSXN = 960,
GSXT = 961, GTCO = 962, GTM0 = 963, GTSX = 964, GTXE = 965, GTXS = 966, GUF0 = 967, GUM0 = 968, GUY0 = 969, GXGF = 970,
GXGM = 971, GXGR = 972, GXMA = 973, HAMA = 974, HAMB = 975, HAML = 976, HAMM = 977, HAMN = 978, HANA = 979, HANB = 980,
HANC = 981, HAND = 982, HANE = 983, HBFR = 984, HBPL = 985, HCER = 986, HCHC = 987, HDAT = 988, HEDE = 989, HEGX = 990,
HELA = 991, HEMO = 992, HESP = 993, HGSP = 994, HKG0 = 995, HKME = 996, HMOD = 997, HMTF = 998, HND0 = 999, HOTC = 1000,
HPCO = 1001, HPCS = 1002, HPCV = 1003, HPCX = 1004, HPPO = 1005, HPSO = 1006, HPSX = 1007, HREU = 1008, HRFQ = 1009, HRSI = 1010,
HRTF = 1011, HRTX = 1012, HRV0 = 1013, HSBC = 1014, HSBT = 1015, HSFX = 1016, HSTC = 1017, HSXA = 1018, HSXE = 1019, HTI0 = 1020,
HUDX = 1021, HUN0 = 1022, HUNG = 1023, HUPX = 1024, HWHE = 1025, IATS = 1026, IBAL = 1027, IBCO = 1028, IBEQ = 1029, IBER = 1030,
IBEX = 1031, IBGH = 1032, IBIS = 1033, IBKR = 1034, IBLX = 1035, IBSI = 1036, IBUL = 1037, ICAH = 1038, ICAP = 1039, ICAS = 1040,
ICAT = 1041, ICBX = 1042, ICDX = 1043, ICEL = 1044, ICEN = 1045, ICEO = 1046, ICES = 1047, ICEU = 1048, ICHK = 1049, ICKR = 1050,
ICOR = 1051, ICOT = 1052, ICPM = 1053, ICPS = 1054, ICRO = 1055, ICSE = 1056, ICSH = 1057, ICSU = 1058, ICSZ = 1059, ICTQ = 1060,
ICTW = 1061, ICUR = 1062, ICUS = 1063, ICXL = 1064, ICXR = 1065, IDN0 = 1066, IDXM = 1067, IEBS = 1068, IECE = 1069, IECL = 1070,
IENG = 1071, IEOS = 1072, IEPA = 1073, IEXA = 1074, IEXC = 1075, IEXD = 1076, IEXG = 1077, IFAD = 1078, IFBX = 1079, IFCA = 1080,
IFED = 1081, IFEN = 1082, IFEU = 1083, IFFX = 1084, IFLL = 1085, IFLO = 1086, IFLS = 1087, IFLX = 1088, IFSG = 1089, IFSM = 1090,
IFUS = 1091, IFUT = 1092, IFXA = 1093, IFXC = 1094, IFXR = 1095, IGDL = 1096, IIDX = 1097, IINX = 1098, IKBS = 1099, ILCM = 1100,
IMAG = 1101, IMBD = 1102, IMCC = 1103, IMCD = 1104, IMCE = 1105, IMCG = 1106, IMCM = 1107, IMCO = 1108, IMCR = 1109, IMCS = 1110,
IMCT = 1111, IMED = 1112, IMEN = 1113, IMEQ = 1114, IMET = 1115, IMEX = 1116, IMFD = 1117, IMFX = 1118, IMGB = 1119, IMGI = 1120,
IMIR = 1121, IMMH = 1122, IMMM = 1123, IMN0 = 1124, IMRD = 1125, IMSB = 1126, IMTF = 1127, IMTS = 1128, INCA = 1129, INCR = 1130,
IND0 = 1131, INFT = 1132, INGB = 1133, INGE = 1134, INGF = 1135, INGU = 1136, INGW = 1137, INSE = 1138, INTL = 1139, INVE = 1140,
IOCD = 1141, IOED = 1142, IOFB = 1143, IOFI = 1144, IOFX = 1145, IOGB = 1146, IOGI = 1147, IOIR = 1148, IOMM = 1149, IOT0 = 1150,
IOTC = 1151, IOTF = 1152, IPNL = 1153, IPSX = 1154, IPXP = 1155, IPXW = 1156, IRL0 = 1157, IRN0 = 1158, IRQ0 = 1159, ISBA = 1160,
ISBV = 1161, ISDA = 1162, ISDX = 1163, ISEC = 1164, ISEX = 1165, ISL0 = 1166, ISR0 = 1167, ISSI = 1168, ISWA = 1169, ISWB = 1170,
ISWC = 1171, ISWE = 1172, ISWN = 1173, ISWO = 1174, ISWP = 1175, ISWR = 1176, ISWT = 1177, ISWV = 1178, ITA0 = 1179, ITGI = 1180,
ITGL = 1181, ITSL = 1182, ITSM = 1183, IUOB = 1184, IVZX = 1185, IXSP = 1186, JADX = 1187, JAM0 = 1188, JASR = 1189, JATA = 1190,
JBSI = 1191, JBUL = 1192, JEFA = 1193, JEFE = 1194, JEFS = 1195, JEFX = 1196, JESI = 1197, JEY0 = 1198, JISI = 1199, JLEQ = 1200,
JLEU = 1201, JLQD = 1202, JLSI = 1203, JNSI = 1204, JNST = 1205, JOR0 = 1206, JPBX = 1207, JPCB = 1208, JPEU = 1209, JPJX = 1210,
JPMI = 1211, JPMS = 1212, JPMX = 1213, JPN0 = 1214, JPSI = 1215, JSEB = 1216, JSEF = 1217, JSER = 1218, JSES = 1219, JSJX = 1220,
JSSI = 1221, JYSI = 1222, KABU = 1223, KAIX = 1224, KAZ0 = 1225, KBCB = 1226, KBLC = 1227, KBLL = 1228, KBLM = 1229, KBLS = 1230,
KBLT = 1231, KCCP = 1232, KDPW = 1233, KELR = 1234, KEN0 = 1235, KGZ0 = 1236, KHHU = 1237, KHM0 = 1238, KIR0 = 1239, KLEU = 1240,
KLSH = 1241, KMTS = 1242, KMUX = 1243, KNA0 = 1244, KNCM = 1245, KNEM = 1246, KNIG = 1247, KNLI = 1248, KNMX = 1249, KOCN = 1250,
KOME = 1251, KOR0 = 1252, KOTF = 1253, KRME = 1254, KWT0 = 1255, LAFD = 1256, LAFL = 1257, LAFX = 1258, LAKE = 1259, LAMP = 1260,
LAO0 = 1261, LASF = 1262, LASP = 1263, LATG = 1264, LAVA = 1265, LBBW = 1266, LBCM = 1267, LBCW = 1268, LBN0 = 1269, LBR0 = 1270,
LBUL = 1271, LBWL = 1272, LBWS = 1273, LBY0 = 1274, LCA0 = 1275, LCHC = 1276, LCUR = 1277, LEBV = 1278, LEDG = 1279, LELE = 1280,
LESI = 1281, LEUE = 1282, LEUF = 1283, LEVL = 1284, LICA = 1285, LIE0 = 1286, LIFI = 1287, LIGA = 1288, LIQF = 1289, LIQH = 1290,
LIQU = 1291, LISX = 1292, LISZ = 1293, LIUH = 1294, LIUS = 1295, LKA0 = 1296, LLAT = 1297, LMAD = 1298, LMAE = 1299, LMAF = 1300,
LMAO = 1301, LMAS = 1302, LMAX = 1303, LMEC = 1304, LMNR = 1305, LMNX = 1306, LMTS = 1307, LNEQ = 1308, LNFI = 1309, LOTC = 1310,
LOUI = 1311, LOYD = 1312, LPPM = 1313, LPSF = 1314, LQED = 1315, LQFI = 1316, LSO0 = 1317, LSSI = 1318, LTAA = 1319, LTSE = 1320,
LTU0 = 1321, LUX0 = 1322, LVA0 = 1323, LXJP = 1324, LYNX = 1325, M2AE = 1326, MABX = 1327, MAC0 = 1328, MACB = 1329, MACX = 1330,
MAEL = 1331, MAF0 = 1332, MAGM = 1333, MAKX = 1334, MALM = 1335, MALX = 1336, MANL = 1337, MAQE = 1338, MAQH = 1339, MAQI = 1340,
MAQJ = 1341, MAQL = 1342, MAQU = 1343, MAQX = 1344, MAR0 = 1345, MARF = 1346, MASG = 1347, MATN = 1348, MATX = 1349, MAXD = 1350,
MBCP = 1351, MBPL = 1352, MBSI = 1353, MBUL = 1354, MCAD = 1355, MCID = 1356, MCO0 = 1357, MCRY = 1358, MCSE = 1359, MCUR = 1360,
MCXR = 1361, MCXS = 1362, MCXX = 1363, MCZK = 1364, MDA0 = 1365, MDG0 = 1366, MDIP = 1367, MDRV = 1368, MDV0 = 1369, MEAU = 1370,
MEHK = 1371, MELO = 1372, MEMD = 1373, MEMM = 1374, MEMX = 1375, MERD = 1376, MERF = 1377, MERK = 1378, MESI = 1379, MESQ = 1380,
METZ = 1381, MEX0 = 1382, MFGL = 1383, MFOX = 1384, MFXA = 1385, MFXC = 1386, MFXR = 1387, MHBD = 1388, MHBE = 1389, MHBL = 1390,
MHBP = 1391, MHEL = 1392, MHEU = 1393, MHIP = 1394, MHL0 = 1395, MIBG = 1396, MIBL = 1397, MICE = 1398, MIDC = 1399, MIHI = 1400,
MISX = 1401, MIVX = 1402, MIZX = 1403, MKAA = 1404, MKAP = 1405, MKD0 = 1406, MKTF = 1407, MLAX = 1408, MLCO = 1409, MLER = 1410,
MLES = 1411, MLEU = 1412, MLEX = 1413, MLI0 = 1414, MLIB = 1415, MLIX = 1416, MLRQ = 1417, MLSI = 1418, MLT0 = 1419, MLVE = 1420,
MLVX = 1421, MLXB = 1422, MLXN = 1423, MMR0 = 1424, MNDK = 1425, MNE0 = 1426, MNFI = 1427, MNG0 = 1428, MNIS = 1429, MNP0 = 1430,
MNSE = 1431, MOCX = 1432, MOSE = 1433, MOTX = 1434, MOZ0 = 1435, MPRL = 1436, MRT0 = 1437, MSAL = 1438, MSAX = 1439, MSBI = 1440,
MSCO = 1441, MSCX = 1442, MSDM = 1443, MSEL = 1444, MSEU = 1445, MSIP = 1446, MSLC = 1447, MSLP = 1448, MSMS = 1449, MSNT = 1450,
MSPL = 1451, MSR0 = 1452, MSRP = 1453, MSSA = 1454, MSSI = 1455, MSTC = 1456, MSTO = 1457, MSTX = 1458, MSWP = 1459, MSXB = 1460,
MSXO = 1461, MTAA = 1462, MTAH = 1463, MTAX = 1464, MTCH = 1465, MTQ0 = 1466, MTSA = 1467, MTSB = 1468, MTSC = 1469, MTSD = 1470,
MTSF = 1471, MTSG = 1472, MTSM = 1473, MTSO = 1474, MTSP = 1475, MTSS = 1476, MTSW = 1477, MTUS = 1478, MTXA = 1479, MTXC = 1480,
MTXM = 1481, MTXS = 1482, MTXX = 1483, MUBE = 1484, MUBL = 1485, MUBM = 1486, MUBP = 1487, MUDX = 1488, MUFP = 1489, MUNA = 1490,
MUNB = 1491, MUNC = 1492, MUND = 1493, MUS0 = 1494, MUSE = 1495, MUSN = 1496, MUTI = 1497, MVCX = 1498, MWI0 = 1499, MXLM = 1500,
MXNL = 1501, MXOP = 1502, MYS0 = 1503, MYT0 = 1504, MYTR = 1505, N2EX = 1506, NABA = 1507, NABE = 1508, NABL = 1509, NABP = 1510,
NABU = 1511, NAM0 = 1512, NAMX = 1513, NAPA = 1514, NASB = 1515, NASD = 1516, NASN = 1517, NASX = 1518, NATX = 1519, NAVE = 1520,
NBFL = 1521, NBLX = 1522, NBOT = 1523, NBXO = 1524, NCEL = 1525, NCL0 = 1526, NCME = 1527, NCML = 1528, NDCM = 1529, NDEX = 1530,
NDXS = 1531, NECD = 1532, NEEQ = 1533, NEOC = 1534, NEOD = 1535, NEOE = 1536, NEON = 1537, NER0 = 1538, NESI = 1539, NEXD = 1540,
NEXF = 1541, NEXG = 1542, NEXL = 1543, NEXN = 1544, NEXO = 1545, NEXS = 1546, NEXT = 1547, NEXX = 1548, NEXY = 1549, NFK0 = 1550,
NFSA = 1551, NFSC = 1552, NFSD = 1553, NGA0 = 1554, NGXC = 1555, NIBC = 1556, NIBR = 1557, NIC0 = 1558, NILX = 1559, NIU0 = 1560,
NLAX = 1561, NLBX = 1562, NLD0 = 1563, NLPX = 1564, NMCE = 1565, NMRA = 1566, NMRJ = 1567, NMSX = 1568, NMTF = 1569, NMTS = 1570,
NNCS = 1571, NOCO = 1572, NODX = 1573, NOED = 1574, NOFF = 1575, NOFI = 1576, NOME = 1577, NOOB = 1578, NOPS = 1579, NOR0 = 1580,
NORD = 1581, NORX = 1582, NOSC = 1583, NOSI = 1584, NOTC = 1585, NOWB = 1586, NOWX = 1587, NPEX = 1588, NPGA = 1589, NPL0 = 1590,
NPMS = 1591, NRU0 = 1592, NSME = 1593, NSPO = 1594, NSSA = 1595, NSXB = 1596, NTRL = 1597, NTUK = 1598, NURD = 1599, NURO = 1600,
NWMS = 1601, NWNV = 1602, NXBX = 1603, NXEU = 1604, NXFO = 1605, NXJP = 1606, NXSE = 1607, NXTE = 1608, NXUS = 1609, NXVW = 1610,
NYFX = 1611, NYMS = 1612, NYMX = 1613, NYPC = 1614, NYSD = 1615, NYSI = 1616, NZFX = 1617, NZL0 = 1618, NZXC = 1619, NZXM = 1620,
OAPA = 1621, OBKL = 1622, OCEA = 1623, OCFX = 1624, OCSI = 1625, OCTC = 1626, OCTL = 1627, OCXE = 1628, OCXL = 1629, ODDO = 1630,
ODOC = 1631, ODST = 1632, ODXE = 1633, OFEX = 1634, OHVO = 1635, OILX = 1636, OLBB = 1637, OLLC = 1638, OMEL = 1639, OMGA = 1640,
OMIC = 1641, OMIP = 1642, OMN0 = 1643, ONEC = 1644, ONSE = 1645, OOTC = 1646, OPCO = 1647, OPEX = 1648, OPRA = 1649, OPTX = 1650,
OSDS = 1651, OSLC = 1652, OSSG = 1653, OTCB = 1654, OTCE = 1655, OTCI = 1656, OTCM = 1657, OTCN = 1658, OTCQ = 1659, OTCX = 1660,
OTPB = 1661, OTPR = 1662, OTXB = 1663, OTXT = 1664, OYLD = 1665, PAK0 = 1666, PAN0 = 1667, PARK = 1668, PARX = 1669, PATF = 1670,
PAVE = 1671, PBGR = 1672, PBUL = 1673, PCDS = 1674, PCN0 = 1675, PDEX = 1676, PDQD = 1677, PDQX = 1678, PEEL = 1679, PEPH = 1680,
PEPM = 1681, PEPQ = 1682, PEPW = 1683, PEPY = 1684, PER0 = 1685, PFTQ = 1686, PFTS = 1687, PFXD = 1688, PGTP = 1689, PHL0 = 1690,
PHSI = 1691, PIEU = 1692, PINC = 1693, PINI = 1694, PINL = 1695, PINX = 1696, PIPE = 1697, PIPR = 1698, PIRM = 1699, PJCX = 1700,
PKOP = 1701, PLDX = 1702, PLPD = 1703, PLPO = 1704, PLPS = 1705, PLPX = 1706, PLSX = 1707, PLUS = 1708, PLW0 = 1709, PMTS = 1710,
PNED = 1711, PNG0 = 1712, POEE = 1713, POL0 = 1714, PORT = 1715, POSE = 1716, POTC = 1717, POTL = 1718, PPEX = 1719, PRI0 = 1720,
PRK0 = 1721, PRME = 1722, PROS = 1723, PRSE = 1724, PRT0 = 1725, PRY0 = 1726, PSE0 = 1727, PSGM = 1728, PSXD = 1729, PTPG = 1730,
PULX = 1731, PUMA = 1732, PUMX = 1733, PUND = 1734, PURE = 1735, PVBL = 1736, PVMF = 1737, PXIL = 1738, PYF0 = 1739, QAT0 = 1740,
QMTF = 1741, QMTS = 1742, QUNT = 1743, QWIX = 1744, R5FX = 1745, RABL = 1746, RABO = 1747, RAJA = 1748, RBCB = 1749, RBCC = 1750,
RBCE = 1751, RBCG = 1752, RBCM = 1753, RBCS = 1754, RBCT = 1755, RBHU = 1756, RBIV = 1757, RBSI = 1758, RBSX = 1759, RCBX = 1760,
RCMA = 1761, RENC = 1762, RESE = 1763, RESF = 1764, REST = 1765, REU0 = 1766, RFBK = 1767, RFIM = 1768, RFQN = 1769, RFQS = 1770,
RFQU = 1771, RICD = 1772, RICX = 1773, RITS = 1774, RLBO = 1775, RMMS = 1776, RMMX = 1777, RMTF = 1778, RMTS = 1779, ROCO = 1780,
ROFX = 1781, ROSR = 1782, ROTC = 1783, ROU0 = 1784, RPDX = 1785, RPWC = 1786, RR4G = 1787, RRSI = 1788, RSEX = 1789, RTSI = 1790,
RTSL = 1791, RTSP = 1792, RTSX = 1793, RTXF = 1794, RULE = 1795, RUS0 = 1796, RUSX = 1797, RVSA = 1798, RWA0 = 1799, S3FM = 1800,
SAGE = 1801, SANT = 1802, SAU0 = 1803, SB1M = 1804, SBAR = 1805, SBEX = 1806, SBIJ = 1807, SBIL = 1808, SBIU = 1809, SBIV = 1810,
SBMF = 1811, SBSI = 1812, SCAG = 1813, SCLB = 1814, SCLE = 1815, SCOT = 1816, SCXA = 1817, SCXF = 1818, SCXM = 1819, SCXO = 1820,
SCXS = 1821, SDN0 = 1822, SEBA = 1823, SEBL = 1824, SEBS = 1825, SEBX = 1826, SECC = 1827, SECD = 1828, SECE = 1829, SECF = 1830,
SEDC = 1831, SEDR = 1832, SEDX = 1833, SEED = 1834, SELC = 1835, SEMX = 1836, SEN0 = 1837, SEND = 1838, SEOB = 1839, SEPE = 1840,
SEWB = 1841, SFCL = 1842, SFMP = 1843, SFOX = 1844, SGA2 = 1845, SGAS = 1846, SGEX = 1847, SGMA = 1848, SGMT = 1849, SGMU = 1850,
SGMV = 1851, SGMW = 1852, SGMX = 1853, SGMY = 1854, SGMZ = 1855, SGOE = 1856, SGP0 = 1857, SGS0 = 1858, SHAD = 1859, SHAR = 1860,
SHAW = 1861, SHN0 = 1862, SHSC = 1863, SIAB = 1864, SIBC = 1865, SICS = 1866, SIDX = 1867, SIFX = 1868, SIGA = 1869, SIGH = 1870,
SIGJ = 1871, SIGX = 1872, SIMD = 1873, SIMV = 1874, SISI = 1875, SISU = 1876, SJM0 = 1877, SKBB = 1878, SKSI = 1879, SKYX = 1880,
SLB0 = 1881, SLE0 = 1882, SLHB = 1883, SLKK = 1884, SLV0 = 1885, SLXT = 1886, SMBB = 1887, SMBC = 1888, SMBD = 1889, SMBE = 1890,
SMBG = 1891, SMBP = 1892, SMEX = 1893, SMFE = 1894, SMFF = 1895, SMR0 = 1896, SMTS = 1897, SNSI = 1898, SNUK = 1899, SOHO = 1900,
SOM0 = 1901, SPAD = 1902, SPAX = 1903, SPBE = 1904, SPDK = 1905, SPDX = 1906, SPEC = 1907, SPEU = 1908, SPEX = 1909, SPFI = 1910,
SPHR = 1911, SPIM = 1912, SPM0 = 1913, SPNO = 1914, SPRZ = 1915, SPTR = 1916, SPTX = 1917, SPXE = 1918, SQUA = 1919, SRB0 = 1920,
SSBI = 1921, SSBM = 1922, SSBT = 1923, SSD0 = 1924, SSEX = 1925, SSFX = 1926, SSIL = 1927, SSME = 1928, SSOB = 1929, SSTX = 1930,
SSWM = 1931, STAL = 1932, STAN = 1933, STEE = 1934, STFL = 1935, STFU = 1936, STFX = 1937, STOX = 1938, STP0 = 1939, STRM = 1940,
STRT = 1941, STSI = 1942, STUA = 1943, STUB = 1944, STUC = 1945, STUD = 1946, STUE = 1947, STUF = 1948, STUH = 1949, STXS = 1950,
SUNB = 1951, SUNM = 1952, SUNO = 1953, SUNT = 1954, SUR0 = 1955, SVES = 1956, SVEX = 1957, SVK0 = 1958, SVN0 = 1959, SVXI = 1960,
SWAP = 1961, SWBI = 1962, SWE0 = 1963, SWEE = 1964, SWLT = 1965, SWLV = 1966, SWZ0 = 1967, SXM0 = 1968, SXSI = 1969, SYC0 = 1970,
SYFX = 1971, SYNK = 1972, SYR0 = 1973, SZSC = 1974, T212 = 1975, TBEN = 1976, TBLA = 1977, TBSA = 1978, TBSP = 1979, TCA0 = 1980,
TCD0 = 1981, TCDS = 1982, TCME = 1983, TCML = 1984, TDBL = 1985, TDGF = 1986, TDON = 1987, TDXS = 1988, TECO = 1989, TEEG = 1990,
TEFD = 1991, TEFX = 1992, TEGB = 1993, TEGI = 1994, TEIR = 1995, TEMB = 1996, TEMC = 1997, TEMF = 1998, TEMG = 1999, TEMI = 2000,
TEMM = 2001, TEMR = 2002, TEOF = 2003, TEPF = 2004, TEPG = 2005, TEPI = 2006, TEPM = 2007, TEPR = 2008, TEPX = 2009, TERA = 2010,
TERE = 2011, TERM = 2012, TEUR = 2013, TFEX = 2014, TFSA = 2015, TFSC = 2016, TFSD = 2017, TFSE = 2018, TFSG = 2019, TFSS = 2020,
TFSU = 2021, TFSV = 2022, TGAT = 2023, TGO0 = 2024, TGSI = 2025, THA0 = 2026, THEM = 2027, THRD = 2028, THRE = 2029, TICT = 2030,
TIRD = 2031, TJK0 = 2032, TKL0 = 2033, TKM0 = 2034, TLAB = 2035, TLCM = 2036, TLS0 = 2037, TMCC = 2038, TMCY = 2039, TMEU = 2040,
TMEX = 2041, TMID = 2042, TMTS = 2043, TMUK = 2044, TMXS = 2045, TNLA = 2046, TNLB = 2047, TNLK = 2048, TNLL = 2049, TOCP = 2050,
TOMD = 2051, TOMF = 2052, TOMG = 2053, TOMX = 2054, TON0 = 2055, TOWR = 2056, TPCD = 2057, TPDA = 2058, TPDE = 2059, TPEE = 2060,
TPEL = 2061, TPEO = 2062, TPEQ = 2063, TPER = 2064, TPES = 2065, TPEU = 2066, TPFD = 2067, TPFR = 2068, TPIC = 2069, TPID = 2070,
TPIE = 2071, TPIM = 2072, TPIO = 2073, TPIR = 2074, TPIS = 2075, TPLF = 2076, TPMF = 2077, TPMG = 2078, TPRE = 2079, TPSB = 2080,
TPSD = 2081, TPSE = 2082, TPSG = 2083, TPSL = 2084, TPSO = 2085, TPSP = 2086, TPSV = 2087, TPSY = 2088, TQEA = 2089, TQEB = 2090,
TQEM = 2091, TQEX = 2092, TRAI = 2093, TRAL = 2094, TRAS = 2095, TRAX = 2096, TRBX = 2097, TRCK = 2098, TRCX = 2099, TRDC = 2100,
TRDE = 2101, TRDX = 2102, TREA = 2103, TREO = 2104, TREU = 2105, TRFW = 2106, TRFX = 2107, TRNL = 2108, TRPX = 2109, TRQA = 2110,
TRQB = 2111, TRQC = 2112, TRQD = 2113, TRQM = 2114, TRQS = 2115, TRQX = 2116, TRSI = 2117, TRU1 = 2118, TRU2 = 2119, TRUK = 2120,
TRUX = 2121, TRWB = 2122, TRXE = 2123, TSAD = 2124, TSAF = 2125, TSBX = 2126, TSCB = 2127, TSCD = 2128, TSED = 2129, TSEF = 2130,
TSFF = 2131, TSFG = 2132, TSFI = 2133, TSFX = 2134, TSGB = 2135, TSGI = 2136, TSIG = 2137, TSIR = 2138, TSMB = 2139, TSMC = 2140,
TSMG = 2141, TSMI = 2142, TSMM = 2143, TSMR = 2144, TSRE = 2145, TSUK = 2146, TTO0 = 2147, TUN0 = 2148, TUOB = 2149, TUR0 = 2150,
TUV0 = 2151, TWEA = 2152, TWEM = 2153, TWEO = 2154, TWEU = 2155, TWGP = 2156, TWHK = 2157, TWJP = 2158, TWJT = 2159, TWN0 = 2160,
TWSF = 2161, TWSG = 2162, TZA0 = 2163, U360 = 2164, UBCZ = 2165, UBEC = 2166, UBIM = 2167, UBIN = 2168, UBIS = 2169, UBSA = 2170,
UBSB = 2171, UBSC = 2172, UBSD = 2173, UBSE = 2174, UBSF = 2175, UBSG = 2176, UBSI = 2177, UBSL = 2178, UBSP = 2179, UBSS = 2180,
UBST = 2181, UBSX = 2182, UBSY = 2183, UCBA = 2184, UCBG = 2185, UCDE = 2186, UCHU = 2187, UCIT = 2188, UFEX = 2189, UGA0 = 2190,
UGEN = 2191, UICE = 2192, UKCA = 2193, UKEX = 2194, UKGD = 2195, UKOR = 2196, UKPX = 2197, UKR0 = 2198, UKRE = 2199, ULTX = 2200,
UMTS = 2201, UNGB = 2202, URCE = 2203, URY0 = 2204, USA0 = 2205, USEF = 2206, USOB = 2207, USWB = 2208, USWP = 2209, UTSL = 2210,
UZB0 = 2211, VABD = 2212, VAGL = 2213, VAGM = 2214, VALX = 2215, VAT0 = 2216, VCMO = 2217, VCRS = 2218, VCT0 = 2219, VDRK = 2220,
VEGA = 2221, VEN0 = 2222, VERT = 2223, VFCM = 2224, VFEX = 2225, VFGB = 2226, VFIL = 2227, VFMI = 2228, VFSI = 2229, VFUK = 2230,
VFXO = 2231, VGB0 = 2232, VIR0 = 2233, VIRT = 2234, VIUK = 2235, VKAB = 2236, VLEX = 2237, VMEX = 2238, VMFX = 2239, VMTS = 2240,
VNDM = 2241, VNM0 = 2242, VOLA = 2243, VONT = 2244, VPXB = 2245, VRXP = 2246, VTBC = 2247, VTEX = 2248, VTLS = 2249, VTPS = 2250,
VUBA = 2251, VUSA = 2252, VUT0 = 2253, VWAP = 2254, VWDA = 2255, VWDX = 2256, WABR = 2257, WBAH = 2258, WBCL = 2259, WBDM = 2260,
WBGF = 2261, WBKP = 2262, WBLC = 2263, WBMA = 2264, WBON = 2265, WCDE = 2266, WCLK = 2267, WDER = 2268, WEED = 2269, WELN = 2270,
WELS = 2271, WELX = 2272, WETP = 2273, WFLB = 2274, WFLP = 2275, WFSE = 2276, WGAS = 2277, WIND = 2278, WINS = 2279, WINX = 2280,
WIPO = 2281, WLF0 = 2282, WMTF = 2283, WOOD = 2284, WOPO = 2285, WQXL = 2286, WSAG = 2287, WSIL = 2288, WSIN = 2289, WSM0 = 2290,
XA1X = 2291, XABC = 2292, XABG = 2293, XABJ = 2294, XABX = 2295, XACE = 2296, XADE = 2297, XADF = 2298, XADS = 2299, XAEX = 2300,
XAFR = 2301, XAFX = 2302, XAIM = 2303, XALB = 2304, XALG = 2305, XALS = 2306, XALT = 2307, XAMM = 2308, XAMS = 2309, XAND = 2310,
XANM = 2311, XANS = 2312, XANT = 2313, XAOM = 2314, XAPA = 2315, XAPI = 2316, XAQS = 2317, XARC = 2318, XARM = 2319, XASE = 2320,
XASM = 2321, XASX = 2322, XATH = 2323, XATL = 2324, XATS = 2325, XATX = 2326, XAUK = 2327, XAZX = 2328, XBAA = 2329, XBAB = 2330,
XBAH = 2331, XBAN = 2332, XBAR = 2333, XBAV = 2334, XBBF = 2335, XBBJ = 2336, XBBK = 2337, XBCC = 2338, XBCE = 2339, XBCL = 2340,
XBCM = 2341, XBCV = 2342, XBCX = 2343, XBDA = 2344, XBDV = 2345, XBEL = 2346, XBER = 2347, XBES = 2348, XBEY = 2349, XBFO = 2350,
XBIL = 2351, XBIS = 2352, XBKF = 2353, XBKK = 2354, XBLB = 2355, XBLK = 2356, XBLN = 2357, XBMF = 2358, XBMK = 2359, XBND = 2360,
XBNV = 2361, XBOG = 2362, XBOL = 2363, XBOM = 2364, XBOS = 2365, XBOT = 2366, XBOX = 2367, XBRA = 2368, XBRD = 2369, XBRE = 2370,
XBRM = 2371, XBRN = 2372, XBRT = 2373, XBRU = 2374, XBRV = 2375, XBRY = 2376, XBSD = 2377, XBSE = 2378, XBSP = 2379, XBTF = 2380,
XBTR = 2381, XBUD = 2382, XBUE = 2383, XBUL = 2384, XBVC = 2385, XBVM = 2386, XBVP = 2387, XBVR = 2388, XBXO = 2389, XCAI = 2390,
XCAL = 2391, XCAN = 2392, XCAR = 2393, XCAS = 2394, XCAY = 2395, XCBD = 2396, XCBF = 2397, XCBO = 2398, XCBT = 2399, XCCE = 2400,
XCCX = 2401, XCDE = 2402, XCEC = 2403, XCEG = 2404, XCET = 2405, XCFE = 2406, XCFF = 2407, XCGS = 2408, XCHG = 2409, XCHI = 2410,
XCIE = 2411, XCIS = 2412, XCME = 2413, XCNF = 2414, XCNQ = 2415, XCOL = 2416, XCOR = 2417, XCRC = 2418, XCRO = 2419, XCSC = 2420,
XCSE = 2421, XCSX = 2422, XCTS = 2423, XCUE = 2424, XCUR = 2425, XCVD = 2426, XCX2 = 2427, XCXD = 2428, XCYO = 2429, XCYS = 2430,
XDAR = 2431, XDBC = 2432, XDBV = 2433, XDBX = 2434, XDCE = 2435, XDES = 2436, XDEX = 2437, XDFB = 2438, XDFM = 2439, XDHA = 2440,
XDLP = 2441, XDMI = 2442, XDNB = 2443, XDPA = 2444, XDRF = 2445, XDRK = 2446, XDSE = 2447, XDSM = 2448, XDSX = 2449, XDTB = 2450,
XDUB = 2451, XDUS = 2452, XDWZ = 2453, XEAS = 2454, XEBI = 2455, XEBS = 2456, XECB = 2457, XECC = 2458, XECM = 2459, XECS = 2460,
XEDA = 2461, XEDX = 2462, XEEE = 2463, XEEO = 2464, XEER = 2465, XEHQ = 2466, XEID = 2467, XELX = 2468, XEMA = 2469, XEMB = 2470,
XEMD = 2471, XEMI = 2472, XEMS = 2473, XEQT = 2474, XEQY = 2475, XERE = 2476, XERT = 2477, XESM = 2478, XETA = 2479, XETB = 2480,
XETC = 2481, XETD = 2482, XETE = 2483, XETF = 2484, XETI = 2485, XETR = 2486, XETS = 2487, XETU = 2488, XETV = 2489, XETW = 2490,
XETX = 2491, XEUB = 2492, XEUC = 2493, XEUE = 2494, XEUI = 2495, XEUM = 2496, XEUP = 2497, XEUR = 2498, XEUS = 2499, XEYE = 2500,
XFCI = 2501, XFCM = 2502, XFDA = 2503, XFEX = 2504, XFFE = 2505, XFKA = 2506, XFMN = 2507, XFND = 2508, XFNO = 2509, XFNX = 2510,
XFOM = 2511, XFRA = 2512, XFTA = 2513, XFTX = 2514, XGAI = 2515, XGAS = 2516, XGAT = 2517, XGCL = 2518, XGCX = 2519, XGDX = 2520,
XGEM = 2521, XGFI = 2522, XGGI = 2523, XGHA = 2524, XGLO = 2525, XGME = 2526, XGMX = 2527, XGRM = 2528, XGSE = 2529, XGSX = 2530,
XGTG = 2531, XGUA = 2532, XHAM = 2533, XHAN = 2534, XHCE = 2535, XHEL = 2536, XHER = 2537, XHFT = 2538, XHIR = 2539, XHKF = 2540,
XHKG = 2541, XHNF = 2542, XHNX = 2543, XHON = 2544, XIAB = 2545, XIBE = 2546, XICB = 2547, XICE = 2548, XICX = 2549, XIDX = 2550,
XIEL = 2551, XIEX = 2552, XIGG = 2553, XIHK = 2554, XIJP = 2555, XIMA = 2556, XIMC = 2557, XIME = 2558, XIMM = 2559, XIMX = 2560,
XINE = 2561, XINS = 2562, XINV = 2563, XIOM = 2564, XIPE = 2565, XIPO = 2566, XIQS = 2567, XISA = 2568, XISE = 2569, XISL = 2570,
XIST = 2571, XISX = 2572, XJAM = 2573, XJAS = 2574, XJKT = 2575, XJNB = 2576, XJPX = 2577, XJSE = 2578, XJWY = 2579, XKAC = 2580,
XKAR = 2581, XKAZ = 2582, XKBT = 2583, XKCE = 2584, XKCM = 2585, XKEM = 2586, XKFB = 2587, XKFE = 2588, XKGT = 2589, XKHA = 2590,
XKHR = 2591, XKIE = 2592, XKIS = 2593, XKKT = 2594, XKLS = 2595, XKON = 2596, XKOR = 2597, XKOS = 2598, XKRX = 2599, XKSE = 2600,
XKST = 2601, XKUW = 2602, XKYO = 2603, XLAH = 2604, XLAO = 2605, XLAT = 2606, XLBM = 2607, XLCE = 2608, XLCH = 2609, XLDN = 2610,
XLDX = 2611, XLFX = 2612, XLGT = 2613, XLIF = 2614, XLIM = 2615, XLIS = 2616, XLIT = 2617, XLJM = 2618, XLJS = 2619, XLJU = 2620,
XLLB = 2621, XLME = 2622, XLOD = 2623, XLOF = 2624, XLOM = 2625, XLON = 2626, XLQC = 2627, XLSM = 2628, XLTO = 2629, XLUS = 2630,
XLUX = 2631, XMAB = 2632, XMAC = 2633, XMAD = 2634, XMAE = 2635, XMAI = 2636, XMAL = 2637, XMAN = 2638, XMAP = 2639, XMAT = 2640,
XMAU = 2641, XMCE = 2642, XMDG = 2643, XMDS = 2644, XMEF = 2645, XMER = 2646, XMEV = 2647, XMEX = 2648, XMFX = 2649, XMGE = 2650,
XMIC = 2651, XMID = 2652, XMIF = 2653, XMIL = 2654, XMIO = 2655, XMLI = 2656, XMLX = 2657, XMME = 2658, XMNT = 2659, XMNX = 2660,
XMOC = 2661, XMOD = 2662, XMOL = 2663, XMON = 2664, XMOO = 2665, XMOS = 2666, XMOT = 2667, XMPW = 2668, XMRV = 2669, XMSM = 2670,
XMSW = 2671, XMTB = 2672, XMTI = 2673, XMTS = 2674, XMUN = 2675, XMUS = 2676, XMVL = 2677, XNAF = 2678, XNAI = 2679, XNAM = 2680,
XNAS = 2681, XNCD = 2682, XNCM = 2683, XNCO = 2684, XNDQ = 2685, XNDU = 2686, XNDX = 2687, XNEC = 2688, XNEE = 2689, XNEP = 2690,
XNEW = 2691, XNFI = 2692, XNGM = 2693, XNGO = 2694, XNGS = 2695, XNII = 2696, XNIM = 2697, XNKS = 2698, XNLI = 2699, XNLX = 2700,
XNMR = 2701, XNMS = 2702, XNOM = 2703, XNOR = 2704, XNQL = 2705, XNRG = 2706, XNSA = 2707, XNSE = 2708, XNST = 2709, XNXC = 2710,
XNXD = 2711, XNYC = 2712, XNYE = 2713, XNYF = 2714, XNYL = 2715, XNYM = 2716, XNYS = 2717, XNZE = 2718, XOAA = 2719, XOAD = 2720,
XOAM = 2721, XOAS = 2722, XOBD = 2723, XOCH = 2724, XODE = 2725, XOFF = 2726, XOME = 2727, XOPV = 2728, XOSA = 2729, XOSC = 2730,
XOSD = 2731, XOSE = 2732, XOSJ = 2733, XOSL = 2734, XOSM = 2735, XOST = 2736, XOTB = 2737, XOTC = 2738, XOTP = 2739, XPAC = 2740,
XPAE = 2741, XPAL = 2742, XPAR = 2743, XPBT = 2744, XPET = 2745, XPHL = 2746, XPHO = 2747, XPHS = 2748, XPHX = 2749, XPIC = 2750,
XPIN = 2751, XPLU = 2752, XPMS = 2753, XPOL = 2754, XPOM = 2755, XPOR = 2756, XPOS = 2757, XPOT = 2758, XPOW = 2759, XPRA = 2760,
XPRI = 2761, XPRM = 2762, XPSE = 2763, XPSF = 2764, XPST = 2765, XPSX = 2766, XPTY = 2767, XPUK = 2768, XPUS = 2769, XPXE = 2770,
XQLX = 2771, XQMH = 2772, XQOD = 2773, XQTX = 2774, XQUI = 2775, XRAS = 2776, XRBM = 2777, XRCB = 2778, XREP = 2779, XRFQ = 2780,
XRIO = 2781, XRIS = 2782, XRMO = 2783, XRMS = 2784, XRMZ = 2785, XROS = 2786, XROT = 2787, XROV = 2788, XROX = 2789, XRPM = 2790,
XRSP = 2791, XRTR = 2792, XRUS = 2793, XSAF = 2794, XSAM = 2795, XSAP = 2796, XSAT = 2797, XSAU = 2798, XSBI = 2799, XSBT = 2800,
XSC1 = 2801, XSC2 = 2802, XSC3 = 2803, XSCA = 2804, XSCE = 2805, XSCL = 2806, XSCO = 2807, XSCU = 2808, XSDX = 2809, XSEB = 2810,
XSEC = 2811, XSEF = 2812, XSES = 2813, XSFA = 2814, XSFE = 2815, XSGA = 2816, XSGB = 2817, XSGE = 2818, XSGO = 2819, XSHE = 2820,
XSHG = 2821, XSIB = 2822, XSIC = 2823, XSIM = 2824, XSLS = 2825, XSME = 2826, XSMP = 2827, XSOM = 2828, XSOP = 2829, XSPM = 2830,
XSPS = 2831, XSRM = 2832, XSSC = 2833, XSSE = 2834, XSTC = 2835, XSTE = 2836, XSTF = 2837, XSTM = 2838, XSTO = 2839, XSTP = 2840,
XSTU = 2841, XSTV = 2842, XSTX = 2843, XSUR = 2844, XSVA = 2845, XSWA = 2846, XSWB = 2847, XSWM = 2848, XSWO = 2849, XSWX = 2850,
XTAA = 2851, XTAD = 2852, XTAE = 2853, XTAF = 2854, XTAI = 2855, XTAL = 2856, XTAM = 2857, XTAR = 2858, XTEH = 2859, XTFE = 2860,
XTFF = 2861, XTFN = 2862, XTIR = 2863, XTK1 = 2864, XTK2 = 2865, XTK3 = 2866, XTKA = 2867, XTKO = 2868, XTKS = 2869, XTKT = 2870,
XTLX = 2871, XTND = 2872, XTNX = 2873, XTOE = 2874, XTPE = 2875, XTPZ = 2876, XTRA = 2877, XTRD = 2878, XTRN = 2879, XTRZ = 2880,
XTSE = 2881, XTSX = 2882, XTUC = 2883, XTUN = 2884, XTUP = 2885, XTUR = 2886, XTXD = 2887, XTXE = 2888, XTXM = 2889, XUAX = 2890,
XUBS = 2891, XUGA = 2892, XUKR = 2893, XULA = 2894, XUMP = 2895, XUNI = 2896, XUSE = 2897, XVAL = 2898, XVAR = 2899, XVES = 2900,
XVIA = 2901, XVIE = 2902, XVLA = 2903, XVPA = 2904, XVPB = 2905, XVSE = 2906, XVTX = 2907, XWAP = 2908, XWAR = 2909, XWBO = 2910,
XWCE = 2911, XWEE = 2912, XXSC = 2913, XXX0 = 2914, XXXX = 2915, XYIE = 2916, XYKT = 2917, XZAG = 2918, XZAM = 2919, XZAP = 2920,
XZCE = 2921, XZIM = 2922, YEM0 = 2923, YKNA = 2924, YLDX = 2925, ZAF0 = 2926, ZAPA = 2927, ZARX = 2928, ZBUL = 2929, ZERO = 2930,
ZFXM = 2931, ZKBX = 2932, ZMB0 = 2933, ZOBX = 2934, ZODM = 2935, ZWE0 = 2936,
MAXMARKETID = 2937, NUMMARKETID = 2937
};
MarketId( void ): m_mic(NOMARKETID) {}
~MarketId( void ) { m_mic = NOMARKETID; }
// non-explicit constructors intentional here
MarketId( MarketIdCode i ): m_mic(i) {} // e.g. i = MarketId::XLON
MarketId( const std::string &s ): m_mic(NOMARKETID) { setMarketId(s); }
MarketId( const char *s ): m_mic(NOMARKETID) { if (s) setMarketId(s); }
// my numeric code for this market e.g. MarketId::XLON = 2626
operator short( void ) const { return m_mic; }
// The 4 letter MIC code for this market e.g. "XLON"
std::string
to4Code( void ) const { return m_codes[m_fromISO[m_mic]]; }
std::string
name( void ) const { return m_fullNames[m_fromISO[m_mic]]; } // i.e "London Stock Exchange"
bool
setMarketId( const std::string &s ); // e.g. s = "XLON"
void
setMarketId( MarketIdCode s ) { m_mic = s; } // e.g. s = MarketId::XLON
static MarketId
index( int i ) { return MarketIdCode(m_toISO[i]); }
static int
index( const MarketId &c ) { return m_fromISO[c]; }
bool
valid( void ) const { return m_mic != NOMARKETID; }
private:
short m_mic;
static const short m_search[28];
static const short m_fromISO[MAXMARKETID];
static const short m_toISO[NUMMARKETID];
static const char * const m_codes[NUMMARKETID];
static const char * const m_fullNames[NUMMARKETID];
};
std::ostream&
operator<<( std::ostream &ostr, const MarketId &m );
std::istream&
operator>>( std::istream &istr, MarketId &m );
#endif