Jump to content

User:Lunivers/SASCC

From Wikipedia, the free encyclopedia
SAS/C
Developer(s)SAS Institute
Initial release1987 (1987)
Stable release
7.50 / 2001
Operating systemIBM System/390, z/OS, CMS (IBM), Amiga, UNIX, Windows 95, Windows NT
PlatformIBM System/370, Motorola 68000
TypeC/C++ compiler
LicenseProprietary

SAS/C was a C and C++ compiler and development system developed by SAS Institute. Originally based on the Lattice C compiler acquired by SAS Institute in 1987, SAS/C provided comprehensive C and C++ development environments for multiple platforms, with particular strength in IBM mainframe systems and cross-platform development.

History

[edit]

Origins in Lattice C

[edit]

SAS/C originated from Lattice C, a C compiler developed by Lifeboat Associates for the IBM Personal Computer and other platforms.

SAS Institute acquisition

[edit]

Lattice was purchased by SAS Institute in 1987 and rebranded as SAS/C.[1] SAS needed a C compiler to port the SAS System to the IBM PC, leading to the development of a cross-compiler that ran on IBM's CMS operating system but generated code for the IBM PC.[1] The final release was SAS/C 7.50.[2]

Platform evolution

[edit]

Following the SAS acquisition, SAS/C continued to be developed for multiple platforms including the Amiga, where it became a popular development environment throughout the 1990s.[3] However, support for most platforms was gradually discontinued as SAS focused development efforts primarily on IBM mainframe systems.[1]

Technical specifications

[edit]

Compiler architecture

[edit]

The SAS/C Compiler and Library provided a versatile C and C++ development environment for IBM System/390 mainframes, featuring full compliance with the ANSI and ISO standards for the C and C++ programming languages.[4] The compiler system consisted of several integrated components:

  • C++ translator (cxx), parser (lc1), and code generator (lc2) for handling parsing, semantics analysis, instruction selection, and code emission[5]
  • Global optimizer (go) performing advanced optimizations such as merging common subexpressions, eliminating unreachable code, constant propagation, and strength reduction[5]
  • Prelinker (cool) serving as an object code preprocessor that merged CSECTs based on references to external variables[5]
  • Object module disassembler (omd) and debugger support[5]

Language support

[edit]

The SAS/C compiler supported both C and C++ programming languages with full ANSI and ISO standards compliance. The compiler continued to improve conformance with evolving C++ standards, adding support for features like argument-dependent name lookup and improved character literal handling.[6]

Platform implementations

[edit]

Mainframe systems

[edit]

SAS/C provided the same functionality under OS/390 and CMS operating systems as the cross-platform versions did under UNIX and Windows systems.[7] The mainframe version included all SAS/C and C++ code generation capabilities, optimization features, prelinking functionality, and support for the SAS/C CICS preprocessor.[8]

Cross-platform compiler

[edit]

The SAS/C Cross-Platform Compiler ran on workstations and produced prelinked output files that could be transferred to IBM System/370 mainframes for final linking.[7] It provided the same function under UNIX, Windows 95, and Windows NT operating systems as the mainframe version.[7]

Benefits of the cross-platform approach included:

  • Preservation of mainframe CPU cycles for other users, resulting in significant cost savings[8]
  • Access to improved source management tools and UNIX hierarchical file systems[8]

Amiga implementation

[edit]

SAS/C became the primary Amiga C compiler for most of the 1990s, with version 6.5 being widely used.[3] The Amiga version included integrated development tools such as the SAS/C Editor (SE), library linker (SLINK), assembler (ASM), options configuration tool (SCOPTS), make tool (SMAKE), and source debugger (CodeProbe).[9]

Development tools and features

[edit]

Integrated development environment

[edit]

SAS/C could be integrated with the Microsoft Visual C++ Integrated Development Environment, allowing developers to use SAS/C as the compiler while leveraging Microsoft's IDE features.[10]

Command-line interface

[edit]

Under UNIX, separate compiler drivers sascc370 and sasCC370 were used for C and C++ compilation respectively, while under Microsoft-DOS, sascc370 handled both C and C++ compilation.[11] The compiler generated prelinked, non-reentrant object code by default, with options available for different target operating systems.[11]

Library support

[edit]

The SAS/C libraries contained both resident and transient routines, with specialized libraries including all-resident and Systems Programming Environment (SPE) routines for specialized applications.[12]

Industry impact

[edit]

Market position

[edit]

