# MAPPER

MAPPER Systems, now known as Business Information Server, BIS, is a fourth-generation programming language originally from Sperry Univac. Now owned by Unisys Corporation. Mapper originated in the 1970s based on some work in the 1960s, It has been functionally enhanced and kept current. It was also given an extension named ICE - Internet Commerce Enabler.
Originally available on Sperry's Univac 1108, implementations now also exist for Windows NT, Sun Solaris and Linux. The GUI on Windows is the most advanced of these.

## History

MAPPER (MAintain, Prepare, and Produce Executive Reports) (alternatively nicknamed "Most Amazing Programming Product Ever Released" by enthusiasts)—officially renamed BIS (Business Information Server) but still called MAPPER by many users—began as an internal product. It was developed in Sperry Univac's computer factory in Roseville, Minnesota to help the company manage their factory producing computer hardware. It was initially called CRT RPS (Report Processing System), to differentiate it from RPG. Its first external customer was Santa Fe Railway. Besides the Santa Fe, the Kansas City government was an early customer. MAPPER became a popular solution in the Government sector. User group communities formed like the New England MAPPER Users Group. The concept of MAPPER was conceived by Louis Schlueter in 1967 and presented in a whitepaper in February 1968 entitled 418 Report Processing System to management and accepted for development immediately. Three developers (Bill Grey, Louis Schlueter and Chuck Hanson) began coding under another budget that was initially approved for a different project. They had a lot of resistance, such as the lead programmer (Jack Olgren) under the initial testing department (the original programming was for stress testing the hardware), stating "You can't use computers that way!" but after seeing more of what was happening, he joined the team and eventually became the lead programmer due to his genius mind. Unfortunately, he died a year later, never to see the full realization implemented. There was so much continued obstruction, fighting the cognitive dissonance around traditional thinking at that time.
CRT RPS was renamed MAPPER in 1975. Because of its unofficial status, it was a low-budget development, and was built for minimum use of resources. Today the entire system, minus user data, is only 25 megabytes. It was written in Assembler language. Initially it had only limited string manipulation; that has since been corrected. A Macro capability was also subsequently added. The development of the UNIVAC 1100, as well as pressure from customers, led to a release for more general use in 1979.
In the mid-1980s, Sperry actively marketed MAPPER, including advertising featuring "MAPPER Man", the self-empowered executive end-user. In the Scandinavian countries, Sperry had a MAPPER song—"Do it the MAPPER way!" (1983)—written and performed by an ABBA-style group.
Under Sperry Corp, a MAPPER System Controlled eight Factories, proving Major Application Design by USERS. The MAPPER system supported over 1,300 applications, 99 percent of which were designed by non DP (Data Processing Department e.g. the old programming methods) users. It had about 20 million lines in the online database. There were 3,700+ registered users on this system, 540 of which were registered as RUN (Application) Designers. A typical day would see over 500,000 manual function starts with an additional 405,000+ function starts under control of 90,000+ RUN application executions. Over 355 million lines of Report data were processed in such a day of service.
Average MAPPER system response times for the manual functions and RUN executions was ~ 0.4 seconds. Over 7,000 terminals were registered for use on this system. Any prime time, instantaneous sample will show over 1,000 users signed on using the system. This is a mixed computing environment system. Besides the MAPPER service, background batch COBOL applications and transaction processing were also done on the mainframe system.
The 1st Customer was Santa Fe Railroad. MAPPER Systems were translated in 15 languages, including Chinese and Japanese (which was expanded to 23 in total) and installed worldwide in a customer base worth over $3 Billion. Sperry MAPPER System profits caused the $7 Billion Unisys Merger with Burroughs. This forceful takeover has been seen as the downfall of MAPPER. It was essentially shelved at that time, as no further promotion was done whatsoever. And the name was changed to BIS (Business Information Server). This blocked access to the example of the $3 Billion Installed, International, MAPPER System Customer Base. (As an example, Japan had a boom in all its industry manufacturing because of 500 Mainframes with MAPPER on it.)
A 1989 survey by Unisys showed that 140 of 224 UNIVAC 1100 customers were using MAPPER. By 2006, there were more than 600 sites using MAPPER for Windows NT.
Its story is a strong testimony and example to the efficiency and potential of well promoted and coordinated, user-designed computing, Real-Time Report Processing System services.
Interesting to note that MAPPER keeps a LOG Ledger and Function, which is a record of all transactions; who did what, when and where. This LOG maintains a chain of events that was incorruptible or accessible by users who didn't have access rights by the Coordinator. It was also the first spreadsheet, as it was over a decade before LOTUS123.

## Features

An early description of MAPPER was the paper "MAPPER Was the First User-command Language" presented at the USE technical conference in March 1983 by Michael Nicoll-Griffith of Canadian Pacific Consulting Services and published as part of the USE proceedings. In 1988, the book "User-driven Computing" by Louis Schlueter was published.
MAPPER use requires that the community have a MAPPER Coordinator, who has a set of privileged tools to monitor and tune the development and control abuses. MAPPER has over 150 functions that can be used manually, nearly each has a corresponding script command.
MAPPER was so easy to learn and use that many users became "RUN" developers who created applications that ran all their data processing requirements.

