factograf
RU
Войти

PL/M

Все данные карточки 6
Класс языка
процедурный
Тип исполнения
компилируемый
Появился в
1972
Разработчик
Гэри Килдалл
Диалекты
PL/M-80, PL/M-86, PL/M-286, PL/M-386
Испытал влияние
ALGOL, PL/I

PL/M (англ. Programming Language for Microcomputers) — процедурный язык программирования, разработанный в 1972 фирмой Digital Research для микропроцессоров Intel.

Язык заимствовал идеи из PL/I, ALGOL, XPL и имел интегрированный макропроцессор. Компиляторы PL/M существовали для ранних моделей процессоров Intel: 8008, 8080, 8051, 8086, 286, 386 и Intel 80486.

В СССР язык был адаптирован под названием ПЛ/М-80 и использовался в ОС ДОС 1800 для микро-ЭВМ СМ 1800, версия для процессора 8086 под названием ПЛ/М-86 входила в состав набора операционных систем для микро-ЭВМ СМ 1810.

Синтаксис

Ключевые слова

ADDRESS, AND, BASED, BY, BYTE, CALL, CASE, DATA, DECLARE, DISABLE, DO, ELSE, ENABLE, END, EOF, GOTO, GO, HALT, IF, INITIAL, INTERRUPT, LABEL, LITERALLY, MINUS, MOD, NOT, PLUS, PROCEDURE, RETURN, OR, THEN, TO, WHILE, XOR

Идентификаторы

Регистронезависимы. Должны быть от 1 до 31 символа в длину, начинаться только с буквы и могут содержать цифры. Отличительная особенность — знак доллара в идентификаторе игнорируется компилятором и служит для удобства записи: GET$$PROG$$NAME и GETPROGNAME — идентичны.

Типы данных

Числовые переменные могут быть двух типов: BYTE и ADDRESS.

ИмяРазрядностьДиапазон данныхBYTE80-255ADDRESS160-65535

Константы могут быть числовыми (в PL/M 80 — только целыми) и строковыми. Числовые константы в разных системах счисления записываются с определенным суффиксом. Примеры:

  • двоичные: 11001B.
  • восьмеричные: 31O или 31Q
  • десятичные: 25D (суффикс необязателен)
  • шестнадцатеричные: 019H префикс 0 обязателен, чтобы не спутать с идентификатором.

Строковая константа заключается в одинарные кавычки, если в строке нужна кавычка, ее следует продублировать. Каждый символ представлен в 7-битной кодировке ASCII.

Строка длиной 1 символ интерпретируется как BYTE а длиной в 2 символа как ADDRESS. Для строк большей длины нужно использовать оператор . (dot operator). В таком случае длина строки ограничена 255 символами.

Пример

FIND: PROCEDURE(PA,PB) BYTE;
    DECLARE (PA,PB) BYTE;
    /* FIND THE STRING IN SCRATCH STARTING AT PA AND ENDING AT PB */
    DECLARE J ADDRESS,
        (K, MATCH) BYTE;
    J = BACK ;
    MATCH = FALSE;
        DO WHILE NOT MATCH AND (MAXM > J);
        LAST,J = J + 1; /* START SCAN AT J */
        K = PA ; /* ATTEMPT STRING MATCH AT K */
            DO WHILE SCRATCH(K) = MEMORY(LAST) AND
                NOT (MATCH := K = PB);
            /* MATCHED ONE MORE CHARACTER */
            K = K + 1; LAST = LAST + 1;
            END;
        END;
    IF MATCH THEN /* MOVE STORAGE */
        DO; LAST = LAST - 1; CALL MOVER;
        END;
    RETURN MATCH;
    END FIND;

Читать дальше

На 17 языках

Текст из Википедии, CC BY-SA 4.0 · Статья-источник