The VEQ file format is used by 3 Capitalware products: MQ Visual Edit, MQ Visual Browse and MQ Batch Toolkit to backup and restore messages including MQMD to/from a file.
I was recently asked if I would publish the VEQ layout (something I’ve never done). I know some people have reverse engineered the file layout, so I gave it some thought and figured why not. So, here is the VEQ file layout:
VEQ Header Layout:
| Name | Type | Size | Example |
| Header | String | 4 | "MQVE" |
| Version | Integer | 4 | 1 |
| Count (messages in the VEQ file) | Integer | 4 | 1 |
Note: The VEQ header only appears once at the beginning of the file.
Individual Message Layout:
| Name | Type | Size | Example |
| MD.StrucId | String | 4 | "MD " |
| MD.Version | Integer | 4 | 1 |
| MD.Format | String | 8 | "MQSTR " |
| MD.BackoutCount | Integer | 4 | 0 |
| MD.CCSID | Integer | 4 | 437 |
| MD.Encoding | Integer | 4 | 273 |
| MD.Expiry | Integer | 4 | -1 |
| MD.Feedback | Integer | 4 | 0 |
| MD.MsgSeqNumber | Integer | 4 | 1 |
| MD.MsgType | Integer | 4 | 8 |
| MD.Offset | Integer | 4 | 0 |
| MD.OriginalLength | Integer | 4 | -1 |
| MD.Persistence | Integer | 4 | 1 |
| MD.Priority | Integer | 4 | 0 |
| MD.PutApplType | Integer | 4 | 11 |
| MD.Report | Integer | 4 | 0 |
| MD.MsgFlags | Integer | 4 | 0 |
| MD.DataLength | Integer | 4 | 100 |
| MD.AccountingToken | Byte | 32 | |
| MD.CorrelID | Byte | 24 | |
| MD.GroupID | Byte | 24 | |
| MD.MsgID | Byte | 24 | |
| MD.ApplIdentityData | String | 32 | |
| MD.ApplOriginData | String | 4 | |
| MD.PutApplName | String | 28 | ware\MQ Visual Edit\mqve.exe |
| MD.ReplyToQMgr | String | 48 | MQWT1 |
| MD.ReplyToQ | String | 48 | TEST.Q1 |
| MD.UserID | String | 12 | roger |
| Message Data | Byte | Variable Length (see DataLength field) |
Individual messages are repeated as per the layout above.
Regards,
Roger Lacroix
Capitalware Inc.