.TITLE ADC_TBL.MAR .IDENT /X-1/ ;++ ; FACILITY: StarLet ADC server (Advanced Direct Connection) ; ; FUNCTIONAL DESCRIPTION: ; ; This module contains a parser table used by LIB$TPARSE routine to ; performs parameters parsing and extracting a selected number of fields. ; ; ENVIRONMENT: OpenVMS ; ; AUTHOR: Ruslan R. Laishev, CREATION-DATE: 9-JUL-2009 ; ; Example of ADC message: ; ; HSUP ADBASE ADTIGR ; BINF ID ... PD ... ; HPAS ; ; MODIFIED BY: ; ; ; ;-- ; .PSECT IMPURE,WRT,NOEXE $TPADEF ;TParse stuff .LIBRARY /ADCDEF.MLB/ .EXTRN _ADC_SETMT .EXTRN _ADC_SETACT .EXTRN _ADC_ADDOPT .EXTRN _ADC_REMOPT SEPA = 32 ; It's just " " EOL = 10 ; %x0A .SBTTL Parser State Table $ADCDEF $INIT_STATE UFD_STATE,UFD_KEY $STATE START ; ; ADC Message Type ; $TRAN 'B',ACT, _ADC_SETMT,,,ADC$MT_BROAD $TRAN 'C',ACT, _ADC_SETMT,,,ADC$MT_CLIENT $TRAN 'D',ACT, _ADC_SETMT,,,ADC$MT_DIRECT $TRAN 'E',ACT, _ADC_SETMT,,,ADC$MT_ECHO $TRAN 'F',ACT, _ADC_SETMT,,,ADC$MT_FEAT $TRAN 'H',ACT, _ADC_SETMT,,,ADC$MT_HUB $TRAN 'I',ACT, _ADC_SETMT,,,ADC$MT_INFO $TRAN 'U',ACT, _ADC_SETMT,,,ADC$MT_UDP $TRAN TPA$_ANY, TPA$_FAIL $TRAN TPA$_EOS, TPA$_FAIL ; ; An incoming message type has been recognized, now ; we recongnizing fields ; $STATE ACT $TRAN 'STA',ARG, _ADC_SETACT,,,ADC$ACT_STA $TRAN 'SUP',SUP, _ADC_SETACT,,,ADC$ACT_SUP $TRAN 'SID',ARG, _ADC_SETACT,,,ADC$ACT_SID $TRAN 'INF',INF1, _ADC_SETACT,,,ADC$ACT_INF $TRAN 'MSG',MSG, _ADC_SETACT,,,ADC$ACT_MSG $TRAN 'SCH',ARG, _ADC_SETACT,,,ADC$ACT_SCH $TRAN 'RES',ARG, _ADC_SETACT,,,ADC$ACT_RES $TRAN 'CTM',CTM, _ADC_SETACT,,,ADC$ACT_CTM $TRAN 'RCM',RCM, _ADC_SETACT,,,ADC$ACT_RCM $TRAN 'GPA',ARG, _ADC_SETACT,,,ADC$ACT_GPA $TRAN 'PAS',PAS, _ADC_SETACT,,,ADC$ACT_PAS $TRAN 'QUI',ARG, _ADC_SETACT,,,ADC$ACT_QUI ; $TRAN 'GET',ARG, _ADC_SETACT,,,ADC$ACT_GET ; $TRAN 'GFI',ARG, _ADC_SETACT,,,ADC$ACT_GFI ; $TRAN 'SND',ARG, _ADC_SETACT,,,ADC$ACT_SND ; $TRAN 'TIGR',ARG, _ADC_SETACT,,,ADC$ACT_SND ; $TRAN 'BZIP',ARG, _ADC_SETACT,,,ADC$ACT_BZIP ; $TRAN 'ZLIF',ARG, _ADC_SETACT,,,ADC$ACT_ZLIF ; $TRAN 'ZLIG',ARG, _ADC_SETACT,,,ADC$ACT_ZLIG $TRAN TPA$_ANY, TPA$_FAIL $TRAN TPA$_EOS, TPA$_FAIL $STATE ARG $TRAN TPA$_ANY, TPA$_EXIT $TRAN TPA$_EOS, TPA$_EXIT ; ; SUP ('AD' | 'RM') feature (separator ('AD' | 'RM') feature)* ; $STATE SUP $TRAN 'ADBASE',SUP, _ADC_ADDOPT,,,SUP$M_BASE $TRAN 'RMBASE',SUP, _ADC_REMOPT,,,SUP$M_BASE $TRAN 'ADTIGR',SUP, _ADC_ADDOPT,,,SUP$M_TIGR $TRAN 'RMTIGR',SUP, _ADC_REMOPT,,,SUP$M_TIGR $TRAN 'ADBZIP',SUP, _ADC_ADDOPT,,,SUP$M_BZIP $TRAN 'RMBZIP',SUP, _ADC_REMOPT,,,SUP$M_BZIP $TRAN 'ADZLIF',SUP, _ADC_ADDOPT,,,SUP$M_ZLIF $TRAN 'RMZLIF',SUP, _ADC_REMOPT,,,SUP$M_ZLIF $TRAN 'ADZLIG',SUP, _ADC_ADDOPT,,,SUP$M_ZLIG $TRAN 'RMZLIG',SUP, _ADC_REMOPT,,,SUP$M_ZLIG $TRAN TPA$_BLANK,SUP $TRAN TPA$_ANY, TPA$_EXIT $TRAN TPA$_EOS, TPA$_EXIT ; ; HPAS 'HPAS U5H4BEAFUJ5NJG46ZMWGLXHYH3WBGUPITYE4T ; HPAS U5H4BEAFUJ5NJG46ZMWGLXHYH3WBGUPITYE4TBI ; $STATE PAS $TRAN TPA$_ANY, TPA$_EXIT ; ; BSCH 0000 TRKNYYDE2AYAI6BTIGAWCY2NPTLEL33EREBCXVAEI TOauto ; $STATE SCH $TRAN TPA$_ANY, TPA$_EXIT ; ; BMSG 0000 Hello! ; $STATE MSG $TRAN TPA$_ANY, TPA$_EXIT ; ; DCTM 0000 0001 ADCS/0.10 6094 190329316 ; $STATE CTM $TRAN TPA$_ANY, TPA$_EXIT ; ; DCTM 0000 0001 ADCS/0.10 6094 190329316 ; $STATE RCM $TRAN TPA$_ANY, TPA$_EXIT ; ; BINF 0002 IDZZQBWIE6PZUL6RJQH6X726RYSRUGZLUMDHOQ22A ; PDXJ76UITSIKJS53YLKOOKZNJCOXUFLOELACHSFBQ NIVVE SL2 SS0 SF0 ; EMvalery@smtp.deltatel.ru HN1 HR0 HO0 VEStrgDC++\s2.30 ; US1310720 I4172.16.1.9 U41816 SUADC0,TCP4,UDP4 ; ; BINF 0000 IDRW2BQFFJZZCMFPUA4Y75CGHIM22FSPPLG4HZNFQ - ; PDP254XQONVMIYEBUQSUZ3YVFQJRLQAHKK5VJZYTA NISysManOne ; DEOpenVMS\s4ever\s(www.StarLet.SPb.RU) SL32 SS101589547663 - ; SF11725 EMzator@yandex.ru HN1 HR0 HO0 VEStrgDC++\s2.22 US131072 ; I4172.16.1.24 U42120 SUADC0,TCP4,UDP4 ; $STATE INF1 $TRAN TPA$_HEX,INF $TRAN TPA$_ANY, TPA$_FAIL $STATE INF $TRAN 'I',INFI $TRAN 'P',INFP $TRAN 'U',INFU $TRAN 'S',INFS $TRAN 'A',INFA $TRAN 'H',INFH $TRAN 'D',INFD $TRAN 'V',INFV $TRAN 'E',INFE $TRAN 'N',INFN $TRAN 'T',INFT $TRAN 'C',INFC $TRAN 'R',INFR $TRAN TPA$_ANY,INF $TRAN TPA$_EOS, TPA$_EXIT $STATE INFR $TRAN 'F',INF, _ADC_SETINF_STR,,,INF$M_RF $TRAN TPA$_ANY,INF $STATE INFC $TRAN 'T',INF, _ADC_SETINF_INT,,,INF$M_CT $TRAN TPA$_ANY,INF $STATE INFT $TRAN 'O',INF, _ADC_SETINF_STR,,,INF$M_TO $TRAN TPA$_ANY,INF $STATE INFN $TRAN 'I',INF, _ADC_SETINF_STR,,,INF$M_NI $TRAN TPA$_ANY,INF $STATE INFE $TRAN 'M',INF, _ADC_SETINF_STR,,,INF$M_EM $TRAN TPA$_ANY,INF $STATE INFV $TRAN 'E',INF, _ADC_SETINF_STR,,,INF$M_VE $TRAN TPA$_ANY,INF $STATE INFD $TRAN 'S',INF, _ADC_SETINF_INT,,,INF$M_DS $TRAN 'E',INF, _ADC_SETINF_STR,,,INF$M_DE $TRAN TPA$_ANY,INF $STATE INFA $TRAN 'S',INF, _ADC_SETINF_INT,,,INF$M_AS $TRAN 'M',INF, _ADC_SETINF_INT,,,INF$M_AM $TRAN 'W',INF, _ADC_SETINF_INT,,,INF$M_AW $TRAN TPA$_ANY,INF $STATE INFS $TRAN 'S',INF, _ADC_SETINF_INT,,,INF$M_SS $TRAN 'F',INF, _ADC_SETINF_INT,,,INF$M_SF $TRAN 'L',INF, _ADC_SETINF_INT,,,INF$M_SL $TRAN 'U',INF, _ADC_SETINF_STR,,,INF$M_SU $TRAN TPA$_ANY,INF $STATE INFI $TRAN 'D',INF, _ADC_SETINF_STR,,,INF$M_ID $TRAN '4',INF, _ADC_SETINF_IP,,,INF$M_I4 $TRAN '6',INF, _ADC_SETINF_IP,,,INF$M_I6 $TRAN TPA$_ANY,INF $STATE INFH $TRAN 'N',INF, _ADC_SETINF_INT,,,INF$M_HN $TRAN 'R',INF, _ADC_SETINF_INT,,,INF$M_HR $TRAN 'O',INF, _ADC_SETINF_INT,,,INF$M_HO $TRAN TPA$_ANY,INF $STATE INFP $TRAN 'D',INF, _ADC_SETINF_STR,,,INF$M_PD $TRAN TPA$_ANY,INF $STATE INFU $TRAN '4',INF, _ADC_SETINF_INT,,,INF$M_U4 $TRAN '6',INF, _ADC_SETINF_INT,,,INF$M_U6 $TRAN 'S',INF, _ADC_SETINF_INT,,,INF$M_US $TRAN TPA$_ANY,INF $END_STATE .END