A data validation program designed for flexibility and user-modification is presented. It is assumed that the data to be validated consist of packets; i.e., groups of records with a common value in a record-linking field. Acceptance or rejection of data is on a packet basis. Individual field validation is specified by user-supplied tables. Multiple field checking and field interaction checking on both an intra-record and an inter-record basis may be specified by user-supplied subprograms. The program is written in PL/I using structured programming techniques. Further modifications such as record size and key positions are possible at pre-processor time.