SAS/C was a profitable product for SAS Institute, generating approximately $3 million per year in revenue as a legacy software product.[13] The compiler filled an important niche in mainframe development and cross-platform compilation for IBM systems.

Technical influence

[edit]

SAS/C contributed to the evolution of C and C++ development on mainframe systems, providing a standards-compliant implementation that enabled organizations to develop portable code across multiple platforms while maintaining compatibility with IBM mainframe environments.

Discontinuation

[edit]

After the SAS acquisition, support for most platforms was gradually discontinued.[1] SAS attempted to discontinue SAS/C multiple times due to its legacy status, though it remained profitable due to low maintenance costs.[13] The compiler's development eventually ceased as organizations migrated to more modern development environments and platforms.

Legacy

[edit]

SAS/C played a significant role in enabling C and C++ development on IBM mainframe systems during a critical period of computing history. Its cross-platform capabilities anticipated modern development practices where code is compiled on one platform for execution on another. The compiler's emphasis on standards compliance and portable implementation helped establish best practices for cross-platform C and C++ development.

See also

[edit]

References

[edit]
  1. ^ a b c d "What was the first C compiler for the IBM PC?". Retrocomputing Stack Exchange. Retrieved 2025-06-23. The Lattice compiler was acquired by SAS Institute in 1987 and renamed SAS/C
  2. ^ "SAS/C". SAS Support. Retrieved 2025-06-23. The most recent release is SAS/C 7.50
  3. ^ a b "SAS/C Development System User's Guide, Volume 1: Introduction, Compiler, Editor, Version 6". Internet Archive. Retrieved 2025-06-23. Volume 1 of the manual for the primary Amiga C compiler for most of the 1990s
  4. ^ "SAS/C". SAS Support. Retrieved 2025-06-23. The SAS/C Compiler and Library provides a versatile C and C++ development environment for IBM® System/390TM mainframes. The features of the compiler and library include full compliance with the ANSI and ISO standards for the C and C++ programming languages
  5. ^ a b c d "Overview of the SAS/C Cross-Platform Compiler and C++ Development System : Executable Files". SAS Support. Retrieved 2025-06-23. The compiler drivers, sascc370 and sasCC370 , control the compilation, invoking the other executable files and passing them options during the various phases
  6. ^ "Introduction to the SAS/C C++ Development System : C++ Language Definition". SAS Support. Retrieved 2025-06-23. We continue to improve the SAS/C compiler conformance with the ISO C++ Standard. The C++ translator now supports argument dependent name lookup. Character literals with multiple narrow chars are now correctly typed as int
  7. ^ a b c "Overview of the SAS/C Cross-Platform Compiler and C++ Development System : Introduction". SAS Support. Retrieved 2025-06-23. It provides the same function under the UNIX, Windows 95, and Windows NT operating systems as the SAS/C C and C++ Development System does under the OS/390 or CMS operating systems
  8. ^ a b c "SAS/C Software Overview : SAS/C Cross-Platform Compiler". SAS Support. Retrieved 2025-06-23. All SAS/C and C++ code generation capabilities, including optimization and other features. Support for the SAS/C CICS preprocessor
  9. ^ Cite error: The named reference hutchison was invoked but never defined (see the help page).
  10. ^ "Using the SAS/C Cross-Platform Compiler and C++ Development System : Using the SAS/C and C++ Cross-Platform Compiler under the Microsoft Visual C++ IDE". SAS Support. Retrieved 2025-06-23. If you prefer to use the Microsoft Developer Studio, you can use the SAS/C and C++ Cross-Platform Compiler within the Microsoft Visual C++ Integrated Development Environment
  11. ^ a b "Using the SAS/C Cross-Platform Compiler and C++ Development System : Compiling C and C++ Programs under a DOS Shell". SAS Support. Retrieved 2025-06-23. Under UNIX, you use the sascc370 compiler driver to compile C object code and the sasCC370 compiler driver to compile C++ object code. Under Microsoft-DOS, however, you use the sascc370 compiler driver to compile both C and C++ object code
  12. ^ "Using the SAS/C Cross-Platform Compiler and C++ Development System : Files". SAS Support. Retrieved 2025-06-23. The SAS/C C and C++ libraries contain both resident and transient routines. (They also provide all-resident and SPE routines that can be used in specialized applications.)
  13. ^ a b "Why is the SAS compiler known as SAS/C Compiler?". Quora. Retrieved 2025-06-23. SAS/C was a purchasable SAS product. It generated about $3M/year in revenue as the sun was setting. It was supported by one developer as I recall, hence that put SAS/C into the 'wildly profitable' category of legacy software