def __init__(self, **kw): Datamap.__init__( self, 'URBG', Uint2('urbgidx'), # Element index in GFFT String('urbgfid', 2), # Field short name Uint1('urbgffmt', ppfunc=urbgffmt_str), # Field format Uint1('urbgtype', ppfunc=urbgtype_str), # Field type Uint2('urbgflen'), # Field length Uint2('urbgfprc'), # Decimal place/precision Uint1('urbgflag', opt=T_HEX), # ppfunc=urbgflag_str), # Flags Bytes('filler1', 1, opt=T_NONE), # Reserved area # 1st level of occurrences: Uint2('urbgfrno'), # Range number Uint2('urbgfrfm'), # From-range number # 2st level of occurrences: 0x10 Uint2('urbgfono'), # Occurrence number Uint2('urbgfofm'), # From-occurrence number Uint2('urbgfnml'), # Length of field long name String('urbgfnam', 32), # Field long name String('urbgfgrp', 2), # Name of PE group String('urbgfmtx', 2), # External Format Type (Bytes?) String('urbgfrpn', 2), # Redefined parent name String('urbgffon', 2), # Field order number Bytes('filler2', 2, opt=T_NONE), # Reserved area **kw)
def __init__(self, **kw): fields=( # Available with CIS Interface version String('conv_id', 16), # 1 Conversation ID String('serveruid', 32), # Server's UserID Bytes('serverpuid', 28), # Server's physical UserID String('serverpuidtrans',28,opt=T_NONE), # Server's translated PUID (unused) String('servertoken', 32), # Server's Token String('clientuid', 32), # Client's UserID Bytes('clientpuid', 28), # Client's physical UserID String('clientpuidtrans',28,opt=T_NONE), # Client's translated PUID String('clienttoken', 32), # Client's Token String('server_class', 32,opt=T_NONE),# SERVER-CLASS String('server', 32,opt=T_NONE), # SERVER-NAME String('service',32, ppfunc=lambda svc:'%s/%s/%s' % (self.server_class,self.server,svc)), # SERVICE = class/server/service Uint4('conv_nonact',ppfunc=intervalstr), # Conversation timeout Uint4('last_active',ppfunc=intervalstr), # Seconds since last activity Uint2('type'), # 1 Conversation type 0: conv, 1: non-conv Uint2('unused1',opt=T_NONE), # 2 Alignment Uint4('totaluows'), # 2 Number of active UOWs String('client_rpc_libname', 128), # 6 Client's String('client_rpc_progname',128), # 6 String('server_rpc_libname', 128), # 6 Server's String('server_rpc_progname',128), # 6 ) Datamap.__init__(self, 'Conversation', *fields, **kw)
def __init__(self, **kw): Datamap.__init__( self, 'URBI', String('urbieye', 4), # URBI eye-catcher 'URBI' Int4('urbilen'), # Length of URBI + selection data + filler Int4('urbilenh'), # Length of URBI proper (>= URBIL) Int4('urbilend'), # Length of selection data (may be zero) String('urbirtok', 8), # Request ID token (returned in response) String('urbirnam', 8), # Destination name for response String('urbirt', 4, ppfunc=urbirt_str), # Request type: STAT/INST/TRAN Uint2('urbidbid'), # Database ID (INST request) Uint2('urbifnr'), # File number (INST request) String('urbiinam', 8), # Initial-state name (INST request) String('urbisnam', 8), # Subscription name or blank (STAT/TRAN req) String('urbidnam', 8), # Destination name or blank (STAT/TRAN req) Uint4('urbiacod'), # alpha field encoding in selection data Uint4('urbiwcod'), # wide field encoding in selection data Bytes('urbiarc', 1), # architecture flags for selection data String('urbires1', 3, opt=T_NONE), # Reserved area1 Uint4('urbitsnr'), # Transaction seq.no. within # subscription/destination (TRAN req) String('urbires2', 16, opt=T_NONE), # Reserved area2 # Optional selection data (INST request) **kw)
def __init__(self, **kw): Datamap.__init__(self, 'SMF Record Header', Int2('rlen'), # Record length RDW header Uint1('seg'), # Segment control Uint1('seg2'), # Segment control 2 (unused) Bytes('flg',1,caption='System indicator'), # System indicator flags #q Asfxxx equ x'80' subsystem id follows system id #q Asfstv equ x'40' subtypes are valid #q Asfv4 equ x'10' mvs/sp v4 and above #q Asfv3 equ x'08' mvs/sp v3 and above #q Asfv2 equ x'04' mvs/sp v2 and above #q Asfvs2 equ x'02' vs2 Uint1('rty',caption='SMF record type'), # SMF record type Uint4('tme',ppfunc=dtime100,caption='Record creation time'), # Time since midnight # when record was moved into smf buffer in 1/100 sec Packed('dte',4,ppfunc=idate,caption='Record creation date'), # Date when record was # moved into smf buffer as 0cyydddf String('sid',4,caption='System identifier'), # smfprmxx sid # up to here if SMF record withtout subtypes String('ssi',4,caption='Subsystem identifier'), Uint2('sty',caption='Subtype'), # Subtype ppfunc=Asbase.assty_str byteOrder=NETWORKBO,ebcdic=1,**kw)
def __init__(self, **kw): Datamap.__init__(self, 'Performance section', Uint2('snf',ppfunc=div256,caption='zIIP normalization factor',pos=0x88), # to convert between real zIIP times and normalized zIIP times (=equivalent time on normal CP) # multiply zIIP time with snf and divide by 256 Bytes('prf',0xd8,opt=T_NONE,caption='prf DSECT',pos=0), # todo: define more fields in structure byteOrder=NETWORKBO,ebcdic=1,**kw)
def __init__(self, **kw): Datamap.__init__( self, 'DRL', String('name', 8), Bytes('ttr', 3), Uint1( 'flag'), # Alias flag 0x80 and user half words (max 0x1f * 2) # --- if length in flag is 0x0f, ie. 30 bytes ISFP statistics follow Uint1('vv'), # version (set by SCLM?) Uint1('mm'), # modifications (range 0-99) Uint1('ind'), # SCLM indicator Uint1('ss'), # time last modified (second part) Packed('credate', 4), # ibm creation date 0119001f = 20190101 Packed('moddate', 4), # date last modified 0099032f = 19990201 Uint2('hhmm'), # time last modified 0xhhmm Uint2('size2'), # current number of lines, 655 Uint2('init2'), # initial number of lines Uint2('chgd2'), # number of lines changed String('id', 8), # user id of last modification # --- the following is only set if hw length in flag is 0x14 (=40 bytes) # then ind & MIINDXSTA will be set Uint4('size'), # current number of lines Uint4('init'), # initial number of lines Uint4('chgd'), # number of lines changed byteOrder=NETWORKBO, **kw)
def __init__(self, **kw): Datamap.__init__( self, 'URBSU70', String('fieldname', 2), # Descriptor name Uint1('reason'), # Reason code Bytes('filler1', 5), **kw)
def __init__(self, **kw): Datamap.__init__( self, 'URBSU', String('urbsueye', 6), # URBSU eye-catcher 'URBSU' # Uint1('urbsutyp', ppfunc=urbsutyp_str, opt=T_HEX), # Utility function type Bytes('filler1', 25, opt=T_NONE), # Reserved area **kw)
def __init__(self, **kw): fields = ( # Available with CIS Interface version Uint2('version', opt=T_IN), # 1 Interface version Uint2( 'object_type', opt=T_IN, ppfunc=cio_str), # 1 Object type to which the command applies Uint2('command', opt=T_IN, ppfunc=cic_str), # 1 CIS command Uint2('option', opt=T_IN, ppfunc=cip_str), # 1 CIS option Bytes( 'puid', 28, opt=T_HEX ), # 1 internal userid that distinguishes users with same userids # id obtained from previous call, no translation done String( 'uowid', 16, opt=T_IN), # 2 Selector, optional, unit of work to be purged String( 'topic', 96, opt=T_IN ), # 4 Selector, optional, topic to be subscribed or unsubscribed to String( 'uid', 32, opt=T_IN ), # 4 Selector, optional, user name for subscription/unsubscription # and participant shutdown String( 'token', 32, opt=T_IN ), # 4 Selector, optional, token for subscription/unsubscription # and participant shutdown String( 'server_class', 32, opt=T_IN ), # 5 Selector, optional, for command log filter addition or removal String( 'server', 32, opt=T_IN ), # 5 Selector, optional, for command log filter addition or removal String( 'service', 32, opt=T_IN ), # 5 Selector, optional, for command log filter addition or removal Filler('reserved', 32), # 5 Reserved String( 'conv_id', 16, opt=T_IN), # 7 Selector, optional, for shutdown conversation String('transportid', 3, opt=T_IN ), # 7 Selector, optional, for transport task (NET|Snn|Tnn) # required for RESUME,START,STATUS,STOP,SUSPEND Uint1( 'exclude_attach', opt=T_IN ), # 7 Optional. Exclude attach servers when shutting down a service Uint4( 'seqno', opt=T_IN ), # 7 Optional. Sequence number of participant (e.g. client, server, # publisher) to be shut down. Can be used instead of puid Uint4( 'error_number', opt=T_IN ), # 7 Optional. Sequence number of participant (e.g. client, server, ) Datamap.__init__(self, 'Cisreq', *fields, **kw)
def __init__(self, **kw): Datamap.__init__( self, 'URBT', String('urbteye', 4), # URBT eye-catcher 'URBT' # Int4('urbtlen'), # Length of URBT String('urbtsnam', 8), # Subscription name Uint4('urbttsnr'), # Transaction sequence number # within subscription/destination Uint4('urbtrcnt'), # Count of records (URBRs) in transaction Uint8('urbtttim', opt=T_STCK), # Time (STCK) transaction commit Uint8('urbtptim', opt=T_STCK), # Time (STCK) end of subscription Uint2('urbtdbid'), # Originating Adabas database ID Uint2('urbtnuci'), # Originating Adabas nucleus ID Bytes('urbtguid', 28), # Originating 28-byte user ID Uint2('urbtrpid'), # Reptor target ID (DBID parameter) Uint2('urbtrpni'), # Reptor nucleus ID (not yet used) => zero String('urbtusrv', 2), # User subscription version indicator, String('urbtrsnd', 1, ppfunc=urbrsnd_str), # Ind. possible double delivery String('urbtinst', 1, ppfunc=urbtinst_str), # Ind. for initial state String('urbtrtok', 8), # Request ID token (if initial state) String( 'urbtcont', 1, ppfunc=urbcont_str), # Indicator for transaction continuation: Bytes('urbtarc', 1), # Architecture flags for selection data String('urbtptrn', 1, ppfunc=urbtptrn_str), # Prior-transaction request indicator String('urbtsort', 1, ppfunc=urbtsort_str), # Transaction records sorted Uint4('urbtacod'), # alpha field encoding in selection data Uint4('urbtwcod'), # wide field encoding in selection data Uint2( 'urbtutok' ), # utility token if data comes from Replay or Adalod Load/Update String('urbtorig', 1, ppfunc=urborig_str), # Origin of transaction String('filler1', 1, opt=T_NONE), # Reserved area String('urbtsuid', 8), # Security system user id String('filler2', 16, opt=T_NONE), # Reserved area **kw)
def __init__(self, **kw): fields = ( # Available with CIS Interface version # | Optional/Required # | | Uint4('block_length'), # 1 R Return data in this length Uint2('version'), # 1 R Interface version Uint2('reserved1', opt=T_NONE), # Uint2( 'object_type'), # 1 R Object type for which info is requested String('uid', 32), # 1 O Selector user id of client or server Bytes('puid', 28, opt=T_HEX ), # 1 O Selector internal userid that distinguishes users # with same userids, no translation done String('token', 32), # 1 O Selector String('server_class', 32), # 1 O Selector String('server', 32), # 1 O Selector String('service', 32), # 1 O Selector String('conv_id', 16), # 1 O Selector Uint2('reserved2', opt=T_NONE), # 1 String('uowid', 16), # 2 O Selector Uint1('uowstatus'), # 2 O Selector String('userstatus', 32), # 2 O Selector String('recvuid', 32), # 2 O Selector UOW reciever's user id String('recvtoken', 32), # 2 O Selector UOW reciever's token String('recvserver', 32), # 2 O Selector UOW reciever's server name String('recvservice', 32), # 2 O Selector UOW reciever's service name String('recvclass', 32), # 2 O Selector UOW reciever's class name String('reserved3', 3, opt=T_NONE), # 2 String('topic', 96), # 4 O Selector String('publicationid', 16), # 4 O Selector Uint2('subscriptiontype'), # 4 O Selector Uint2('reserved4', opt=T_NONE), # 4 Uint2('conv_type'), # 5 O Selector Uint2('reserved5', opt=T_NONE), # 5 ) Datamap.__init__(self, 'Infreq', *fields, **kw)
def __init__(self, **kw): Datamap.__init__( self, 'URBF', String('urbfeye', 4), # URBF eye-catcher 'URBF' Uint4('urbflen'), # Length of URBF + related data (n*URBG) Uint4('urbflenh'), # Length of URBF Uint4('urbflend'), # Length of related data (n*URBG) String('urbfvers', 2), # GFFT version indicator String('urbffnre', 5), # File number eye-catcher Uint1('urbfflag', ppfunc=urbfflag_str), # String('urbfgfid', 8), # Global format ID related to GFFT Uint4('urbfdbid'), # DBID of file Uint2('urbffnr'), # File number Uint2('urbffnml'), # Length of file name String('urbffnam', 32), # File/userview name Uint8('urbftim1', opt=T_STCK), # Time (STCK) GFFT was created/refreshed Uint2('urbfcntg'), # Number of following URBG elements Uint2('urbfleng'), # Length of each URBG element Uint8('urbftim2', opt=T_STCK), # Time (STCK) GFFT for ADARDE(DEXIT) Bytes('filler1', 20, opt=T_NONE), # Reserved area **kw)
def __init__(self, **kw): Datamap.__init__(self, 'SMF30 Acccounting Information Record', Int2('rlen'), # Record length RDW header Uint1('seg'), # Segment control Uint1('seg2'), # Segment control 2 (unused) Bytes('flg',1,caption='System indicator'), # System indicator flags Uint1('rty',caption='SMF record type'), # SMF record type Uint4('tme',ppfunc=dtime100,caption='Record creation time'), # Time since midnight # when record was moved into smf buffer in 1/100 sec Packed('dte',4,ppfunc=idate,caption='Record creation date'), # Date when record was # moved into smf buffer as 0cyydddf String('sid',4,caption='System identifier'), # smfprmxx sid String('ssi',4,caption='Subsystem identifier'), Uint2('sty',caption='Subtype'), # Subtype ppfunc=Asbase.assty_str #q Asbasel equ *-asbase length of standard header # Self-defining section offset 0x14 w/o RDW # Bytes('sds',152,opt=T_NONE,caption='Self defining section'), # too short # Subsystem section # following offsets number are + 4 because our record is w/o RDW Uint4('sof'), # Offset to section from record start + 4 Uint2('sln'), # Length of subsystem section Uint2('son'), # Number of subsystem section(s) # Identification section (always present) Uint4('iof'), # Offset to id section from record start + 4 Uint2('iln'), # Length of id section Uint2('ion'), # Number of id section(s) # I/O activity section Uint4('uof'), # Offset to section from record start + 4 Uint2('uln'), # Length of section Uint2('uon'), # Number of sections # Completion section Uint4('tof'), # Offset to section from record start + 4 Uint2('tln'), # Length of section Uint2('ton'), # Number of sections # Processor section Uint4('cof'), # Offset to section from record start + 4 Uint2('cln'), # Length of section Uint2('con'), # Number of sections # Accouting section Uint4('aof'), # Offset to section from record start + 4 Uint2('aln'), # Length of section Uint2('aon'), # Number of sections # Storage section Uint4('rof'), # Offset to section from record start + 4 Uint2('rln'), # Length of section Uint2('ron'), # Number of sections # Performance section Uint4('pof'), # Offset to section from record start + 4 Uint2('pln'), # Length of section Uint2('pon'), # Number of sections # Operator section Uint4('oof'), # Offset to section from record start + 4 Uint2('oln'), # Length of section Uint2('oon'), # Number of sections # EXCP section Uint4('eof'), # Offset to section from record start + 4 Uint2('eln'), # Length of section Uint2('eon'), # Number of sections Uint2('eor'), # Number of segments in subsequent records (might be invalid) Uint2('rvd'), # reserved Uint4('eos'), # Number of segments in subsequent records (fullword) # APPC/MVS section Uint4('dro'), # Offset to section from record start + 4 Uint2('drl'), # Length of section Uint2('drn'), # Number of sections # APPC/MVS section cumulative Uint4('aro'), # Offset to section from record start + 4 Uint2('arl'), # Length of section Uint2('arn'), # Number of sections # OpenMVS section Uint4('opo'), # Offset to section from record start + 4 Uint2('opl'), # Length of section Uint2('opn'), # Number of sections Uint4('opm'), # Number of sections in subsequent records # Usage section Uint4('udo'), # Offset to section from record start + 4 Uint2('udl'), # Length of section Uint2('uds'), # Number of sections # First ARM section Uint4('rmo'), # Offset to section from record start + 4 Uint2('rml'), # Length of section Uint2('rmn'), # Number of sections Uint4('rms'), # Number of sections in subsequent records # MultiSystem Enclave Remote System Data section Uint4('mof'), # Offset to section from record start + 4 Uint2('mln'), # Length of section Uint2('mno'), # Number of sections Uint4('mos'), # Number of sections in subsequent records # Counter Data section Uint4('cdo'), # Offset to section from record start + 4 Uint2('cdl'), # Length of section Uint2('cdn'), # Number of sections # zEDC usage statistics section Uint4('uso'), # Offset to section from record start + 4 Uint2('usl'), # Length of section Uint2('usn'), # Number of sections byteOrder=NETWORKBO,ebcdic=1,**kw)
def __init__(self, **kw): Datamap.__init__(self, 'CPU accounting section', Uint2('pty',caption='Address space dispatching priority'), # from DPRTY parm on EXEC card or APG value in CVTAPG Bytes('tfl1',1,caption='Timer Flag1'), Bytes('tfl2',1,caption='Timer Flag2'), #o todo flag bits Uint4('cpt',ppfunc=dtime100,caption='Step CPU time under TCB'), # ASCBEJST OR (ACTJTIME + ASSBASST + RQSVECPT - TCTEJST) # only consumption of GCP not zIIPs,zAAPs, includes enclave time Uint4('cps',ppfunc=dtime100,caption='Step CPU time under SRB'), # ASCBSRBT OR (SCTSRBT-TCTSRBT) Uint4('icu',ppfunc=dtime100,caption='Initiator CPU time under TCB'), # ASCBEJST+TCTITCB # Total working CPU time for initiator under the TCB. It includes values of # SMF30ICU_Step_Term (time spent in termination of the previous step) and # SMF30ICU_Step_Init (time spent in initialization of the current step) Uint4('isb',ppfunc=dtime100,caption='Initiator CPU time under SRB'), # ASCBSRBT+TCTISRB # Total working CPU time for the initiator under any SRB. It includes values of # SMF30ISB_Step_Term (time spent in termination of the previous step) and # SMF30ISB_Step_Init (time spent in initialization of the current step) Uint4('jvu',ppfunc=dtime100,caption='Step Vector usage time'), Uint4('ivu',ppfunc=dtime100,caption='Initiator Vector usage time'), Uint4('jva',ppfunc=dtime100,caption='Step Vector affinity time'), Uint4('iva',ppfunc=dtime100,caption='Initiator Vector affinity time'), Uint4('ist',ppfunc=dtime100,caption='Interval start time'), # for subtype 2,3 records Packed('idt',4,ppfunc=idate,caption='Interval start date'), # Date Uint4('iip',ppfunc=dtime100,caption='CPU time I/O Interrupts'), # ASSBIIPT-TCTEIIP Uint4('rct',ppfunc=dtime100,caption='CPU time Region Control Task'), # TCBTIME-TCTERCT Uint4('hpt',caption='Step CPU time transfers hiper space and A/S'), # ASSBHST-TCTEHPT Uint4('csc',caption='ICSF Crypto service count'), # ASSBFSC-TCTANSC Uint4('dmi',caption='ADMF moved pages writes'), # ASSBTPMT-TCTADMFW Uint4('dmo',caption='ADMF moved pages reads'), # ASSBTPMA-TCTADMFR Uint4('asr',ppfunc=dtime100,caption='Step CPU time preemptable and client SRBs'), # ASSBASST, value included in cpt Uint4('enc',ppfunc=dtime100,caption='Step independent enclave CPU time'), # RQSVECPT, value included in cpt Uint4('det',ppfunc=dtime100,caption='Step dependent enclave CPU time'), # RQSVDET, value included in cpt Uint4('cep',caption='CPU time while ENQ promoted'), # in 1.024 millisec, cumulative even for interval records Bytes('tf2',1,caption='Timer Flag2'), #o todo Bytes('t32',1,caption='Timer Flag32'), Bytes('t33',1,caption='Timer Flag33'), Bytes('t34',1,opt=T_NONE), Uint4('toi',ppfunc=dtime100,caption='Time on IFA'), # ASSB_Time_On_IFA, includes enclave time Uint4('etoi',ppfunc=dtime100,caption='Enclave time on IFA'), # Rqsv_Enclave_Time_On_IFA Uint4('detoi',ppfunc=dtime100,caption='Dependent enclave time on IFA'), # Rqsv_Dep_Enclave_Time_On_IFA Uint4('tic',ppfunc=dtime100,caption='IFA time on CP'), # ASSB_Time_IFA_ON_CP IFA includes enclave time Uint4('etic',ppfunc=dtime100,caption='IFA enclave time on CP'), # Rqsv_Enclave_Time_IFA_ON_CP Uint4('detic',ppfunc=dtime100,caption='IFA dependent enclave time on CP'), # Rqsv_Dep_Enclave_Time_IFA_ON_CP Uint4('cepi',caption='CPU time while ENQ promoted'), # in 1.024 millisec, interval time Uint4('toz',ppfunc=dtime100,caption='Time on zIIP'), # ASSB_Time_On_zIIP Time, includes enclave time Uint4('etoz',ppfunc=dtime100,caption='Enclave time on zIIP'), # Rqsv_Enclave_Time_On_SUP Uint4('detoz',ppfunc=dtime100,caption='Dependent enclave time on zIIP'), # Rqsv_DEPENC_Time_On_SUP Uint4('zoc',ppfunc=dtime100,caption='zIIP time on CP'), # ASSB_Time_zIIP_ON_CP includes enclave time Uint4('ezoc',ppfunc=dtime100,caption='Enclave zIIP time on CP'), # Rqsv_Enclave_Time_SUP_ON_CP Uint4('dezoc',ppfunc=dtime100,caption='Dependent enclave zIIP time on CP'), # Rqsv_DEPENC_Time_SUP_ON_CP Uint4('etozq',ppfunc=dtime100,caption='Enclave zIIP time on CP normalized'), # Rqsv_Enclave_TIME_SUP_QUAL Uint4('detozq',ppfunc=dtime100,caption='Dependent enclave zIIP time on CP normalized'), # Rqsv_DepEnc_TIME_SUP_QUAL Uint4('crp',caption='CPU time while CRM promoted'), # in 1.024 millisec, time during interval # RqsvCPUtimeConsumedWhileCRMpromoted, CRM - chronic resource contention Uint4('icust',ppfunc=dtime100,caption='CPU TCB time for step term'), # included in icu Uint4('icusi',ppfunc=dtime100,caption='CPU TCB time for step init'), # included in icu Uint4('isbst',ppfunc=dtime100,caption='CPU SRB time for step term'), # included in isb Uint4('isbsi',ppfunc=dtime100,caption='CPU SRB time for step init'), # included in isb Uint4('mblk',caption='Missed I/O block counting '), # w/o serialization to counter SMF30BLK, zero for startet tasks Uint4('mdct',caption='Missed device connect counting'), # w/o serialization to counter SMF30DCT, zero for started tasks Uint2('hit',ppfunc=percent,caption='Highest Task CPU percent'), # TCB time * 100 / interval time String('hip',8,caption='Highest Task Program name'), Bytes('flag',1,caption='CPU Accounting flag'), Bytes('r0bb',1,opt=T_NONE), #dmlen should be == SMF30CASLEN byteOrder=NETWORKBO,ebcdic=1,**kw)
Uint1('option', opt=T_IN), Filler('reserved1', 16), Uint4('send_length', opt=T_IN), Uint4('receive_length', opt=T_IN), # maximum receive length Uint4('return_length', opt=T_OUT), # length of returned data Uint4('errtext_length', opt=T_IN), # error text buffer len String('broker_id', 32, opt=T_IN), # service name String('server_class', 32), String('server_name', 32), String('service', 32), String('user_id', 32, opt=T_IN), String('password', 32, opt=T_IN), # may contain binary data String('token', 32, opt=T_IN), Bytes('security_token', 32), String('conv_id', 16), #0x124 conversational/non. String('wait', 8, opt=T_IN), #blocked/non-blocked, time in sec String('error_code', 8, opt=T_OUT), String('environment', 32, opt=T_IN), #translation parm # V2 following Uint4('adcount', opt=T_OUT), # attempted deliv. count Bytes('user_data', 16, opt=T_OUT), Bytes('msg_id', 32), String('msg_type', 16), String('ptime', 8, opt=T_IN), # future use Bytes('newpassword', 32, opt=T_IN), String('adapt_err', 8, opt=T_OUT), String('client_uid', 32, opt=T_OUT), Uint1('conv_stat', opt=T_OUT),