## Data structure

The basic unit of data is called a "report". This appears similar to a Microsoft Excel spreadsheet. It is usual to have sets of similar reports with the same column structure that apply to different categories or groupings of items. Reports are organized into "drawers" of identically structured reports, and groups of up to 8 drawers form a "cabinet" (4000 total per MAPPER system). Reports can be between 40 and up to 998 characters wide, depending on platform. On the "Core MAPPER" platforms (Windows/Unix/Linux), the drawer size must be a multiple of 2: on the 1100/2200 it can be an odd number.
Reports are numbered from 1 to the maximum set for the drawer- there is also a report zero, which has a special significance as it acts as both a template and as a filter for the rest of the reports in the drawer. Drawers have a drawer letter, from B to I. Cabinets are numbered from 0 and increment by 2 - odd numbered cabinets reference the same data as the matching even cabinet, but provide a read-only view of the data (e.g. cabinet 0 and cabinet 1 represent full and limited access to the same data). There is a system maximum for a given system, which varies depending on platform and is represented by the system reserved work MAXCAB$. Drawers run from B to I because A is a special drawer; it is deemed to exist simultaneously in all cabinets, so acts as a global resource. Drawer A is typically used for "quick and dirty" temporary datasets, captured data, prototype run code, notes, documentation and so on. The third report in drawer C in cabinet 36 would be referenced as 3C36, or simply 3C if the user is logged into cabinet 36 already.
A major difference from spreadsheets is that MAPPER reports have no built-in calculation capability. Processing is achieved by applying a "Command" or "Function" to a report, an action that produces a duplicated "result". This result can be processed further, refining the data down to the most meaning information; a result, which a manipulated copy of the original report. Hence report processing system as part of the original system capability. Thus allowing users to access and manipulate their data needs according to their specifications.
Another important difference is that MAPPER data is a form of visible-record data; what you see is literally what you get. Within an individual drawer, reports all have the same line length, which is padded with spaces or tab characters to move you through the data for record input or modification. By the same token, column sizes within a data record are fixed, however you can create any field size you want up to 999 characters. You can locate data in either field columns or free form type data that is akin to typed text or paragraph style data. There are several functions that make locating data quick and efficient. Many functions and methods can be deployed to structure data for even faster responses. The response time on manipulating data was nearly always less than a second. (Even if used on a PC and the CPU is at 100%, due to the skinny code it produces a second response on a search of over 1 million records.)
In older versions of MAPPER, security was applied at a cabinet level – with current versions, security has a finer granularity and is applied at drawer level. If a user is not granted access to a particular drawer, the data will not be visible to that user. It's possible to grant either update or read-only access to a given drawer.
It was the first at many things, including being an ODBC-compliant system.

## Command language

When a command is to be performed, the software obtains the data organization from column headings that are above the data. In essence, it generates the "schema" on demand. Popular commands are "Search" to make a subset, "Sort" to change the sequence of lines, "Totalize" to generate subtotals by type, category or date. Two independent reports can be combined with "Match", while very sophisticated commands like "Calculate and Update" include successive steps in one operation. The result of a command can be operated on by a succeeding command. In this way, large processing requirements could be accomplished with just a few commands. The script code as a single command would execute a manual function and in this way minimize the amount of code required to accomplish tasks. i.e. writing a search program of many lines of code, was already done. And in this way MAPPER was essentially calling macros; the first of its kind also.

## Real-time efficiency

In the operation of MAPPER, the data is not obtained by a program that "reads" them, but waits for user action, aside from background jobs. The programmed commands are brought to operate upon it. However, the complete set of available commands remains in the active memory of the computer as interpreted resident commands. Being written in "re-entrant code", any command can be used by many thousands of different users concurrently.
To avoid a bottleneck in disk accesses, the data is spread across multiple shallow reports, so that many users can be in the data and not locked out of a single report. This results in fewer disk reads per report than most alternatives.
The Coordinator, who is like an Administrator, gets alerted when inefficient processing practices slow down the system. Then that user could be restricted or limited on how much resources they were able to use or the time they could perform scripts or functions.

## Extended capabilities
### Run language Major Application Design By Non DP Users

Over time, the product has seen extensions made from the base described above. The first of these, mandated by the Santa Fe Railroad, was a repeat command capability, called a "Run", and similar in concept to an Excel macro. This use of the pretested commands applied successively reduces the chance for programming errors.
The "Run language" uses scripted forms of normal screen commands on the reports (e.g. the manual SORT and the run-language element @SOR will invoke the same compiled re-entrant code module).
It permits logical selection of different processing paths, allows loops and logic branching, user-interaction and similar. It also has the capacity to perform calculations or base processing logic on any character or data field in the entire database. Naturally, this is subject to the security category of the data.

### Cooperative processing

By using network connections, two or more MAPPER systems can process cooperatively. In this, one will wait for task completion by another. MAPPER handles data or text message traffic between users.
Operations in one machine may be started over the network. SQL data retrieval commands can be issued with full SQL syntax on external databases, and the results used in further MAPPER processing. MAPPER can run websites with its own .asp front end, has an integrated JavaScript engine, can produce XML for B2B, and is able to manipulate SOAP objects. See some examples below.