PROMAL

{{More citations needed|date=April 2023}}

{{Infobox programming language

| name = PROMAL

| logo = PROMAL logo.png

| logo size = 150px

| paradigm = Imperative (procedural), structured

| year = 1984-08-16

| designer =

| developer = Systems Management Associates

| latest release version = 2.1e

| latest release date = 1986-10-14

| latest preview version =

| latest preview date =

| typing =

| implementations =

| influenced_by = C

| influenced =

| dialects =

| programming_language =

| operating_system =

| license =

| website =

| file_ext = .s

| wikibooks =

}}

PROMAL (PROgrammer's Microapplication Language) is a structured programming language from Systems Management Associates for MS-DOS, Commodore 64, and Apple II. PROMAL features simple syntax, no line numbers, long variable names, functions and procedures with argument passing, real number type, arrays, strings, pointer, and a built-in I/O library. Like ABC and Python, indentation is part of the language syntax.

The language uses a single-pass compiler to generate byte code that is interpreted when the program is run. The compiler can compile to/from disk and memory. The software package for C64 includes a full-screen editor and command shell.

Reception

Ahoy! called PROMAL for the Commodore 64 "one of the best" structured languages. It concluded "As an introduction to structured programming languages and as an alternative to BASIC, PROMAL is well worth the time needed to learn it and the $49.95 to purchase it".{{cite news | url=https://archive.org/stream/Ahoy_Issue_18_1985-06_Ion_International_US#page/n69/mode/2up | title=PROMAL | work=Ahoy! | date=June 1985 | accessdate=27 June 2014 | author=Schleimer, Rachel | pages=71–72}}

Example code

From the PROMAL program disk:

PROGRAM SIEVE

; Sieve of Eratosthenes Benchmark

; test (BYTE magazine)

; 10 iterations, 1800 element array.

INCLUDE LIBRARY

CON SIZE=1800

WORD I

WORD J

WORD PRIME

WORD K

WORD COUNT

BYTE FLAGS[SIZE]

BEGIN

OUTPUT "10 ITERATIONS"

FOR J= 1 TO 10

COUNT=0

FILL FLAGS, SIZE, TRUE

FOR I= 0 TO SIZE

IF FLAGS[I]

PRIME=I+I+3

K=I+PRIME

WHILE K <= SIZE

FLAGS[K]=FALSE

K=K+PRIME

COUNT=COUNT+1

OUTPUT "#C#I PRIMES", COUNT

END

References

{{reflist}}

  • Computer Language, Mar 1986, pp. 128–134