Prepare
- Upload Pick/MultiValue data
Pick (also known as MultiValue or PICK) is a unique database management system with a multi-valued data model that allows multiple values in a single field. Variants include D3, UniVerse, UniData, jBASE, and OpenQM.
What You Can Upload
- Dictionary and data files exported from Pick system
- T-DUMP or ACCOUNT-SAVE exports
- CSV exports from Pick environment
- ZIP archive with complete file sets
What You Get Out
DataMeans extracts your data into multiple modern formats:
| Output | Description |
|---|---|
csv/{TableName}.csv | One CSV file per table with all row data |
xlsx/{TableName}.xlsx | Excel workbook per table |
xls/{TableName}.xls | Legacy Excel format per table |
json/{TableName}.json | JSON array of records per table |
json/{TableName}.jsonl | Newline-delimited JSON (streaming-friendly) |
postgres.sql | PostgreSQL CREATE TABLE + INSERT statements |
schema/schema-graph.json | Relationship graph for visualization |
schema/er-model.json | ER model for diagram tools |
report.json | Structured extraction report |
report.md | Human-readable extraction summary |
How to Export / Obtain Files
- Use T-DUMP to export files:
T-DUMP filename - Or use ACCOUNT-SAVE for full account backup
- Export dictionary items for schema definitions
- Transfer files to local system via FTP
- Create a ZIP with all exported files
- Upload the ZIP to DataMeans
Supported Features
- Multi-value field handling and normalization
- Multi-sub-value field support
- Dictionary item extraction for field definitions
- Automatic conversion to relational schemas
- Proper foreign key generation
- Controlling/dependent file relationship mapping
Known Limitations
- Normalized output creates multiple tables from single Pick file
- Correlative and conversion codes documented but not executed
- Some Pick BASIC logic may need manual migration
Troubleshooting
| Issue | Solution |
|---|---|
| Field names missing | Include dictionary exports |
| Multi-value confusion | Review normalized table structure |
| Date conversion errors | Specify internal date format |
Last updated: January 2026
Overview
Pick (also known as MultiValue) is a post-relational database model that predates SQL and relational databases. It uses a hierarchical, multi-valued data structure where each field can contain multiple values, reducing the need for complex joins. The Pick system includes both an operating system and database, with implementations from various vendors using hash-based file storage.
History and Background
- 1965: Don Nelson and Dick Pick develop GIRLS (Generalized Information Retrieval Language System) at TRW for U.S. Army helicopter parts tracking.
- 1973: Microdata releases Reality, the first commercial implementation of the Pick system.
- Mid-1970s: Ken Simms creates Data/BASIC, the procedural programming language of Pick systems.
- c. 1978: The Ultimate Corp develops the second Pick implementation, delivered as firmware on a Honeywell Level 6 machine.
- 1979: Devcom, a Microdata reseller, writes INFORMATION in FORTRAN and assembler for Prime Computer 50-series systems; sold to Prime Computer, it becomes Prime INFORMATION.
- 1980s: Popular in business applications, especially in vertical markets.
- 1981: McDonnell Douglas buys Microdata.
- 1990s: New Pick-compatible implementations appear, including jBASE (1991) and D3 (1997).
- 2001: IBM acquires the database division of Informix, including the UniVerse and UniData (U2) products.
- 2005: InterSystems announces MultiValue extensions for its Caché database.
- 2010s: Rocket Software acquires the U2 family from IBM and the D3 and mvBase products from TigerLogic (2014).
- 2021: Rocket Software acquires the OpenQM and jBASE products.
File Format Specifications
Hash File System:
- Files stored as hash tables with fixed-size buckets
- Primary keys hashed to determine storage location
- Group assignment by remainder: the hashed key is divided by the modulo (group count) and the remainder selects the group
- Modulo values chosen as prime numbers for even record distribution; D3 additionally avoids multiples of 2 and 5
- Bucket sizing is vendor-specific: UniVerse separation sets group buffers in 512-byte units, while D3 uses uniform 4096-byte frames
- Collision resolution through overflow chains
- File extension typically none (files named by application)
MultiValue Structure:
- Records contain fields (attributes) with multiple values
- Item marks (ASCII 255) delimit complete records (items)
- Attributes separated by attribute marks (ASCII 254)
- Values separated by value marks (ASCII 253)
- Subvalues within values separated by subvalue marks (ASCII 252)
- Text marks (ASCII 251) for formatting
- No fixed record length - dynamic sizing
File Types:
- Data files: Primary storage for records
- Dictionary files: Metadata and field definitions
- Overflow areas: Handle hash collisions and oversized records
- Transaction logs: For recovery and replication
- UniVerse numbered file types: nonhashed (1, 19), static hashed (2-18, each tuned to different record-ID patterns), B-tree (25), dynamic (30)
- Dynamic (type 30) files resize automatically, splitting groups above a default 80% load and merging below 50%
Data Types and Structures
Pick treats all data as character strings, with no explicit data typing:
| Concept | Description | Storage |
|---|---|---|
| Account | Schema-level grouping of related files | Collection of files |
| File | Table equivalent; data portion pairs with a dictionary | Hashed groups |
| Item | Complete record | Variable length string |
| Item-ID | Unique key naming an item | Hashed to select the storage group |
| Attribute | Field within item | Multi-valued |
| Value | Individual data element | Sub-valued |
| Subvalue | Component of value | Atomic level |
MultiValue Characteristics:
- One-to-many relationships stored within a single record
- Fewer join operations than normalized relational schemas
- Sparse data stored without placeholder fields
- Records are not constrained by a fixed schema
- Sorting and selection handled by the query language
Query Language:
- English-like syntax (LIST, SORT, SELECT), originally named ENGLISH and later ACCESS
- Retrieval and reporting without SQL
- Dictionary-driven reporting
- Procedural programming in Pick BASIC
Version Differences
| Implementation | Year | Key Features | Compatibility |
|---|---|---|---|
| Original Pick (Reality) | 1973 | Hash files, MultiValue | Baseline for later systems |
| Ultimate | c. 1978 | Firmware implementation on Honeywell Level 6 | Second Pick implementation |
| Prime INFORMATION | 1979 | FORTRAN/assembler system for Prime 50-series | Pick-style; later emulated by UniVerse |
| jBASE | 1991 | Unix/Windows ports | Pick compatible |
| OpenQM | 2001 | GPL-licensed open-source edition offered | Pick-style |
| D3 | 1997 | Pick OS hosted on Unix/Linux/Windows | Compatible with Advanced Pick and R83 |
| UniVerse | 1980s | Reality and Prime INFORMATION emulation modes | Pick compatible |
| Revelation | 1983 | Pick-style database for MS-DOS | Pick-style variant |
| InterSystems Caché | 2005 | MultiValue extensions on the Caché engine | Supports MultiValue Basic dynamic arrays |
Compatibility Notes:
- All implementations share core MultiValue concepts
- Delimiter conventions are shared, but on-disk file formats are vendor-specific
- Item size handling varies: D3 moves items larger than 1720 bytes entirely into overflow frames via pointer items, while UniVerse documentation recommends nonhashed files for records over 2000 bytes
- UniVerse BASIC exposes the delimiters as the system variables
@FM,@VM, and@SM - Some extensions are vendor-specific
- Migration tools available between implementations
- Later versions add SQL interfaces and web services support
Technical References
- Wikipedia: Pick operating system
- Wikipedia: MultiValue database
- History of Pick Reality (NEC Software Solutions)
- Pickwiki: MultiValue database wiki
- Pick is a living fossil of computer history
To learn how to use this format with DataMeans, see the User Guide.