CALL/360:BASIC
| Company type | Software |
|---|---|
| Industry | Computer programming language |
| Predecessor | Dartmouth BASIC |
| Founded | 1968 |
| Founder | IBM Information Marketing division |
| Headquarters | United States |
| Products | BASIC programming language variant |
| Parent | IBM, later Service Bureau Corporation (SBC) |
CALL/360:BASIC was an IBM variant of the BASIC programming language designed for the System/360 and subsequent systems. Originating from Dartmouth BASIC of the mid-1960s, it introduced multiple enhancements primarily focused on file management, a feature absent in Dartmouth BASIC at that time. Additionally, it enabled the use of mathematical symbols on select IBM terminals, permitting direct entry of characters such as . Other modifications were relatively minor.
History
In 1968, CALL/360:BASIC was launched alongside programming languages like APL and FORTRAN, as well as the Datatext-based text editor. Early promotional materials suggested users could "Begin learning CALL / 360 : BASIC after breakfast and be sharing our computer before lunch."
The CALL/360 suite was created within IBM’s Information Marketing division and initially remained proprietary, accessible exclusively through IBM’s online service. Responding to customer interest, IBM eventually made it available to other System/360 users on an "as is" basis without providing support. Later that same year, IBM transferred this division and its timesharing services—including CALL/360:BASIC and its operating system—to the Service Bureau Corporation (SBC). Documentation from this period identifies the language as an SBC offering.
In 1973, as part of a protracted anti-trust legal case, SBC was acquired by Control Data Corporation.
Description
CALL/360:BASIC bore close resemblance to Dartmouth BASIC IV, incorporating sophisticated rix math functions, but its primary distinction lay in enhanced file handling features.
Basics
The language featured commands such as LET, PRINT, END, FOR...NEXT (with optional ), GOTO, GOSUB...RETURN, IF...THEN, IF...GOTO, DEF, READ, DATA, RESTORE, DIM, and REM. It introduced computed GOTO with syntax like . The statement accepted only line numbers; the allowance of arbitrary statements following appeared in later BASIC dialects. Comments could be indicated with or , although exact usage rules were not clearly defined. Commands such as , , and permitted trailing comment strings without requiring a colon separator.
The command was extended to include referencing lines with formatting strings called "images." Output items could be separated by commas or semicolons; commas designated fixed 18-character print zones. A novel command, , paused program execution at a specified line until user input (which was ignored) resumed processing.
Mathematical operations supported standard arithmetic operators as well as both up-arrow and double-asterisk exponentiation notation (e.g., ). Logical operators included conventional symbols plus special characters like , , and . The function set expanded beyond Dartmouth’s original offerings by adding trigonometric reciprocals (, , ), inverse trigonometric functions (, ), hyperbolic functions (, , ), base-2 logarithms (), base-10 logarithms (), degree-radian conversions (, ), and constants such as , , and .
String variables used dollar-sign notation, a recent addition to Dartmouth BASIC. Strings could be enclosed within either single or double quotes, with embedded quote characters escaped by doubling them (for example, represents ABC"DE). Internally, strings were stored in fixed-length segments of 18 characters padded with spaces when shorter; thus, an empty string like consisted of 18 blank spaces.
Arrays and Matrix Operations
CALL/360:BASIC featured support for both one-dimensional and two-dimensional arrays, with indexing starting at 1. For instance, an array declared as contained elements from A(1) to A(3). The language also introduced string arrays, where each element could store an 18-character string. Unlike Dartmouth BASIC, it was necessary to explicitly dimension variables before performing matrix computations. Programs could define up to 29 numeric arrays, with a cumulative maximum of 7,167 elements.
Most matrix commands from Dartmouth BASIC were incorporated, enabling operations across entire arrays, such as multiplying every element by 10 using . Functions including , , , , and were available. Data manipulation within matrices was facilitated through and statements. Additionally, CALL/360 implemented the and commands for reading and writing entire matrices to external files.
File Management
One significant advancement in CALL/360:BASIC was its file management capabilities. Files were opened using , which assigned a file handle number (for example, 10). Data reading was performed with , functioning similarly to the statement; writing data employed the corresponding command. To reposition the file pointer back to the beginning, the command followed by the file number was used. However, the system did not support random access within files. Files were closed by specifying one or more file handles with , thereby freeing the associated resources.
Sample Program
The sample code demonstrates opening a file named with handle number 10 and processing lines containing a product name followed by four sales prices in a loop. The loop terminates upon encountering the end-of-file condition, which triggers an error that redirects execution to line 70 (details of this line are not provided in the documentation). Output formatting is managed using a template defined on line 50.