API Documentation

Category Description

Exchange halt and open delay type and reason codes.

Category Identification

pNxCoreMessage->coreData.Category.pnxStringCategory->Atom 63
pNxCoreMessage->coreData.Category.pnxStringCategory->String Halt

Update Time and Frequency

Approximate Time Info
00:00 AM Information from previous session
Occasional Updates Occasional updates throughout the day

Category Fields | 4

Index FieldName FieldType C Code Info
0 Type NxCFT_STRING_IDX pnxFields[0].data.stringTableItem Halt type, such as Resume, NoOpenNoResume, Halted, OpenDelay, etc, from table table_NxST_HALTSTATUS.html
1 Reason NxCFT_STRING_IDX pnxFields[1].data.stringTableItem Halt reason, such as EquipmentChange, News, NewsDisseminated, OrderImbalance, etc, from table table_NxST_HALTREASONTYPE.html
2 LastTrade NxCFT_PRICE pnxFields[2].data.nxPrice Last trade price, when available
3 HaltTime NxCFT_TIME pnxFields[3].data.nxTime Time the halt took effect

Code Sample from CategoryDumper project:

void onNxCoreCategory_63(const NxCoreMessage *pNxCoreMsg)
{
     NxCategoryField *pField;
			 
     // Print the category num and the Symbol
     PrintSymbol(pNxCoreMsg);
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[0];		 
     if (pField->Set)
     {
         printf("Type:  Table - %d  Status - ",
                pField->data.stringTableItem.ixTable);
 			 
         // See table_NxST_HALTSTATUS.html 			 
         switch(pField->data.stringTableItem.idString)
         {
             case 0:printf("Resume \n");break;
             case 1:printf("Open Delay \n");break;
             case 2:printf("Halted \n");break;
             case 3:printf("NoOpenNoResume \n");break;
         }
     }
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[1];		 
     if (pField->Set)
     {
         printf("Reason: Table - %d  Reason - ",
                pField->data.stringTableItem.ixTable);
 			 
         // See table_NxST_HALTREASONTYPE.html
         switch(pField->data.stringTableItem.idString)
         {
             case 1:printf("News \n");break;
             case 2:printf("News Disseminated \n");break;
             case 3:printf("Order Imbalance \n");break;
             case 4:printf("Equipment Change \n");break;
             case 5:printf("Pending Info \n");break;
             case 6:printf("Suspended \n");break;
             case 7:printf("SEC \n");break;
             case 8:printf("Not Specified \n");break;             
         }
     }
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[2];
     if (pField->Set)
         printf("Last Trade: %0.4f \n",
                pfNxCorePriceToDouble(pField->data.nxPrice.Price,
                                      pField->data.nxPrice.PriceType));
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[3];
     if (pField->Set)
         printf("Halt Time: %02d:%02d:%02d \n",
                pField->data.nxTime.Hour,
                pField->data.nxTime.Minute,
                pField->data.nxTime.Second);     
}