MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Parsing records in mathematica

  • To: mathgroup at smc.vnet.net
  • Subject: [mg38060] Parsing records in mathematica
  • From: burd at gmx.net (Oleg)
  • Date: Thu, 28 Nov 2002 14:08:05 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Hi, 
does smbd knows any possibility to parse in Mathematica complex
structures.
Example:
File datafile consist of 1000 records.
Each record is defined by C structure pubcstnTag: 

 typedef struct pubcstnTag
    {
        char dataLen[DATA_LEN_LEN];
        instGrpIdCodT instGrpIdCod;
        instDataT instData;
    } pubcstnT, *pPubcstnT;

This structures consist of the following one:

#ifndef _BST_ORD_GRP_T_
#define _BST_ORD_GRP_T_

    typedef struct bstOrdGrpTag
    {
        char bstBidPrc[BST_BID_PRC_LEN+1];
        char bstAskPrc[BST_ASK_PRC_LEN+1];
        char bstBidQty[BST_BID_QTY_LEN+1];
        char bstAskQty[BST_ASK_QTY_LEN+1];
        char numOrdrBid[NUM_ORDR_BID_LEN+1];
        char numOrdrAsk[NUM_ORDR_ASK_LEN+1];
    } bstOrdGrpT, *pBstOrdGrpT;


#endif  /* _BST_ORD_GRP_T_ */

/*----------------------------------------------------------------------------*/
#ifndef _MTCH_RNG_T_
#define _MTCH_RNG_T_

    typedef struct mtchRngTag
    {
        char mtchRngBid[MTCH_RNG_BID_LEN+1];
        char mtchRngAsk[MTCH_RNG_ASK_LEN+1];
    } mtchRngT, *pMtchRngT;


#endif  /* _MTCH_RNG_T_ */

/*----------------------------------------------------------------------------*/
#ifndef _INST_DATA_T_
#define _INST_DATA_T_

    typedef struct instDataTag
    {
        char auctPrc[AUCT_PRC_LEN+1];
        char auctQty[AUCT_QTY_LEN+1];
        char netChg[NET_CHG_LEN+1];
        char lstTrdPrc[LST_TRD_PRC_LEN+1];
        char lstTrdQty[LST_TRD_QTY_LEN+1];
        char trdTim[TRD_TIM_LEN];
        char crossTrdPrc[CROSS_TRD_PRC_LEN+1];
        char crossTrdQty[CROSS_TRD_QTY_LEN+1];
        char crossTrdTim[CROSS_TRD_TIM_LEN];
        char clsPrc[CLS_PRC_LEN+1];
        char valPrc[VAL_PRC_LEN+1];
        char opnPrc[OPN_PRC_LEN+1];
        char dlyLowPrc[DLY_LOW_PRC_LEN+1];
        char dlyHghPrc[DLY_HGH_PRC_LEN+1];
        char instOneDayQtyBest[INST_ONE_DAY_QTY_BEST_LEN+1];
        char totNoTrdBest[TOT_NO_TRD_BEST_LEN+1];
        char trdPrcBest[TRD_PRC_BEST_LEN+1];
        char trdQtyBest[TRD_QTY_BEST_LEN+1];
        char trdTimBest[TRD_TIM_BEST_LEN];
        char instOneDayQty[INST_ONE_DAY_QTY_LEN+1];
        char lstAuctQty[LST_AUCT_QTY_LEN+1];
        char auctTim[AUCT_TIM_LEN];
        char lstAuctPrc[LST_AUCT_PRC_LEN+1];
        char quotTypInd;
        char srpQty[SRP_QTY_LEN+1];
        char noTotTrdQty[NO_TOT_TRD_QTY_LEN+1];
        char fmInd;
        char srpBidAskInd;
        char moiInd;
        char prcsStsValCod[PRCS_STS_VAL_COD_LEN];
        char cmexInd;
        char volInd;
        char excpStateInd;
        mtchRngT mtchRng;
        char bstOrdPrcInd;
        bstOrdGrpT bstOrdGrp[BST_ORD_GRP_MAX];
    } instDataT, *pInstDataT;


#endif  /* _INST_DATA_T_ */

/*----------------------------------------------------------------------------*/
#ifndef _INST_GRP_ID_COD_T_
#define _INST_GRP_ID_COD_T_

    typedef struct instGrpIdCodTag
    {
        char isinCod[ISIN_COD_LEN];
    } instGrpIdCodT, *pInstGrpIdCodT;


#endif  /* _INST_GRP_ID_COD_T_ */

/*----------------------------------------------------------------------------*/

    typedef struct pubcstnTag
    {
        char dataLen[DATA_LEN_LEN];
        instGrpIdCodT instGrpIdCod;
        instDataT instData;
    } pubcstnT, *pPubcstnT;

Example of record: 
"1091DE0005190037-9999999999999+\
000000000000000+0000000017000                                         
       \
                                                                      
       \
                                                                      
       \
                                                           
+000000000000000  \
         NNTRADE N                             \
C+0000002153000+0000002169000+000000003000000+000000000150000+0001+0001+\
0000002152000+0000002170000+000000003100000+000000000500000+0001+0001+\
0000002135000+0000002174000+000000001464000+000000001300000+0001+0002+\
0000002126000+0000002175000+000000001000000+000000001740000+0001+0001+\
0000002125000+0000002179000+000000000100000+000000000500000+0001+0001+\
0000002100000+0000002180000+000000000500000+000000002000000+0001+0001+\
0000002071000+0000002186000+000000001000000+000000000300000+0001+0001+\
0000002070000+0000002189000+000000000357000+000000001000000+0002+0001+\
0000002045000+0000002190000+000000000240000+000000000500000+0001+0001+\
0000002021000+0000002193000+000000001000000+000000000250000+0001+0001]]"

I read the file into the list. But how to parse records in the way to
be able to access single elements of the structures?


  • Prev by Date: Re: Re: Unit Conversion
  • Next by Date: Re: Data Conversion
  • Previous by thread: Producing ticks on left axis with axis labels
  • Next by thread: Taking Options from Wrappers