S3 (programming language): Difference between revisions

Content deleted Content added
No edit summary
Tag: Reverted
Link suggestions feature: 3 links added.
 
(One intermediate revision by one other user not shown)
Line 19:
| license =
| website =
}}
'''S3''' is a [[structured programming|structured]], [[Imperative programming|imperative]] [[high-level language|high-level]] [[computer progrmmingprogramming|computer]] [[programming language]].<ref>{{cite book|title=Software engineering environments|publisher=North-Holland Pub. Co.|year=1981|edition=illustrated|last=Hünke|first=Horst|isbn=978-0-444-86133-7|page=83}}</ref> It was developed by the UK company [[International Computers Limited]] (ICL) for its [[ICL 2900 Series|2900 Series]] mainframes. It is a [[system programming language]] with syntax influenced by [[ALGOL 68]] but with data types and operators aligned to those offered by the 2900 Series. It was the implementation language of the [[operating system]] [[ICL VME|VME]].
 
==Annotated Example==
Line 161:
* The declaration of the procedure is decorated with annotations that define a command line syntax allowing the program to be called from SCL, or used from an interactive shell with prompting for default parameter values.
* Procedure calls prefixed CTM are calls to the "Compiler Target Machine", an [[API]] offered by the VME operating system.
* "JSV" means "job space variable", VME's term for an [[environment variable]], and the call on CTM_JS_READ reads the value of the variable.
* UNLESS means "if not"; ELSF means "else if".
* LONG LONG WORD declares a 128-bit integer, which is a native type supported by the 2900 architecture
* The bulk of the processing is delegated to another procedure, KERMIT_SUPPORT, which can be found in the same module. This is called indirectly via the operating system CTM_JS_CALL, similar to an exec() call on Unix systems; this ensures clean failure handling and tidying up of any resources in the event of a fatal error. The PDESC keyword constructs a "procedure descriptor": essentially it treats KERMIT_SUPPORT as a [[first-class function]] which can be passed as an argument to another function, making CTM_JS_CALL a [[higher-order function]] that calls its supplied argument with appropriate error handling.
 
==References==