www.gusucode.com > trading工具箱matlab源码程序 > trading/trading/@emsx/getAllFieldMetaData.m
function r = getAllFieldMetaData(b) %GETALLFIELDMETADATA Bloomberg EMSX field information. % R = GETALLFIELDMETADATA returns the Bloomberg EMSX field information % given the connection handle, B. % % For example, % % r = getAllFieldMetaData(b) returns % % returns % % r = % % EMSX_FIELD_NAME: {113x1 cell} % EMSX_DISP_NAME: {113x1 cell} % EMSX_TYPE: {113x1 cell} % EMSX_LEVEL: [113x1 double] % EMSX_LEN: [113x1 double] % where % % {r.EMSX_FIELD_NAME{1} r.EMSX_DISP_NAME{1} r.EMSX_TYPE{1} r.EMSX_LEVEL(1) r.EMSX_LEN(1)} % % returns % % ans = % % 'MSG_TYPE' 'Msg Type' 'String' [0] [1] % % See also emsx. % Copyright 2012 The MathWorks, Inc. %create and send request request = b.Service.createRequest('GetAllFieldMetaData'); b.Session.sendRequest(request,[]); %process event to get field info iter = true; while iter evt = b.Session.nextEvent(1000); evtType = char(evt.eventType); msgIter = evt.messageIterator; switch evtType case 'RESPONSE' msg = msgIter.next; case 'TIMEOUT' iter = false; end end if ~exist('msg','var') r = []; return end %Parse field meta data msgMetaData = msg.getElement('MetaData'); numElements = msgMetaData.numValues; r.EMSX_FIELD_NAME = cell(numElements,1); r.EMSX_DISP_NAME = r.EMSX_FIELD_NAME; r.EMSX_TYPE = r.EMSX_FIELD_NAME; r.EMSX_LEVEL = nan(numElements,1); r.EMSX_LEN = r.EMSX_LEVEL; for i = 1:numElements tmp = msgMetaData.getValueAsElement(i-1); r.EMSX_FIELD_NAME{i} = char(tmp.getElementAsString('EMSX_FIELD_NAME')); r.EMSX_DISP_NAME{i} = char(tmp.getElementAsString('EMSX_DISP_NAME')); r.EMSX_TYPE{i} = char(tmp.getElementAsString('EMSX_TYPE')); r.EMSX_LEVEL(i) = tmp.getElementAsFloat64('EMSX_LEVEL'); r.EMSX_LEN(i) = tmp.getElementAsFloat64('EMSX_LEN'); end