[Robelle] [SmugBook] [Index] [Prev] [Next]

SPL is the Original HP 3000 Systems Language

SPL stands for "Systems Programming Language." It is an Algol-based language that was introduced with the original HP 3000. All of the systems code for MPE was written in SPL, rather than in Assembly language. HP did not convert SPL to Native mode when they migrated MPE to the PA-RISC, but some third-party programmers did. Their native-mode SPL compiler is called SPLash!, a compiler that can even generate code for HP-UX.

Here are some SPL tips from the 1985 SMUG IV book:

Efficiency

Recommended Subset of SPL

Statements to use freely:
Assignment, MOVE, Procedure call, Subroutine call, IF, CASE, WHILE, DO-UNTIL, and BEGIN-END.
Statements requiring caution:
SCAN and MOVE WHILE.
Statements to avoid:
GO TO, RETURN, ASSEMBLE, FOR, PUSH, and SET.
Data structures to use freely:
Constants and EQUATEs, simple variables, arrays (first element = 0), DEFINEs, and types BYTE, INTEGER, LOGICAL and DOUBLE.
Data structures requiring caution:
REAL and LONG in files (they are not compatible with COBOL), POINTERs and bit fields.
Data structures to avoid:
TOS except after MOVE/SCAN, =register except =PB, and bit fields in permanent files (other languages can't handle them).

Suggested SPL Style

Follow the rules of structured programming and aim for a clear programming style. Use EQUATEs for integer constants, except 0 and 1. Use DEFINEs for other numeric constants. Use equivalenced arrays and length-EQUATEs to construct records. Use SUBROUTINEs to decompose PROCEDUREs into modules. Insert a $PAGE command before each module declaration. For local SUBROUTINE variables, declare dummy VALUE parameters. Use $INCLUDE files for any data or code that should be the same in several programs.


[Robelle] [SmugBook] [Index] [MPEtips] [Prev] [Next]