spamsink: (Default)
[personal profile] spamsink posting in [community profile] besm6
Незабвенный С. И. Пирин в своё время постарался обеспечить возможность комплексирования Паскаля с другими языками программирования. Так, например, вызывать внешние процедуры со стандартным (фортрановским) соглашением о связях из Паскаля можно было, объявив их как FORTRAN; вместо EXTERNAL;. Также можно было выключать проверку числа и типа параметров этих процедур, описывая их с включённым псевдокомментарием (*=F+*).

Делать паскалевские процедуры входными, чтобы их можно было вызывать извне, можно было с помощью псевдокомментария (*=E+*). В инструкции указываются ассемблерные вставки, необходимые для работы с файлами.

Также можно было вызывать целиком паскалевские программы как процедуры без параметров.

Всё бы хорошо, да была забыта одна существенная деталь. Как известно из Мазного, в редакторе *EDIT можно было определять собственные обработчики, вызываемые с помощью *U:FILTER, где FILTER должна была быть определена как
      SUBROUTINE FILTER(IN, SERV)
      DIMENSION IN(14),OUT(14)
      EXTERNAL SERV
C     обработка входящей строки в IN
С     формирование исходящей строки/исходящих строк в OUT
С     вызов
      CALL SERV(OUT)
С     для каждой из сформированных строк
      RETURN
      END


К сожалению, Паскаль-компилятор не позволяет указать, что формальный параметр процедуры должен вызываться согласно фортрановскому соглашению о связях, поэтому при использовании Паскаля для написания *U-фильтров приходится городить огороды.

Date: 2025-01-23 05:17 am (UTC)
vak: (Default)
From: [personal profile] vak
Обычно на мадлене приходилось такие переходники писать.

Profile

Сообщество любителей БЭСМ-6

January 2026

S M T W T F S
    123
45678910
11121314151617
18192021222324
2526272829 3031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 14th, 2026 11:28 am
Powered by Dreamwidth Studios